Содержание

Объединение офисов через интернет по VPN

Объединение центрального офиса с филиалами, складами и т.д. в единую сеть - это то, с чем приходится довольно часто сталкиваться администратору сети. Объединять сети можно «хардвардным» способом на железяках (Cisco, D-Link, etc) и «программным» на серваках под разными ОС (Windows, Linux, BSD). При наличии сервера на железяки можно не разоряться, а воспользоваться тем что есть, тем более что функционал в этом случае будет более широкий. В связи с планирующимся расширением фирмы, я решил заранее выбрать и обкатать наиболее подходящую схему объединения офисов. Немного погуглив, остановился на OpenVPN, как на более защищенном и не особо замороченом способе. Дистрибутивом взял Ubuntu Server 8,04 i386 т.к. очень хотелось пощупать Убунту в виде сервера и посмотреть на что она способна. Экспериментировал в виртуальных сетях под VMware Server.

Схема соединения сетей следующая:

192.168.120.0 <serv1> 10.0.0.0 <serv2> 192.168.110.0

На каждом сервере поднят межсетевой экран iptables и nat. Для того, чтобы серверы могли устанавливать ПО из реальной глобальной сети, я подключал к ним третий bridged интерфейс. Далее в конфигурационных файлах я его упоминать не стал.

Устанавливаем сервер (serv1)

После нетривиальной установки, которую не буду описывать, конфигурируем сетевые интерфейсы:

# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.0.10
netmask 255.255.255.0

auto eth1
iface eth1 inet static
address 192.168.120.20
netmask 255.255.255.0

Делаем из него роутер путем добавления в /etc/sysctl.conf строчки:

net.ipv4.ip_forward=1

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

# cat /etc/apt/sources.list

deb http://ru.archive.ubuntu.com/ubuntu/ hardy main contrib non-free restricted universe multiverse
deb-src http://ru.archive.ubuntu.com/ubuntu/ hardy main contrib non-free restricted universe multiverse

deb http://ru.archive.ubuntu.com/ubuntu/ hardy-updates main contrib non-free restricted universe multiverse
deb-src http://ru.archive.ubuntu.com/ubuntu/ hardy-updates main contrib non-free restricted universe multiverse

deb http://ru.archive.ubuntu.com/ubuntu/ hardy-security main contrib non-free restricted universe multiverse
deb-src http://ru.archive.ubuntu.com/ubuntu/ hardy-security main contrib non-free restricted universe multiverse

Дальше устанавливаем дополнительное ПО, предварительно обновившись:

# aptitude update
# aptitude upgrade
# aptitude install console-cyrillic mc traceroute openvpn vsftpd

Для работы OpenVPN необходимо создать сретификаты и конфигурационный файл openvpn.conf.

Для генерирования сертификатов копируем каталог easy-rsa/2.0/ в /etc/openvpn/2.0/

# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/

Заполняем шаблонный файл с пременными vars. Я заполнил только последнюю часть с данными о фирме, городе и т.п.

Генерируем сертификаты:

# ./build-dh
# ./pkitool --initca
# ./pkitool --server server
# ./pkitool client

Созданные сертификаты должны появиться в вышеуказанной папке, если конечно вы ее предварительно создали.

Дальше пишем конфиг сервера. Читал разные статьи на эту тему, наступал на грабли, но в итоге плюнул и без проблем все сделал по примерам, которые лежат в папке /usr/share/doc/openvpn/examples/sample-config-files. В итоге получился такой конфиг:

#cat /etc/openvpn/openvpn.conf

dev tun
tls-server
proto udp
port 3333
comp-lzo
persist-tun
persist-key
        
# указываем узловые точки виртуальной сети
ifconfig 10.1.0.1 10.1.0.2
# добавляем маршрут к локальной сети филиала
route 192.168.110.0 255.255.255.0

dh /etc/openvpn/2.0/keys/dh1024.pem
ca /etc/openvpn/2.0/keys/ca.crt
cert /etc/openvpn/2.0/keys/server.crt
key /etc/openvpn/2.0/keys/server.key

log /var/log/openvpn.log
verb 3

Все готово, делаем рестарт сервера и убеждаемся в том, что все ОК:

# /etc/init.d/openvpn restart
# ps -ely | grep openvpn

Для полного счастья добавляем правила в iptables (приведенный ниже вариант может отличаться, в зависимости от вашей конфигурации):

iptables -A INPUT -p udp -dport 3333 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT

Установка клиента (serv2)

В плане установки и настройки системы проделываем то же самое, что и с предыдущем сервером.

# cat /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.0.20
netmask 255.255.255.0

auto eth1
iface eth1 inet static
address 192.168.110.10
netmask 255.255.255.0

Сертификаты нужно скопировать с центрального сервера. Я для этих целей поднимал там ftp.

dev tun
tls-client
remote 10.0.0.10
proto udp
port 3333
comp-lzo
persist-tun
persist-key

# указываем узловые точки виртуальной сети
ifconfig 10.1.0.2 10.1.0.1
# добавляем маршрут к локальной сети офиса
route 192.168.120.0 255.255.255.0

dh /etc/openvpn/2.0/keys/dh1024.pem
ca /etc/openvpn/2.0/keys/ca.crt
cert /etc/openvpn/2.0/keys/client.crt
key /etc/openvpn/2.0/keys/client.key

log /var/log/openvpn.log
verb 3

Запускаем:

# /etc/init.d/openvpn restart

Правим фаервол:

iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT

Пингуем хосты противоположных сетей по их внутренним адресам с обоих серверов и с клиентских машин каждой локальной сети.

Итоговые впечатления: все стабильно, секьюрно и удобно, а Ubuntu Server может быть достойной заменой Debian.

Источник

http://www.opennet.ru/base/net/openvpn_office.txt.html