Как DNAT использовать разные локальные IP-адреса в зависимости от того, к какому общедоступному IP-адресу был подключен Shorewall?

Мой сервер имеет несколько общедоступных IP-адресов и использует несколько виртуальных машин с частными IP-адресами.

В качестве примера я хочу сопоставить порты 80, 443 и 8080 для 232.21.23.23 (общедоступные) с 192.168.122.12 (частные). Я пробовал несколько разных сопоставлений NAT, но ни одно из них не работает:

# This doesn't work.
DNAT           net              loc:192.168.122.12  tcp  80,443,8080  -           232.21.23.23

# Neither does this.
DNAT           $FW              loc:192.168.122.12  tcp  80,443,8080  -           232.21.23.23

# Nor this.
DNAT           net:232.21.23.23 loc:192.168.122.12  tcp  80,443,8080

# I have no idea what I'm doing.
DNAT           $FW:232.21.23.23 loc:192.168.122.12  tcp  80,443,8080

Может кто-то указать мне верное направление?

2 ответа

Решение

Ваше первое правило верно:

DNAT    net loc:192.168.122.12  tcp 80,443,8080 -   232.21.23.23

Так что проблема должна лежать в другом месте. Вы можете увидеть основные правила iptables, созданные с помощью этого:

iptables -t nat -nvL net_dnat

Пакеты NATed все еще должны пройти цепочку FORWARD и быть принятыми. Попробуйте добавить следующее правило для принятия трафика к виртуальным машинам на этих портах:

ACCEPT  net loc:192.168.122.12  tcp 80,443,8080

В качестве дополнительного комментария к предыдущим ответам, убедитесь, что порядок, в котором вы размещаете правила.

Пример:

Допустим, вы настроили свои правила так:

DNAT net loc: 172.17.20.25 tcp 80 0.0.0.0 DNAT net loc: 172.17.20.47 tcp 80 200.xyz

Если вы хотите добраться до 172.17.20.47 на порту 80, вы всегда будете в конечном итоге в 172.17.20.25, потому что адрес назначения по умолчанию 0.0.0.0.

Поэтому, если вы хотите получить доступ к 172.17.20.47 через публичный IP-адрес 200.xyz, вам следует изменить порядок правил:

DNAT net loc: 172.17.20.47 tcp 80 200.xyz DNAT net loc:172.17.20.25 tcp 80 0.0.0.0

Или измените адрес по умолчанию первого правила.

Я надеюсь, что это помогает!

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