Требуются правильные правила 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
, Это гарантирует, что правило оценивается только для трафика, поступающего извне.
Надеюсь, это поможет:)