OpenVPN маршрутизация в локальную сеть zhitsoboy.ru

OpenVPN маршрутизация в локальную сеть

OpenVPN доступ к сети за клиентом.

Всех приветствую. Помогите с настройкой openvpn сервера или хотя бы ткнуть, куда смотреть. Есть сервер с поднятым openvpn на Ubuntu 12.04 в локальной сети компании (192.168.1.0/24) за маршрутизатором (за NAT), с одним сетевым интерфейсом eth0. На маршрутизаторе статический ip провайдера. И есть клиент на Windows машине в другом офисе, локальная сеть (192.168.2.0/24) тоже находиться за маршрутизатором. Удалось настроить подключение с клиента к серверу.С клиента вижу всю сеть за сервером, с сервера сеть за клиентом не пингуется. Теперь два вопроса: 1.Как настроить доступ из сети за сервером (192.168.1.0/24) в сеть клиента (192.168.2.0/24)? 2.И как организовать доступ со всех компьютеров из подсети клиента к сети за сервером. В данный момент только с клиентской машины доступны ресурсы за сервером?

server 10.8.0.0 255.255.255.0

push «route 192.168.1.0 255.255.255.0»

keepalive 20 120 comp-lzo

persist-tun log-append openvpn.log

push «redirect-gateway def1»

route 192.168.2.0 255.255.255.0

push «dhcp-option DNS 8.8.8.8»

push «dhcp-option DNS 213.134.192.18»

Файл ccd клиента

iroute 192.168.2.0 255.255.255.0

remote 94.230.7.83 1194

ca ca.crt cert test1.crt key test1.key

resolv-retry infinite pull

Маршрутизация в /etc/rc.local

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

iptables -A FORWARD -m state —state RELATED,ESTABLISHED -j ACCEPT

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

или хотя бы ткнуть, куда смотреть

Ну без конфига можно ткнуть только в наиболее типовой вариант. На сервере:

И если dev tap, то в конфе ccd:

LORCODE для оформления постов, чтобы логи/конфиги не через строчку были, а нормальным текстом.

Судя по описанию задачи ни клинет, ни сервер не являются шлюзом по умолчанию для компьютеров своих сетей. Поэтому на всех компах в сети сервера нужно прописывать маршрут к 192.168.2.0/24 через ip-адрес сервера и аналогично маршрут к 192.168.1.0/24 для сети клиента.

И я вобще не знаю, сможет ли винда с openvpn-клиентом маршрутизировать пакеты. Но, думаю что вам нужно изучить что такое маршрутизация ip-пакетов в теории, и с помощью дампов tcpdump/wireshark проверить знания на практике.

Подправил немного конфиги.
server.conf
proto udp dev tun port 1194 mode server server 10.8.0.0 255.255.255.0 ca ca.crt cert server.crt key server.key dh dh1024.pem user nobody group nogroup ifconfig-pool-persist ipp.txt push «route 192.168.1.0 255.255.255.0» # ofice push «route 10.8.0.0 255.255.255.0» #vpn keepalive 10 60 ping-timer-rem persist-key persist-tun comp-lzo log-append openvpn.log status openvpn-status.log verb 3 push «redirect-gateway def1 bypass-dhcp» client-to-client client-config-dir /etc/openvpn/ccd # Тут будут настройки для каждого филиала #route 192.168.0.0 255.255.255.0 10.8.0.5 # Маршрут от сервера до филиала 1 route 192.168.2.0 255.255.255.0 10.8.0.4 # Маршрут от сервера до филиала 2 #route 192.168.8.0 255.255.255.0 10.8.0.6 # Маршрут от сервера до филиала 3 #route 192.168.10.0 255.255.255.0 10.8.0.7 # Маршрут от сервера до филиала 4 push «dhcp-option DNS 8.8.8.8» push «dhcp-option DNS 213.134.192.18»

client.conf
client dev tun persist-key persist-tun nobind comp-lzo proto udp remote x.x.x.x 1194 ca ca.crt cert test2.crt key test2.key user nobody group nogroup verb 1 resolv-retry infinite pull keepalive 10 60 suppress-timestamps

ccd конфиг клиента
iroute 192.168.2.0 255.255.255.0

route -n на сервере
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0 10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0 10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.2.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0

