Я пытаюсь настроить прозрачный прокси-сервер для фильтрации содержимого с помощью Squid 3.3.8, работающего на Ubuntu 14.04.5.

Я хочу запустить его как прозрачный прокси вместе с клиентами. т.е. сервер Squid в настоящее время работает на 192.168.2.212, а клиенты также находятся в диапазоне 192.168.2.0.

Другие сетевые адреса: Шлюз: 192.168.2.254 Первичный DNS: 192.168.2.12 Вторичный DNS: 192.168.2.6 Сервер DHCP: 192.168.2.10

В идеале я хотел бы изменить настройки DHCP-сервера, чтобы предоставить 192.168.2.212 в качестве шлюза, позволяя Squid фильтровать запросы, а затем позволяя им передавать их маршрутизатору в обычном режиме.

Мне удалось заставить это частично работать на тестовом сервере с помощью настройки iptables. Хотя он разрешал только http-трафик, поскольку в моей версии Squid не было настроено https.

Это мой конфиг Squid:

    ## Access Control Lists 

    acl localnet src 192.168.2.0/24 # 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
    acl ads dstdomain "/etc/squid3/ads"
    acl adsurl url_regex "/etc/squid3/adsurl"
    acl aggressive dstdomain "/etc/squid3/aggressive"
    acl aggressiveurl url_regex "/etc/squid3/aggressiveurl"
    acl alcohol dstdomain "/etc/squid3/alcohol"
    acl alcoholurl url_regex "/etc/squid3/alcoholurls"
    acl anonvpn dstdomain "/etc/squid3/anonvpn"
    acl anonvpnurl url_regex "/etc/squid3/anonvpnurl"
    acl automobiles dstdomain "/etc/squid3/automobiles"
    acl automobilesurl url_regex "/etc/squid3/automobilesurl"
    acl chat dstdomain "/etc/squid3/chat"
    acl chaturl url_regex "/etc/squid3/chaturl"
    acl costtrap dstdomain "/etc/squid3/costtrap"
    acl costtrapurl url_regex "/etc/squid3/costtrapurl"
    acl dating dstdomain "/etc/squid3/dating"
    acl datingurl url_regex "/etc/squid3/datingurl"
    acl downloads dstdomain "/etc/squid3/downloads"
    acl downloadsurl url_regex "/etc/squid3/downloadsurl"
    acl drugs dstdomain "/etc/squid3/drugs"
    acl drugsurl url_regex "/etc/squid3/drugsurl"
    acl dynamicdns dstdomain "/etc/squid3/dynamicdns"
    acl fortunetelling dstdomain "/etc/squid3/fortunetelling"
    acl fortunetellingurl url_regex "/etc/squid3/fortunetellingurl"
    acl forum dstdomain "/etc/squid3/forum"
    acl forumurl url_regex "/etc/squid3/forumurl"
    acl gambling dstdomain "/etc/squid3/gambling"
    acl gamblingurl url_regex "/etc/squid3/gamblingurl"
    acl hacking dstdomain "/etc/squid3/hacking"
    acl hackingurl url_regex "/etc/squid3/hackingurl"
    acl hobby_online_games dstdomain "/etc/squid3/hobby_online_games"
    acl hobby_online_gamesurl url_regex "/etc/squid3/hobby_online_gamesurl"
    acl games_misc dstdomain "/etc/squid3/games_misc"
    acl games_miscurl url_regex "/etc/squid3/games_miscurl"
    acl imagehosting dstdomain "/etc/squid3/imagehosting"
    acl imagehostingurl url_regex "/etc/squid3/imagehostingurl"
    acl models dstdomain "/etc/squid3/models"
    acl modelsurl url_regex "/etc/squid3/modelsurl"
    acl movies dstdomain "/etc/squid3/movies"
    acl moviesurl url_regex "/etc/squid3/moviesurl"
    acl music dstdomain "/etc/squid3/music"
    acl musicurl url_regex "/etc/squid3/musicurl"
    acl podcasts dstdomain "/etc/squid3/podca"
    acl podcastsurl url_regex "/etc/squid3/podcastsurl"
    acl radiotv dstdomain "/etc/squid3/radiotv"
    acl radiotvurl url_regex "/etc/squid3/radiotvurl"
    acl redirector dstdomain "/etc/squid3/redirector"
    acl redirectorurl url_regex "/etc/squid3/redirectorurl"
    acl ringtones dstdomain "/etc/squid3/ringtones"
    acl ringtonesurl url_regex "/etc/squid3/ringtonesurl"
    acl sex_lingerie dstdomain "/etc/squid3/sex_lingerie"
    acl sex_lingerieurl url_regex "/etc/squid3/sex_lingerieurl"
    acl shopping dstdomain "/etc/squid3/shopping"
    acl shoppingurl url_regex "/etc/squid3/shoppingurl"
    acl socialnet dstdomain "/etc/squid3/socialnet"
    acl socialneturl url_regex "/etc/squid3/socialneturl"
    acl spyware dstdomain "/etc/squid3/spyware"
    acl spywareurl url_regex "/etc/squid3/spywareurl"
    acl tracker dstdomain "/etc/squid3/tracker"
    acl trackerurl url_regex "/etc/squid3/trackerurl"
    acl violence dstdomain "/etc/squid3/violence"
    acl violenceurl url_regex "/etc/squid3/violenceurl"
    acl warez dstdomain "/etc/squid3/warez"
    acl warezurl url_regex "/etc/squid3/warezurl"
    acl weapons dstdomain "/etc/squid3/weapons"
    acl weaponsurl url_regex "/etc/squid3/weaponsurl"
    acl webmail dstdomain "/etc/squid3/webmail"
    acl webmailurl url_regex "/etc/squid3/webmailurl"
    acl webphone dstdomain "/etc/squid3/webphone"
    acl webphoneurl url_regex "/etc/squid3/webphoneurl"
    acl webradio dstdomain "/etc/squid3/webradio"
    acl webradiourl url_regex "/etc/squid3/webradiourl"
    acl webtv dstdomain "/etc/squid3/webtv"
    acl webtvurl url_regex "/etc/squid3/webtvurl"
    acl smluk src 192.168.0.0/24
    acl humour dstdomain "/etc/squid3/humour"
    acl humoururl url_regex "/etc/squid3/humoururl"
    acl Proxy port "/etc/squid3/proxallow"
    acl Allow url_regex "/etc/squid3/allow"

    ## Allow and Deny Lists

    http_access allow Allow
    http_access deny ads
    http_access deny adsurl
    http_access deny aggressive
    http_access deny aggressiveurl
    http_access deny alcohol
    http_access deny alcoholurl
    http_access deny anonvpn
    http_access deny anonvpnurl
    http_access deny automobiles
    http_access deny automobilesurl
    http_access deny chat
    http_access deny chaturl
    http_access deny costtrap
    http_access deny costtrapurl
    http_access deny dating
    http_access deny datingurl
    http_access deny downloads
    http_access deny downloadsurl
    http_access deny drugs
    http_access deny drugsurl
    http_access deny dynamicdns
    http_access deny fortunetelling
    http_access deny fortunetellingurl
    http_access deny forum
    http_access deny forumurl
    http_access deny gambling
    http_access deny gamblingurl
    http_access deny hacking
    http_access deny hackingurl
    http_access deny hobby_online_games
    http_access deny hobby_online_gamesurl
    http_access deny games_misc
    http_access deny games_miscurl
    http_access deny imagehosting
    http_access deny imagehostingurl
    http_access deny models
    http_access deny modelsurl
    http_access deny warezurl
    http_access deny weapons
    http_access deny weaponsurl
    http_access deny webmail
    http_access deny webmailurl
    http_access deny webphone
    http_access deny movies
    http_access deny moviesurl
    http_access deny warezurl
    http_access deny weapons
    http_access deny weaponsurl
    http_access deny webmail
    http_access deny webmailurl
    http_access deny webphone
    http_access deny music
    http_access deny musicurl
    http_access deny podcasts
    http_access deny podcastsurl
    http_access deny radiotv
    http_access deny radiotvurl
    http_access deny redirector
    http_access deny redirectorurl
    http_access deny ringtones
    http_access deny ringtonesurl
    http_access deny sex_lingerie
    http_access deny sex_lingerieurl
    http_access deny shopping
    http_access deny shoppingurl
    http_access deny socialnet
    http_access deny socialneturl
    http_access deny warezurl
    http_access deny weapons
    http_access deny weaponsurl
    http_access deny webmail
    http_access deny webmailurl
    http_access deny webphone
    http_access deny spyware
    http_access deny spywareurl
    http_access deny tracker
    http_access deny trackerurl
    http_access deny violence
    http_access deny violenceurl
    http_access deny warez
    http_access deny warezurl
    http_access deny weapons
    http_access deny weaponsurl
    http_access deny webmail
    http_access deny webmailurl
    http_access deny webphone
    http_access deny webphoneurl
    http_access deny webradio
    http_access deny webradiourl
    http_access deny webtv
    http_access deny webtvurl
    http_access deny humour
    http_access deny humoururl
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access deny manager
    http_access allow Proxy
    http_access allow localhost manager
    http_access allow localhost
    http_access allow localnet
    http_access allow smluk
    http_access deny all
    acl ident_aware_hosts src 198.168.0.0/24
        ident_lookup_access allow ident_aware_hosts
        ident_lookup_access deny all
    #http_port 3129
    #http_port 3128 intercept

    http_port 3129
    http_port 0.0.0.0:3128 intercept
    https_port 0.0.0.0:3130 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=16MB cert=/etc/squid3/ssl_certs/myCA.pem

    cache_dir ufs /var/spool/squid3 100 16 256
    coredump_dir /var/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
    cache_effective_user proxy
    cache_effective_group proxy


    ## Cache Stuff
    cache_dir ufs /var/spool/squid3 100 16 256
    coredump_dir /var/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
    cache_effective_user proxy
    cache_effective_group proxy

    access_log daemon:/var/log/squid3/access.log squid
    log_fqdn on


     memory_pools on
     memory_pools_limit none

    ## DNS Options

    dns_timeout 10 seconds
    dns_nameservers 192.168.2.12 192.168.2.6 192.168.2.3 # DNS Server

На данный момент я очистил все правила iptables.

Посмотрев на Netstat, я вижу, что сервер прослушивает 3128. Я попытался открыть 3130, но, похоже, я использовал неправильный формат или что-то в этом роде.

    tcp        0      0 0.0.0.0:3128            0.0.0.0:*               LISTEN  

Я пробовал выполнить предварительную маршрутизацию в iptables для перехвата от порта 80 до порта 3128 и порта с 443 по 3130, похоже, он работает неправильно.

Вот что я пробовал:

    -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
    -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3130

А также:

    -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.212:3128
    -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
    -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
    -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.212:3130
    -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3130
    -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

Любая помощь будет высоко ценится.

Кроме того, мой опыт работы с Ubuntu / Linux в целом ограничивается возился с этим сервером для моего места работы.

Обновление 1

У меня http работает сейчас.

я добавил

    -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Почему это сработало в этот раз, а не в другие, я не знаю.

Я попытался перенаправить с 443 на 3130 тем же методом, но все еще не могу подключиться к каким-либо https-сайтам.

answer

Первоначальная настройка iptables была правильной. Просто добавьте строку REDIRECT для порта 443 рядом с портом 80. Вы не увидите, как это работает, пока часть Squid также не заработает.

Без каких-либо строк ssl_bump в squid.conf, сообщающих Squid, как увеличить трафик - SSL-Bumping будет отключен.

Кроме того, поскольку TLS меняется так часто, функция Squid SSL-Bump претерпела множество обновлений с версии 3.3.8, чтобы продолжать работать с текущими браузерами и серверами. На момент написания этой статьи требуется Squid-3.5.19 или более поздняя версия. Вы можете получить копию этой версии как пакет «squid» из репозитория Debian Sid, но вам все равно придется пересобрать его самостоятельно с поддержкой OpenSSL.

Http://wiki.squid-cache.org/Features/SslPeekAndSplice объясняет , как работает Squid-3.5 SSL-Bump и как установить его ssl_bump правила вверх.