Итак. Допустим что у некоторой фирмы есть несколько офисов в различных точках города (возможно даже земного шара - не суть важно) и нам нужно обеспечить максимально простой способ взаимодействия локальных сетей различных офисов между собой. Неплохим решением этой задачи будет объединение этих сетей посредством OpenVPN.
Итак. Уточним начальные условия:
Центральный офис (office-0):
Сервер под управлением Ubuntu Linux. Три сетевых интерфейса: eth0, eth1, eth2. Конфигурация следующая:
- eth0: внешний интерфейс, имеющий реальный ip-адрес a.b.c.d.
- eth1: первая локальная сеть: 192.168.1.1/24.
- eth2: вторая локальная сеть: 192.168.2.1/24.
Офис 1 (office-1):
Под управлением Mandriva Linux. Два интерфейса:
- eth0: внешний интерфейс, имеющий доступ к адресу a.b.c.d (каким либо образом).
- eth1: локальная сеть: 192.168.3.1/24.
Офис 2 (office-2)
Сервер полностью аналогичен серверу в первом офисе, за исключением eth1: там адрес 192.168.4.1/24.
Объединять мы будем сервера в виртуальную сеть 192.168.10.0/24. Поэтому на всех серверах должен быть настроен NAT не только для "своих" сетей, но и для сети 192.168.10.0/24.
Будем считать что всё это уже сделано. Приступаем к установке и настройке OpenVPN-сервера:
apt-get install openvpn
Создаём файл конфигурации /etc/openvpn/server.conf следующего содержания:
mode server tls-server daemon ifconfig 192.168.10.1 255.255.255.0 port 1194 proto tcp-server dev tap ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/office-0.crt key /etc/openvpn/keys/office-0.key dh /etc/openvpn/keys/dh1024.pem client-config-dir /etc/openvpn/ccd push "route 192.168.10.0 255.255.255.0 192.168.10.1" keepalive 10 120 client-to-client comp-lzo persist-key persist-tun verb 3 log-append /var/log/openvpn.log
Создаём каталог, в котором будут хранится индивидуальные настройки клиентов:
mkdir /etc/openvpn/ccd
Копируем скрипты для генерации ключей и создаём ключи:
cp -vR /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/ mkdir /etc/openvpn/2.0/keys ln -s /etc/openvpn/2.0/keys /etc/openvpn/keys cd /etc/openvpn/2.0/keys source ./vars ./clean-all ./build-ca ./build-dh # Ключ для центрального офиса ./build-key-server office-0 # Ключ для первого офиса ./build-key office-1 # Ключ для второго офиса ./build-key office-2
Входе выполнения этих команд будет задан ряд вопросов. Ответы на них вобщем-то очевидны, поэтому заострять на них внимание не будем.
Далее создаём файлы /etc/openvpn/ccd/office-1 и /etc/openvpn/ccd/office-2. Содержание первого:
# приcваиваем ip-адрес ifconfig-push 192.168.10.101 255.255.255.0 # роутинг на сети центрального офиса push "route 192.168.1.0 255.255.255.0 192.168.10.1" push "route 192.168.2.0 255.255.255.0 192.168.10.1" # роутинг на сеть второго офиса push "route 192.168.4.0 255.255.255.0 192.168.10.102"
Содержание второго:
# присваиваем ip-адрес ifconfig-push 192.168.10.102 255.255.255.0 # роутинг на сети центрального офиса push "route 192.168.1.0 255.255.255.0 192.168.10.1" push "route 192.168.2.0 255.255.255.0 192.168.10.1" # роутинг на сеть первого офиса push "route 192.168.3.0 255.255.255.0 192.168.10.101"
На этом настрока сервера завершена. Перезапускаем его:
/etc/init.d/openvpn restart
Убеждаемся что поднялся интерфейс tap0:
ifconfig tap0
Переходим к настройке офисов. Рассмотрим только один. Второй будет сделан аналогично, за исключением имён сертификатов.
Устанавливаем openvpn:
urpmi openvpn mkdir /etc/openvpn/keys
Создаём файл конфигурации /etc/openvpn/client.conf:
client dev tap proto tcp # адрес сервера в центрально офисе remote a.b.c.d 1194 resolv-retry infinite nobind persist-key persist-tun comp-lzo ns-cert-type server ca ca.crt cert /etc/openvpn/keys/office-1.crt key /etc/openvpn/keys/office-1.key log-append /var/log/openvpn.log
Далее нам нужно поместить файлы office-1.* и ca.crt из каталога /etc/openvpn/keys сервера в каталог /etc/openvpn/keys клиента.
После этого запускаем сервис:
chkconfig openvpn on service openvpn start
Убеждаемся что поднялся интерфейс:
ifconfig tap0
После настройки обоих офисов можно убедиться в работе сети попробовав пинговать из одного офиса какой-нибудь компьютер, расположенный в другом офисе.
На этом всё. Более подробную информацию можно найти в документации по openvpn.
bsw_m 2008-01-20 01:50:03 (#)