
Мой мозг немного кипит, пытаясь разобраться с этим, но я не могу заставить частные подсети подключаться к Интернету, чтобы, например, получать обновления. По сути, все, что мне нужно, это веб-доступ к этим серверам. Я пробовал решения, найденные в других постах, но мог легко что-то упустить, так как я уже давно этим занимаюсь.
На данный момент я выполнил следующую настройку:
- Отключить проверку источника/назначения на моем экземпляре NAT
- Создайте таблицу маршрутизации для публичной подсети и установите ее источник на IGW (проверено, это работает)
- Создайте таблицу маршрутизации для частной подсети и установите ее источник на экземпляр NAT.
- Создайте группу безопасности для экземпляра NAT с входящими и исходящими правилами для 80/443 и ssh
- Создать группу безопасности для частного экземпляра с входящим и исходящим 80/443 и ssh
Я могу перейти на экземпляр NAT через SSH, а затем перейти на частный сервер, поэтому я знаю, что многое работает. Я проверил свои правила, пингуя внутренние адреса, но когда я выхожу из локальной сети, у меня начинаются проблемы.
Где мне нужно искать или что мне нужно устранить, чтобы сузить это? Есть ли какая-то конфигурация, которую нужно сделать на экземпляре NAT, которую я упустил из виду?
EDIT: Обновление конфигурации
- ВПК: 172.16.0.0./16
- Частная подсеть: 172.16.1.0/24
- Публичная подсеть: 172.16.0.0/24
Таблица маршрутизации частной подсети:
Указывает на экземпляр NAT в публичной подсети. Невозможно получить доступ к интернету, подключен EIP к публичному интерфейсу, выходящему в интернет.
Таблица маршрутизации публичной подсети:
Направляет публичную подсеть на IGW, я проверил доступ в Интернет.
Мысли:
Я начинаю думать, что нужно что-то настроить или создать на экземпляре NAT, который находится в публичной подсети, чтобы пересылать трафик с частных экземпляров, но я не совсем уверен, что именно нужно добавить. Я нашелэта почтаэто объясняет добавление правила маскарада в iptables, применимо ли это к моей ситуации?
решение1
да, на хосте NAT должен быть настроен маскировка iptables.
iptables -A POSTROUTING -t nat -s (private-subnet/cidr) -j MASQUERADE
у нас такая же настройка, все остальное вы сделали правильно (отключили проверку источника, указали частную подсеть на интерфейсе экземпляра NAT, указали публичную подсеть на IGW).
решение2
Только что наткнулся на это, имея похожую проблему. Если вы использовали мастер для создания экземпляра NAT, то упомянутое выше правило маскарада уже будет там - это то, что вам нужно добавить, если вы собираетесь "создать свой собственный" экземпляр NAT. (Я обычно так делаю, чтобы я мог удвоить это и также сделать его VPN-сервером удаленного пользователя OpenSWAN L2TP/IPSec).
Что я забыл добавить с момента последнего создания одного из них, так это правила, которые разрешают весь трафик (или, по крайней мере, тот, который вы хотите разрешить) из всех частных групп безопасности или подсетей, которые будут направлять трафик через экземпляр NAT. Экземпляр NAT не примет такой исходящий трафик без правил, разрешающих его — не думайте только о том, что приходит из Интернета, чтобы попасть в него. Не уверен, что это ваша проблема, так как вы упомянули добавление 22/80/443 в вашу группу безопасности NAT, но подумал, что я порекомендую это для других, у кого может быть похожая проблема.
решение3
Я долго с этим боролся, пока не нашел вот это:
Затем запустите экземпляр в вашей публичной подсети из AMI, настроенного для работы в качестве экземпляра NAT. Amazon предоставляет Amazon Linux AMI, настроенные для работы в качестве экземпляров NAT. Эти AMI включают строку amzn-ami-vpc-nat в своих именах, поэтому вы можете искать их в консоли Amazon EC2.
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html#NATInstance
Я настроил сервер NAT как свой собственный стандартный экземпляр (Ubuntu). Как только я использовал Amazon Linux AMI и обновил таблицы маршрутизации, все заработало.