route print на клиенте
0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.30 25 0.0.0.0 128.0.0.0 10.8.0.9 10.8.0.10 30 10.8.0.0 255.255.255.0 10.8.0.9 10.8.0.10 30 10.8.0.8 255.255.255.252 On-link 10.8.0.10 286 10.8.0.10 255.255.255.255 On-link 10.8.0.10 286 10.8.0.11 255.255.255.255 On-link 10.8.0.10 286 x.x.x.x 255.255.255.255 192.168.2.1 192.168.2.30 25 127.0.0.0 255.0.0.0 On-link 127.0.0.1 306 127.0.0.1 255.255.255.255 On-link 127.0.0.1 306 127.255.255.255 255.255.255.255 On-link 127.0.0.1 306 128.0.0.0 128.0.0.0 10.8.0.9 10.8.0.10 30 192.168.1.0 255.255.255.0 10.8.0.9 10.8.0.10 30 192.168.2.0 255.255.255.0 On-link 192.168.2.30 281 192.168.2.1 255.255.255.255 192.168.2.1 192.168.2.30 25 192.168.2.30 255.255.255.255 On-link 192.168.2.30 281 192.168.2.255 255.255.255.255 On-link 192.168.2.30 281 224.0.0.0 240.0.0.0 On-link 127.0.0.1 306 224.0.0.0 240.0.0.0 On-link 10.8.0.10 286 224.0.0.0 240.0.0.0 On-link 192.168.2.30 281 255.255.255.255 255.255.255.255 On-link 127.0.0.1 306 255.255.255.255 255.255.255.255 On-link 10.8.0.10 286 255.255.255.255 255.255.255.255 On-link 192.168.2.30 281

Да, шлюзами они не являются. Какие еще маршруты нужно прописать на сервере, чтобы с него пинговалась сеть за клиентом?

Да вы правы. Поставил клиент на Ubuntu все забегало. Сети видят друг друга. Буду копать тогда маршрутизацию на Windows клиенте.

OpenVPN маршрутизация в локальную сеть

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Коменты в конфиге оставил для себя, пока все не запомню

нет

Какая структура хостов? Чего хочешь пинговать и чего не пингуется?

Хочу что бы были доступны компьютеры из сети 192.168.0.024 А если быть конкретнее то терминал сервер 192.168.0.188

—У тебя абсолютно все хосты, включая сервер openvpn и терминал-сервер, находятся в 192.168.0.0/24?—-
Да.

Добавлено:
пакеты отправляет, но не принимает

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору openvpn —version
OpenVPN 2.1_rc4 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Dec 9 2007
Developed by James Yonan
Copyright (C) 2002-2005 OpenVPN Solutions LLC

Добавлено:
Может быть дело в маршрутизации?
Вот
netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
195.*.*.* 0.0.0.0 255.255.255.248 U 0 0 0 eth2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 195.*.*.* 0.0.0.0 UG 0 0 0 eth2

Что нужно добавить что бы сеть 192.168.0.1 виделась через интерфейс tun0.

И еще вопрос, в конфе стоит server 192.168.1.0 255.255.255.0, значит сервер должен взять себе айпи 192.168.1.1, но при соединении из винды я получаю адреса от DHСP 192.168.1.5, если поставить дефалт гэйтвэй, то и шлюз получается с таким адресом.

Хм странно после рестарта опенвпн получилась такая таблица
netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
195.*.*.* 0.0.0.0 255.255.255.248 U 0 0 0 eth2
192.168.1.0 192.168.1.2 255.255.255.0 UG 0 0 0 tun0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 195.*.*.* 0.0.0.0 UG 0 0 0 eth2

Как я понимаю, вылечилось это обновление клиента? Потому как твой 2.0.9-клиент не понимал директивы topology сервера 2.1.
Что у тебя с чем соединяется? Кто клиент, кто сервер, какие адреса?

Добавлено:
У тебя сервер стоит в офисе, а клиент черт знает где? Или наоборот?

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору —-Как я понимаю, вылечилось это обновление клиента? Потому как твой 2.0.9-клиент не понимал директивы topology сервера 2.1.—

возможно, но адрес сервера всеравно не пингуется!

—Что у тебя с чем соединяется? Кто клиент, кто сервер, какие адреса?—
Сервер в оффисе — debian (внутр 192.168.0.211, раздает адреса из диапазона 192,168,1,1), клиент хрен знает где — винда, OpenVPNGUI

Добавлено:
Вот что дал ifconfig
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.1.1 P-t-P:192.168.1.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Не нашел более подходящую ветку для своего вопроса.
Поэтому мпрошу здесь.
Поднял OpenVPN сервер на Windows (не смейтесь!). Сам сервер стоит в одноранговой сетке за роутером, где открыт порт 1194.
В конфигурационном файле поставил push «route 192.168.0.0 255.255.255.0» с целью, чтобы клиенты OpenVPN видели бы всю внутреннюю сетку с адресами 192.168.0.xxx
Получил результат — при обращении по IP-адресу в диапазоне 192.168.0.xxx виден только сам OpenVPN сервер (при обращении по соответствующему внутреннему интерфейсу). Это понятно — ведь остальные не знают, куда посылать пакет на запрос по OpenVPN. Попытался прописать статическую маршрутизацию типа:
route -p add 10.8.0.0 mask 255.255.255.0 192.168.0.101
(где 192.168.0.101 — внутренний адрес OpenVPN сервера)
Не помогает.
Вопрос — какую маршрутизацию надо прописывать.

