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

не удается подключить частный экземпляр aws VPC к Интернету через NAT

пытается установить стек LAMP на экземпляр aws в частной подсети VPC
используя сценарий 2, описанный здесь: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

Я настроил все с соответствующими подсетями, группами безопасности, интернет-шлюзом и таблицей маршрутизации.

С моей настройкой я могу успешно:
- пинг NAT
- ssh в NAT
- пинговать внешний сайт через NAT (например, ping ietf.org)
- пинг частного экземпляра от NAT (например, ping 10.0.X.X)
- ssh в частный экземпляр
- ping NAT от частного экземпляра

Однако я не могу пинговать частный экземпляр в Интернет (т.е. ping ietf.org не работает)
и когда я пытаюсь sudo yum update из частного экземпляра я получаю следующую ошибку:
Cannot find a valid baseurl for repo: amzn-main/latest

Я полагаю, это ошибка маршрутизации или группы безопасности ...?

Ноты:
- Проверка источника / назначения отключена для экземпляра NAT
- экземпляру NAT назначен общедоступный IP, но не эластичный IP
- ACL не реализован (оставлен по умолчанию)
- таблица маршрутов для публичной подсети:

10.0.X.X/XX local  
0.0.0.0/0 internet gateway

- таблица маршрутов для частной подсети:

10.0.X.X/XX local  
0.0.0.0/0 nat instance

- группы безопасности:

Входящий частный экземпляр

ALL Traffic =  vpc_private_sg    
SSH(22) = vps_nat_sg  
MySQL(3306) = vpc_public_sg  
ALL ICMP = 0.0.0.0/0  

Исходящий частный экземпляр

SSH(22) = vps_nat_sg  
HTTP(80) = 0.0.0.0/0  
HTTPS(443) = 0.0.0.0/0  
ALL ICMP = 0.0.0.0/0  

Входящий инстанс NAT

ALL Traffic =  vpc_private_sg    
SSH(22) = vps_nat_sg  
SSH(22) = 10.0.X.X/XX  
HTTP(80) = 10.0.X.X/XX  
HTTPS(443) = 10.0.X.X/XX  
ALL ICMP = 0.0.0.0/0  

Экземпляр NAT исходящий

SSH(22) = 10.0.X.X/XX  
HTTP(80) = 0.0.0.0/0  
HTTPS(443) = 0.0.0.0/0  
ALL ICMP = 0.0.0.0/0  

Эта проблема:

стандартный экземпляр AMI некорректно работает как экземпляр NAT

Если вы попытаетесь использовать стандартный экземпляр AMI в качестве экземпляра NAT, у него будут те же симптомы, что описаны в вопросе выше:

  • SSH подключение к NAT = ОК
  • SSH-соединение с экземпляром частной подсети = ОК
  • пинг в / из экземпляра частной подсети = ОК
  • исходящие вызовы экземпляра частной подсети = FAIL (даже с действующими таблицами маршрутизации / группами безопасности)

Сложное решение:

Чтобы стандартный экземпляр AMI работал как экземпляр NAT, вам необходимо настроить его:

  • измените iptables, как показано Вот
  • убедитесь, что перенаправление IPv4 включено, а перенаправления ICMP отключены, как указано Вот

Простое решение:

использовать Сообщество amzn-ami-vpc-nat экземпляр уже настроен для использования в качестве экземпляра NAT

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

AWS предоставляет стандартные экземпляры, настроенные для использования NAT (т. Е. Измененные, как описано выше), в качестве экземпляров AMI сообщества.

  • щелкнуть Launch Instance в панели управления EC2
  • в Step 1: Choose an Amazon Machine Image (AMI) нажмите на Community AMIs селектор слева
  • тип amzn-ami-vpc-nat 2017 или проще nat 2017 (примечание ниже) в поле ввода поиска
  • запустите NAT и убедитесь, что ваши таблицы маршрутов + группы безопасности верны - см. Вот

Примечание:
Причина, по которой вы включаете год в поиск экземпляров AMI сообщества, заключается в том, что AWS хранит все старые версии NAT AMI (21 на момент написания, начиная с 2013 года), которые в основном включают год в номере версии.
... лучше / проще всего просто выбрать последнюю версию.