Вводная
Имеется 3 офиса: Офис1, Офис2, Офис3. Топология сети в каждом из офисов приблизительно следующая (на примере Офис1)
Офис1 и Офис2 расположены в разных городах. Офис1 и Офис3 на разных этажах одного здания. Адреса внутренних сетей не пересекаются
Необходимо
Построить vpn канал между Офис1 <-> Офис2 и Офис1 <-> Офис3 с учетом следующих условий:
- Офис2, Офис3 остаются взаимно недоступны
- Доступность серверов, рабочих станций каждого офиса решается добавлением соответствующих записей в таблицу маршрутизации
- vpn каналы без шифрования
VPN канал Офис1 <-> Офис2
Для реализации указанной схемы необходимо поднять виртуальные сетевые интерфейсы в каждом из офисов
Офис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 должен показать
Можно воспользоваться командами в консоли и избежать перезагрузки
ip tunnel add tun8 mode ipip remote 212.x.x.42 local 91.x.x.10 dev eth0 ifconfig tun8 192.168.48.1 netmask 255.255.255.0 pointopoint 192.168.48.2
Офис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
Здесь все еще проще. Поскольку сервера расположены в одном здании и соеденины 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 канала между ними
Успехов!

- Системный администратор с 2000 года
- Участник Хабр Q&A и cyberforum
- Кейсы