From: Ломакин Евгений <lomakin_e@travelink.by.>
Newsgroups: email
Date: Mon, 19 Jan 2004 14:31:37 +0000 (UTC)
Subject: Опыт внедрения OpenVPN
Почему OpenVPN?
---------------
На ключевое слово vpn Google откликнулся 17 000 000 ссылок.
Это приятно удивило. Немного сузив поиск наткнулся на сайт
openvpn.sourceforge.net. Вводная статья обещала простоту
инсталяции и конфигурирования,а главное,- возможность создания
тунеля для большинства наиболее распрастранённых операционных
систем, включая Linux,SUN Solaris,*BSD, Mac OS X, w2k, w2k3.
Это то что мне нужно...
Так как работать с VPN планируется "навсегда", пересобрал ядро SuSE
с поддержкой tun/tap драйвера. В современные дистрибутивы FreeBSD
поддержка tun/tap уже встроена в ядро.
OpenVPN имеет два режима защиты.Первый базируется на SSL/TLS защите
с использованием сертификатов и ключей. Второй,- на использовании
статических ключей.
Для создания сертификатов пришлось подредактировать в файле
/etc/ssl/openssl.cnf несколько строк:
Я особенно не силён в защите,но раз требуют создать Диффи Хельман
параметры для office2,создаём:
openvpn dhparam -out dh1024.pem 1024
Не забываю перенести ключи и сертификаты на машину office2.
С ключами всё.Перехожу к конфигурированию vpn.
Собственно конфигурирование сводится к созданию конфигурационных файлов
для офиса1 и офиса2. У меня офис1 выступает в качестве сервера и содержит:
#office1
dev tun
port 5000
ifconfig 10.1.1.1 10.1.1.2
#Здесь маршрутизацию поднимаем
up /etc/openvpn/office1.up
#Здесь маршрутизацию удаляем
down /etc/openvpn/office1.down
tls-server
dh dh1024.pem
ca my-ca.crt
cert office1.crt
key office1.key
verb3
#end office1
А это клиент:
#office2
dev tun
port 5000
remote 100.100.100.1
ifconfig 10.1.1.2 10.1.1.1
#Здесь маршрутизацию поднимаем
up /etc/openvpn/office2.up
#Здесь маршрутизацию удаляем
down /etc/openvpn/office2.down
tls-client
dh dh1024.pem
ca my-ca.crt
cert office2.crt
key office2.key
verb3
#end office2
Чтобы сети могли видеть друг друга файл office1.up содержит:
$ ping 10.1.1.2
PING 10.1.1.2 (10.1.1.2) 56(84) bytes of data.
64 bytes from 10.1.1.2: icmp_seq=1 ttl=64 time=271 ms
64 bytes from 10.1.1.2: icmp_seq=2 ttl=64 time=419 ms
64 bytes from 10.1.1.2: icmp_seq=3 ttl=64 time=277 ms
64 bytes from 10.1.1.2: icmp_seq=4 ttl=64 time=184 ms
64 bytes from 10.1.1.2: icmp_seq=5 ttl=64 time=137 ms
--- 10.1.1.2 ping statistics ---
6 packets transmitted, 5 received, 16% packet loss, time 5039ms
rtt min/avg/max/mdev = 137.763/258.168/419.546/96.461 ms
FreeBSD:
$ ifconfig
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1259
inet6 fe80::202:44ff:fe92:7ac6%tun0 prefixlen 64 scopeid 0x5
inet 10.1.1.2 --> 10.1.1.1 netmask 0xffffffff
Opened by PID 429
$ ping 10.1.1.1
PING 10.1.1.1 (10.1.1.1): 56 data bytes
64 bytes from 10.1.1.1: icmp_seq=0 ttl=64 time=159.315 ms
64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=426.403 ms
64 bytes from 10.1.1.1: icmp_seq=2 ttl=64 time=352.940 ms
64 bytes from 10.1.1.1: icmp_seq=3 ttl=64 time=394.593 ms
64 bytes from 10.1.1.1: icmp_seq=4 ttl=64 time=249.855 ms
64 bytes from 10.1.1.1: icmp_seq=5 ttl=64 time=203.441 ms
^C
--- 10.1.1.1 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max/stddev = 159.315/297.758/426.403/99.439 ms
$
Разработчики OpenVPN любезно предоставили настройку файервола
для Linux,которая подключается в сценарии автозапуска OpenVPN.