LINUX.ORG.RU
ФорумAdmin

Настройка iptables для прозрачного Squid 3.3

 , , ,


0

1

Приветствую.

Есть удаленный сервер в инете на котором установлен named, который заворачивает траффик избранных доменов на свой ip. На сервере установлен Squid 3.3.8, настроенный в intercept mode. Надо чтобы он слушал запросы приходящие на 80-ый порт сервера и проксировал их со своего айпишника. Точно такая же конфигурация работала с Squid 3.1, но тот не умеет делать динамическую подмену ssl сертификатов, так что пришлось обновить.

Squid Cache: Version 3.3.8
configure options:  '--build=x86_64-unknown-linux-gnu' '--host=x86_64-unknown-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--libexecdir=/usr/lib64/squid' '--sysconfdir=/etc/squid' '--libdir=/usr/lib64/squid' '--datadir=/usr/share/squid' '--disable-static' '--enable-build-info' '--enable-storeio=aufs,ufs' '--enable-removal-policies=heap,lru' '--enable-delay-pools' '--enable-esi' '--enable-icap-client' '--enable-ecap' '--enable-cachemgr-hostname=squid' '--enable-ssl' '--enable-linux-netfilter' '--enable-follow-x-forwarded-for' '--disable-ident-lookups' '--enable-auth' '--enable-auth-basic=LDAP,NCSA,RADIUS,SASL' '--enable-external-acl-helpers=LDAP_group,kerberos_ldap_group,session,wbinfo_group' '--enable-x-accelerator-vary' '--enable-zph-qos' '--with-default-user=squid' '--with-dl' '--with-large-files' 'LDFLAGS=-Wl,--as-needed -Wl,--strip-all -pie' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fpie' 'CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fpie' 'build_alias=x86_64-unknown-linux-gnu' 'host_alias=x86_64-unknown-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' 'PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig' --enable-ltdl-convenience

При явном указании прокси в браузере (правда на другом порту) все работает. Как видно из конфига, прокси слушает один айпишник, а исходящий траффик должен идти с другого. Подозреваю что дело в правилах iptables которые я прописывал. Уже испробовал все варианты, но у сквида всегда один ответ:

The system returned: (111) Connection refused

dns_v4_first on
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log

tcp_outgoing_address $2ND_IP

dns_nameservers 8.8.8.8

visible_hostname blabla

acl internet src all      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost manager
http_access allow localhost

http_access allow internet
http_access allow localhost

http_port $1ST_IP:3128 intercept
http_port $1ST_IP:3127

cache_dir ufs /var/spool/squid 1024 10 128

coredump_dir /var/spool/squid

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

Пожалуйста посоветуйте, какие прописать записи в iptables. Пока что удалил абсолютно все правила оттуда.

Надо чтобы он слушал запросы приходящие на 80-ый порт сервера и проксировал их со своего айпишника
прокси слушает один айпишник, а исходящий траффик должен идти с другого

http://www.squid-cache.org/Doc/

http_port $IP1:3128              # обычный прокси
http_port $IP1:8080 intercept    # прозрачный прокси
acl dest_for_ip1 url_regex "/etc/squid/acl.ip1"
tcp_outgoing_address $IP1 dest_for_ip1  # для каких хостов использовать первый адрес (если нужно)
tcp_outgoing_address $IP2        # адрес для всех исходящих запросов с прокси-сервера

DiMoN ★★★ ()
Ответ на: комментарий от TERRANZ

да читал я инфу оттуда. когда делаю просто redirect порта через iptables, пишет connection refused. если делают это через nat, тоже не заводится.

nikoten ()
Ответ на: комментарий от nikoten

Докуентацию вообще читали?

Прозрачное проксирование для сети 192.168.55.0/24 на локальном интерфейсе eth0, squid запущен на хосте с адресом 192.168.55.1 и в нём настроено прозрачное проксирование на порту 8080:

iptables -I PREROUTING -s 192.168.55.0/24 ! -d 192.168.55.0/24 -i eth0 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -j DNAT --to-destination 192.168.55.1:8080

DiMoN ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.