направляет трафик от VPN-сервера LAN (облако) одноранговому узлу к VPN-клиенту

Я настроил развертывание Google Cloud примерно так:

  1. узел B, который находится по адресу 10.0.0.6 и маршрут по умолчанию проходит через узел V 10.0.0.1
  2. , который является сервером VPN, в той же подсети с адресом 10.0.1.0

Отдельно у меня есть узлы Q и Q ', которые находятся в моей домашней сети (за маршрутизатором) и подключается к VPN как одноранговый узел. Q имеет статический IP-адрес 10.168.0.240, который назначается VPN как статический IP.

Q 'не имеет значения, за исключением того, что Q и Q' могут успешно взаимодействовать при подключении к VPN.

Через IP forwarding и iptables, мне удалось настроить его таким образом, чтобы VPN разрешал трафику от клиентов использовать его в качестве шлюза в общий Интернет, и я подтвердил, что Q может адресовать B напрямую таким образом (что достигается через Директива openvpn push-routes ).

Проблема, с которой я столкнулся, заключается в следующем: я хотел бы, чтобы B имел возможность напрямую обращаться к Q. Меня особенно не волнует, какой IP-адрес он использует для его адресации, но я не могу использовать переадресацию портов через прослушиватель на машине VPN. Я надеюсь настроить таблицы маршрутизации и т. Д. На B, чтобы он адресовал пакеты к 10.168.0.240 через VPN-сервер, а сервер пересылал эти пакеты по своему интерфейсу tun0 .

Я подозреваю, что это последняя часть уже работает, но с помощью tcpdump я могу подтвердить, что запрос на B, например traceroute 10.168.0.240 , никогда не поступает на V - ЕСЛИ я не включил директиву типа -g 10.0.1.0 . Однако traceroute 10.0.1.0 действительно достигает V, и ping 10.0.1.0 также работает.

B настроен следующим образом:

$ ip route list по умолчанию через 10.0.0.1 dev eth0 10.0.0.1 ссылка на область действия dev eth0 10.168.0.0/24 через 10.0.1.0 dev eth0

Я подозреваю, что мои знания о маршрутизации на среднем уровне упускают одну важную деталь. Я думал, что, возможно, эту проблему решат параметры метрики / предпочтения, по которым я не могу найти много документации; однако все источники указывают на то, что предпочтение отдается более конкретным маршрутам. Третий маршрут кажется наиболее конкретным и подходящим для этого маршрута.

Как мне настроить B, чтобы его пакеты, адресованные виртуальной подсети, маршрутизировались через сервер? Возможно, это не все, что необходимо, но это похоже на конкретный шаг, который я пока не могу решить.

Спасибо!

1
задан 3 December 2018 в 04:13
1 ответ

Я обнаружил проблему, и она зависит от платформы (GCP).

В Google Cloud есть специальный механизм для создания маршрутов, которые используют определенные IP-адреса или другие экземпляры в качестве nexthop router (некоторая документация там ).

Мне пришлось использовать Terraform и настроить конкретный маршрут таким образом, а также включить специальный рисунок CanIPForward в обоих случаях. После этого iptables работали, и мне не пришлось устанавливать специальные правила маршрутизации ни для одного из экземпляров.

0
ответ дан 4 December 2019 в 03:26

Теги

Похожие вопросы