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

маршрутизировать трафик от VPN-сервера LAN (облако) к VPN-клиенту

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

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

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

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

С помощью IP-переадресации и 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 default via 10.0.0.1 dev eth0 10.0.0.1 dev eth0 scope link 10.168.0.0/24 via 10.0.1.0 dev eth0

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

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

Спасибо!

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

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

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