Для начала немного общей информации.
OpenVPN – надежное и гибкое решение для VPN, позволяющее большинству платформам семейства Unix/Linux, Windows 2000/XP, и Mac OSX безопасно устанавливать зашифрованные каналы связи между собой.
OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами находящимися за NAT-firewall без необходимости изменения его настроек. OpenVPN была создана Джеймсом Йонан (James Yonan) и распространяется под лицензией GNU GPL.
Создание VPN-тунеля с помощью OpenVPN подразумевает под собой создание псевдоустройства tun. Проверьте, пожалуйста, присутствует ли у вас в конфигурационном файле ядра такая строка:
device tun # Packet tunnel. |
Если данное устройсво исключено из ядра, необходимо пересобрать ядро с данной опцией, или же подгрузить модуль для данного устройства.
Тем, кто будет пересобирать ядро - сюда (рекомендую именно этот вариант, если планируете долгосрочное использование тунеля). Мы же подгрузим модуль для устройства tun, поскольку на данный момент только тестируем тунель.
# kldstat |
Модуль подгрузился. Не помешало бы, чтобы этот модуль подгружался и на этапе загрузки системы:
# echo 'if_tun_load="YES"' >> /boot/loader.conf |
Итак, продолжим.
На данный момент между Router 1 и Router 2 есть 1 хоп при трассировке (пока тестируем достаточно и этого, все равно количество промежуточных хопов ни на что не влияет).
Схема построения:
IP интерфейсов, что смотрят в Internet на маршрутизаторах:
Router 1: 195.3.159.250
Router2: 193.227.207.94
Трассировка с Router 1 к Router2:
# traceroute -n 193.227.207.94 |
Настраиваем Router 1. Поищем пакет openvpn в портах:
# cd /usr/ports/ Port: openvpn-admin-1.9.4_2 Port: openvpn-auth-ldap-2.0.3_1 Port: openvpn-devel-2.1.r19 |
Найдено 4 порта. Нам нужен
Port: openvpn-2.0.6_9 Path: /usr/ports/security/openvpn Info: Secure IP/Ethernet tunnel daemon Maint: matthias [dot] andree [at] gmx [dot] de B-deps: lzo2-2.03_2 R-deps: lzo2-2.03_2 WWW: http://openvpn.net/ |
Приступаем к установке:
# cd /usr/ports/security/openvpn |
Опции установки оставляем по умолчанию:
Options for openvpn 2.0.6_9 [ ] PW_SAVE Interactive passwords may be read from a file |
После установки не забываем обновить пути. Создаем каталог, где будут лежать конфигурационные файлы.
# rehash |
Создаем файл с ключем шифрования тунеля.
# openvpn --genkey --secret /usr/local/etc/openvpn/tun0.key |
Посмотрим результат команды:
# cat /usr/local/etc/openvpn/tun0.key # # 2048 bit OpenVPN static key # -----BEGIN OpenVPN Static key V1----- f85bf8204f9e47446e497d166f2f1aa2 1980cd79f2fe7ce2d5054003a87dae08 72b331532fe4da258e2e1fbf1fedbf84 9b9185d573ee908955975a6f8eef6f4e f43195b7eafcf73b1a45392991be61ca 756926c59899b689f127b998eb9369bd 52eab3791708d0215dd6a59f226d8c91 aa523b288c715284ddcaa4f4df2f7a93 75794c875fd28c2f14d351d92a1c6219 5926866b44b72941eaec67e20495d549 92f38c01fa22521f681ab50d71e3379e 64fd253f10b929a6f27dc884e158b3b3 7b2eb1e7ce0d4047618b59cae6b5ea78 5fbf9c9fafdb70168c36b8f21b3e898e a28dae707fe1995a1f6f5d153ea361fc 31794c1fc8ef89000790e28d36444767 -----END OpenVPN Static key V1----- |
Вот этим ключем и будем шифровать наш канал :)
Создадим конфигурационный файл /usr/local/etc/openvpn/openvpn.conf . Листинг конфигурационного файла:
# Создаем устройство типа tun
dev tun0 # IP-адресс удаленного пира
remote 193.227.207.94 # 91.196.102.190 - это IP-адресс локальной конечной точки VPN
# 91.196.102.189 - это IP-адресс удаленной конечной точки VPN ifconfig 91.196.102.190 91.196.102.189 # Указываем ключ шифрования для тунеля
secret /usr/local/etc/openvpn/tun0.key |
Добавляем опции загрузки в /etc/rc.conf:
# echo '#OpenVPN' >> /etc/rc.conf |
Запускаем тунель:
# sh /usr/local/etc/rc.d/openvpn start |
Проверяем, создался ли туннель:
# ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500 inet 91.196.102.190 --> 91.196.102.189 netmask 0xffffffff Opened by PID 673 |
Все гуд. Приступаем к конфигурированию Router2.
По аналогии установим из портов openvpn. Потом создадим каталог для конфигурационных файлов и создадим такой же ключ шифрования, как и на Router1 (должен совпадать на обеих маршрутизаторах):
# mkdir /usr/local/etc/openvpn |
Заливаем туда содержимое /usr/local/etc/openvpn/tun0.key с Router1.
Создаем конфигурационный файл. Листинг /usr/local/etc/openvpn/openvpn.conf:
# cat /usr/local/etc/openvpn/openvpn.conf # Создаем устройство типа tun # IP-адресс удаленного пира # 91.196.102.189 - это IP-адресс локальной конечной точки VPN # Указываем ключ шифрования для тунеля |
Добавляем опции загрузки в /etc/rc.conf:
# echo '#OpenVPN' >> /etc/rc.conf |
Запускаем тунель:
# sh /usr/local/etc/rc.d/openvpn start |
Проверяем, создался ли туннель:
# ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500 inet 91.196.102.189 --> 91.196.102.190 netmask 0xffffffff Opened by PID 37668 |
Все ок... Проверяем с Router2 доступность "другой" стороны тунеля:
# ping 91.196.102.190 PING 91.196.102.190 (91.196.102.190): 56 data bytes 64 bytes from 91.196.102.190: icmp_seq=0 ttl=64 time=1.512 ms 64 bytes from 91.196.102.190: icmp_seq=1 ttl=64 time=1.390 ms 64 bytes from 91.196.102.190: icmp_seq=2 ttl=64 time=1.226 ms ^C --- 91.196.102.190 ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 1.226/1.376/1.512/0.117 ms |
Все ok. На этом построение тунеля завершено.
Дальше дело за маршрутизацией... Уже вам решать что в этот тунель заворачивать.
Последние комментарии
17 недель 3 дня назад
41 неделя 5 дней назад
2 года 42 недели назад
3 года 12 недель назад
3 года 35 недель назад
3 года 50 недель назад
3 года 51 неделя назад
4 года 2 недели назад
4 года 13 недель назад
4 года 17 недель назад