Требуются правильные правила iptable для экземпляра NAT, чтобы предотвратить обратную петлю для исходящего трафика экземпляра частной подсети EC2.

Моя архитектура AWS имеет общедоступную подсеть с экземпляром NAT. Он перенаправляет трафик с определенных портов на мой экземпляр EC2, размещенный в отдельной частной подсети.

sudo iptables -t nat -A ПРЕДОТВРАЩЕНИЕ -p tcp --dport 80 -j DNAT - к месту назначения 10.0.1.126:80

Но мне также нужно предоставить исходящий доступ в Интернет для моих частных экземпляров EC2.

sudo iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j MASQUERADE

Это приводит ко всем запросам, сгенерированным моим частным экземпляром EC2, чтобы вернуться к самому себе. Какое правило необходимо изменить, чтобы предотвратить такое поведение, и исходящий трафик, генерируемый частным экземпляром EC2, отправляется без обратной маршрутизации?

ОБНОВЛЕНИЕ: я добавил IP назначения в качестве моего публичного IP для порта 80

sudo iptables -t nat -A ПРЕДУПРЕЖДЕНИЕ -p tcp -d xx.xx.xx.xx --dport 80 -j DNAT - к месту назначения 10.0.1.126:80

Несмотря на то, что мой исходящий сетевой вызов не был закольцован обратно, но мой запрос на основе домена DNS не передается моему экземпляру.

1 ответ

Решение

Ваша PREROUTING должна исключать местный трафик, т.е.

iptables -t nat -A PREROUTING -p tcp ! --source 10.0.1.0/24 --dport 80 -j DNAT --to-destination 10.0.1.126:80

Обратите внимание на восклицательный знак перед источником: ! --source 10.0.1.0/24, Это гарантирует, что правило оценивается только для трафика, поступающего извне.

Надеюсь, это поможет:)

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