Читать еще:  Опишите порядок установки автоматического обновления программного обеспечения

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Народ помогите, перечитал кучу форумов, понимаю что не так и сложно настроить, но сталкнулься с такой траблой, все на винде, сервак win 2003 EE SP2 (RRas, DNS) на нем висит wingate, на нем же развернут server openvpn, машинки клиенты на win home, так вот задача видеть сеть за сервером с сети за клиентом, и наоборот, даже точнее некоторые тачки с сети за сервером видят все сети за клиентами openvpn, и некоторые тачки оттуда видят сеть за сервером openvpn. На данный момент, с сервера вижу сети за клиентами, но с тачки за сервером не вижу сетей, с клиента вижу сервер (это естественно, но за ним ни чего не вижу, пинги не проходят)

конфиг сервера
dev tun
# подсеть и маска сервера которые будут созданы при подключении,
# сервер получит айпи 10.1.0.1 с маской 255.255.255.0 а клиент свой IP
# из этого диапазона например 10.1.0.6 (а точнее такой и будет).
server 192.168.149.0 255.255.255.0 # предполагая что у вас за сервером на внутренней сетевой (192.168.1.1)
# сидит сеть 192.168.1.0 соответственно вам нужно для получения к ней
# доступа добавить запись в таблицу маршрутизации.
route-delay 30
route-method exe
push «route 192.168.149.0 255.255.255.0»
push «route 192.168.1.0 255.255.255.0»
push «route 192.168.90.0 255.255.255.0»
#push «route-gateway 192.168.149.1»
#route-gateway 192.168.149.1
tls-server
ca keys//ca.crt
cert keys//server.crt
key keys//server.key
dh keys//dh1024.pem
proto udp
port 1194
ifconfig-pool-persist ipp.txt
route 192.168.90.0 255.255.255.0
route 192.168.1.0 255.255.255.0
route 192.168.0.0 255.255.255.0
route 192.168.149.0 255.255.255.0
client-config-dir ccd
client-to-client
comp-lzo
keepalive 10 120
verb 3
status openvpn-status.log
log log.txt

конфиг клиента
client
;dev tap
dev tun
;proto tcp
proto udp
remote 195.5.*.* 1194
ca keys/ca.crt
cert keys/test.crt
key keys/test.key
comp-lzo
verb 3

таблица маршрутизациия из route print servera

IPv4 таблица маршрута
===========================================================================
Список интерфейсов
0x1 . MS TCP Loopback interface
0x3 . 00 1a 92 72 d0 61 . Realtek RTL8168/8111 PCI-E Gigabit Ethernet
— Kaspersky Anti-Virus NDIS Miniport
0x4 . 00 ff 00 98 d4 fa . TAP-Win32 Adapter V8 — Kaspersky Anti-Virus
Miniport
0x80002 . 00 e0 4d d6 93 d3 . Realtek RTL8139 Family PCI Fast Ethernet
— Kaspersky Anti-Virus NDIS Miniport
===========================================================================
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 195.5.108.65 195.5.108.66 30
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.0.0 255.255.255.0 192.168.149.2 192.168.149.1 1
192.168.1.0 255.255.255.0 192.168.1.1 192.168.1.1 10
192.168.1.1 255.255.255.255 127.0.0.1 127.0.0.1 10
192.168.1.255 255.255.255.255 192.168.1.1 192.168.1.1 10
192.168.60.0 255.255.255.0 192.168.60.25 195.5.108.66 30
192.168.60.25 255.255.255.255 127.0.0.1 127.0.0.1 30
192.168.60.255 255.255.255.255 192.168.60.25 195.5.108.66 30
192.168.90.0 255.255.255.0 192.168.149.2 192.168.149.1 1
192.168.149.0 255.255.255.252 192.168.149.1 192.168.149.1 30
192.168.149.0 255.255.255.0 192.168.149.1 192.168.149.1 1
192.168.149.1 255.255.255.255 127.0.0.1 127.0.0.1 30
192.168.149.255 255.255.255.255 192.168.149.1 192.168.149.1 30
195.5.108.64 255.255.255.248 195.5.108.66 195.5.108.66 30
195.5.108.66 255.255.255.255 127.0.0.1 127.0.0.1 30
195.5.108.255 255.255.255.255 195.5.108.66 195.5.108.66 30
224.0.0.0 240.0.0.0 192.168.1.1 192.168.1.1 10
224.0.0.0 240.0.0.0 192.168.149.1 192.168.149.1 30
224.0.0.0 240.0.0.0 195.5.108.66 195.5.108.66 30
255.255.255.255 255.255.255.255 192.168.1.1 192.168.1.1 1
255.255.255.255 255.255.255.255 192.168.149.1 192.168.149.1 1
255.255.255.255 255.255.255.255 195.5.108.66 195.5.108.66 1
Основной шлюз: 195.5.108.65
===========================================================================
Постоянные маршруты:
Отсутствует

