If i help You, send me BTC please 1CJGz4UGyL7hTjPeN8j7fu9LRmmWiWSRHi

OpenVPN, Ubuntu, объединение нескольких сетей.

Постов 77 из 175

ubuntu openvpn

Я как-то писал заметку о том, как объединить два офиса в одну сеть с помощью OpenVPN. В той заметке есть весь необходимый минимум для выполнения задачи. Теперь хочу немного добавить информации для случая, когда сетей нужно объединить больше, чем две.

Итак, есть несколько сетей:

192.168.0.0 — 192.168.0.255 с шлюзом 192.168.0.1
192.168.1.0 — 192.168.1.255 с шлюзом 192.168.1.1
192.168.2.0 — 192.168.2.255 с шлюзом 192.168.2.1

Сервер OpenVPN будет стоять на машине с сетью 192.168.0.0/24. Конфиг сервера будет такой:

port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
server 192.168.254.0 255.255.255.0
client-config-dir ccd
route 192.168.1.0 255.255.255.0
route 192.168.2.0 255.255.255.0
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 4

Нового по сравнению с этой заметкой здесь следующее:
server 192.168.254.0 255.255.255.0 — В этой строке объявляется, что этот компьютер у нас сервер соединений и для подключения виртуальных сетевых интерфейсов выделен диапазон адресов.
client-config-dir ccd — В этой строке говорится, что в каталоге /etc/openvpn/ccd будут лежать файлы для клиентов с некой информацией, какой — ниже.
route 192.168.1.0 255.255.255.0
route 192.168.2.0 255.255.255.0
— В этих строках задаются маршруты до сетей клиентов.
client-to-client — В этой строке разрешается клиентам и сетям за ними ходить напрямую друг к другу.

Теперь о содержимом каталога /etc/openvpn/ccd.
При генерации сертификатов для клиентов есть такой вопрос:
commonName:
Ответ на этот вопрос важен, т.к. ответ на этот вопрос — это имя файла в каталоге /etc/openvpn/ccd, из которого будет читаться информация о маршрутах до других сетей.
Генерируя сертификат для сети 192.168.1.0/24 я ответил на этот вопрос usefree222, а для сети 192.168.2.0/24 — usefree333. Поэтому в каталоге /etc/openvpn/ccd у меня два файла с именами usefree222 и usefree333.
Содержимое usefree222:
iroute 192.168.1.0 255.255.255.0
push "route 192.168.0.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"

Содержимое usefree333:
iroute 192.168.2.0 255.255.255.0
push "route 192.168.0.0 255.255.255.0"
push "route 192.168.1.0 255.255.255.0"

Здесь строка, начинающаяся со слова iroute — говорит какая сеть скрывается за этим клиентом, а строки, начинающиеся со слова push — о том, какие сети скрываются за остальными клиентами.
Ну и напоследок конфиг клиента с сетью 192.168.1.0/24:

client
dev tun
proto udp
remote 154.38.223.11 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client11.crt
key /etc/openvpn/client11.key
comp-lzo
verb 4
mute 20
log-append openvpn.log

Здесь все почти без изменений, только убраны лишние строки.

Если настраивается клиент на Windows 7, то конфиг называется client.ovpn, ложится он в C:\Program Files (x86)\OpenVPN\config\ и содержимое такое:

client
dev tun
proto udp
remote 154.38.223.11 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files (x86)\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files (x86)\\OpenVPN\\config\\client11.crt"
key "C:\\Program Files (x86)\\OpenVPN\\config\\client11.key"
comp-lzo
verb 4
mute 20
log-append "C:\\Program Files (x86)\\OpenVPN\\log\\openvpn.log"

После запуска сервисов опенвпн на всех клиентах все сервисы, доступные в одной сети, станут доступны в остальных, например, запущенный в одной сети DHCP сервер будет виден в остальных сетях.

Версия Убунту — 10.04 i386, 12.04 x86_64.
Версия OpenVPN — 2.1.0-1ubuntu1.1
Для более свежих версий например, ubuntu 14, есть отличная статься digital ocean

,

Menu