Имеется:
1. Есть Squid 3 на Ubuntu 10.4 lts server x64
2. Сетка eth0 (локальная 192.168.10.*) и eth1 (инет 10.2.4.*)
3. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
заворачиваем все tcp 80 порт на Squid
4. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.2.4.2
маршрутизаяИтог:
route
Destination Gateway Genmask Flags Metric Ref Use Iface
10.2.4.0 * 255.255.255.0 U 0 0 0 eth1
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
default 10.2.4.1 0.0.0.0 UG 100 0 0 eth1netstat -apn | grep squid
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTENПроблема:
моя машина
IP-адрес . . . . . . . . . . . . : 192.168.10.62
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз . . . . . . . . . . : 192.168.10.7
DNS-серверы . . . . . . . . . . . : 192.168.10.7Если указывать в качестве прокси в IE 192.168.10.7:3128 - прокси работает, если убрать то запросы в инет идут минуя прокси напрямую.
Что я сделал не так?
конфиг squid без комментированных строк
вывод iptables-saveу клиента с не прописаным прокси, инет есть или нет?
iptables-save
# Generated by iptables-save v1.4.4 on Tue May 11 08:42:16 2010
*mangle
:PREROUTING ACCEPT [1334389:476515717]
:INPUT ACCEPT [439391:195738774]
:FORWARD ACCEPT [751306:249775564]
:OUTPUT ACCEPT [324168:182492011]
:POSTROUTING ACCEPT [1075474:432267575]
COMMIT
# Completed on Tue May 11 08:42:16 2010
# Generated by iptables-save v1.4.4 on Tue May 11 08:42:16 2010
*nat
:PREROUTING ACCEPT [52668:9389494]
:POSTROUTING ACCEPT [20847:2093713]
:OUTPUT ACCEPT [15351:1007701]
-A PREROUTING ! -d 192.168.0.0/24 -i eth0 -p tcp -m multiport --dports 80,8080 -j DNAT --to-destination 192.168.10.7:3128
-A POSTROUTING -o eth1 -j SNAT --to-source 10.2.4.2
COMMIT
# Completed on Tue May 11 08:42:16 2010
# Generated by iptables-save v1.4.4 on Tue May 11 08:42:16 2010
*filter
:INPUT ACCEPT [428101:193765671]
:FORWARD ACCEPT [672620:192515493]
:OUTPUT ACCEPT [316382:180048666]
-A INPUT -p tcp -m tcp ! --dport 22 -j LOG
COMMIT
# Completed on Tue May 11 08:42:16 2010у клиентов инет есть, проблема в том что запросы на 80 порт squid не перенаправляются, т.е. я если принудительно поставлю в настройках IE прокси 192.168.10.7:3128 squid работает, если убираю по логике iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 должно перехватить пакет и отправить его squid, но этого не происходит.
## Network
http_port 3128 transparent# Paths
access_log /var/log/squid3/access.log squid
error_directory /etc/squid3/messages# Задаем 1 Гб кэша, 16 каталогов первого уровня и 256 - второго
cache_dir ufs /var/spool/squid 1024 16 256## Networks
acl localhost src 127.0.0.1/32
acl internal src 192.168.10.0/255.255.255.0# Havp
cache_peer 127.0.0.1 parent 3129 0 no-query no-digest
never_direct allow all# Hosts
acl m-2-3 arp 00:1A:4D:55:8F:80## Messages
deny_info space.message advertising
deny_info space.message spy## Destanations
acl advertising url_regex "/etc/squid3/acl/advertising.acl"
acl advauto url_regex "/etc/squid3/acl/advauto.acl"
acl social url_regex "/etc/squid3/acl/social.acl"
acl proxy url_regex "/etc/squid3/acl/proxy.acl"
acl news url_regex "/etc/squid3/acl/news.acl"
acl music url_regex "/etc/squid3/acl/music.acl"
acl entertainment url_regex "/etc/squid3/acl/entertainment.acl"
acl spy url_regex "/etc/squid3/acl/spy.acl"
acl soft url_regex "/etc/squid3/acl/soft.acl"
acl file url_regex "/etc/squid3/acl/file.acl"
acl whitelist url_regex "/etc/squid3/acl/whitelist.acl"
acl vacancy url_regex "/etc/squid3/acl/vacancy.acl"## Other
acl blockedext url_regex "/etc/squid3/acl/blockedext.acl"
http_access deny all blockedext## Media
acl blockedmime rep_mime_type -i "/etc/squid3/acl/blockedmime.acl"
http_access deny all blockedmimehttp_access allow localhost
Прошу помощи специалистов!
Ситуация та же что и у топикстартера - если принудительно задавать пользователям прокси (по порту 3128), то всё работает, НО если прокси не указывать явно - сквид ничего не делает.Конфиг сквида:
---------------------------------------------------------------------
http_port 192.168.201.10:3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 64 MB
maximum_object_size 16384 KBcache_dir ufs /var/log/squid/cache 5000 16 256
cache_access_log /var/log/squid/access.log
#cache_log /var/log/squid/cache.log
#cache_store_log /var/log/squid/store.logauth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
refresh_pattern ^ftp: &n... 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 192.168.201.0/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Jabber_ports port 5222 5223
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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
#BLOKIROVKA ODNOKLASNIKO
acl odn url_regex ^http://www.odnoklasniki.ru\.*
acl odn1 url_regex ^http://www.odnoklassniki.ru\.*
acl odn2 url_regex ^http://www.odnoklassniki.ua\.*
acl odn3 url_regex ^http://www.odnoklasniki.ua\.*
acl odn4 url_regex odnoklasniki
acl odn5 url_regex odnoklassniki
acl kont2 url_regex vkontakte
acl kont url_regex ^http://vkontakte.ru\.*
acl xxx1 url_regex porno
acl xxx2 url_regex xvideo
acl youtube url_regex youtube
acl mediaf url_regex -i ftp(\.mpa|\.mp3|\.wma|\.swf|\.m3u|\.avi|\.mpg|\.mpeg|\.wmv|\.wav|\.asf)http_access allow manager localhost
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports !Jabber_ports
acl our_networks src 192.168.201.0/24#BLOKIROVKA
http_access deny mediaf
http_access deny odn
http_access deny odn1
http_access deny odn2
http_access deny odn3
http_access deny odn4
http_access deny odn5
http_access deny kont2
http_access deny kont
http_access deny odn1
http_access deny youtubehttp_access allow our_networks
http_access allow localhost manager
http_access deny all
http_reply_access allow all
visible_hostname **.**.***.**
acl FTP proto FTP
coredump_dir /var/spool/squid#squidguard
redirect_program /usr/bin/squidGuard
redirect_children 5
redirector_bypass on
---------------------------------------------------------------------На том же сервере стоит Postfix с веб-интерфейсом, в связи с чем не знаю как правильно задать порты для сквида и апача.
Заранее спасибо!
что у топикстартера непонятно если вывод iptables это с 192.168.10.7, то должно работать, может что-то с модулями , но врятли.Вам , смотрите что в iptables.
>Вам , смотрите что в iptables.IPtables:
# Generated by iptables-save v1.3.8 on Wed May 12 16:42:20 2010
*raw
:PREROUTING ACCEPT [121822690:76232346187]
:OUTPUT ACCEPT [12359244:8144377425]
COMMIT
# Completed on Wed May 12 16:42:20 2010
# Generated by iptables-save v1.3.8 on Wed May 12 16:42:20 2010
*nat
:PREROUTING ACCEPT [1723575:115308130]
:POSTROUTING ACCEPT [366762:21646585]
:OUTPUT ACCEPT [259722:17363597]
-A PREROUTING -d ***.***.***.*** -i eth1 -p tcp -m tcp --dport 3389 -j DNAT --to-d estination 192.168.201.100:3389
-A POSTROUTING -s 192.168.201.0/255.255.255.0 -o eth1 -j MASQUERADE
COMMIT
# Completed on Wed May 12 16:42:20 2010
# Generated by iptables-save v1.3.8 on Wed May 12 16:42:20 2010
*mangle
:PREROUTING ACCEPT [121822690:76232346187]
:INPUT ACCEPT [11935089:6042371108]
:FORWARD ACCEPT [109883113:70189601599]
:OUTPUT ACCEPT [12359246:8144377753]
:POSTROUTING ACCEPT [122239051:78333769825]
COMMIT
# Completed on Wed May 12 16:42:20 2010
# Generated by iptables-save v1.3.8 on Wed May 12 16:42:20 2010
*filter
:INPUT DROP [587:198852]
:FORWARD DROP [3308:213959]
:OUTPUT ACCEPT [6204081:5950252458]
:DMZIN - [0:0]
:DMZOUT - [0:0]
:INETIN - [0:0]
:INETOUT - [0:0]
:LDROP - [0:0]
:LREJECTLTREJECT - [0:0]
:TCPACCEPT - [0:0]
:TREJECT - [0:0]
:UDPACCEPT - [0:0]
:ULDROP - [0:0]
:ULREJECT - [0:0]
:ULTREJECT - [0:0]
-A INPUT -i eth1 -j INETIN
-A INPUT -s 192.168.201.0/255.255.255.0 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A FORWARD -s 192.168.201.10 -o eth1 -p tcp -m tcp --sport 3389 -j ACCEPT
-A FORWARD -d 192.168.201.10 -i eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i eth1 -o eth0 -j INETIN
-A FORWARD -i eth0 -o eth1 -j INETOUT
-A FORWARD -s 192.168.201.0/255.255.255.0 -i ! eth1 -o ! eth1 -j ACCEPT
-A OUTPUT -o eth1 -j INETOUT
-A INETIN -m state --state INVALID -j TREJECT
-A INETIN -p icmp -m icmp --icmp-type 5 -j TREJECT
-A INETIN -p icmp -m icmp --icmp-type 9 -j TREJECT
-A INETIN -p icmp -m icmp --icmp-type 10 -j TREJECT
-A INETIN -p icmp -m icmp --icmp-type 15 -j TREJECT
-A INETIN -p icmp -m icmp --icmp-type 16 -j TREJECT
-A INETIN -p icmp -m icmp --icmp-type 17 -j TREJECT
-A INETIN -p icmp -m icmp --icmp-type 18 -j TREJECT
-A INETIN -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A INETIN -p icmp -m icmp --icmp-type 8 -j TREJECT
-A INETIN -p icmp -m icmp ! --icmp-type 8 -j ACCEPT
-A INETIN -p tcp -m tcp --dport 25 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 47 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 80 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 21 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 22 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 110 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 1723 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 143 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 3389 -j TCPACCEPT
-A INETIN -p tcp -m tcp --dport 1490 -j TCPACCEPT
-A INETIN -p udp -m udp --dport 47 -j UDPACCEPT
-A INETIN -p udp -m udp --dport 68 -j UDPACCEPT
-A INETIN -p udp -m udp --dport 6112 -j UDPACCEPT
-A INETIN -p udp -m udp --dport 6119 -j UDPACCEPT
-A INETIN -p udp -m udp --dport 4000 -j UDPACCEPT
-A INETIN -p udp -m udp --dport 1490 -j UDPACCEPT
-A INETIN -p udp -m udp --dport 1723 -j UDPACCEPT
-A INETIN -p udp -m udp --dport 500 -j UDPACCEPT
-A INETIN -p udp -m udp --dport 143 -j UDPACCEPT
-A INETIN -m state --state ESTABLISHED -j ACCEPT
-A INETIN -p tcp -m tcp --dport 1024:65535 -m state --state RELATED -j TCPACCEPT
-A INETIN -p udp -m udp --dport 1024:65535 -m state --state RELATED -j UDPACCEPT
-A INETIN -j TREJECT
-A INETOUT -j ACCEPT
-A LDROP -p tcp -m limit --limit 2/sec -j LOG --log-prefix "TCP Dropped " --log- level 6
-A LDROP -p udp -m limit --limit 2/sec -j LOG --log-prefix "UDP Dropped " --log- level 6
-A LDROP -p icmp -m limit --limit 2/sec -j LOG --log-prefix "ICMP Dropped " --lo g-level 6
-A LDROP -f -m limit --limit 2/sec -j LOG --log-prefix "FRAGMENT Dropped "
-A LDROP -j DROP
-A TCPACCEPT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 20/s ec -j ACCEPT
-A TCPACCEPT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 2/se c -j LOG --log-prefix "Possible SynFlood "
-A TCPACCEPT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TREJECT
-A TCPACCEPT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A TCPACCEPT -m limit --limit 2/sec -j LOG --log-prefix "Mismatch in TCPACCEPT "
-A TCPACCEPT -j TREJECT
-A TREJECT -p tcp -j REJECT --reject-with tcp-reset
-A TREJECT -p udp -j REJECT --reject-with icmp-port-unreachable
-A TREJECT -p icmp -j DROP
-A TREJECT -j REJECT --reject-with icmp-port-unreachable
-A UDPACCEPT -p udp -j ACCEPT
-A UDPACCEPT -m limit --limit 2/sec -j LOG --log-prefix "Mismatch on UDPACCEPT "
-A UDPACCEPT -j TREJECT
-A ULDROP -p tcp -m limit --limit 2/sec -j ULOG --ulog-prefix "LDROP_TCP"
-A ULDROP -p udp -m limit --limit 2/sec -j ULOG --ulog-prefix "LDROP_UDP"
-A ULDROP -p icmp -m limit --limit 2/sec -j ULOG --ulog-prefix "LDROP_ICMP"
-A ULDROP -f -m limit --limit 2/sec -j ULOG --ulog-prefix "LDROP_FRAG"
-A ULDROP -j DROP
-A ULREJECT -p tcp -m limit --limit 2/sec -j ULOG --ulog-prefix "LREJECT_TCP"
-A ULREJECT -p udp -m limit --limit 2/sec -j ULOG --ulog-prefix "LREJECT_UDP"
-A ULREJECT -p icmp -m limit --limit 2/sec -j ULOG --ulog-prefix "LREJECT_UDP"
-A ULREJECT -f -m limit --limit 2/sec -j ULOG --ulog-prefix "LREJECT_FRAG"
-A ULREJECT -j REJECT --reject-with icmp-port-unreachable
-A ULTREJECT -p tcp -m limit --limit 2/sec -j ULOG --ulog-prefix "LTREJECT_TCP"
-A ULTREJECT -p udp -m limit --limit 2/sec -j ULOG --ulog-prefix "LTREJECT_UDP"
-A ULTREJECT -p icmp -m limit --limit 2/sec -j ULOG --ulog-prefix "LTREJECT_ICMP "
-A ULTREJECT -f -m limit --limit 2/sec -j ULOG --ulog-prefix "LTREJECT_FRAG"
-A ULTREJECT -p tcp -j REJECT --reject-with tcp-reset
-A ULTREJECT -p udp -j REJECT --reject-with icmp-port-unreachable
-A ULTREJECT -p icmp -j DROP
-A ULTREJECT -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Wed May 12 16:42:20 2010
у вас нет правила для заворачивания на прокси
>у вас нет правила для заворачивания на проксиЕсли я правильно понял, то мне надо добавить правило
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
и таким образом запросы всех пользователей из локальной сети на порт 80 попадут на порт 3128 (на сквид). Правильно?
И не помешает ли такая операция апачу (или доступу к нему), т.к. он изначально использует 80 порт??
>>у вас нет правила для заворачивания на прокси
>
>Если я правильно понял, то мне надо добавить правило
>iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
>REDIRECT --to-port 3128
>и таким образом запросы всех пользователей из локальной сети на порт 80
>попадут на порт 3128 (на сквид). Правильно?
>И не помешает ли такая операция апачу (или доступу к нему), т.к.
>он изначально использует 80 порт??iptables -t nat -I PREROUTING -i eth0 -p tcp -d ! 192.168.201.10 --dport 80 -j DNAT --to-destination 192.168.201.10:3128
>iptables -t nat -I PREROUTING -i eth0 -p tcp -d ! 192.168.201.10
>--dport 80 -j DNAT --to-destination 192.168.201.10:3128Большое спасибо!! Всё работает, теперь можно спокойно учить тамчасть :)