В документации по настройке экземпляров NAT указано, что вы должны отключить проверку источника/назначения на своем экземпляре NAT, чтобы он работал. От https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck
Каждый инстанс EC2 по умолчанию выполняет проверку источника/назначения. Этот
означает, что экземпляр должен быть источником или получателем любого
трафик, который он отправляет или получает. Однако экземпляр NAT должен иметь возможность
отправлять и получать трафик, когда источник или пункт назначения не являются самими собой.
Поэтому вы должны отключить проверку источника/назначения на NAT.
пример.
Концептуально это имеет смысл. Но что мне любопытно, так это то, как это на самом деле применяется. Мое неспециальное понимание NAT заключается в том, что пакеты, отправленные узлом NAT, должны выглядеть так же, как если бы они исходили от самого узла NAT, с его IP-адресом в качестве источника.
Так что единственное, что я могу придумать, это проверка источника трафика со схемой, в которой AWS просматривает значение TTL и знает ОС для каждого экземпляра, и если это не начальный TTL по умолчанию, то пакет отклоняется (что не будет новым подходом к блокировке NAT). На исходящих / SNAT это будет начальное значение - 1, а на входящих / DNAT оно будет на единицу меньше, чем любой TTL, полученный от пакета от интернет-шлюза (что могло бы совпадать, если бы отправитель имел более высокий начальный TTL). и количество прыжков было в самый раз).
Однако для проверки назначения трафика, как он узнает, что входящий пакет к экземпляру NAT, который будет иметь общедоступный IP-адрес этого экземпляра, не имеет (конечного) пункта назначения этого экземпляра NAT? Тот факт, что экземпляр NAT попытается переслать пакет после его получения, кажется второстепенным. Выполняется ли какая-то комбинация определения TTL с отслеживанием состояния на исходящем, чтобы знать, что эфемерный порт на экземпляре NAT предназначен для получения ответов на соединение с NAT? Или пункт назначения проверяет Только для способности экземпляра NAT получать пакеты в частной подсети (где это простая проверка IP-адреса назначения)?