Если еще нужна какая либо инфа, я выложу, плиззз уже башка просто скоро лопнет

OpenVPN маршрутизация в локальную сеть

Доброго дня!
Слабонервных и особо впечатлительных дальше прошу не читать, так как сам понимаю, что сотворил дичайший ад.

Есть два офиса. Необходимо объединить их сети посредством OpenVPN (возможно, достаточно будет объединить один компьютер, на котором будет VPN-сервер, из первого офиса с сетью второго). В первом офисе на одном из компьютеров на Windows 7 (не шлюз, разумеется) установлен OpenVPN-сервер. Со стороны второго офиса подключается Mikrotik (RB750Gr3), который является шлюзом сети второго офиса. Для подключения Mikrotik’а на шлюзе сети первого офиса проброшен порт к компьютеру с VPN-сервером.

В первом офисе сеть 192.168.8.0/21, шлюз на 192.168.10.1, комп с OpenVPN — 192.168.10.98
Во втором офисе сеть 192.168.51.0/24, Mikrotik на 192.168.51.1
Сеть OpenVPN — 192.168.30.0/24
Трафик со второго офиса в первый на Mikrotik’е заворачивается в OpenVPN

В свойствах сетевого адаптера, через который идет подключение к локальной сети, компютера с OpenVPN-сервером был отключен DHCP и указаны два IP и два шлюза: из локальной сети и из сети VPN. Также была включена маршрутизация между интерфейсами (IPEnableRouter = 1 в реестре).

Для доступа со стороны первого офиса (пока только с компьютера с VPN-сервером) к компьютерам второго офиса на Mikrotik’е проброшены порты.

Теперь о проблемах.
Во-первых, я понимаю, что два шлюза на одном интерфейсе на компе с OpenVPN-сервером — это слишком сомнительное решение, особенно с учетом того, что начинаются проблемы при работе в локальной сети. Но другого я не нашел. Без этого, достучаться с компьютера с VPN-сервером во вторую сеть или обратно у меня не получилось. Может, есть другое решение для такой ситуации?
Во-вторых, в данной конфигурации у меня не получается получить доступ к компьютеру с VPN-сервером из сети второго офиса: пинги идут, а подключится к тому же FTP не получается (хотя если поднять HTTP-сервер, то страничку в браузере загрузить можно). Вероятно, нужна какая-то маршрутизация на стороне компьютера?
В-третьих, все это работает только при конфигурации OpenVPN с topology net30 (которая устанавливается по умолчанию). Если прописать topology subnet, то Mikrotik соединяется c VPN, но пинги с него не идут даже в сеть VPN. Это такая «особенность» Mikrotik’а из той же серии, что и реализация OpenVPN только по TCP и с неработающим сжатием, или все так же мои кривые руки?

Буду благодарен за любые идеи и подсказки по моим вопросам.

alphageo
Это такая «особенность» Mikrotik’а из той же серии, что и реализация OpenVPN только по TCP и с неработающим сжатием
да

В свойствах сетевого адаптера, через который идет подключение к локальной сети, компютера с OpenVPN-сервером был отключен DHCP и указаны два IP и два шлюза: из локальной сети и из сети VPN.
шлюз из сети VPN убрать!
route -p add 192.168.51.0 mask 255.255.255.0 192.168.30.xxx
(192.168.30.xxx — уточнить через route print)

Также была включена маршрутизация между интерфейсами (IPEnableRouter = 1 в реестре).

1 ADS 192.168.10.0/24 192.168.30.5 1
удалить
/ip route add 192.168.8.0/21 gateway=192.168.30.6

Остальное позже, когда будет время.

Добавление от 05.09.2018 15:42:

alphageo
push «route 192.168.10.0 255.255.255.0» как сочетается с В первом офисе сеть 192.168.8.0/21 ?
Можно, конечно, пушить часть сети, не возбраняется.

vinni, спасибо за ответ.

push «route 192.168.10.0 255.255.255.0» как сочетается с В первом офисе сеть 192.168.8.0/21 ?
Можно, конечно, пушить часть сети, не возбраняется.

Да, я понимаю, что это только часть сети. Возможно, если все заработает, мне останется нужен только один IP со стороны VPN-сервера.

шлюз из сети VPN убрать!
Удалил

