У нас есть экземпляр NAT с частной и общедоступной подсетями, и мы создали туннельное соединение из нашей офисной сети с экземпляром NAT, чтобы мы могли получить доступ к ресурсам EC2 в AWS. Соединение работает, но мои экземпляры EC2 показывают, что последний зарегистрированный / текущий IP-адрес зарегистрирован с моего частного экземпляра NAT вместо удаленного частного IP

вот диаграмма

OFFICE ------tunnel------- NAT INSTANCE ----private subnet
                                        |___public subnet

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

login as: ec2-user
...
Last login: Thu Jan 31 12:12:12 2019 from 172.20.0.10
#w
USER     TTY      FROM             
ec2-user pts/0    172.20.0.10    

в отличие от сообщения экземпляра NAT, а также других наших предыдущих настроек AWS (учетная запись diff), это выглядит так

Last login: Thu Jan 31 12:12:12 2019 from 192.168.1.123
#w
USER     TTY      FROM             
ec2-user pts/0    192.168.1.123

похоже, что соединение прерывается с экземпляра NAT и действует как сервер бастион / прыжок.

мой aws VPC - 172.20.0.0

NAT instace ip - 172.20.0.10

наш частный IP-адрес 192.168.0.0

Туннельный ip для экземпляра nat и нашего маршрутизатора 172.16.1.1 и 172.16.1.1

В остальном, мы следовали процедуре создания экземпляра NAT, предоставленной AWS на их документах, все маршруты настроены правильно. У нас уже есть 4 предыдущие настройки, подобные этой, и мы убедились, что все имеют одинаковую конфигурацию.

Возможно ли, что экземпляр NAT отключает IP-адрес исходного соединения, даже если мы уже отключили «Проверка источника / назначения» экземпляра nat? я не уверен, где смотреть, так как мы убедились, что это имеет ту же настройку с нашими предыдущими

2 ответа2

0

Хорошо, я думаю, что нашел другой способ изменить более новую версию экземпляра NAT AMI. Что-то вроде маскировки / пост-маршрутизации IP-адреса меняет исходный IP-адрес всякий раз, когда я подключаюсь к другим экземплярам через туннель. Поэтому я сравнил iptables более старой и новой версии экземпляра NAT AMI и обнаружил, что

версия amzn-ami-vpc-nat-hvm-2015.03.0.x86_64-ebs - ami-1a9dac48

[root@nat-instance ec2-user]# iptables -t nat -v -L POSTROUTING -n --line-number
Chain POSTROUTING (policy ACCEPT 23 packets, 1315 bytes)
num   pkts bytes target     prot opt in     out       source               destination
1    3745  225 MASQUERADE  all  --  *      eth0    (public subnet /16)        0.0.0.0/0

версия amzn-ami-vpc-nat-hvm-2018.03.0.20181116-x86_64-ebs - ami-01514bb1776d5c018

[root@another-nat ec2-user]# iptables -t nat -v -L POSTROUTING -n --line-number
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      216 14157 MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0

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

#iptables -t nat -A POSTROUTING -o eth0 -s 172.20.0.0/16 -j MASQUERADE  //adding
#iptables -t nat -D POSTROUTING 1  //deleting the previous one
#iptables -t nat -v -L POSTROUTING -n --line-number
Chain POSTROUTING (policy ACCEPT 2 packets, 104 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        2   168 MASQUERADE  all  --  *      eth0    172.20.0.0/16        0.0.0.0/0   

Пример результатов. Доступ к обоим экземплярам с их частного IP из офисной сети

экземпляр в публичной подсети

login as: ec2-user
Last login:  from 192.168.1.123
# w
USER     TTY      FROM              
ec2-user pts/0    192.168.1.123

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

login as: ec2-user
Last login:  from 192.168.1.123
# w
USER     TTY      FROM              
ec2-user pts/0    192.168.1.123

да, в значительной степени это достигло моей цели, и мне не нужно полностью менять версию своего экземпляра NAT.

0

Экземпляры NAT используются для того, чтобы экземпляры EC2 в частной подсети могли подключаться к Интернету, не позволяя интернет-ресурсам достигать экземпляров частной подсети. Ваше описание выше звучит не совсем правильно. Вы можете иметь в виду, что у вас есть бастионный хост или VPN для ваших локальных систем. Я полагаю, вы можете использовать экземпляр NAT в обоих направлениях, но это не тот способ, которым он предназначен. Обычно вы должны использовать бастионный хост для входящих соединений.

Если соединение проходит через какой-либо тип прокси, то IP-адрес прокси будет тот, который видит получатель. Правильно настроенные прокси иногда добавляют заголовок X-Forwarded-For , который может дать IP исходного запросчика. Я не думаю, что ни бастионы, ни экземпляры NAT добавляют его, а эластичные балансировщики нагрузки.

Я предлагаю вам изучить настройки, а затем отредактировать вопрос, чтобы уточнить конфигурацию и проблему, с которой вы столкнулись. Как только вы это сделаете, если вы прокомментируете мой ответ, я смогу оказать вам дополнительную помощь.

Обновить

Основываясь на вашем обновленном описании, я считаю, что все работает как надо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .