Назад | Перейти на главную страницу

Маршрутизация 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.

Спасибо.

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

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

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

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

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

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

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

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

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

Вам следует удалить правило:

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