Настройка экземпляра AWS NAT

Этот вопрос изначально был опубликован из-за переполнения стека, они предложили мне опубликовать его здесь (https://stackoverflow.com/questions/76715004/aws-nat-instance-setup).

В настоящее время я изучаю облако AWS и решил создать следующую архитектуру:

  • VPC с общедоступной и частной подсетью. Публичная подсеть имеет доступ к Интернету через интернет-шлюз.
  • Экземпляр NAT EC2 в общедоступной подсети, который должен действовать как шлюз NAT, чтобы разрешить экземплярам в частной подсети доступ к Интернету.
  • Экземпляр в частной подсети для проверки подключения к Интернету.

В качестве ссылки у меня есть следующая документация: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html .

Однако после бесчисленных попыток мне не удалось разрешить частному экземпляру доступ в Интернет. Я опишу все шаги, которые я предпринял. Они должны соответствовать указанным в документации.

  • Создайте VPC: используйте консоль aws, чтобы создать виртуальный компьютер по умолчанию с 2 подсетями (1 общедоступная, 1 частная) в 1 зоне доступности.

Все настройки установлены по умолчанию, NACL должен разрешать все, а таблица общедоступных маршрутов указывает на igw 0.0.0.0/0, а обе таблицы маршрутов указывают на локальный cidr vpc.

  • Создайте частный экземпляр в частной подсети:

Я использовал настройки по умолчанию, за исключением того, что выбрал частную подсеть, не назначал общедоступный IP-адрес и использовал специальную группу безопасности (), которая должна разрешать все (только чтобы исключить sg).

:

  • Создайте экземпляр NAT:

Я запускаю этот экземпляр в публичной подсети, с AMI(Amazon Linux 2023 AMI 2023.1.20230705.0 x86_64 HVM kernel-6.1).

Я установил для автоматического назначения общедоступного IP-адреса значение true.

Я используюtroubleshooting-sg.

При создании я отключаю проверку места назначения/источника в конфигурации сети (это нельзя отключить на панели создания, или я не смог ее найти).

Я подключаюсь к экземпляру NAT, чтобы настроить iptables. Я запускаю следующие команды:

      sudo yum update -y
sudo sysctl -w net.ipv4.ip_forward=1
sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo yum install -y iptables-services
sudo systemctl enable iptables.service
sudo systemctl start iptables.service

Настройка экземпляра NAT завершена.

  • Обновите таблицу частных маршрутов, чтобы она указывала на экземпляр NAT.

0.0.0.0/0 должен быть направлен на экземпляр NAT.

Тестирование:

Я подключаюсь к экземпляру NAT по SSH. Доступ в Интернет подтвержден.

Из экземпляра NAT я подключаюсь к частному экземпляру, используя ключи ssh.

Из этого экземпляра у меня нет доступа в Интернет:

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

Я не совсем уверен, как продолжать. Кажется, проблема в настройке экземпляра NAT, но я выполнил (я думаю) все необходимые шаги.

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

Спасибо!

1 ответ

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

      sudo sysctl -w net.ipv4.ip_forward=1
sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Не выдержит перезагрузки. Кроме того, включение/запуск службы iptables, вероятно, приведет к удалению всех команд iptables, введенных вами вручную — вы можете проверить это с помощью:

      sudo iptables -L

И проверьте переадресацию с помощью

      cat /proc/sys/net/ipv4/ip_forward

Если у вас заработала конфигурация iptables, я считаю, что команда для сохранения настроек будет следующей:

      iptables-save > /etc/sysconfig/iptables

Для содержимого sysctl добавьте новый файл в /etc/sysctl.d/ (синтаксис см. в /etc/sysctl.conf).

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