Squid - прозрачный прокси с сетевыми картами в одной подсети?
Я настроил базовую виртуальную машину Squid + DansGuardian, которую я должен был использовать для мониторинга и блокировки определенных веб-сайтов. В настоящее время веб-трафик проходит через маршрутизатор, заданный в качестве шлюза - его IP-адрес выдается службой DHCP на сервере Linux. Я хотел бы направить некоторых клиентов к другому шлюзу, основываясь на их MAC-адресе (что я уже могу сделать). Установка выглядит следующим образом:
Router (Gateway) - 192.168.0.1
DHCP/DNS Server - 192.168.0.10
Squid Server - 192.168.0.254
Client PCs - 192.168.0.100-199
Тем не менее, в большинстве учебных пособий требуется, чтобы Squid принимал трафик на 1 NIC, а затем передавал его во внешний мир на другой NIC в другой подсети.
Можно ли заставить Squid принимать трафик на его IP (192.168.0.254) и ретранслировать его на шлюз (192.168.0.1), чтобы покинуть здание как обычно? Если так, есть ли у кого-нибудь соответствующие правила iptables, которые они могли бы дать мне?
1 ответ
Вам не нужно иметь отдельный интерфейс для этой цели.
Просто добавьте правило для перенаправления HTTP-трафика и NAT для остальных:
iptables -t nat -A PREROUTING -i eth0 -m iprange --src-range 192.168.0.100-192.168.0.199 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o eth0 -m iprange --src-range 192.168.0.100-192.168.0.199 -j SNAT --to-source 192.168.0.254
Предполагается, что политика по умолчанию для всех цепочек установлена на принятие. Кроме того, вам нужно будет включить переадресацию ipv4 на этом хосте, и его шлюз по умолчанию должен быть настроен на 192.168.0.1.