The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
pf.conf rdr на сервер со squid, !*! slider, 17-Апр-07, 12:50  [смотреть все]
возник затык, не могу рассмотреть, где и что пропускаю... буду рад помощи.
стоял (и стоит) файрвол, на нем крутился кальмар. в какой-то момент решил разгрузить файрвол и поставить сквида на другую машину.
на файрволе используется PF. было правило (192.168.1.66 это файрвол):
rdr on $int_if proto tcp from $internal_net to !192.168.1.66 port http -> localhost port 3128
это правило работало.
изменил на (155-й - машина со сквидом, опцию pass добавил позже, но с ней тоже не работает):
rdr pass on $int_if proto tcp from $internal_net to !192.168.1.66 port http -> 192.168.1.155 port 3128

и вот так не работает. что я вижу:

(на файрволе):
#pfctl -ss
self tcp 192.168.1.64:1080 -> 192.168.1.155:3128       SYN_SENT:CLOSED
self tcp 192.168.1.64:1081 -> 192.168.1.155:3128       SYN_SENT:CLOSED

(на файрволе):
# tcpdump -i fxp0 -n -nn host 192.168.1.155
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on fxp0, link-type EN10MB (Ethernet), capture size 96 bytes
12:46:09.594672 IP 192.168.1.64.1087 > 192.168.1.155.3128: S 245580897:245580897(0) win 64512 <mss 1460,nop,nop,sackOK>
12:46:12.576370 IP 192.168.1.64.1087 > 192.168.1.155.3128: S 245580897:245580897(0) win 64512 <mss 1460,nop,nop,sackOK>
12:46:18.613289 IP 192.168.1.64.1087 > 192.168.1.155.3128: S 245580897:245580897(0) win 64512 <mss 1460,nop,nop,sackOK>

(на сквиде):
# tcpdump -i fxp0 -n -nn port 3128
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on fxp0, link-type EN10MB (Ethernet), capture size 96 bytes
12:45:41.148064 IP 192.168.1.64.1091 > 192.168.1.155.3128: S 2511498740:2511498740(0) win 64512 <mss 1460,nop,nop,sack                  OK>
12:45:41.148159 IP 192.168.1.155.3128 > 192.168.1.64.1091: S 1611866890:1611866890(0) ack 2511498741 win 65535 <mss 14                  60,sackOK,eol>
12:45:41.148493 IP 192.168.1.64.1091 > 192.168.1.155.3128: R 2511498741:2511498741(0) win 0
12:45:44.162855 IP 192.168.1.64.1091 > 192.168.1.155.3128: S 2511498740:2511498740(0) win 64512 <mss 1460,nop,nop,sack                  OK>
12:45:44.162957 IP 192.168.1.155.3128 > 192.168.1.64.1091: S 2075788944:2075788944(0) ack 2511498741 win 65535 <mss 14                  60,sackOK,eol>
12:45:44.163070 IP 192.168.1.64.1091 > 192.168.1.155.3128: R 2511498741:2511498741(0) win 0
12:45:50.299418 IP 192.168.1.64.1091 > 192.168.1.155.3128: S 2511498740:2511498740(0) win 64512 <mss 1460,nop,nop,sackOK>
12:45:50.299572 IP 192.168.1.155.3128 > 192.168.1.64.1091: S 2946723940:2946723940(0) ack 2511498741 win 65535 <mss 1460,sackOK,eol     >
12:45:50.299688 IP 192.168.1.64.1091 > 192.168.1.155.3128: R 2511498741:2511498741(0) win 0

