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.

Другие вопросы по тегам