route -p add 192.168.51.0 mask 255.255.255.0 192.168.30.xxx
(192.168.30.xxx — уточнить через route print)

Маршрут до 51-й подсети был в виде
код: Пинги ни туда, ни обратно не ходили.
Удалил этот маршрут, добавил 192.168.51.0 mask 255.255.255.0 192.168.30.1
Ситуация не изменилась.

Читать еще:  Объем SSD диска что это?

1 ADS 192.168.10.0/24 192.168.30.5 1
удалить
/ip route add 192.168.8.0/21 gateway=192.168.30.6

Чтобы удалить маршрут с роутера поправил конфиг VPN-сервера. Добавил новый маршрут ручками. Но лучше не стало. Маршрут просто unreachable.
К тому же, 192.168.30.6 — это сам роутер в VPN-сети.

В общем, пока не помогло.

Вот здесь (http://lithium.opennet.ru/articles/openvpn/openvpn-howto.html#scope) указано, что
Далее, необходимо настроить на LAN-шлюзе в сети сервера маршрут для маршрутизации пакетов, предназначенных для подсети VPN-клиентов (10.8.0.0/24) через OpenVPN-сервер (это необходимо только тогда, когда сервер OpenVPN и LAN-шлюз — разные машины).
Быть может, стоит в эту строну копать?

alphageo
Удалил этот маршрут, добавил 192.168.51.0 mask 255.255.255.0 192.168.30.1
Нет, было правильно, шлюз должен быть 192.168.30.2, как в route print
Верните
route -p add 192.168.51.0 mask 255.255.255.0 192.168.30.2

Быть может, стоит в эту строну копать?
Да. Это уже финальные шаги для работы хостов в сети 192.168.8.0/21

К тому же, 192.168.30.6 — это сам роутер в VPN-сети.
Да, скосоглазил
/ip route add 192.168.8.0/21 gateway=192.168.30.5

В целом — по шагам:
Сначала добейтесь пинга в обе стороны по туннельным адресам.
Затем пинг в обе стороны по LAN-адресам
Затем (тоже в обе стороны) пинг с одного в сеть за вторым
Затем пинг из хоста за клиентом на хост за сервером и обратно.

Добавление от 05.09.2018 16:54:

alphageo
chain=srcnat action=masquerade src-address=192.168.51.0/24 dst address=192.168.10.0/24
А зачем? Вы хотите чтобы сеть 192.168.51.0/24 была недоступна со стороны сервера?

Добавление от 05.09.2018 16:54:

Если так, то маршруты на сеть 192.168.51.0/24 на сервере не нужны

vinni
Верните
route -p add 192.168.51.0 mask 255.255.255.0 192.168.30.2

/ip route add 192.168.8.0/21 gateway=192.168.30.5

Теперь я вернулся к конфигурации из заглавного поста минус IP и шлюз сети VPN, прописанные в свойствах сетевого адаптера. И, как я ранее и писал, в такой конфигурации никакие пинги через VPN не проходят (даже от роутера на сервер по VPN-сети, хотя казалось бы. )

Сравнил роуты на Win7 — разница между состояниями, когда шлюз VPN указан в свойствах адаптера и когда нет в этих строках:
код: Добавил их вручную без добавления шлюза VPN в свойства адаптера — результат не изменился.

chain=srcnat action=masquerade src-address=192.168.51.0/24 dst address=192.168.10.0/24
А зачем? Вы хотите чтобы сеть 192.168.51.0/24 была недоступна со стороны сервера?

Я не знаю, как по-другому завернуть трафик из локалки роутера в VPN. А для доступа к компам со стороны сервера, как писал выше, пробрасываю порты.

Dusk
брандмауэр Windows по дефолту блокирует пинги из чужих подсетей
С пингами при костыльной настройке проблем, вроде, нет. Проблема с другими подключениями.

alphageo
Я не знаю, как по-другому завернуть трафик из локалки роутера в VPN. А для доступа к компам со стороны сервера, как писал выше, пробрасываю порты.
Обычной маршрутизацией. Без NAT понадобится и на/за сервером добавить маршрут ещё и на 192.168.51.0/24. Если на VPN’ом чужая сеть и в ней добавить маршрут проблема, то тогда и используют NAT, но у вас то не такой случай.

В свойствах сетевого адаптера, через который идет подключение к локальной сети, компютера с OpenVPN-сервером был отключен DHCP и указаны два IP
192.168.30.11 255.255.255.255 On-link
Б-р-р-р. Это ещё что? Зачем 192.168.30.11 назначен на внутреннем интерфейсе?

Сейчас надо добиться ping 192.168.30.1 и ping 192.168.30.6
Для проверки отключите фаервол на VPN-интерфейсе и разрешите на микротике любые icmp echo req и любой входящий трафик с vpn-интерфейса

vinni
Обычной маршрутизацией. Без NAT понадобится и на/за сервером добавить маршрут ещё и на 192.168.51.0/24. Если на VPN’ом чужая сеть и в ней добавить маршрут проблема, то тогда и используют NAT, но у вас то не такой случай.
Я пробовал маркировать трафик и после этого отправлять его в VPN-туннель, но это не приносило желаемого результата.

Б-р-р-р. Это ещё что? Зачем 192.168.30.11 назначен на внутреннем интерфейсе?
Чтобы хоть как-то работало. Без этого пинги или подключения по другим протоколам между компом с VPN-сервероми компами за Mikrotik’ом не проходят.

Для проверки отключите фаервол на VPN-интерфейсе и разрешите на микротике любые icmp echo req и любой входящий трафик с vpn-интерфейса
Проверил настройки Firewall: он не блокирует VPN-интрефейс. На Mikrotik’е нет никаких правил в Firewall’е. Но пинги все равно между 192.168.30.1 и 192.168.30.6 не идут.

Добавление от 07.09.2018 10:08:

У меня уже после 2 недель ковыряния с этим VPN шарики за ролики закатываются. Видимо, я пока отложу решение этого вопроса.
vinni, спасибо за Ваше участие.

alphageo
Я пробовал маркировать трафик и после этого отправлять его в VPN-туннель
С этим справляется обычная маршрутизация. Маркировка нужна для более сложных случаев

пинги все равно между 192.168.30.1 и 192.168.30.6 не идут.
Ещё раз проверить маршруты и затем смотреть логи

Объединение сетей OpenVPN +VDS

Вы узнаете как обезопаситься с помощью сферического коня в вакууме, то есть OpenVPN.

В этом примере будет использоваться 2048 битный ключ.

Не у всех есть белый IP адрес, не говоря уж о белом статическом IP. В основном оборудование MikroTik находится за NAT’ом, а то и за целой цепочки из NAT’ов. Особенно это касается интернета через 3/4G/LTE модемы и пионерские сети.

Статья так же, как и предыдущая, не претендует на уникальность и написана ради себя и таких же, как я. Разрешено свободное копирование, распространение, адекватная критика.

Подразумевается, что объединяемые сети имеют разные диапазоны IP адресов.

Конкретно в моем случае, офис M имеет 192.168.0.0/24 , а офис T — 10.0.0.0/24
Офис B как концепт — 10.10.0.0/24

Для начала нам нужно выбрать и подготовить VDS

Установка OpenVPN сервера

За что я люблю линукс? Консоль и репозитории.
(ц) Я

На всякий случай вводим команду ls -l /dev/net/tun и если получаем ответ вида crw-rw-rw- 1 root root 10, 200 Nov 19 23:02 /dev/net/tun можно идти дальше.

Все операции проводятся под root пользователем.

Установим OpenVPN сервер командой apt-get install openvpn

Генерация RSA ключей

Определимся как и для скольких клиентов мы будем создавать учетные данные (ключи).
Примите во внимание, что после генерации ключей нельзя будет добавлять новых клиентов. Придется заново генерировать для всех.

Как вы поняли — аутентификация будет через ключи. Давайте создадим их.

Создадим директорию командой
mkdir /etc/openvpn/easy-rsa/
Копируем в нее конфигурацию для работы с RSA ключами командой
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

Переходим в эту директорию командой cd /etc/openvpn/easy-rsa/
В этой директории отредактируем файл vars командой nano vars
В этом файле нам нужны только строки export KEY_:

export KEY_COUNTRY=»US»
export KEY_PROVINCE=»CA»
export KEY_CITY=»SanFrancisco»
export KEY_ORG=»Fort-Funston»
export KEY_EMAIL=»me@myhost.mydomain»
export KEY_OU=»MyOrganizationalUnit»
export KEY_CN=»example.com»

Данные в них меняем на свои, но они ни на что не влияют. Я указал:

export KEY_COUNTRY=»RU»
export KEY_PROVINCE=»77″
export KEY_CITY=»Moscow»
export KEY_ORG=»Roga I Kopyta»
export KEY_EMAIL=»ovpn@roga-i.kopyta»
export KEY_OU=»IT Otdel»
export KEY_CN=»Server»

Инициализируем данные командой
source ./vars
Вылезает предупреждение: NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Делаем как нам написали, вводим команду
./clean-all

Создаем корневой сертификат командой
./build-ca

Если вылезает ошибка, то в конце файла vars добавляем строку export KEY_ALTNAMES=»something» и заново инициализируем данные командой
source ./vars

Читать еще:  Как оптимизировать оперативную память Windows 7?

Корневой сертификат создан, создадим сертификаты для сервера и клиентов.

Генерируем сертификаты сервера и клиентов:
./build-key-server server (укажем пароль gETHoZOSH81JfUHOSSJt)
./build-key M (укажем пароль OUsZCcqY8PSf4OA92mV6)
./build-key T (укажем пароль H2P6cS9jxUom4Dz7Nlhd)
./build-key B (укажем пароль 9FNYQZDRJu7OlbdU8hab)
./build-key Moron (укажем пароль dxFlacdssmHZNrC90ZRi)
./build-key user (укажем пароль LiYQX4rdY0A2drxnQVTI)
Максимальная длина пароля 20 символов.

Либо если мы хотим сделать пин код на сертификат и обойтись одним файлом:
./build-key-pkcs12 client518 (укажем пароль JugsdhgjIHi87) и Export Password — пин код. Создастся файл client518.p12, который можно использовать.
Теперь вместо трех строк с указанием корневого, пользовательского сертификата и ключа, нужно указывать:
pkcs12 client518.p12

Сразу создайте сколько нужно сертификатов, но если нужно добавить еще клиентов:
cd /etc/openvpn/easy-rsa/
source ./vars
Игнорируем ошибку
./build-key client220 (укажем пароль LiYQjhbi7hnjdsfgfTI)
Завершаем генерацию:
./build-dh

На этапе генерации ключей — создайте для каждого свой пароль.

Далее генерируем ключ Диффи Хеллмана командой
./build-dh

Создаем ключ для tls аутентификации командой
openvpn —genkey —secret keys/ta.key
Этот ключ нам не пригодится, но создать его не помешает.

Переходим в директорию с ключами командой
cd keys
Копируем оттуда нужные ключи в директорию /etc/openvpn/ командой
cp server.crt server.key ca.crt dh2048.pem ta.key /etc/openvpn/

Для настройки клиентов скачаем ключи из папки /etc/openvpn/easy-rsa/keys
Для этого я использую FileZilla и протокол SFTP

Нам нужны файлы:
ca.crt
ta.key

И для каждого клиента:
client1.crt
client1.key
и т.д.

Настройка OpenVPN сервера

Скопируем пример конфигурации командой
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
Распакуем командой
gzip -d /etc/openvpn/server.conf.gz

Приступим к самой настройке командой
nano /etc/openvpn/server.conf

Рассмотрим содержимое более подробно.

port 1194 # Порт
proto tcp # Протокол, udp быстрее, но микротик его не поддерживает
dev tun #Название виртуального устройства
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem
server 10.250.10.0 255.255.255.0 # Подсеть для VPN
ifconfig-pool-persist ipp.txt # Тут будут храниться ip адреса клиентов (работает через раз и не пригодится)
keepalive 10 120
mssfix 1500
tun-mtu 1500
fast-io
txqueuelen 250
sndbuf 393216
rcvbuf 393216
push «sndbuf 393216»
push «rcvbuf 393216»
;comp-lzo # Сжатие микротиком не поддерживаетсся
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 4
mute 20
client-to-client # Разрешаем соединения клиентов друг с другом
client-config-dir /etc/openvpn/ccd # Тут будут настройки для каждого филиала

Создаем директорию для настроек клиентов:
mkdir /etc/openvpn/ccd

Для филиалов добавляем файлы индивидуальных настроек:

nano /etc/openvpn/ccd/M , где M это RSA ключ данного клиента
Вписываем маршрут в эту сеть:
iroute 192.168.0.0 255.255.255.0

nano /etc/openvpn/ccd/T
Вписываем маршрут в эту сеть:
iroute 10.0.0.0 255.255.255.0

nano /etc/openvpn/ccd/B
Вписываем маршрут в эту сеть:
iroute 10.10.0.0 255.255.255.0

Перезагружаем
reboot

Должен появится tun0 интерфейс, проверим командой
ifconfig

Настройка MikroTik

Заходим в настройки микротика и перетаскиваем в WinBox сертификат и ключ свежесозданного client220
Далее импортируем сертификат: System -> Certificates -> Import
Сначала crt , за тем key . Получаем такую картину:

Создаем OVPN соединение: Interface -> + -> OVPN Client

Указываем IP, сертификат и далее по скрину. Имя пользователя и пароль не важны.

Операция аналогичная на каждом микротике каждого отделения.

Исходя из тестов, установим на микротике MTU 1472

Маршрутизация MikroTik

Чтобы микротик знал, за каким интерфейсом находится нужная сеть, пропишем маршрут.
IP -> Routes -> +
Маршрут до 192.168.0.0/24 и вообще до любой сети добавляется аналогично.

Настройка Windows клиента

Устанавливаем и открываем папку, куда программа установилась
C:Program FilesOpenVPNconfig

Копируем в эту папку файлы корневого сертификата и сертификата пользователя ca.crt, Moron.crt, Moron.key

Создаем файл профиля с разрешением .ovpn

В моем случае это Moron.ovpn

Файл имеет простое содержание:

client
dev tun
proto tcp
remote *.*.*.* 1194 # IP адрес VDS и порт
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt # Корневой сертификат
cert Moron.crt # Сертификат клиента
key Moron.key # Ключ клиента
;pkcs12 Moron.p12 # Если мы генерировали через ./build-key-pkcs12
verb 3
mute 20
route 192.168.0.0 255.255.255.0 # Маршрут до сети M
route 10.0.0.0 255.255.255.0 # Маршрут до сети T
route 10.10.0.0 255.255.255.0 # Маршрут до сети B

Параметры можно передавать и с сервера, если прописать их в файле
nano /etc/openvpn/ccd/Имя_сертификата
push «route 10.0.0.0 255.255.255.0»
push «route 192.168.0.0 255.255.255.0»
push «route 10.10.0.0 255.255.255.0»

Но лучше прописывать до конкретного IP, команда
push «route 192.168.0.210»

Запускаем OpenVPN клиент, в трее правой кнопкой жмем подключиться.

Теперь у вас есть надежно защищенная сеть между офисами и работниками.

Отзыв сертификата

Случается, что ключ потеряли, или работник уволился. Нужно заменить сертификат или вовсе заблокировать.

В случае замены утери сертификата или если имя не привязано к пользователю — просто перегенириуем его заново с тем же именем (у меня не сработало). Как это сделать описано в разделе ниже.

Для отзыва сертификата добавим его в список отозванных (Капитан Очевидность намекает)

cd /etc/openvpn/easy-rsa/
source ./vars
./revoke-full client220
Вылезает ошибка 23 и в /etc/openvpn/easy-rsa/keys создается файл crl.pem

Переносим его в /etc/openvpn командой
mv «/etc/openvpn/easy-rsa/keys/crl.pem» «/etc/openvpn/crl.pem»
Добавляем в /etc/openvpn/server.conf
Путь до этого файла:
crl-verify /etc/openvpn/crl.pem
Сохраняем и перезагружаем

С этой темной материей нужно быть аккуратным.

Добавление сертификата

Если нужно добавить нового пользователя, как я описывал выше, нужно:

cd /etc/openvpn/easy-rsa/
source ./vars
Игнорируем ошибку
./build-key client518 (укажем пароль JugsdifytuIHi87)
Либо если мы хотим сделать пин код на сертификат и обойтись одним файлом:
./build-key-pkcs12 client518 (укажем пароль JugsdhgjIHi87) и Export Password — пин код. Создастся файл client518.p12 , который можно использовать.
Теперь вместо трех строк с указанием корневого, пользовательского сертификата и ключа, нужно указывать:
pkcs12 client518.p12
Завершаем генерацию:
./build-dh

Мы получим сертификат для нового клиента, либо если мы укажем имя существующего сертификата, то просто его заменим. Старый становится недействительным.

Загадочная вещь, пока с ней не столкнешься, не разберешься.

Сеть в отделениях имеет mtu 1500, OpenVPN mtu жестко не прописан. Windows Server 2008R2 имеет mtu 1500
Чтобы терминальный доступ не показывал черное окно — значение mtu OpenVPN должно быть больше или равно mtu Windows Server.
Найти mtu можно командой: ping нужный_IP -f -l 1472
Уменьшая или увеличивая 1472, находим наибольшее фрагментированное значение и прибавляем 28

Доступ в Интернет

OpenVPN создан для безопасного доступа в сеть. Но чтобы этот доступ заработал — внесем дополнительные правила:
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m state —state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m state —state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.250.10.0/24 -o eth0 -j SNAT —to-source IP_АДРЕС_VDS

А в клиентские Windows настройки OpenVPN добавим строчки:
redirect-gateway def1
dhcp-option DNS 8.8.8.8

Теперь при подключении — интернет проходит через OpenVPN

Чтобы правила не слетали, сохраним их командой:
iptables-save > /etc/iptables_rules
Добавим их в автозагрузку:
nano /etc/rc.local
Перед exit добавим строчку:
/sbin/iptables-restore

В заключении

При написании статьи, все операции я проделывал лично не один десяток раз и могу с уверенностью сказать: если у вас не получается — внимательней следуйте инструкции.

Я смогу ответить только на общие вопросы и сразу предупреждаю: если хотите, чтобы я за вас все настроил — будьте готовы заплатить исходя из объема задачи.

Если данная реализация слишком сложная — можно поднять VPN PPTP сервер по более простой инструкции.

Если вам нужна помощь в настройке микротика — оставьте комментарий на странице

Ссылка на основную публикацию
Adblock
detector