2

У меня есть два сетевых интерфейса на машине Ubuntu, которые выходят в две разные сети, но у обоих есть интернет-шлюзы.

Мне нужно ограничить его так, чтобы любые исходящие http-запросы (т.е. через wget) проходили только через eth0 а весь остальной трафик - через eth1 .

Смею сказать, что решение может иметь какое-то отношение к iptables, но у меня нет опыта работы с ним, поэтому буду признателен за любую помощь.

4 ответа4

2

Вы можете сделать это с помощью IPTables. Вам нужно указать правило предварительной маршрутизации (или переадресации), которое говорит, что все, что находится на порту 80, должно быть направлено на eth0, а затем в обычных правилах маршрутизации по умолчанию используется eth1.

Я давно не создавал правила IPTables, поэтому не могу придумать точные правила.

1

Если достаточно, чтобы трафик wget перешел на другой интерфейс, вы можете сделать это:

Сначала узнайте о таблицах маршрутизации и нескольких маршрутах по умолчанию: http://lartc.org/howto/lartc.rpdb.multiple-links.html

Настройте свою сеть так, чтобы в таблице маршрутизации по умолчанию трафик передавался через eth1. Затем добавьте правило, что трафик, исходящий из IP-адреса eth0, использует таблицу маршрутизации для eth0. Затем используйте параметр wget --bind-address для привязки к IP-адресу eth0.

Если вы не используете wget, который может указывать адрес привязки, альтернативой является установка прокси-сервера www и привязка этого (только) к адресу eth0, а затем используйте этот прокси.

-1

Я бы сказал, редактировать Apache, чтобы "слушать" определенный IP-адрес. По умолчанию Apache прослушивает все IP-адреса, которые может иметь ваша машина.
Посмотрите в /etc/apache2/sites-enabled/xxx и проверьте директиву Listen . Боюсь, я не пользуюсь Убунуту, так что взгляните на

grep -r -i "listen" /etc/apache2/

Найдите файл и измените его на:

# Listen <IP ADDRESS>:<PORT>  
Listen 10.2.3.4:80
-2

Посмотрите на Shorewall. Документация для файла Masq, кажется, охватывает то, что вы хотите. Вам нужно убедиться, что вы не маршрутизируете между двумя интерфейсами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .