В настоящее время я настраиваю среду на 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 и т. д.)
Надеюсь, это поможет вам в дальнейшем.