А не могли-бы выложить примерные рабочие конфигурации iptables и Squidа - есть проблема с Sams2 в примерно такой-же конфигурации, для анализа и поиска причины проблемы.
iptables не вижу смысла приводить, у меня там очень большая конфигурация. Сервер, где установлен squid, имеет полный выход в интернет. Этого полностью достаточно для нормальной работы прокси у пользователей. Рекомендую начинать отладку именно с такой конфигурации.
Вот конфиг сквида, который генерирует самс. Руками в этот конфиг не лазию, все через web интерфейс.
auth_param ntlm program /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=XS auth_param ntlm children 30 auth_param ntlm keep_alive off acl auth proxy_auth REQUIRED # # 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 # # 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 auth http_access allow localhost # And finally deny all other access to this proxy http_access deny all # Squid normally listens to port 3128 http_port 3128 # Uncomment and adjust the following to add a disk cache directory. cache_dir ufs /var/spool/squid 100 16 256 # Leave coredumps in the first cache dir coredump_dir /var/spool/squid # # Add any of your own refresh_pattern entries above these. # 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 # TAG: acl acl Sams2Time1 time MTWHFAS 23:00-23:59 acl Sams2Template1 proxy_auth user1 acl Sams2Template1 proxy_auth user2 acl Sams2Template1 proxy_auth user3 acl Sams2Template1 proxy_auth user4 acl Sams2Template1 proxy_auth user5 acl Sams2Template1 proxy_auth user6 acl Sams2Template1 proxy_auth user7 acl Sams2Template1 proxy_auth user8 acl Sams2Template1 proxy_auth user9 acl Sams2Template1 proxy_auth user10 # TAG: url_rewrite_access acl Sams2Proxy dst 10.1.3.127 url_rewrite_access deny Sams2Proxy # TAG: url_rewrite_program url_rewrite_program /usr/local/bin/sams2redir # TAG: url_rewrite_children url_rewrite_children 5 # TAG: delay_pools # TAG: delay_class # TAG: delay_access # TAG: delay_parameters # TAG: http_access # Setup Sams2 HTTP Access here http_access allow Sams2Template1 http_access allow Sams2Template3 # TAG: http_access2 # TAG: icp_access visible_hostname xs-proxy
Вот конфиг самса:
; ; This is config file for sams2 ; A line started with ; or # is a comment ; ; Database engine ; To use an engine it must be enabled during configuration DB_ENGINE=MySQL ;DB_ENGINE=PostgreSQL ;DB_ENGINE=unixODBC ; Hostname where database is runing ; This parameter is not neccesary for unixODBC engine DB_SERVER=localhost ; Database name SAMS_DB=sams2db ; ODBC=0 PDO=0 ; Source as defined in odbc.ini ; This parameter is not neccesary for engine other than unixODBC ODBCSOURCE=sams_mysql ; Username for database connection DB_USER=sams ; Password for database connection DB_PASSWORD=R1nex44m SQUIDCACHEFILE=access.log SQUIDROOTDIR=/etc/squid SQUIDLOGDIR=/var/log/squid SQUIDCACHEDIR=/usr/local/apache2 WBINFOPATH=/usr/local SAMSPATH=/usr/local SQUIDPATH=/usr/sbin SQUIDGUARDLOGPATH=/var/log SQUIDGUARDDBPATH=/var/db/squidguard RECODECOMMAND=iconv -f KOI8-R -t 866 %finp > %fout REJIKPATH=/usr/local/rejik SHUTDOWNCOMMAND=shutdown -h now ; Proxy id ; Identificator of proxy, starting from 1 CACHENUM=1
В принципе всё точно такое-же - за исключением отсутствия в конфиге Squid visible_hostname xs-proxy
и другого интервала времени. Sams2 аналогичен. Всё дело похоже в неверных настройках iptables. Вникать в iptables довольно трудно, потихоньку вникаю в логику.
Прокси был в той-же подсети, что и тестовый комп - из-за этого в экспериментах с PREROUTING и NAT Sams2 часто падал. Вечером буду пробовать с компом из другой подсети.
Хотелось-бы посмотреть строки iptables касательно перенаправления 80,8080-х портов на 3128. Вариантов много в интернете - у меня пока не получается.
Я не использую перенаправление портов на itables. Настройки прокси указаны у каждого пользователя на компьютере. При перенаправлении портов прокси работает в так называемом прозрачном режиме и при этом не может блокировать доступ к https сайтам. А сейчас почти все сайты такие. Так что нет смысла в этом.
Для блокировки https сайтов в прозрачном режиме, нужно редактировать исходники сквида. Подробнее об этом можно прочитать на хабре - https://habrahabr.ru/post/267851/
Чё-то я совсем плаваю... то есть, при использовании вложенной вами iptables.sh, подставив свои айпишки сетевых карт, с данными конфигами Squid и Sams2, политикой в домене задаю юзерам прокси-порт 3128 - и имею профит... Пробовал на нескольких компах. https идёт, а http нет. Грешил на Sams2, но и в iptables.sh совсем нет упоминания про порт 3128 и NAT закомментен. Непрозрачному Squid'у совсем не нужно перенаправление и NAT!? Как слепой котёнок тычусь и в целом конешно кривые hands.dll:)