Организация VPN-сети (часть восьмая)

На данный момент мы имеем частную VPN-сеть маршрутизаторов, развернутую поверх каналов провайдера. Осталось настроить маршрутизацию на роутерах, чтобы связать воедино локальные сети филиалов.


Головной филиал (сервер OpenVPN)

В конфигурационном файле сервера OpenVPN (/etc/openvpn/server.conf) добавляем маршруты на сети, находящиеся за роутерами филиалов (это можно сделать в том блоке, где был определён ccd-каталог). Убираем закомментированную строку и прописываем свои значения:

....
# EXAMPLE: Suppose the client
# having the certificate common name "Thelonious"
# also has a small subnet behind his connecting
# machine, such as 192.168.40.128/255.255.255.248.
# First, uncomment out these lines:
client-config-dir ccd
route 192.168.1.0 255.255.255.0
route 192.168.2.0 255.255.255.0
route 192.168.3.0 255.255.255.0
# Then create a file ccd/Thelonious with this line:
#   iroute 192.168.40.128 255.255.255.248
# This will allow Thelonious' private subnet to
# access the VPN.  This example will only work
# if you are routing, not bridging, i.e. you are
# using "dev tun" and "server" directives.
....

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

Включаем внутренний роутинг OpenVPN на сети филиалов. Переходим в каталог /etc/openvpn/ccd и редактируем файлы клиентских настроек, прописывая в каждый из них параметры сети, находящейся за ним.

На примере файла /etc/openvpn/ccd/filial2, должна получится такая картина:

ifconfig-push 10.10.0.5 10.10.0.6
iroute 192.168.1.0 255.255.255.0

Остальные файлы клиентских настроек в этом каталоге (filial3, filial4 и т.п.) – отредактируйте сами по аналогии.

Разрешаем форвардинг пакетов между интерфейсами в iptables (добавляем записи в файл /etc/sysconfig/iptables):

-A FORWARD -i eth1 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o eth1 -j ACCEPT

Здесь 'eth1' – интерфейс, которым маршрутизатор подключен в локальную сеть.

После внесения указанных изменений необходимо перезапустить openvpn и iptables:

[root@gateway1 ~]# /etc/init.d/openvpn restart
[root@gateway1 ~]# /etc/init.d/iptables restart

На основном маршрутизаторе сети головного филиала необходимо прописать маршруты на сети прочих филиалов, указав шлюзом наш маршрутизатор VPN-сети; либо для всех компьютеров сети назначить наш маршрутизатор шлюзом по умолчанию.


Дочерний филиал (клиент OpenVPN)

На VPN-маршрутизаторе филиала разрешаем форвардинг пакетов между интерфейсами в iptables (добавляем записи в файл /etc/sysconfig/iptables):

-A FORWARD -i eth1 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o eth1 -j ACCEPT

Здесь 'eth1' – интерфейс, которым маршрутизатор подключен в локальную сеть филиала.

Перезапускаем iptables:

[root@gateway2 ~]# /etc/init.d/iptables restart

Перезапускаем службу openvpn для форсированного переподключения к VPN-серверу:

[root@gateway2 ~]# /etc/init.d/openvpn restart

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


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

По умолчанию, каждая клиентская сеть может видеть только сеть основного филиала (а основной филиал «видит» всех клиентов), в большинстве случаев это необходимое условие по соображениям безопасности. Если всё же нужно, чтобы клиентские подсети могли обращаться друг к другу, на стороне OpenVPN-сервера нужно сделать некоторые дополнительные настройки:

  1. Раскомментируем в конфигурационном файле /etc/openvpn/server.conf параметр 'client-to-client' (прочтите его назначение в комментариях);
  2. Разрешаем форвардинг пакетов в iptables (добавляем запись в файл /etc/sysconfig/iptables):
-A FORWARD -i tun0 -o tun0 -j ACCEPT

После внесения изменений не забудьте перезапустить iptables и openvpn:

[root@gateway1 ~]# /etc/init.d/iptables restart
[root@gateway1 ~]# /etc/init.d/openvpn restart


На этом настройка нашей VPN-сети завершена. Проверьте, что компьютеры филиалов могут обращаться по друг к другу по IP-адресу (или по доменному имени, если настроена служба DNS).

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


Организация VPN-сети (часть седьмая)

Организация VPN-сети (часть девятая)