в сквиде прозрачный прокси включен. если обращаться к нему напрямую - работает... в логах при попытке завернуть на прозрачный - вообще ничего не пишет.
если есть идеи, или может быть я что-то забыл указать для того чтобы вообще проблему понять - подскажите пожалуйста.

  • pf.conf rdr на сервер со squid, !*! reader, 13:49 , 17-Апр-07 (1)
    помоему происходит так:

    клиент обратился на 192.168.1.64 , с 192.168.1.64 пакет перебросили на 192.168.1.155,
    а ответ 192.168.1.155 отправил прямо клиенту, и клиент отбросил этот пакет, так как ждет ответа от 192.168.1.64

    • pf.conf rdr на сервер со squid, !*! Xela, 14:08 , 17-Апр-07 (2)
      >помоему происходит так:
      >
      >клиент обратился на 192.168.1.64 , с 192.168.1.64 пакет перебросили на 192.168.1.155,
      >а ответ 192.168.1.155 отправил прямо клиенту, и клиент отбросил этот пакет, так
      >как ждет ответа от 192.168.1.64


      Именно так и происходит.

      Автору оригинального поста: вам надо занатить подобный редирект адресом файрвола. Что бы от прокси трафик возвращался на файрвол, а не на прямую клиентам.

      • pf.conf rdr на сервер со squid, !*! slider, 14:31 , 17-Апр-07 (3)
        Спасибо. Смысл проблемы я понял, но боюсь, решение для меня неприемлемо :( Ведь тогда сквид будет обслуживать только один адрес, а у меня по адресам делается и контроль доступа, и ограничение канала (delay_pools)...
        Но по крайней мере, сдвинулся с мертвой точки, вы конечно правы, клиент действительно "не узнает" своего запроса.

        >>помоему происходит так:
        >>
        >>клиент обратился на 192.168.1.64 , с 192.168.1.64 пакет перебросили на 192.168.1.155,
        >>а ответ 192.168.1.155 отправил прямо клиенту, и клиент отбросил этот пакет, так
        >>как ждет ответа от 192.168.1.64
        >
        >
        >Именно так и происходит.
        >
        >Автору оригинального поста: вам надо занатить подобный редирект адресом файрвола. Что бы
        >от прокси трафик возвращался на файрвол, а не на прямую клиентам.
        >


        • pf.conf rdr на сервер со squid, !*! reader, 14:41 , 17-Апр-07 (4)
          >Спасибо. Смысл проблемы я понял, но боюсь, решение для меня неприемлемо :(
          >Ведь тогда сквид будет обслуживать только один адрес, а у меня
          >по адресам делается и контроль доступа, и ограничение канала (delay_pools)...
          >Но по крайней мере, сдвинулся с мертвой точки, вы конечно правы, клиент
          >действительно "не узнает" своего запроса.
          >
          а если отправить squid в другую подсеть?

          • pf.conf rdr на сервер со squid, !*! slider, 14:54 , 17-Апр-07 (5)
            мне кажется, что смысл от этого не меняется. нужно понять, есть ли решение без nat

            >а если отправить squid в другую подсеть?


            • pf.conf rdr на сервер со squid, !*! slider, 15:08 , 17-Апр-07 (6)
              да, все верно. предыдущая проблема решена посредством nat. осталось решить, как можно донести ip настоящего клиента до squid и при этом заставить его ответить на адрес файрвола.

              >мне кажется, что смысл от этого не меняется. нужно понять, есть ли
              >решение без nat
              >
              >>а если отправить squid в другую подсеть?


              • pf.conf rdr на сервер со squid, !*! reader, 15:24 , 17-Апр-07 (7)
                если машина со squid будет в другой логической подсети, и в той же физической, то ответы squid будет отправлять согласно таблицы маршрутизации, тоесть через фаервол.

                • pf.conf rdr на сервер со squid, !*! slider, 10:35 , 18-Апр-07 (8)
                  >если машина со squid будет в другой логической подсети, и в той
                  >же физической, то ответы squid будет отправлять согласно таблицы маршрутизации, тоесть
                  >через фаервол.

                  видимо вчера день такой был. не догонял ничерта.
                  всем ответившим большое спасибо. разобрался.

                  • pf.conf rdr на сервер со squid, !*! Tuxper, 12:30 , 13-Май-07 (9)
                    >видимо вчера день такой был. не догонял ничерта.
                    >всем ответившим большое спасибо. разобрался.
                    Товарищ, опиши пожалуйста как вышел из положения у меня подобная ситуация...


                    • pf.conf rdr на сервер со squid, !*! slider, 08:38 , 14-Авг-07 (10)
                      >>видимо вчера день такой был. не догонял ничерта.
                      >>всем ответившим большое спасибо. разобрался.
                      >Товарищ, опиши пожалуйста как вышел из положения у меня подобная ситуация...

                      извини, коллега, долго не заглядывал в форум... думаю ты уже сам разобрался (в принципе по ветке ответов все понятно, я и впрямь тогда не сразу догнал, в чем смысл), но если кому-то еще понадобится: решение, которое здесь посоветовали и которое было использовано такое:
                      если в упомянутой ситуации машина гейтвей имеет адрес 192.168.1.66 (т.е. находится в сети 192.168.1.0/24), то сервер со squid выносится (ну к примеру) в сеть 192.168.100.0/24. На сетевом интерфейсе гейта описывается алиас (ну его ведь тоже надо в эту "сотую" сеть как-то отправить) и правила в случае pf получаются такими:
                      $cat /etc/pf.conf
                      ...
                      internal_net1 = "192.168.1.0/24"
                      internal_net2 = "192.168.100.0/24"
                      squid = "192.168.100.2"
                      ...
                      rdr on $int_if proto tcp from $internal_net1 to !(self) port {80 8080} -> $squid port 3128
                      ...




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру