Как направить трафик обратно через VPN на другие серверы?

Как направить трафик обратно через VPN на другие серверы?

В настоящее время я настраиваю среду на 2 сайтах. Все серверы — Linux/Ubuntu. Первый сайт — мой офис, а второй сайт — AWS. У меня есть 2 сервера в AWS в VPC с VPN-соединением между сайтами Web01 — 172.31.24.106 Revproxy01 — 172.31.17.216

У меня в офисе есть 1 сервер и 1 IP-камера. Сервер1 - 192.168.102.1 Камера1 - 192.168.102.79

VPN находится на сервере Server1 (IPSec Strongswan) и настроен на подключение к VPN-сети AWS на стороне AWS.

После долгих исследований и времени мне удалось все настроить и запустить. Web01 и Revproxy01 могут пинговать Server1, а Server1 может пинговать Web01 и Revproxy01.

Мой следующий шаг — иметь возможность пинговать Camera1 из Web01 и RevProxy01. В конечном итоге я хотел бы получить доступ к http-каналу камер из web01 и Revproxy01

Думаю, мне нужно настроить маршрутизацию (на Server01) для передачи данных из Web01 в Camera01 через Server1.

Я был бы очень признателен, если бы кто-то помог и научился бы, как это сделать.

решение1

Хорошо, я не знаю, насколько вы понимаете, как работает маршрутизация, поэтому я попробую объяснить, и мы посмотрим, насколько вы сможете понять мое объяснение. Объяснение не совсем верное, потому что на самом деле вращается больше колес, но его должно быть достаточно.

На каждом хопе в сети стек IP просматривает каждый входящий пакет IP. Он сравниваетместо назначенияIP-адрес с его таблицей маршрутизации. Вы можете увидеть эту таблицу маршрутизации с помощью ip route.

Сначала он проверяет, соответствует ли IP пакета одному из его собственных интерфейсов. Если это так, то пакет предназначен для самого перехода, и переход «проглатывает» пакет (проталкивает его вверх по стеку, например, к стеку TCP).

Если пакет не был предназначен для самого перехода, переход проверяет и проходит по своей таблице маршрутизации от наиболее значимого маршрута к наименее значимому. A /24сообщает вам, что 24 из 32 бит являются значимыми. /16Тогда A будет менее значимым. В случае ip routeстека IP будет сравнивать IP-адрес пакета с отображаемыми маршрутами снизу вверх. Первый маршрут, который соответствует IP пакета, выигрывает. Таким образом, при прохождении таблицы маршрутизации с IP-адресом назначения 192.168.102.10 маршрут 192.168.0.0/16 будет соответствовать пакету. Маршрут 192.0.0.0/16 не будет. Вы можете использовать инструмент sipcalcдля отображения информации о сетевых адресах.

Последний соответствующий маршрут будет маршрутом по умолчанию, который соответствует всему.

Каждый маршрут содержит следующий переход, куда будет отправлен пакет. Вы можете лучше увидеть следующий переход в /sbin/route -n. Это столбец «маршрутизатор» или столбец «интерфейс», в зависимости от того, подключена ли сеть, которую представляет маршрут, напрямую к сетевому интерфейсу, присутствующему на переходе, или нет.

Когда пакет проходит через VPN-туннель, то IP-пакет оборачивается другим пакетом. Так что, насколько вам известно, учитываются только внутренние IP-адреса входа и выхода VPN. Пакет входит в точку входа и выходит из точки выхода "волшебным образом".

Итак, теперь вы должны иметь возможность определять на каждом этапе, какой путь должен пройти пакет, включая исходный и целевой этапы. Если он не следует по тому пути, который вам нравится, то вам нужно добавить соответствующий маршрут. Это может быть маршрут одного хоста, то есть что-то вроде 192.168.102.79/32(все биты значимые! Соответствует только одному хосту!). Посмотрите несколько примеров для ip route add.

Что вы также хотите сделать, так это наблюдать за пакетами, проходящими через переходы. Вы можете использовать tcpdump -n -i interfaceдля этого (например, tcpdump -n -i eth0). Так что если вы видите пакет, проходящий через переход 1, и думаете, что он должен идти в переход 2, но вы не видите, что он проходит через переход 2, то маршруты на переходе 1, вероятно, неверны и отправляют пакет в неправильное место назначения.

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

Имейте в виду, что оба маршрута от источника до пункта назначенияинеобходимо правильно настроить заднюю часть.

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

Как только маршрутизация заработает, убедитесь, что она сохранится после перезагрузки. Например, записав новый маршрут /etc/network/interfaces(место, где вам нужно его зарегистрировать, зависит от того, как настроен сетевой стек на этой машине. Это сильно различается в разных Unix, дистрибутивах Linux и т. д.)

Надеюсь, это поможет вам в дальнейшем.

Связанный контент