Моя архитектура AWS имеет общедоступную подсеть с экземпляром NAT. Он перенаправляет трафик с определенных портов на мой экземпляр EC2, размещенный в отдельной частной подсети.
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 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 PREROUTING -p tcp -d xx.xx.xx.xx --dport 80 -j DNAT --to-destination 10.0.1.126:80
Хотя мой исходящий сетевой вызов не был зациклен, но мой запрос домена на основе DNS не передается моему экземпляру.
Ваш ПЕРЕДАЧА должен исключать местный трафик, т.е.
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
. Это гарантирует, что правило оценивается только для трафика, приходящего извне.
Надеюсь, это поможет :)