Linux маршрутизация - сервер прыжка в той же подсети

Я пытаюсь заставить работать очень простую установку,

У меня есть 2 экземпляра AWS ec2 (синий),

экземпляр B имеет Ipsec VPN в нашем центре обработки данных и может пропинговать внутренние IP-адреса этого центра обработки данных, то есть сервер C (192.168.40.21)

Мне нужен экземпляр ec2 A, чтобы можно было пропинговать и подключаться к серверу C, используя B в качестве прыжка. И A, и B находятся в одной подсети. Я попытался добавить IP B в качестве шлюза на A,

  root@A>  ip route add 192.168.40.0/24 via 172.25.25.200

а также настроить правила брандмауэра на B для пересылки трафика (sysctl ip4 forwarding = 1),

root@B>
iptables -A FORWARD -s 0/0 -d 172.25.25.0/24 -j ACCEPT
iptables -A FORWARD -s 172.25.25.0/24 -d 0/0 -j ACCEPT
iptables -t nat -A POSTROUTING -d 0/0 -s 172.25.25.0/24 -j MASQUERADE

Но я не могу пропинговать C из A. Что мне не хватает?

Все хозяева - Centos 7.

Спасибо.

4 ответа

Решение

Для экземпляров EC2 по умолчанию включена проверка источника / назначения на их сетевых интерфейсах, что означает, что они не будут работать в качестве маршрутизаторов, пока вы не отключите их. См. https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html.

Разрешено ли вашим экземплярам обмениваться данными через порты внутри подсети с использованием групп безопасности?

Поскольку я сам сделал это предположение, я должен подозревать, что экземпляры ec2 в одной и той же подсети /SecurityGroup не могут общаться из коробки без добавления необходимых правил, как указано здесь: https://forums.aws.amazon.com/thread.jspa?threadID=77771

Если вы уже тщательно добавили соответствующие правила, то, возможно, вы можете попробовать посмотреть на поток пакетов, используя tcpdump а фильтрация на соответствующем интерфейсе?

Обычно iptables есть стандартное правило для блокировки переадресации трафика. Вы должны удалить его, чтобы пропустить трафик.

Вы должны удалить правило:

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

В итоге я использовал туннель GRE для маршрутизации всего трафика через сервер B

туннель находится между A и B, на A I также добавьте маршрут для маршрутизации всего трафика для C через GRE-туннель

так это работает так: A> gre tun> B> ipsec vpn tun> C

** примечание, см. комментарий выше о проверке источника / цели на экземплярах EC2.

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