Я хочу перенаправить весь трафик с моего экземпляра на другой экземпляр, на котором работает прозрачный прокси-сервер squid, используя правила IP-таблиц и НЕ изменяя маршрут экземпляра по умолчанию.
это делается в цепочке POSTROUTING? что за действие? SNAT? MASQUERADE?
У кого-нибудь есть рабочий пример?
Я пробовал это:
iptables -t nat -A PREROUTING -p tcp -m multiport \
--dports 80,443,2323 -j DNAT --to-destination squid-ip:3128
iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
Что явно не работает. Спасибо.
Это невозможно легко сделать с помощью iptables; позвольте мне дать вам некоторое представление. Прозрачный прокси сидит между пользователем и интернетом, и перехватывает все пакеты, которые проходят через него. Чтобы это работало (в нормальном сценарии), прозрачный прокси смотрит на адрес источника и назначения и выполняет все шаги, необходимые для открытия соединения.
Теперь позвольте мне рассказать вам, почему iptables не является хорошим выбором для ваших требований.
Что вам действительно нужно, так это динамически менять шлюз для выбранного вами трафика. Динамическая маршрутизация - это сложная тема, которую я не буду здесь рассматривать. Возможно, вам стоит подумать об изменении шлюза по умолчанию, это было бы самым простым решением... Или разместите два маршрута, как здесь:
route add -net 0.0.0.0/1 gw <squid_ip>
route add -net 128.0.0.0/1 gw <squid_ip>
Таким образом, ваш шлюз по умолчанию останется на месте, даже если он больше не используется. Но после удаления этих двух маршрутов, ваш шлюз по умолчанию снова в работе...