OpenWRT — OpenVPN и маршрутизация

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

Для реализации данной задачи необходимо несколько предварительных условий:

  • OpenVPN-соединение установлено
  • Подсети имеют разные маски (192.168.1.0/24 и 192.168.2.0/24, например)
  • Фаерволы не блокируют трафик (в статье про OpenVPN-сервер рассмотрена настройка зон межсетевого экрана, если выполнили и на сервере и на клиенте, то условие соблюдено)

Иными словами, если Вы настраивали OpenVPN по моим статьям, то всё готово к дальнейшим настройкам.

Все настройки будем выполнять на сервере. Клиенты будут подхватывать автоматически необходимые им маршруты.

Подключаемся к консоли сервера через SSH и открываем файл с настройками openvpn

vi /etc/config/openvpn

Маршрут от сети-клиента к сети-серверу

Первым делом сделаем, чтобы все OpenVPN-клиенты видели компьютеры в подсети сервера.

Для этого в конфигурацию OpenVPN в секцию с настройками нашего сервера добавим строку

option push 'route 192.168.1.0 255.255.255.0'

где 192.168.1.0 255.255.255.0 — маска подсети сервера.
Таким образом, любой подключившийся клиент будет знать, что маршруты в эту подсеть направлять в OpenVPN-интерфейс (tun0)

Сохраняем, перезагружаем OpenVPN-сервер и радуемся, что компьютеры из подсети клиента удачно пингуют компьютеры в подсети сервера.

Маршрут от сети-сервера к сети-клиенту

Тут немного посложнее. Первым делом в настройки OpenVPN-сервера добавляем строку

option client_config_dir '/etc/openvpn/ccd'

Сохраняем настройки и теперь создаем этот каталог

mkdir /etc/openvpn/ccd

В данном каталоге будут находится маршруты для каждого клиента. Один клиент-один файл.
Имя файла должно соответствовать имени клиента.
Например, если имя клиента client1, то и создадим файл /etc/openvpn/ccd/client1
Содержимое этого файла — одна строка:

iroute 192.168.2.0 255.255.255.0

Где 192.168.2.0 255.255.255.0 — маска подсети клиента.
Сделали, сохранили, перезапустили OpenVPN-сервер, дождались переподключение клиента и пингуем. Можно воскликнуть «Эврика!»

Маршруты между сетями-клиентами

Допустим, у нас несколько сетей-клиентов, чтобы маршруты ходили так же между ними, то в файл настроек сервера достаточно добавить одну опцию:

option client_to_client '1'

Обратите внимание, что для этого должны быть настроены маршруты сервер<->клиент для всех соединений

Спасибо за внимание, ждем следующих экспериментов.

Кстати, друзья, теперь за всеми свежими и важными записями можете следить прямо из паблика ВКонтакте.

Подпишись в один клик:

Комментариев: 16

  1. Есть необходимость подключить ip камеру к регистратору, который находится в другой части города, я так понимаю надо настраивать ethernet bridge vpn, может быть напишите такую инструкцию, было бы здорово.

  2. Настроил на двох роутерах TPLINK-841N-V8 openvpn. Одна сеть имеет 192.168.2.1 (server), вторая 192.168.3.1(client). Роутеры между собой пингуются. Но вот клиенты с разных сетей друг друга не видят. Я не могу пропинговать с 192.168.2.7 адресс 192.168.3.5 (и наоборот). А так же роутер-сервер не пингует клиентов с роутера-клиента( и на оборот). В чем может быть проблема? куда смотреть?

  3. Привет, есть необходимость реализовать подобным способом связь между двумя узлами. Настраивал все так же как написано тут и тут https://www.denisyuriev.ru/linux/openwrt-linux/pakety/openwrt-openvpn-server-tun/
    https://www.denisyuriev.ru/linux/openwrt-linux/pakety/openwrt-openvpn-klient-tun/
    пк на Клиенте пингуют пк за сервером, но вот пк за сервером да и с самого роутера — сервера пк которые находятся на роутере-клиенте не пингуются. Думаю проблема с маршрутами. т.к. даже шлюз не пингуется и трейс не проходит. Пробывал корректировать маршруты с помощью WinSCP. В итоге на веб морде сервера автомаршруты вовсе пропали. может что то делаю не так? Прошу помочь разобраться.

Оставьте свой комментарий

Войти с помощью: