Как создать правила Iptables для Squid, чтобы обрабатывать только запросы веб-трафика

Как создать правила Iptables для Squid, чтобы обрабатывать только запросы веб-трафика

Я использую Squid Proxy для (фильтрации DNS). Я настроил Squid Proxy за своим GCP Cloud NAT в прозрачном режиме для перехвата веб-трафика HTTP и HTTPS. Я добавил только следующие правила для перенаправления трафика HTTP и HTTPS в Squid.

iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 80 -j REDIRECT --to-port 3129
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j REDIRECT --to-port 3130

Но как я узнал до сих пор Squid является веб-прокси и обрабатывает только HTTP, HTTPS и FTP запросы, Squid не понимает SMTP, UDP и любой другой запрос протокола, но вышеуказанные правила iptables работают только для HTTP и HTTPS, мои остальные SMTP и UDP запросы блокируются. Как я понимаю, мы не можем сказать squid обрабатывать SMTP и UDP запросы, поэтому я хочу обрабатывать только HTTP и HTTPS трафик на squid, и я также хочу, чтобы остальные мои порты напрямую перенаправлялись на мой GCP Cloud NAT.

Может ли кто-нибудь помочь мне, какое правило iptables мне следует написать для перенаправления только портов 80, 443 запросов в Squid, а остальные запросы портов я хочу обойти или перенаправить напрямую в мой GCP Cloud NAT?

Транспортный поток

Частная виртуальная машина -> Squid Proxy -> GCP Cloud NAT

решение1

Чтобы перенаправить только запросы портов 80 и 443 в Squid и обойти все остальные запросы, вы можете изменить существующие правила iptables следующим образом:

  1. Создайте ACL в Squid, чтобы разрешить только HTTP и HTTPS запросы. Это можно сделать, добавив следующие строки в файл конфигурации Squid:

    acl Safe_ports порт 80 443 http_access разрешить Safe_ports

  2. Измените правила iptables так, чтобы перенаправлять запросы HTTP и HTTPS только в Squid:

    iptables -t nat -A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -s 0.0.0.0/0 -p tcp --dport 80 -j ПЕРЕНАПРАВЛЕНИЕ --на порт 3129 iptables -t nat -A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -s 0.0.0.0/0 -p tcp --dport 443 -j ПЕРЕНАПРАВЛЕНИЕ --на порт 3130

  3. Добавьте новое правило iptables, чтобы обойти все другие запросы и перенаправить их напрямую в ваш GCP Cloud NAT. Правило должно выглядеть следующим образом:

    iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp -m multiport ! --dports 80,443 -j DNAT --to-destination [IP-адрес GCP Cloud NAT]

Это правило будет сопоставлять весь TCP-трафик, который не находится на порту 80 или 443, и перенаправлять его непосредственно в ваш GCP Cloud NAT.

Обязательно настройте [IP-адрес GCP Cloud NAT] на правильный IP-адрес вашего экземпляра Cloud NAT.

При использовании этих правил только HTTP- и HTTPS-трафик будет перенаправляться в Squid для фильтрации, а весь остальной трафик будет обходить стороной и перенаправляться непосредственно в ваш GCP Cloud NAT.

Связанный контент