Назад | Перейти на главную страницу

Конфигурация firewalld для преобразования EC2 Amazon Linux 2 в NAT

Короткий вопрос:

Я пытаюсь настроить свой собственный экземпляр NAT на AWS, начиная со стандартного экземпляра AWS Linux 2, и кажется, что новый «правильный» способ настройки - использование firewalld вместо iptables, поэтому я ищу эквивалент ответ на этот вопрос, но с firewalld.

Более подробное описание:

Я на 99% уверен, что мои VPC, подсети и таблицы маршрутизации настроены правильно. На экземпляре ec2 я включил пересылку IP4, отключил пересылку ICMP и отключил проверку источника / назначения.

Я считаю, что единственный шаг, который мне не хватает, - это то, что старые AMI экземпляра NAT сообщества запускают сценарий при запуске, который делает следующее:

(iptables -t nat -C POSTROUTING -o eth0 -s ${VPC_CIDR_RANGE} -j MASQUERADE 2> /dev/null ||
   iptables -t nat -A POSTROUTING -o eth0 -s ${VPC_CIDR_RANGE} -j MASQUERADE ) ||
       die

На основе это практическое руководство, Я пытаюсь воспроизвести ту же функциональность с firewalld, и я сделал

firewall-cmd --zone=internal --add-source=10.0.4.0/22
firewall-cmd --zone=external --add-interface=eth0
firewall-cmd --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 10.0.4.0/22

Я также пытался разрешить ping для тестирования, с

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p icmp -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

Я могу успешно подключиться к экземпляру NAT по ssh, я могу пинговать внешний мир из него, и я могу пинговать его из частной подсети, но я не могу пинговать внешний мир из частной подсети. Я подозреваю, что что-то не так с моим пониманием работы firewalld, когда есть только один PHY (eth0), но ... я застрял. Так,

а) правильно ли мое базовое предположение, что я должен использовать firewalld вместо iptables? б) если да, то как мне заставить NAT работать с ним на одном интерфейсе?

Спасибо!

В EC2 вам необходимо, помимо правильной настройки iptable / nftable, убедиться, что проверки источника назначения отключены на уровне EC2.

https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck