Закомментировал строчку:
acl manager proto cache_object
получил:
root@TERMINALSERVER:/var/log/squid3# squid3 -NCd1
2015/03/24 14:27:45| WARNING: (B) '127.0.0.1' is a subnetwork of (A) '127.0.0.1'
2015/03/24 14:27:45| WARNING: because of this '127.0.0.1' is ignored to keep splay tree searching predictable
2015/03/24 14:27:45| WARNING: You should probably remove '127.0.0.1' from the ACL named 'localhost'
2015/03/24 14:27:45| WARNING: (B) '127.0.0.1' is a subnetwork of (A) '127.0.0.1'
2015/03/24 14:27:45| WARNING: because of this '127.0.0.1' is ignored to keep splay tree searching predictable
2015/03/24 14:27:45| WARNING: You should probably remove '127.0.0.1' from the ACL named 'localhost'
2015/03/24 14:27:45| WARNING: (B) '127.0.0.0/8' is a subnetwork of (A) '127.0.0.0/8'
2015/03/24 14:27:45| WARNING: because of this '127.0.0.0/8' is ignored to keep splay tree searching predictable
2015/03/24 14:27:45| WARNING: You should probably remove '127.0.0.0/8' from the ACL named 'to_localhost'
2015/03/24 14:27:45| WARNING: (B) '0.0.0.0' is a subnetwork of (A) '0.0.0.0'
2015/03/24 14:27:45| WARNING: because of this '0.0.0.0' is ignored to keep splay tree searching predictable
2015/03/24 14:27:45| WARNING: You should probably remove '0.0.0.0' from the ACL named 'to_localhost'
2015/03/24 14:27:45| WARNING: (B) '0.0.0.0' is a subnetwork of (A) '0.0.0.0'
2015/03/24 14:27:45| WARNING: because of this '0.0.0.0' is ignored to keep splay tree searching predictable
2015/03/24 14:27:45| WARNING: You should probably remove '0.0.0.0' from the ACL named 'to_localhost'
2015/03/24 14:27:45| Squid is already running! Process ID 6833
Закомментировал еще 2 последующие строчки, уже без ошибок запустил. Похоже, на кальмаре 3.3.8 придется вести танцы с бубном :-(
Пользователь решил продолжить мысль [time]24 Март 2015, 16:40:07[/time]:
Сравниваю рекомендации для кальмаров различных версий:
http://www.squid-cache.org/Versions/v3/3.3/cfgman/acl.htmlDefault Value: ACLs all, manager, localhost, and to_localhost are predefined.#
# Recommended minimum configuration:
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # 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://www.squid-cache.org/Versions/v3/3.0/cfgman/acl.htmlDefault Value: acl all src all#Recommended minimum configuration:
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#
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
Пользователь решил продолжить мысль [time]24 Март 2015, 16:47:28[/time]:
Еще:
http://www.squid-cache.org/Versions/v3/3.3/cfgman/http_access.htmlDefault Value: Deny, unless rules exist in squid.conf.#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
http://www.squid-cache.org/Versions/v3/3.0/cfgman/htcp_access.htmlRequires: --enable-htcp
Default Value: none#Allow HTCP queries from local networks only
htcp_access allow localnet
htcp_access deny all
Пользователь решил продолжить мысль [time]24 Март 2015, 17:05:37[/time]:
Еще:
http://www.squid-cache.org/Versions/v3/3.3/cfgman/http_port.htmlhttp://www.squid-cache.org/Versions/v3/3.0/cfgman/http_port.htmlУ 3.3 отсутствует режим transparent - его заменили на intercept.
Похоже, надо гуглить готовые настройки для 3.3, уж больно кардинально они отличаются!
Пользователь решил продолжить мысль [time]25 Март 2015, 14:38:44[/time]:
Проблему с локальным входом в кальмар уже решил немного. Для этого:
root@TERMINALSERVER:/home/vady# grep -v "^#\|^$" /etc/squid*/squid.conf
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # 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
acl media urlpath_regex -i \.mp3$ \.asf$ \.wma \.flv$
acl whiteList dstdomain .vk.com .yandex.ru .yandex.net .yastatic.net .squid-cache.org .ok.ru .mycdn.me .vkontakte.ru
http_access allow localnet whiteList
http_access allow localhost whiteList
http_access deny localnet media
http_access deny localhost media
http_access deny all
http_port 192.168.1.1:3128 intercept
http_port 10.0.0.1:3128 intercept
http_port 127.0.0.1:3128
cache_mem 1024 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs /var/tmp/spool/squid3 2048 16 256
maximum_object_size 4 MB
access_log daemon:/var/log/squid3/access.log squid
logfile_rotate 31
coredump_dir /var/tmp/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
Ярлык браузера:
chromium-browser --proxy-server=127.0.0.1:3128
Дело в параметре intercept, который не позволил входить через локальный прокси. Поэтому я сменил в ярлыке ip с 192.168.1.1 на 127.0.0.1 и добавил еще одно правило http_port - для локального без intercept:
http_port 192.168.1.1:3128 intercept
http_port 127.0.0.1:3128
Недостаток у этого подхода в том, что любому пользователю достаточно убрать --proxy-server=127.0.0.1:3128, тогда можно получить неограниченный интернет.
Еще команда apt-get update выдает ошибку 403.
По логам вижу, что apt-get пытается зайти через 192.168.1.1, который на intercept.
Конфиг iptables:
root@TERMINALSERVER:/home/vady# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 74 packets, 6091 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- eth0 * 192.168.1.1 0.0.0.0/0 multiport dports 80,8080 to:127.0.0.1:3128
1 48 DNAT tcp -- eth0 * 192.168.1.0/24 0.0.0.0/0 multiport dports 80,8080 to:192.168.1.1:3128
0 0 DNAT tcp -- p7p1 * 10.0.0.0/24 0.0.0.0/0 multiport dports 80,8080 to:10.0.0.1:3128
0 0 REDIRECT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 3128
Chain INPUT (policy ACCEPT 1 packets, 48 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 139 packets, 8998 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 36 packets, 2154 bytes)
pkts bytes target prot opt in out source destination
120 7914 MASQUERADE all -- * eth0 192.168.1.0/24 0.0.0.0/0
В начале правила прописал перенаправление с ip прокси сервера на локальный ip
Потом - со всех подсетей на ip прокси.
Но это для локального хоста не срабатывает. С подсети 192.* нормально ходим через кальмар (имею ввиду с клиентских компьютеров).
С подсети 10.* что-то не очень хорошо - если набрать ip-адрес, который находится за корпоративным шлюзом, то вижу, что доступ запрещен, а если набрать yandex.ru или ip-адрес яндекса, что за шлюзом интернета, то нет никакого ответа. Смотрю лог кальмара. Вижу ошибку 403 на адрес интрасети (условно говоря, 172.1.1.1) с клиента 10.0.0.2, а про попытки подключения к яндексу с 10.0.0.2 ни слова. Почему они "мимо кассы", если шлюз по умолчанию у клиента - 10.0.0.1?
Пользователь решил продолжить мысль [time]26 Март 2015, 14:37:44[/time]:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.3
auto p7p1
iface p7p1 inet static
address 10.0.0.1
netmask 255.255.255.0
up route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.0.0.254 p7p1
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.0.0.254 p7p1
post-up /etc/nat
Иллюстрированная схема во вложении.