1

У меня есть два сайта, A и B, как показано на схеме ниже

+-+------------------------------------------------------------------+
| |            |OTHER DEVICES                                        |
| |            |:-)                    SITE A: 128.66.32.0/24  |     |
| |            +-------+               PUBLIC DNS: SITEA.EXAMPLE.ORG |
| |            |       |               PORT FORWARDING CUSTOMIZABLE  |
| |            |       |               DYNAMIC IP / DDNS             |
| +------------+       |                                             |
|                      |                                             |
| +---------------+----+-------------------+---------+-------------+ |
|                 |                        |         |               |
|  RASPBERRY PI   |         PRINTER        |         |    ROUTER/GW  |
|  128.66.32.18   |         128.66.32.3    |         |    128.66.32.1|
| +------------+  |        +----------+    |         |    +----------+
| |            |  |        |          |    |         |    |          |
| |            |  |        |          |    |         |    |          |
| |            +--+        |          +----+         +----+          |
| |            |           |          |                   |          |
+-+------------+-----------+----------+-------------------+----------+






 +-----------------------------+-------------+------------+----------+
 |  SITE B: 128.66.55.0/24     |             |            |          |
 |  NO DNS                     |             |            |          |
 |  FIREWALLED BY ISP    +-----+             |        +---+          |
 |  DYNAMIC IP           |     +-------------+        |   |          |
 |  PUBLIC IP 10.0.0.0/8 |      LAPTOP                |   |          |
 |                       |      DHCP                  |   +----------+
 |                       |                            |   ROUTER/GW  |
 |                       |                            |   128.66.55.1|
 |                       |                            |              |
 |  ++-------------------+-------------------+--------+-----------+  |
 |   |                                       |                       |
 |   |                                       |                       |
 |   |   NAS                                 |      RASPBERRY PI     |
 |   |   128.66.55.23                        |      128.66.55.18     |
 |   |  +-------------+                      |      +-----------+    |
 |   |  |             |                      |      |           |    |
 |   +--+             |                      +------+           |    |
 |      |             |                             |           |    |
 +------+-------------+-----------------------------+-----------+----+

Что я в основном хочу, так это однозначно соединить два сайта. VPN может позволить мне получить доступ к любому хосту в пределах A, находясь в B. Теоретически, канал VPN, установленный между A и B, должен позволять любому устройству в A набирать ping 128.66.55.x и просматривать данные.

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

Как вы уже видели, один из сайтов не является адресуемым: он может работать только как клиент, потому что провайдер предоставляет частный IP-адрес, общий для нескольких клиентов.

Домашнюю работу я сделал

Я изучил документацию OpenVPN и получил представление о том, как настроить Pi как сервер и один как клиент. Затем, пока я жду поездки в А для развертывания сервера Raspberry и его перенаправления на порт, у меня есть другие функции. Я буду готов оставить канал SSH открытым, чтобы управлять Raspberry, пока меня не будет.

Нерешенные вопросы:

Я немного увлечен сетями, так как посещал занятия много лет назад.

  • Можно ли использовать OpenVPN для пиринга двух сайтов в VPN? Или я иду по неверному пути?
  • Я знаю, что мне нужно иметь правило маршрутизации между адаптерами eth0 и tun на обоих устройствах. OpenVPN делает это для меня или мне нужно использовать iptables?
  • Чтобы сделать VPN прозрачным, я не помню, нужно ли мне устанавливать статический маршрут на главных шлюзах (например, маршрут 128.66.55.0/24 через 128.66.32.18) или Raspberries должны транслировать маршрут в своей сети eth0 . Какой из двух?

В основном мне нужно удаленно распечатать, получить доступ к NAS и так далее

1 ответ1

1

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

Благодаря этому посту я нашел большинство ответов на мои вопросы. Итак, позвольте мне подвести итог:

  • OpenVpn имеет настройки для пиринговых локальных сетей

У нашего пользователя был сервер openvpn с локальной сетью (10.10.2.0/24) и 2 клиентами с ланами за ними:

client1 с локальной сетью 10.10.1.0/24 client2 с локальной сетью 10.10.3.0/24

Он хотел, чтобы машины на всех 3-х каналах могли общаться с помощью туннельной (маршрутизируемой) установки.

На каждой машине с локальной сетью должна быть включена переадресация IP. В этом примере это означает сервер и client1/client2. Пользователю необходимо следующее в его server.conf:

route 10.10.1.0 255.255.255.0
route 10.10.3.0 255.255.255.0
push "route 10.10.2.0 255.255.255.0"
push "route 10.10.1.0 255.255.255.0"
push "route 10.10.3.0 255.255.255.0"
client-to-client

Просто нужно адаптироваться к моему случаю: сервер должен route только те сети, которые он не контролирует, и push все. Не очень умно динамически выдвигать каждую ЛВС, которая к нему подключается. Не проблема, потому что я не реализую масштабируемую настройку, и у меня есть только две локальные сети

  • OpenVpn заботится о маршрутизации на Raspberry, на которой он работает.

Я сделал пример в моей локальной сети на сайте B. Я назначил IP-адрес A Raspberry A, позволил ей взять DHCP-адрес из B на том же интерфейсе eth0 а затем запустил OpenVpn и эхо-сервер. Затем я подключил Raspberry A, у которого был IP-адрес ее сети B, к адресу Raspberry A в локальной сети B. Наконец-то я смог повторить и посмотреть это в логах. Единственным предостережением было то, что Raspberry A (эхо-сервер) видел соединение с IP-адреса в диапазоне A, а не в B, поэтому локальные сети не взаимодействовали.

  • Маршруты должны быть установлены на шлюзе, по-видимому. Статья объясняет это хорошо. Позвольте мне процитировать

Допустим, наш сервер 10.10.2.10 на своей локальной сети и использует 10.10.2.1 в качестве маршрута по умолчанию, и вы хотите, чтобы локальная сеть 2.x была доступна или могла получить доступ через vpn. 2.1 нужен маршрут для каждой сети, к которой 2.x будет иметь доступ или будет доступен. Это означает, что в нашем примере: 10.10.2.1 должен знать, что для 10.10.1.x 10.10.3.x и внутренней сети vpn (например, 10.8.0.x) он отправляет трафик на 10.10.2.10 Это верно для любого количества ланов, которые вы хотите подключить, будь то сервер или клиент.

Если вам не удастся добавить этот маршрут, вот что произойдет, если VPN-клиент (например, 10.8.0.6) захочет отправить трафик на 10.10.2.20:

The vpn client sends traffic to 10.10.2.20, with a source address of 10.8.0.6
The vpn server (10.8.0.1 and 10.10.2.10) receives the traffic, has IP forwarding enabled, and passes the traffic to 10.10.2.20
10.10.2.20 gets it and tries to respond to 10.8.0.6 but has no entry in its routing table
Because 10.10.2.20 has no route for 10.8.0.6, it sends the traffic to its default gateway which is 10.10.2.1
10.10.2.1 checks its routing table, has no route for 10.8.0.6, and sends the traffic to its default gateway which is likely its ISP
The ISP ignores it, because it is a RFC 1918 ip (aka lan only)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .