VPN канал между офисами. ОС Gentoo-Gentoo и Gentoo-FreeBSD

Вводная

Имеется 3 офиса: Офис1, Офис2, Офис3. Топология сети в каждом из офисов приблизительно следующая (на примере Офис1)

топология сети

Офис1 и Офис2 расположены в разных городах. Офис1 и Офис3 на разных этажах одного здания. Адреса внутренних сетей не пересекаются

Необходимо

Построить vpn канал между Офис1 <-> Офис2 и Офис1 <-> Офис3 с учетом следующих условий:

  • Офис2, Офис3 остаются взаимно недоступны
  • Доступность серверов, рабочих станций каждого офиса решается добавлением соответствующих записей в таблицу маршрутизации
  • vpn каналы без шифрования

VPN канал Офис1 <-> Офис2

vpn канал топология сети

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

Офис1

В Офис1 сервер на базе Gentoo. В конфиге ядра должно быть

CONFIG_NET_IP_TUNNEL=m
CONFIG_TUN=y
CONFIG_NET_IPIP=m

Собираем и устанавливаем новое ядро. Перегружаем сервер

lsmod | grep ipip

Если ответ приблизительно такой, то приступаем к редактированию /etc/conf.d/net. К текущим настройкам

# внешний интерфейс
config_eth0="91.x.x.10/24"
routes_eth0="default via 91.x.x.1"

# внутренний интерфейс локальной сети
config_eth1="192.168.4.10 netmask 255.255.255.0 brd 192.168.4.255"

Добавляем настройки виртуального канала

# внутренний vpn-интерфейс
iptunnel_tun8="mode ipip remote 212.x.x.42 local 91.x.x.10 dev eth0"
config_tun8="192.168.48.1 netmask 255.255.255.0 pointopoint 192.168.48.2"
routes_tun8=(
"192.168.8.19 via 192.168.48.2"
"192.168.8.91 via 192.168.48.2"
)

После перегрузки в выхлопе ip addr должно быть следующее

А netstat -rn должен показать

Офис2

В Офис2 сервер на FreeBSD, следовательно в конфиге ядре должны быть следующие записи

options     IPSEC
device      crypto
device      gif

Хотя если используется ядро GENERIC, то скорее всего они уже там есть и работать с ядром нет необходимости

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

Ядро необходимо собрать, установить и перегрузить сервер

Что касается настройки интерфейсов сети, то в rc.conf.local (да, именно rc.conf.local неоходимо настраивать, а не rc.conf, как это зачастую бывает) к текущим

# внешний интерфейс
ifconfig_fxp0="inet 212.x.x.42 netmask 255.255.255.0"

# внутренний интерфейс локальной сети
ifconfig_fxp1="inet 192.168.8.1 netmask 255.255.255.0"

добавляем следующее

# внутренний vpn-интерфейс
cloned_interfaces="gif0"
ifconfig_gif0="inet 192.168.48.2 192.168.48.1 netmask 255.255.255.0 tunnel 212.x.x.42 91.x.x.10"
static_routes="snet0"
route_snet0="192.168.4.0 192.168.48.1"

После перегрузки ifconfig gif0 должен показать

А в netstat -rn должны появиться новые записи

Проверка

Из Офис1 выполняем

ping 192.168.48.2
ping 192.168.8.19

Если ответы есть, значит все правильно и vpn канал поднят

VPN канал Офис1 <-> Офис3

vpn канал топология сети

Здесь все еще проще. Поскольку сервера расположены в одном здании и соеденины ethernet-кабелем, то конфигурация на сервере под управлением Gentoo в Офис3 тривиальна. Итоговый /etc/conf.d/net выглядит следующим образом

# внешний интерфейс
config_eth0="91.x.x.14 netmask 255.255.255.0 brd 91.x.x.255"
routes_eth0="default via 91.x.x.1"

# внутренний интерфейс локальной сети
config_eth1="192.168.12.4 netmask 255.255.255.0 brd 192.168.12.255"
routes_eth1="default via 192.168.12.4"

# внутренний vpn-интерфейс
config_eth2="192.168.122.4 netmask 255.255.255.0 brd 192.168.12.255"
routes_eth2=( 
"192.168.4.14 via 192.168.122.10"
"192.168.4.41 via 192.168.122.10"
)

После перегрузки выполняем проверочные пинги

ping 192.168.122.10
ping 192.168.4.14

Все должно работать

А дальше что?

Данная схема является минимально-необходимой для организации работы сотрудников одного офиса на серверах или с оборудованием другого. Она дает возможность в будущем реализовать следующее:

  • настроить фаервол с доступом не только по адресам, но и по портам
  • настроить шифрование vpn канала
  • при необходимости можно настроить маршрутизацию Офис2 <-> Офис3 через Офис1, избегая тем самым организации дополнительного vpn канала между ними

Успехов!

Александр Черных
системный администратор

140
1+