The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
SQUID transparent + PF, !*! sergeii01, 17-Ноя-08, 12:07  [смотреть все]
Добрый день,
Есть проблема не могу решить.
Есть сеть с двумя интернет каналами, на каждом стоит фрее 6.3 на каждом есть одна сетевая с внешним IP и внутренним. Роутер 1 (с медленным каналом) имеет внешний XXX.XXX.XXX.XXX а внутренний 192.168.1.2, Роутер 2 (с быстрым каналом) имеет внешний IP YYY.YYY.YYY.YYY и внутренний 192.168.1.1 и выполняет DEFAULT GW для сети но не для Рoутер 1. На Роутер 1 стоит SQUID 2.6.22 с --enable-pf-transparent и PF с правилом
nat on $int_if proto tcp from 192.168.1.200 to 192.168.1.2 port 8080 -> $int_if
pass log all
Роутер 2 работает как роутер в котором есть правило редиректа
rdr pass on $int_if inet proto tcp from 192.168.1.200 to !192.168.1.0/24 port 80 -> 192.168.1.2 port 8080.
Теперь беда в том что, как транспарент ето всё неработает, есле я выставляю на 192.168.1.200 proxy то тогда всё работает ОК

П.С.
squid.conf
    http_port 192.168.1.2:8080 transparent
    icp_port 0
    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    no_cache deny QUERY
    cache_dir ufs /samba/squid/array 14000 16 256
    cache_access_log /samba/squid/logs/access.log
    cache_log /samba/squid/logs/cache.log
    cache_store_log /samba/squid/logs/store.log
    emulate_httpd_log off
    log_ip_on_direct on
    pid_filename /samba/squid/logs/squid.pid
    ftp_user xxx@gmail.com
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl setka src 192.168.1.0/22
    acl admin src 192.168.1.200/255.255.255.255
    acl SSL_ports port 443 563
    acl CONNECT method CONNECT
    acl black_list url_regex "/usr/local/etc/squid/sex.inc"
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports !admin
    http_access deny CONNECT !SSL_ports !admin
    http_access deny black_list !admin
    http_access allow setka
    http_access allow admin
    http_access deny all
    icp_access allow all
    acl snmppublic snmp_community public
    snmp_access allow snmppublic localhost
    snmp_access deny all

  • SQUID transparent + PF, !*! reader, 16:51 , 17-Ноя-08 (1)
    1
    >каждом есть одна сетевая с внешним IP и внутренним. Роутер 1
    >(с медленным каналом) имеет внешний XXX.XXX.XXX.XXX а внутренний 192.168.1.2, Роутер 2
    >(с быстрым каналом) имеет внешний IP YYY.YYY.YYY.YYY и внутренний 192.168.1.1 и
    >выполняет DEFAULT GW для сети но не для Рoутер 1. На
    >Роутер 1 стоит SQUID 2.6.22 с --enable-pf-transparent и PF с правилом
    >
    >nat on $int_if proto tcp from 192.168.1.200 to 192.168.1.2 port 8080 -> $int_if

    не понял что это и для чего. помоему оно должно быть на Роутер 2
    >pass log all
    >Роутер 2 работает как роутер в котором есть правило редиректа
    >rdr pass on $int_if inet proto tcp from 192.168.1.200 to !192.168.1.0/24 port 80 -> 192.168.1.2 port 8080.

    нужен SNAT на внутреннем интерфейсе, иначе 192.168.1.2 будет отвечать напрямую клиенту или 192.168.1.2 выведите в другую подсеть.

    • SQUID transparent + PF, !*! sergeii01, 17:34 , 17-Ноя-08 (2)
      Может моглибы подсказатё как SNAT на внутреннем интерфейсе сделать.
      Спасибо
      • SQUID transparent + PF, !*! reader, 17:46 , 17-Ноя-08 (3)
        >Может моглибы подсказатё как SNAT на внутреннем интерфейсе сделать.
        >Спасиб

        так как вы и писАли
        nat on $int_if proto tcp from 192.168.1.200 to 192.168.1.2 port 8080 -> $int_if

        • SQUID transparent + PF, !*! sergeii01, 17:54 , 17-Ноя-08 (4)
          по поводу редиректа на Роутер 1 он редиректит весь трафик на 8080 порт 192.168.1.2 и он для внутренней сети работает как DEFAULT GW, по этому на нём я и прописал правило для редиректа. Может я собственно не стого и начал?
          • SQUID transparent + PF, !*! reader, 18:18 , 17-Ноя-08 (5)
            >по поводу редиректа на Роутер 1 он редиректит весь трафик на 8080
            >порт 192.168.1.2 и он для внутренней сети работает как DEFAULT GW,
            >по этому на нём я и прописал правило для редиректа. Может
            >я собственно не стого и начал?

            DEFAULT GW - Роутер 1 или Роутер 2? из первого поста я понял что Роутер 2. какие правила  для PF сейчас.
            я понял что вы хотите так: запрос от 192.168.1.200 идет через 192.168.1.1 (DEFAULT GW), тут перенаправляется на 192.168.1.2 (squid)

            на клиенте не забывайте прописать DNS и шлюз

            • SQUID transparent + PF, !*! sergeii01, 09:08 , 18-Ноя-08 (6)
              Извените сам запутался когда писал первый пост. :)
              Роутер 1 DEFAULT GW 192.168.1.1
              Роутер 2 squid 192.168.1.2

              На Роутер 1 стоит редирект, всего WEB трафика приходющего на него, на Роутер 2 8080 порт
              rdr pass on $int_if inet proto tcp from 192.168.1.200 to !192.168.1.0/24 port 80 -> 192.168.1.2 port 8080

              Роутер 2 SQUID transparent
              nat on $int_if proto tcp from 192.168.1.200 to 192.168.1.2 port 8080 -> $int_if

              С TCPDUMP-ом посмотрел как ходят пакеты, так от клиента 192.168.1.200 исходит пакет попадает на Роутер 1 192.168.1.1 тогда он его перекидывает на squid 192.168.1.2 а тот в свою очередь отвечает на прямую клиенту 192.168.1.200, мне кажется что вся беда втом и есть что назад клиенту пакет проходит не через 192.168.1.1 а на прямую.


              Спасибо :)

              • SQUID transparent + PF, !*! reader, 10:27 , 18-Ноя-08 (7)
                >Извените сам запутался когда писал первый пост. :)
                >Роутер 1 DEFAULT GW 192.168.1.1
                >Роутер 2 squid 192.168.1.2
                >
                >На Роутер 1 стоит редирект, всего WEB трафика приходющего на него, на
                >Роутер 2 8080 порт
                >rdr pass on $int_if inet proto tcp from 192.168.1.200 to !192.168.1.0/24 port 80 -> 192.168.1.2 port 8080

                nat on $int_if proto tcp from any to 192.168.1.2 port 8080 -> 192.168.1.1
                >
                >Роутер 2 SQUID transparent
                >nat on $int_if proto tcp from 192.168.1.200 to 192.168.1.2 port 8080 -> $int_if

                это помоему не нужно и тайный смысл этого правила не понял :).
                >
                >С TCPDUMP-ом посмотрел как ходят пакеты, так от клиента 192.168.1.200 исходит пакет
                >попадает на Роутер 1 192.168.1.1 тогда он его перекидывает на squid
                >192.168.1.2 а тот в свою очередь отвечает на прямую клиенту 192.168.1.200,
                >мне кажется что вся беда втом и есть что назад клиенту
                >пакет проходит не через 192.168.1.1 а на прямую.

                на 192.168.1.200 временно укажите шлюзом 192.168.1.2 и посмотрите что будет
                >
                >
                >Спасибо :)

                • SQUID transparent + PF, !*! sergeii01, 10:55 , 18-Ноя-08 (8)
                  >rdr pass on $int_if inet proto tcp from 192.168.1.200 to !192.168.1.0/24 port 80 -> 192.168.1.2 port 8080
                  >nat on $int_if proto tcp from any to 192.168.1.2 port 8080 -> 192.168.1.1

                  Это всё выставил

                  не работает всёравно

                  Роутер 1
                  10:04:45.805477 IP 192.168.1.200.gv-us > bw-in-f104.google.com.http: S 3962768219:3962768219(0) win 65535 <mss 1460,nop,nop,sackOK>
                  10:04:45.806148 IP samba > 192.168.1.200: ICMP redirect 192.168.1.2 to net 192.168.1.2, length 36
                  10:04:45.806304 IP 192.168.1.200.gv-us > 192.168.1.2.8080: S 3962768219:3962768219(0) win 65535 <mss 1300,nop,nop,sackOK>
                  10:04:48.854246 IP 192.168.1.200.gv-us > bw-in-f104.google.com.http: S 3962768219:3962768219(0) win 65535 <mss 1460,nop,nop,sackOK>
                  10:04:54.875607 IP 192.168.1.200.gv-us > bw-in-f104.google.com.http: S 3962768219:3962768219(0) win 65535 <mss 1460,nop,nop,sackOK>

                  Роутер 2
                  09:52:49.976277 arp who-has 192.168.1.1 tell 192.168.1.2

                  >на 192.168.1.200 временно укажите шлюзом 192.168.1.2 и посмотрите что будет

                  Поставил на 192.168.1.200 шлюз 192.168.1.2 и прописал в pf.conf-е редирект
                  rdr on $int_if proto tcp from 192.168.1.200 to any port 80 -> 192.168.1.2 port 8080
                  работает


                  • SQUID transparent + PF, !*! reader, 12:26 , 18-Ноя-08 (9)
                    >>rdr pass on $int_if inet proto tcp from 192.168.1.200 to !192.168.1.0/24 port 80 -> 192.168.1.2 port 8080
                    >>nat on $int_if proto tcp from any to 192.168.1.2 port 8080 -> 192.168.1.1
                    >
                    >Это всё выставил
                    >
                    >не работает всёравно
                    >
                    >Роутер 1
                    >10:04:45.805477 IP 192.168.1.200.gv-us > bw-in-f104.google.com.http: S 3962768219:3962768219(0) win 65535 <mss 1460,nop,nop,sackOK>
                    >10:04:45.806148 IP samba > 192.168.1.200: ICMP redirect 192.168.1.2 to net 192.168.1.2, length 36

                    net.inet.ip.redirect=0

                    >10:04:45.806304 IP 192.168.1.200.gv-us > 192.168.1.2.8080: S 3962768219:3962768219(0) win 65535 <mss 1300,nop,nop,sackOK>
                    >10:04:48.854246 IP 192.168.1.200.gv-us > bw-in-f104.google.com.http: S 3962768219:3962768219(0) win 65535 <mss 1460,nop,nop,sackOK>
                    >10:04:54.875607 IP 192.168.1.200.gv-us > bw-in-f104.google.com.http: S 3962768219:3962768219(0) win 65535 <mss 1460,nop,nop,sackOK>
                    >

                    пакеты на 192.168.1.2 не перенаправились?
                    >Роутер 2
                    >09:52:49.976277 arp who-has 192.168.1.1 tell 192.168.1.2

                    то есть на 192.168.1.2 пакеты не приходят?
                    >
                    >
                    >
                    >>на 192.168.1.200 временно укажите шлюзом 192.168.1.2 и посмотрите что будет
                    >
                    >Поставил на 192.168.1.200 шлюз 192.168.1.2 и прописал в pf.conf-е редирект
                    >rdr on $int_if proto tcp from 192.168.1.200 to any port 80 -> 192.168.1.2 port 8080
                    >работает

                    с 192.168.1.2 похоже все нормально
                    >
                    >

                    • SQUID transparent + PF, !*! sergeii01, 12:49 , 18-Ноя-08 (10)
                      На 192.168.1.1 net.inet.ip.redirect=1
                      • SQUID transparent + PF, !*! reader, 13:10 , 18-Ноя-08 (11)
                        >На 192.168.1.1 net.inet.ip.redirect=1

                        а смысл какой был?

                        • SQUID transparent + PF, !*! sergeii01, 14:56 , 18-Ноя-08 (12)
                          Роутер 2
                          [root@router2 ~]# tcpdump -i em1 -ttt -e -n port 8080
                          tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
                          listening on em1, link-type EN10MB (Ethernet), capture size 96 bytes
                          000000 00:1e:4a:a9:d2:1c > 00:0e:a6:b6:cd:40, ethertype IPv4 (0x0800), length 62: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          000037 00:0e:a6:b6:cd:40 > 00:14:5e:a4:f8:92, ethertype IPv4 (0x0800), length 62: 192.168.3.59.8080 > 192.168.1.251.51073: S 3309537150:3309537150(0) ack 2956257228 win 65535 <mss 1460,sackOK,eol>
                          000213 00:14:5e:a4:f8:92 > 00:0e:a6:b6:cd:40, ethertype IPv4 (0x0800), length 60: 192.168.1.251.51073 > 192.168.3.59.8080: R 2956257228:2956257228(0) win 0
                          2. 996740 00:1e:4a:a9:d2:1c > 00:0e:a6:b6:cd:40, ethertype IPv4 (0x0800), length 62: 192.168.1.251.60616 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          000047 00:0e:a6:b6:cd:40 > 00:14:5e:a4:f8:92, ethertype IPv4 (0x0800), length 62: 192.168.3.59.8080 > 192.168.1.251.60616: S 423381392:423381392(0) ack 2956257228 win 65535 <mss 1460,sackOK,eol>
                          000196 00:14:5e:a4:f8:92 > 00:0e:a6:b6:cd:40, ethertype IPv4 (0x0800), length 60: 192.168.1.251.60616 > 192.168.3.59.8080: R 2956257228:2956257228(0) win 0

                          Роутер 1
                          [root@router /var/log]# tcpdump -i pflog0 -ttt -e host 192.168.3.59
                          tcpdump: WARNING: pflog0: no IPv4 address assigned
                          tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
                          listening on pflog0, link-type PFLOG (OpenBSD pflog file), capture size 96 bytes
                          538021 rule 0/0(match): pass in on bridge0: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1460,nop,nop,sackOK>
                          1.    000006 rule 0/0(match): pass out on bridge0: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1460,nop,nop,sackOK>
                          000004 rule 0/0(match): pass out on bge1: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1460,nop,nop,sackOK>
                          000648 rule 0/0(match): pass in on bge1: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          000005 rule 0/0(match): pass in on bridge0: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          000005 rule 0/0(match): pass out on bridge0: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          000007 rule 3/0(match): pass out on bge0: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          2. 996507 rule 0/0(match): pass in on bridge0: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1460,nop,nop,sackOK>
                          000010 rule 3/0(match): pass out on bge1: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1460,nop,nop,sackOK>
                          000513 rule 3/0(match): pass in on bge1: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          000005 rule 3/0(match): pass in on bridge0: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          000005 rule 3/0(match): pass out on bridge0: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          000009 rule 3/0(match): pass out on bge0: 192.168.1.251.60616 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>

                          Вот что получается :)

                        • SQUID transparent + PF, !*! reader, 15:45 , 18-Ноя-08 (13)
                          >[оверквотинг удален]
                          >000005 rule 0/0(match): pass out on bridge0: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          >000007 rule 3/0(match): pass out on bge0: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          >2. 996507 rule 0/0(match): pass in on bridge0: 192.168.3.79.interhdl_elmd > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1460,nop,nop,sackOK>
                          >000010 rule 3/0(match): pass out on bge1: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1460,nop,nop,sackOK>
                          >000513 rule 3/0(match): pass in on bge1: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          >000005 rule 3/0(match): pass in on bridge0: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          >000005 rule 3/0(match): pass out on bridge0: 192.168.1.251.51073 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          >000009 rule 3/0(match): pass out on bge0: 192.168.1.251.60616 > 192.168.3.59.8080: S 2956257227:2956257227(0) win 65535 <mss 1300,nop,nop,sackOK>
                          >
                          >Вот что получается :)

                          192.168.3.59 - это Роутер 2 (squid)
                          192.168.3.79 и 192.168.1.251 - это кто?

                        • SQUID transparent + PF, !*! sergeii01, 15:49 , 18-Ноя-08 (14)
                          Это так,
                          Роутер 1 192.168.1.251
                          клиент 192.168.3.79
                        • SQUID transparent + PF, !*! reader, 16:07 , 18-Ноя-08 (15)
                          >Это так,
                          >Роутер 1 192.168.1.251

                          почему адрес из другой подсети?
                          >клиент 192.168.3.79

                          у клиента 192.168.3.79 шлюзом 192.168.1.251 ?

                          что то я не понимаю вашу топологию сети %)

                        • SQUID transparent + PF, !*! sergeii01, 16:15 , 18-Ноя-08 (16)
                          >>Это так,
                          >>Роутер 1 192.168.1.251
                          >
                          >почему адрес из другой подсети?
                          >>клиент 192.168.3.79
                          >
                          >у клиента 192.168.3.79 шлюзом 192.168.1.251 ?
                          >
                          >что то я не понимаю вашу топологию сети %)

                          у нас сеть с 192.168.0.0 с маской 255.255.252.0

                        • SQUID transparent + PF, !*! reader, 17:07 , 18-Ноя-08 (17)
                          так и не работает?

                          судя по дампу на 192.168.3.59 все отработало правильно, адреса клиента (192.168.3.79) он не видел значит SNAT на 192.168.1.251 отработал.
                          с Роутер1 ушел пакет с обратным адресом 192.168.1.251.51073. на Роутер2 принят и на него же отвечен, а вот что дальше на Роутер1 происходит не понятно

                        • SQUID transparent + PF, !*! sergeii01, 18:34 , 18-Ноя-08 (18)
                          А как можно эту ситуацию прояснить?
                        • SQUID transparent + PF, !*! reader, 10:34 , 19-Ноя-08 (19)
                          >А как можно эту ситуацию прояснить?

                          можно начать с просмотра tcpdump с адресом клиента или pftop смотреть на предмет что твопирся с адресом клиента




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

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