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.