проблема iptables: NAT с IP alias (virtual interface) не работает

я настраиваю сервер Ubuntu 11.10 в качестве брандмауэра для сети, в которой работает несколько разных веб-сайтов SSL. Идея довольно распространена: все публичные IP-адреса для каждого сайта псевдонимы к публичному интерфейсу на брандмауэре и используют iptables/NAT для пересылки подключений к веб-серверам. У меня дьявольское время, чтобы заставить эту довольно простую вещь работать.

скажем, у меня есть интерфейс публичного лица на брандмауэре:

eth0 25.25.25.25

и я хочу псевдоним a новый IP на интерфейсе:

ifconfig eth0:0 25.25.25.26

затем я вижу, что интерфейс создан, и я могу пинговать его с других хостов. Пока все хорошо. Теперь у меня есть веб-сервер, сидящий на стороне DMZ сети, доступный брандмауэру, но не публике. Скажем, внутренний web-сервер 172.16.2.1. Поэтому я создаю правило NAT следующим образом:

в iptables -Т физ -это следующее -Я как eth0 -д 25.25.25.26 -й ДНАТ --назначение 172.16.2.1

Он просто не хочет работать. Если я запускаю tcpdump на публичном интерфейсе, он будет видеть входящий трафик, но iptables просто не будет NAT его к месту назначения.

он будет работать нормально, если я использую не псевдоним IP, например 25.25.25.25. Я читал, что iptables не любит работать с виртуальными интерфейсами и игнорирует их. Это нормально, но он все равно должен работать с "eth0" вместо "eth0:0". В моем случае iptables не жалуется, если я пытаюсь использовать "eth0: 0", но это не имеет никакого значения.

Я я использую OpenBSD уже давно, поэтому мне удобно настраивать то же самое с pf. Но много лет назад я делал это с коробкой RedHat, и она отлично работала. Что-то изменилось? Должен быть способ сделать это. Я видел несколько примеров от других людей, говорящих, что вам просто нужно убедиться, что вы указываете основное устройство (eth0) вместо использования eth0:0. Но у меня ничего не осталось.

О, и чтобы исключить, что это просто проблема фильтрации, я полностью отключил все правила фильтрации:

iptables -F
iptables -X
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

какие идеи? Я конечно не новичок, когда дело доходит до в iptables, но эта проблема заставляет меня чувствовать себя как один.

8
задан Hennes
10.11.2022 5:34 Количество просмотров материала 2425
Распечатать страницу

2 ответа

при использовании виртуальных интерфейсов просто используйте опцию-d (destination), игнорируя опцию-i (interface)

вместо:

iptables -t nat -A PREROUTING -i eth0 -d 25.25.25.26 -j DNAT --to-destination 172.16.2.1

использование:

iptables -t nat -A PREROUTING -d 25.25.25.26 -j DNAT --to-destination

работа с iptables v1.4.14 в Debian

2
отвечен VTacius 2022-11-11 13:22

скорее всего, вам нужно будет использовать прямую цепочку и не предоставлять интерфейс ввода для этого:

iptables -t nat -A PREROUTING -i eth0 -d 25.25.25.26 -j DNAT --to-destination 172.16.2.1

попробуйте так:

iptables -t nat -A FORWARD -d 25.25.25.26 -j DNAT --to-destination      172.16.2.1

это работает для меня, как в Debian/Ubuntu и в iptables-маршрутизаторы как бы тоже. Вы также можете посмотреть здесь о переадресации портов, это тоже может быть полезно.

-1
отвечен Tim Connor 2022-11-11 15:39

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх