Задача. Попасть во внутреннюю сеть организации извне.
VPN сервер находится за роутером (проброс сделан и работает).
К нему подключаюсь удаленно (допустим через Usb модем).
Сама сеть организации это 192.168.2.х. IP адрес сервера на котором стоит сервер openvpn 192.168.2.20. IP адрес впн сервера при запуске 192.168.10.1
При подключении vpn клиент получает IP адрес 192.168.10.6 (Сам IP клиента 192.168.42.188)
Взаимный пинг между 192.168.10.1 и 192.168.10.6 есть. Но пинга до 192.168.2.20 и до 192.168.43.188 никакого нет.
Маршруты прописываются. Через rout print вижу
Следовательно до компьютеров сети организации 192.168.2.х (или до роутера 192.168.2.1) нет.
Как понимаю в конфиге еще что нужно прописывать ?
Конф сервера
dev tun
proto tcp-server
port 5190
tls-server
server 192.168.10.0 255.255.255.0
client-to-client
comp-lzo
route 192.168.42.0 255.255.255.0 192.168.10.6
push «route 192.168.1.0 255.255.255.0 192.168.10.1»
dh C:\\OpenVPN\\ssl\\dh1024.pem
ca C:\\OpenVPN\\ssl\\ca.crt
cert C:\\OpenVPN\\ssl\\Server.crt
key C:\\OpenVPN\\ssl\\Server.key
tls-auth C:\\OpenVPN\\ssl\\ta.key 0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
keepalive 10 120
status C:\\OpenVPN\\log\\openvupn-status.log
log C:\\OpenVPN\\log\\openvpn.log
verb 3
Конф клиента
client
dev tun
proto tcp
remote х.х.х.х
port 5190
tls-clientpersist-key
persist-tun
ns-cert-type server
ca C:\\OpenVPN\\ssl\\ca.crt
cert C:\\OpenVPN\\ssl\\client.crt
key C:\\OpenVPN\\ssl\\client.key
tls-auth C:\\OpenVPN\\ssl\\ta.key 1
ns-cert-type server
comp-lzo
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
verb 3
ping-restart 60
ping 10
log-append «C:\\OpenVPN\\log\\openvpn.log»
status «C:\\OpenVPN\\log\\status.log»
принт сервера
0.0.0.0 0.0.0.0 192.168.42.129 192.168.42.188
127.0.0.0 255.0.0.0 On-link 127.0.0.1
127.0.0.1 255.255.255.255 On-link 127.0.0.1
127.255.255.255 255.255.255.255 On-link 127.0.0.1
192.168.1.0 255.255.255.0 192.168.10.1 192.168.42.188
192.168.10.0 255.255.255.0 192.168.10.5 192.168.10.6
192.168.10.4 255.255.255.252 On-link 192.168.10.6
192.168.10.6 255.255.255.255 On-link 192.168.10.6
192.168.10.7 255.255.255.255 On-link 192.168.10.6
192.168.42.0 255.255.255.0 On-link 192.168.42.188
192.168.42.188 255.255.255.255 On-link 192.168.42.188
192.168.42.255 255.255.255.255 On-link 192.168.42.188
Принт клиента
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.47 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
192.168.1.0 255.255.255.0 On-link 192.168.1.47 281
192.168.1.47 255.255.255.255 On-link 192.168.1.47 281
192.168.1.255 255.255.255.255 On-link 192.168.1.47 281
192.168.10.0 255.255.255.0 192.168.10.2 192.168.10.1 20
192.168.10.0 255.255.255.252 On-link 192.168.10.1 276
192.168.10.1 255.255.255.255 On-link 192.168.10.1 276
192.168.10.3 255.255.255.255 On-link 192.168.10.1 276
192.168.42.0 255.255.255.0 192.168.10.6 192.168.1.47 26
-
Вопрос задан
-
5678 просмотров
Пригласить эксперта
Нужно NAT настроить на сервере OpenVPN, то есть трансляцию адресов из сети VPN-клиентов в локалку.
Так же можно поднять tap OpenVPN, что бы была одна сеть на уровне L2
ИСПРАВЛЕНО
В конфиге сервера
Удалите строки:
route 192.168.42.0 255.255.255.0 192.168.10.6
push «route 192.168.1.0 255.255.255.0 192.168.10.1»
Добавьте строки:
push «route 192.168.10.0 255.255.255.0»
push «route 192.168.2.0 255.255.255.0»
route 192.168.42.0 255.255.255.0
В настройки клиента (обычно это файл с именем клиента в каталоге ccd, на сервере) добавьте:
iroute 192.168.42.0 255.255.255.0
И да, вижу у вас Windows. На момент проверки тормозните файрвол.
Написал. роуты как просили
в папке C:\\OpenVPN\\config\\ccd создал файл Client.txt
прописал там iroute 192.168.43.0 255.255.255.0
Фаерволы на обоих машинах отключены.
Но результат такой же
Табл. мар сервера
192.168.2.0 255.255.255.0 On-link 192.168.2.20 276
192.168.2.20 255.255.255.255 On-link 192.168.2.20 276
192.168.2.255 255.255.255.255 On-link 192.168.2.20 276
192.168.10.0 255.255.255.0 192.168.10.2 192.168.10.1 30
192.168.10.0 255.255.255.252 On-link 192.168.10.1 286
192.168.10.1 255.255.255.255 On-link 192.168.10.1 286
192.168.10.3 255.255.255.255 On-link 192.168.10.1 286
192.168.43.0 255.255.255.0 192.168.10.2 192.168.10.1 30
клиента
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.2.0 255.255.255.0 192.168.10.5 192.168.10.6 20
192.168.10.0 255.255.255.0 192.168.10.5 192.168.10.6 20
192.168.10.4 255.255.255.252 On-link 192.168.10.6 276
192.168.10.6 255.255.255.255 On-link 192.168.10.6 276
192.168.10.7 255.255.255.255 On-link 192.168.10.6 276
192.168.43.0 255.255.255.0 On-link 192.168.43.138 281
192.168.43.138 255.255.255.255 On-link 192.168.43.138 281
192.168.43.255 255.255.255.255 On-link 192.168.43.138 281
Еще вопрос. С роутера я же должен пинговать сеть openvpn. Маршрут вроде нормальный.
Но ни сервер впн ни клиент не пингуются.
Войдите, чтобы написать ответ
-
Показать ещё
Загружается…
Минуточку внимания
OpenVPN проброс моста или видимость сети за сервером.
☑
0
Event_Now
10.05.18
✎
09:41
Здравствуйте знатоки.
Разбираюсь тут с OpenVPN и возникла проблема с доступом в локальную сеть за сервером с установленным OpenVPN.
Судя по мануалам и той информации, что нашёл в интернете, для меня больше всего подходит подключение типа мост (bridge).
Итак, имеется сервер Windows server 2012 R2, две локальных сети размещённых в разных городах.
Подсеть офиса №1 имеет адресацию 192.168.94.х
Подсеть офиса №2 имеет адресацию 192.168.115.х
Задача, настроить мост между офисами.
Настройки фаерволов и проброс портов, корректны. Классическое соединение с DHCP, через подсеть 10.10.10.x работает без проблем, пакеты и ping до сервера проходят, но сеть за сервером OpenVPN не видна.
Если кто уже настраивал подобную схему, прошу откликнуться.
1
Event_Now
10.05.18
✎
09:58
Вот как я пробую на данный момент.
Конфиг сервера:
proto tcp4-server
port 30000
dev tap
dev-node oVPN
tls-server
tls-auth «C:\\OpenVPN\\easy-rsa\\keys\\ta.key» 0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca «C:\\OpenVPN\\easy-rsa\\keys\\ca.crt»
cert «C:\\OpenVPN\\easy-rsa\\keys\\SrvVPN.crt»
key «C:\\OpenVPN\\easy-rsa\\keys\\SrvVPN.key»
dh «C:\\OpenVPN\\easy-rsa\\keys\\dh4096.pem»
server-bridge 192.168.94.199 255.255.255.0 192.168.94.200 192.168.94.210
client-to-client
keepalive 10 120
cipher AES-128-CBC
comp-lzo
persist-key
persist-tun
client-config-dir «C:\\OpenVPN\\config»
verb 3
route-delay 5
route-method exe
2
Event_Now
10.05.18
✎
10:03
Ну и конфиг клиента:
remote [тут адрес сервера]
client
port 30000
proto tcp4-client
dev tap
tls-client
tls-auth «C:\\Program Files\\OpenVPN\\config\\ta.key» 1
remote-cert-tls server
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca «C:\\Program Files\\OpenVPN\\config\\ca.crt»
cert «C:\\Program Files\\OpenVPN\\config\\ClientVPN.crt»
key «C:\\Program Files\\OpenVPN\\config\\ClientVPN.key»
cipher AES-128-CBC
comp-lzo
persist-key
persist-tun
verb 3
mute 20
3
Event_Now
10.05.18
✎
10:08
А теперь суть проблемы.
Соединение устанавливается, сервер с OpenVPN пингуется, доступ есть. А вот к серверам с другими адресами, как и к любой рабочей станции и/или сетевым устройствам, доступа нет.
Знает кто, как это победить? Ну или выскажите собственные мысли по этому поводу.
4
eRik
10.05.18
✎
10:15
А маршрутизацию кто настраивать будет, Пушкин?
5
Exec
10.05.18
✎
10:16
(0) У меня без моста реализовано.
Мой конфиг серва:
===
port 2033
proto tcp4
dev tun0
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh4096.pem
server 10.192.18.0 255.255.255.0
push «route 10.192.18.0 255.255.255.0»
push «route 192.168.18.0 255.255.255.0»
client-config-dir /etc/openvpn/ccd
auth SHA256
cipher AES-256-CBC
keepalive 30 180
max-clients 30
user root
group wheel
persist-key
persist-tun
mssfix 0
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 3
===
push — отдаст нужные маршруты клиентам.
Если надо каждому клиенту отдельный маршрут, то в файле клиента на сервере указать:
push «route 192.168.1.232 255.255.255.255»
push «route 192.168.1.233 255.255.255.255»
push «route 192.168.3.0 255.255.255.0»
Соответственно, помимо указанных в конфиге сервера подсеток — этому клиенту отдадуться еще три маршрута дополнительно.
А т.к тебе еще надо при установке связи прописать на сервере маршрут к удалённой сети — дописываются еще такие строчки:
iroute «192.168.50.0 255.255.255.0»
iroute «10.10.15.20 255.255.255.255»
После установления соединения с этим клиентом — ему уходят роуты push, и одновременно на сервере появляется маршрут в дальнюю сеть 192.168.50.0/24 и к одиночному серверу за той же удалённой сетью 10.10.15.20/32
6
Event_Now
10.05.18
✎
10:22
(4) — Да, наверно его позову. Не могли бы вы более конкретно описать, где их добавлять, в файл конфигурации сервера?
Вы уж извините, был бы я таким умным как вы, то не стал бы создавать данную тему.
7
Event_Now
10.05.18
✎
10:25
(5) -Спасибо за ответ, сейчас попробую. По результату отпишусь.
p.s. Я так понимаю, у вас OpenVPN на линухе крутится. Забавно, что в сети полно инструкций по линуксу на данную тему, а вот про windows очень мало.
8
Exec
10.05.18
✎
10:28
(7) да, центось. На винде по идее то же самое, только у клиента на win 8 и выше не забывай запускать всё от админа, что клиента, что сервер, иначе не будет доступа для изменения таблицы маршрутизации, а так же на стороне клиента прописать в конфиг дополнительно две строчки:
==
route-method exe
route-delay 2
===
p.s: ну и шлюзование на винде-сервере должно быть включено, чтобы она в качестве роутера выступала
9
arsik
гуру
10.05.18
✎
10:30
(8) В новой версии уже все есть. Отдельная служба запускается, которая рулит маршрутами и прочим. Сейчас админские права для запуска перезапуска ненужны боле.
10
Event_Now
10.05.18
✎
10:37
(9) — Я использую openvpn 2.4.6-I602 (она последняя).
Простите, как видим из моего примера, новая версия «рулит маршрутами» не особо. Ну или я опять пропустил галочку в настройках.
Можете подсказать, где всё это глянуть?
11
arsik
гуру
10.05.18
✎
10:40
(10) Тут разбираться надо. Покажи маршруты на
1) Сервере опенвпн
2) Клиенте опенвпн
3) на компе за сервером
4) На компе за клиентом
12
Event_Now
10.05.18
✎
10:42
(5) — Сервер ругается на iroute, мол нет такой команды. Дальше не стартует.
13
Event_Now
10.05.18
✎
10:47
(11) — Сервер
IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.94.1 192.168.94.7 276
10.10.0.0 255.255.255.0 10.10.0.2 10.10.0.1 21
10.10.0.0 255.255.255.252 On-link 10.10.0.1 276
10.10.0.1 255.255.255.255 On-link 10.10.0.1 276
10.10.0.3 255.255.255.255 On-link 10.10.0.1 276
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
192.168.94.0 255.255.255.0 On-link 192.168.94.7 276
192.168.94.7 255.255.255.255 On-link 192.168.94.7 276
192.168.94.255 255.255.255.255 On-link 192.168.94.7 276
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.10.0.1 276
224.0.0.0 240.0.0.0 On-link 192.168.94.7 276
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.10.0.1 276
255.255.255.255 255.255.255.255 On-link 192.168.94.7 276
14
Event_Now
10.05.18
✎
10:50
(11) — Клиент (внешний ПК)
IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.1.14 192.168.1.52 35
0.0.0.0 0.0.0.0 25.0.0.1 e 9256
10.10.0.0 255.255.255.0 10.10.0.5 10.10.0.6 291
10.10.0.4 255.255.255.252 On-link 10.10.0.6 291
10.10.0.6 255.255.255.255 On-link 10.10.0.6 291
10.10.0.7 255.255.255.255 On-link 10.10.0.6 291
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
192.168.94.0 255.255.255.0 10.10.0.5 10.10.0.6 291
192.168.1.0 255.255.255.0 On-link 192.168.1.52 291
192.168.1.52 255.255.255.255 On-link 192.168.1.52 291
192.168.1.255 255.255.255.255 On-link 192.168.1.52 291
192.168.56.0 255.255.255.0 On-link 192.168.56.1 281
192.168.56.1 255.255.255.255 On-link 192.168.56.1 281
192.168.56.255 255.255.255.255 On-link 192.168.56.1 281
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 192.168.56.1 281
224.0.0.0 240.0.0.0 On-link 192.168.1.52 291
224.0.0.0 240.0.0.0 On-link e 9256
224.0.0.0 240.0.0.0 On-link 10.10.0.6 291
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 192.168.56.1 281
255.255.255.255 255.255.255.255 On-link 192.168.1.52 291
255.255.255.255 255.255.255.255 On-link e 9256
255.255.255.255 255.255.255.255 On-link 10.10.0.6 291
15
arsik
гуру
10.05.18
✎
10:51
Самое простое — на сервере включить маршрутизацию и включить NAT из опенвпн интерфейса во внутреннюю сеть.
16
Event_Now
10.05.18
✎
10:52
(15) — И потом на всех машинах прописывать шлюзом этот сервер. Не, не вариант.
17
Event_Now
10.05.18
✎
10:53
(11) — Судя по строке (192.168.94.0 255.255.255.0 10.10.0.5 10.10.0.6 291 ) Маршрут приходит.
18
arsik
гуру
10.05.18
✎
10:54
(16) Как раз нет. НАТ же. Все пакеты во внутреннюю сеть пойдут как бы от сервера.
19
Event_Now
10.05.18
✎
10:59
(18) — Ладно, попробуем данную зверушку. Сразу вопрос, как реализовать?
p.s. Судя по FAQ Community Software, проблема в том, что не происходит маршрутизация между виртуальным и физическим интерфейсами в локальную сеть.
Текст:
The clients will negotiate a DHCP lease through the tunnel, meaning that both VPN clients and local machines will receive their IP addresses from the DHCP server address pool. The one complexity about this configuration is that you need to modify your DHCP server configuration to differentiate between local clients and VPN clients. The reason for this is that you must not pass out a default gateway to VPN clients. See the Win32 install notes for an example.
20
eRik
10.05.18
✎
11:06
Судя по таблице маршрутов, ни сервер, ни клиент openvpn не являются шлюзами в своих сетях. А значит нужно на шлюзах дописать вручную маршруты в чужую сеть на свой узел openvpn.
Или да, придется делать НАТ.
21
Event_Now
10.05.18
✎
11:26
(20) — Так, ну давай сперва попробуем NAP, а потом уже пущу в ход «тяжелую артиллерию». (полезу прописывать маршруты на шлюзе)
Сразу вопрос, как развернуть NAP в OpenVPN?
22
Event_Now
10.05.18
✎
11:28
(20)- Очипятолся два раза. (NAP = NAT)
23
Exec
10.05.18
✎
11:34
Штатно — средствами винды (rras в win-server)
Так же можно попробовать обычным расшариванием сетевого подключения, но не уверен что сработает
24
arsik
гуру
10.05.18
✎
11:35
Если есть доступ к маршрутизатору, то проще тогда маршруты на нем добавить.
25
eRik
10.05.18
✎
11:45
(21) Как раз таки НАТ и является тяжелой артиллерией. Проще маршрут на шлюзе дописать, ну или на рандомных клиентах (если их немного и трогать настройки шлюза нет возможности), которым нужен доступ в чужую подсеть.
26
eRik
10.05.18
✎
11:54
Хотя, что-то я погорячился с НАТом — он тут вообще не при делах. Ибо исходящие запросы с рандомного компа в чужую сеть все-равно будут уходить на шлюз, и НАТ тут не поможет. Разве что в другую сторону, но там и без него все нормально будет.
В общем, добавлять маршрут на шлюз или на каждый комп, которых будет работать с чужой сетью.
27
Event_Now
10.05.18
✎
12:07
(22) — Спасибо за рекомендацию.
28
Event_Now
10.05.18
✎
12:12
(26) — Вот и я подумал, причём тут NAT? Ладно, проверю сейчас, светится ли адрес сервака на шлюзе и куда пакеты направляются, а там дальше будет видно.
Вообще, идея с DHCP на OpenVPN и пробросом маршрутов только для нужных адресов, мне импонирует больше, т.к. она более гибкая и подконтрольная. Жаль, что нет особо времени разобраться, т.к. сроки горят. (нужно вчера, как обычно)
Спасибо за наводку (на пиво), пойду прописывать маршруты.
По завершению, отпишусь о результатах.
29
Сияющий в темноте
10.05.18
✎
13:50
С клиента,когда пакет идет в чужую сеть,то выбирается адаптер с меньшей метрикой,то есть ли на клиента добавлять маршрут,который можно брать с dhcp сервера,или все пакеты пойдут в шлюз по умолчанию,и ловить их там
30
Провинциальный 1сник
10.05.18
✎
13:53
Я не понимаю логику ТС. Нужен мост, а подсети разные. Нафига тогда козе баян? Мост на то и мост, что это по сути объединение двух локалок патч-кордом.
31
Event_Now
11.05.18
✎
10:24
(29) — Маршруты идут в любом случае через шлюз, VPN сервер им и является. По логике, маршрутизацию должен сам VPN сервер раздавать клиентам и пускать их только туда, куда им разрешено. (Но это в идеале)
Я с OpenVPN не работал до данного момента, пользовался Kerio VPN, но он платный. А контора, что запросила создать им VPN мост, за софт платить не хочет. Вот и пытаюсь слепить из того, что имеется в наличии.
32
Event_Now
11.05.18
✎
10:26
(30) — С вашей логикой, я вижу лучше не спорить. )))))))) *facepalm*
33
Event_Now
11.05.18
✎
11:27
Итак.
Решение задачи.
—
Конфиг сервера:
proto tcp4-server
port 30000
dev tun
tls-server
tls-auth «C:\\OpenVPN\\easy-rsa\\keys\\ta.key» 0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca «C:\\OpenVPN\\easy-rsa\\keys\\ca.crt»
cert «C:\\OpenVPN\\easy-rsa\\keys\\SrvVPN.crt»
key «C:\\OpenVPN\\easy-rsa\\keys\\SrvVPN.key»
dh «C:\\OpenVPN\\easy-rsa\\keys\\dh4096.pem»
server 10.10.0.0 255.255.255.0
push «route 10.10.0.0 255.255.255.0»
push «route 192.168.94.0 255.255.255.0»
client-to-client
keepalive 10 120
cipher AES-128-CBC
comp-lzo
persist-key
persist-tun
client-config-dir «C:\\OpenVPN\\config»
verb 3
route-delay 5
route-method exe
—
Конфиг клиента:
remote [тут адрес сервера]
client
port 30000
proto tcp4-client
dev tun
tls-client
tls-auth «C:\\Program Files\\OpenVPN\\config\\ta.key» 1
remote-cert-tls server
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca «C:\\Program Files\\OpenVPN\\config\\ca.crt»
cert «C:\\Program Files\\OpenVPN\\config\\ClientVPN.crt»
key «C:\\Program Files\\OpenVPN\\config\\ClientVPN.key»
cipher AES-128-CBC
comp-lzo
persist-key
persist-tun
verb 3
mute 20
route-delay 5
route-method exe
После этого, заходим в свойства физического адаптера и на закладке «Доступ», ставим галочку напротив «Разрешить другим поль…», а в списке «Подключение домашней сети», выбираем наш виртуальный адаптер OpenVPN.
—
Вот собственно и всё.
p.s. Всем спасибо за участие, всех вам благ и быстрых решений ваших задач.
Тема закрыта.
34
arsik
гуру
11.05.18
✎
11:31
Короче ты все таки НАТ сделал. Ну хозяин барин.
35
Event_Now
11.05.18
✎
11:35
(34) — Тут у меня пара человек постоянно мотаются по разным офисам и хз какие там адреса у сеток. Дабы исключить проблему с адресацией, я сам с собой посовещался и принял решение об использовании NAT конфигурации.
36
arsik
гуру
11.05.18
✎
11:56
(35) А при чем тут какая сетка за клиентом? У тебя же трафик будет идти от виртуального интерфейса опенвпн (10.10.0.0 255.255.255.0)
37
arsik
гуру
11.05.18
✎
11:57
+ (36) Тебе в офисе на основном маршрутизаторе нужно было добавить маршрут 10.10.0.0 255.255.255.0 до сервера опенвпн и все.
38
Йохохо
11.05.18
✎
12:00
(35) чтобы такое исключить надо выбрать хитрую подсеть, а не натить, 172.29.251.0 рекомендую
39
Event_Now
11.05.18
✎
12:10
(37) + (38) — Ребята, спасибо за комментарии, но давайте не будем плодить их, т.к. когда появится человек с подобным вопросом как у меня, то ему будет сложно найти решение задачи и придётся опять поднимать текущую тему.
40
Йохохо
11.05.18
✎
12:11
(39) НАТ не поможет при совпадении подсетей, так норм?
41
arsik
гуру
11.05.18
✎
12:13
(40) Маршрутизация тоже не поможет. Только NETMAP — но как на винде нетмап сделать это большой вопрос.
42
Йохохо
11.05.18
✎
12:14
(41) да пока непонятно какой вопрос у ТС остался) нат лучше тем, что порты клиента останутся закрыты, для домашних ноутов это +
43
Провинциальный 1сник
12.05.18
✎
19:30
(33) «dev tun » и мост как-то слабо сочетаются в итоге.
OpenVPN – это набор open source программ, который заслуженно является одним из самых популярных и легких решений для реализации защищенной VPN сети. OpenVPN позволяет объединить в единую сеть сервер и клиентов (даже находящиеся за NAT или файерволами), или объединить сети удаленных офисов. Серверную часть OpenVPN можно развернуть практически на всех доступных операционных системах (пример настройки OpenVPN на Linux). Вы можете установить OpenVPN сервер даже на обычный компьютер с десктопной редакцией Windows 10.
В этой статье, мы покажем, как установить OpenVPN сервер на компьютер с Windows 10, настроить OpenVPN клиент на другом Windows хосте и установить защищенное VPN подключение.
Содержание:
- Установка службы OpenVPN сервера в Windows
- Создаем ключи шифрования и сертификаты для OpenVPN
- Конфигурационный файл OpenVPN сервера в Windows
- Настройка OpenVPN клиента в Windows
Установка службы OpenVPN сервера в Windows
Скачайте MSI установщик OpenVPN для вашей версии Windows с официального сайта (https://openvpn.net/community-downloads/). В нашем случае это OpenVPN-2.5.5-I602-amd64.msi (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.5-I602-amd64.msi).
Запустите установку.
Если вы планируете, OpenVPN сервер работал в автоматическом режиме, можно не устанавливать OpenVPN GUI. Обязательно установите OpenVPN Services.
Начиная с версии OpenVPN 2.5, поддерживается драйвер WinTun от разработчиков WireGuard. Считается, что этот драйвер работает быстрее чем классический OpenVPN драйвер TAP. Установите драйвер Wintun, откажитесь от установки TAP-Windows6.
Установите OpenSSL утилиту EasyRSA Certificate Management Scripts.
Запустите установку.
По умолчанию OpenVPN устаналивается в каталог C:\Program Files\OpenVPN.
После окончания установки появится новый сетевой адаптер типа Wintun Userspace Tunnel. Этот адаптер отключен, если служба OpenVPN не запущена.
Создаем ключи шифрования и сертификаты для OpenVPN
OpenVPN основан на шифровании OpenSSL. Это означает, что для обмена трафиком между клиентом и серверов VPN нужно сгенерировать ключи и сертификаты с использованием RSA3.
Откройте командную строку и перейдите в каталог easy-rsa:
cd C:\Program Files\OpenVPN\easy-rsa
Создайте копию файла:
copy vars.example vars
Откройте файл vars с помощью любого текстового редактора. Проверьте пути к рабочим директориям.
Обязательно поправьте переменную EASYRSA_TEMP_DIR следующим образом:
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"
Можете заполнить поля для сертификатов (опционально)
set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MSK" set_var EASYRSA_REQ_CITY "MSK" set_var EASYRSA_REQ_ORG "IT-Company" set_var EASYRSA_REQ_EMAIL " [email protected] " set_var EASYRSA_REQ_OU " IT department "
Срок действия сертификатов задается с помощью:
#set_var EASYRSA_CA_EXPIRE 3650 #set_var EASYRSA_CERT_EXPIRE 825
Сохраните файл и выполните команду:
EasyRSA-Start.bat
Следующие команды выполняются в среде EasyRSA Shell:
Инициализация PKI:
./easyrsa init-pki
Должна появится надпись:
init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki
Теперь нужно сгенерировать корневой CA:
./easyrsa build-ca
Задайте дважды пароль для CA:
CA creation complete and you may now import and sign cert requests.
Данная команда сформировала:
- Корневой сертификат центра сертификации: «C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt»
- Ключ центра сертификации «C:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key»
Теперь нужно сгенерировать запрос сертификата и ключ для вашего сервера OpenVPN:
./easyrsa gen-req server nopass
Утилита сгенерирует два файла:
req: C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.req key: C:/Program Files/OpenVPN/easy-rsa/pki/private/server.key
Подпишем запрос на выпуск сертификата сервера с помощью нашего CA:
./easyrsa sign-req server server
Подтвердите правильность данных, набрав yes.
Затем введите пароль CA от корневого CA.
В каталоге issued появится сертификат сервера («C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt»)
Теперь можно создать ключи Диффи-Хеллмана (займет длительное время):
./easyrsa gen-dh
Для дополнительной защиты VPN сервера желательно включить tls-auth. Данная технология позволяет использовать подписи HMAC к handshake-пакетам SSL/TLS, инициируя дополнительную проверку целостности. Пакеты без такой подписи будут отбрасываться VPN сервером. Это защитит вас от сканирования порта VPN сервера, DoS атак, переполнения буфера SSL/TLS.
Сгенерируйте ключ tls-auth:
cd C:\Program Files\OpenVPN\bin
openvpn --genkey secret ta.key
Должен появиться файл «C:\Program Files\OpenVPN\bin\ta.key». Переместите его в каталог C:\Program Files\OpenVPN\easy-rsa\pki
Теперь можно сформировать ключи для клиентов OpenVPN. Для каждого клиента, который будет подключаться к вашему серверу нужно создать собственные ключи.
Есть несколько способов генерации ключей и передачи их клиентам. В следующем примере, мы создадим на сервере ключ клиента и защитим его паролем:
./easyrsa gen-req kbuldogov
./easyrsa sign-req client kbuldogov
Данный ключ («C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov.key») нужно передать клиенту и сообщить пароль. Клиент может снять защиту паролем для ключа:
openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov_use.key"
Если вы хотите сгенерировать ключ, не защищенный паролем, нужно выполнить команду:
./easyrsa gen-req имяклиента nopass
На сервере с OpenVPN вы можете создать неограниченное количество ключей и сертификатов для пользователей. Аналогичным образом сформируйте ключи и сертфикаты для других клиентов.
Вы можете отохвать скомпрометированные сертификаты клиентов:
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa revoke kbuldogov
Итак, мы сгенерировали набор ключей и сертификатов для OpenVPN сервера. Теперь можно настроить и запустить службу OpenVPN.
Конфигурационный файл OpenVPN сервера в Windows
Скопируйте типовой конфигурационный файл OpenVPN сервера:
copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"
Откройте файл server.ovpn в любом текстовом редакторе и внесите свои настройки. Я использую следующий конфиг для OpenVPN:
# Указываем порт, протокол и устройство port 1194 proto udp dev tun # Указываем пути к сертификатам сервера ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt" cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt" key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key" dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem" # Указываем настройки IP сети, адреса из которой будет будут получать VPN клиенты server 10.24.1.0 255.255.255.0 #если нужно разрешить клиентам подключаться под одним ключом, нужвно включить опцию duplicate-cn (не рекомендуется) #duplicate-cn # TLS защита tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0 cipher AES-256-GCM # Другая параметры keepalive 20 60 persist-key persist-tun status "C:\\Program Files\\OpenVPN\\log\\status.log" log "C:\\Program Files\\OpenVPN\\log\\openvpn.log" verb 3 mute 20 windows-driver wintun
Сохраните файл.
OpenVPN позволяет использовать как TCP, так и UDP для подключения. В этом примере я запустил OpenVPN на 1194 UDP. Рекомендуется использовать протокол UDP, это оптимально как с точки зрения производительности, так и безопасности.
Не забудьте открыть на файерволе порты для указанного вами порта OpenVPN на клиенте и на сервере. Можно открыть порты в Windows Defender с помощью PowerShell.
Правило для сервера:
New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP –LocalPort 1194 -Action Allow
Правило для клиента:
New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP –LocalPort 1194 -Action Allow
Теперь нужно запустить службу OpenVPN и изменить тип ее запуска на автоматический. Воспользуйтесь таким командами PowerShell, чтобы включить службу:
Set-Service OpenVPNService –startuptype automatic –passthru
Get-Service OpenVPNService| Start-Service
Откройте панель управления, и убедитесь, что виртуальный сетевой адаптер OpenVPN Wintun теперь активен. Если нет, смотрите лог «C:\Program Files\OpenVPN\log\server.log»
Если при запуске OpenVPN вы видите в логе ошибку:
Options error: In C:\Program Files\OpenVPN\config-auto\server.ovpn:1: Maximum option line length (256) exceeded, line starts with..
Смените в файле server.ovpn символы переноса строки на Windows CRLF (в notepad++ нужно выбрать Edit -> EOL Conversion -> Windows CR LF). Сохраните файл, перезапустите службу OpevVPNService.
Данный конфиг позволит удаленным клиентам получить доступ только к серверу, но другие компьютеры и сервисы в локальной сети сервера для них недоступны. Чтобы разрешить клиентам OpenVPN получить доступ к внутренней сети нужно:
Включить опцию IPEnableRouter в реестре (включает IP маршрутизацию в Windows, в том числе включает маршрутизацию меду сетями Hyper-V): reg add «HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» /v IPEnableRouter /t REG_DWORD /d 1 /f
Добавьте в конфгурационный файл сервера OpenVPN маршруты до внутренней IP сети:
push "route 10.24.1.0 255.255.255.0" push "route 192.168.100.0 255.255.255.0"
Если нужно, назначьте клиенту адреса DNS серверов:
push "dhcp-option DNS 192.168.100.11" push "dhcp-option DNS 192.168.100.12"
Если нужно завернуть все запросы клиента (в том числе Интернет трафик) на ваш OpenVPN сервер, добавьте опцию:
push "redirect-gateway def1"
Настройка OpenVPN клиента в Windows
Создайте на сервере шаблонный конфигурационный файла для клиента VPN (на базе iшаблона client.ovpn) со следующими параметрами (имя файла kbuldovov.ovpn)
client dev tun proto udp remote your_vpn_server_address 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert kbuldogov.crt key kbuldogov.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-GCM connect-retry-max 25 verb 3
В директиве remote указывается публичный IP адрес или DNS имя вашего сервера OpenVPN.
Скачайте и установите клиент OpenVPN Connect для Windows (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi).
Теперь на компьютер с клиентом OpenVPN нужно с сервера скопировать файлы:
- ca.crt
- kbuldogov.crt
- kbuldogov.key
- dh.pem
- ta.key
- kbuldogov.ovpn
Теперь импортируйте файл с профилем *.ovpn и попробуйте подключиться к вашему VPN серверу.
Если все настроено правильно, появится такая картинка.
Проверьте теперь лог OpenVPN на клиенте «C:\Program Files\OpenVPN Connect\agent.log»
Mon Dec 27 08:09:30 2021 proxy_auto_config_url Mon Dec 27 08:09:31 2021 TUN SETUP TAP ADAPTERS: guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name='Local Area Connection' Open TAP device "Local Area Connection" PATH="\\.\Global\{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED TAP-Windows Driver Version 9.24 ActionDeleteAllRoutesOnInterface iface_index=22 netsh interface ip set interface 22 metric=1 Ok. netsh interface ip set address 22 static 10.24.1.6 255.255.255.252 gateway=10.24.1.5 store=active IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1
Клиент успешно подключится к OpenVPN серверу и получил IP адрес 10.24.1.6.
Проверьте теперь лог на сервере («C:\Program Files\OpenVPN\log\openvpn.log»). Здесь также видно, что клиент с сертификатом kbuldogov успешно подключится к вашему серверу.
2021-12-27 08:09:35 192.168.13.202:55648 [kbuldogov] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.202:55648 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI_sva: pool returned IPv4=10.24.1.6, IPv6=(Not enabled) 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: Learn: 10.24.1.6 -> kbuldogov/192.168.13.202:55648 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: primary virtual IP for kbuldogov/192.168.13.202:55648: 10.24.1.6
Доброго времени уважаемые.
Столкнулся вот с такой траблой… (тем про «клиенты не видят сеть за OpenVPN сервером» вагон, но для конкретного случая не совсем все подходит).
Итак конфиги и вопросы (IPEnableRouter на стороне сервера OpenVPN (Windows2008R2) включен):
Компьютер1 (сервер):
а) LAN интерфейс — сетевая плата: 192.168.0.240/24, gw/dns: 192.168.0.200
б) Сервер OpenVPN tap (в итоге получает адрес 10.0.0.1) надеюсь что шлюзуется??? по дефолту в системе: 0.0.0.0 маска 0.0.0.0 через основной шлюз 192.168.0.200
Компьютер2 (клиент):
а) Роутер 192.168.10.50 с настройками сети провайдера (файрвол allow насквозь!!!)
б) MacOS сетевая плата: 192.168.10.1/24, gw/dns: 192.168.10.50
в) Сеть tap интерфейса (насколько понимаю): 10.0.0.10 (назначенный), что касается маршрутизации по умолчанию на 192.168.10.50 с этого tap я НЕ ЗНАЮ ЕСТЬ ИЛИ НЕТ???
server.ovpv:
Код: Выделить всё
dev tap
dev-node "OpenVPN Adapter"
proto udp
port 24000
tls-server
server 10.0.0.0 255.255.255.0
comp-lzo
route-method exe
push "route 192.168.0.0 255.255.255.0"
push "route-gateway 10.0.0.1"
push "dhcp-option DNS 10.0.0.1"
push "dhcp-option DNS 192.168.0.200"
route 192.168.10.0 255.255.255.0 10.0.0.1
# route-gateway 192.168.0.200
client-to-client
client-config-dir D:\\OpenVPN\\config\\ccd
ifconfig-pool-persist D:\\OpenVPN\\config\\ccd\\ipp.txt
dh dh1024.pem
ca ca.crt
cert server.crt
key server.key
#persist-key
tls-auth ta.key 0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
keepalive 10 120
status status.log
log openvpn.log
verb 3
файл ipp.txt:
файлы client1 и client2:
Код: Выделить всё
push "route 192.168.0.0 255.255.255.0"
push "route-gateway 10.0.0.1"
iroute 192.168.10.0 255.255.255.0
push "dhcp-option DNS 10.0.0.1"
push "dhcp-option DNS 192.168.0.253"
client.ovpn (1й клиент ИСПОЛЬЗУЕТСЯ НА MAC OS):
Код: Выделить всё
dev tap
proto tcp
remote site.com 42000
route-delay 3
client
tls-client
ns-cert-type server
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
comp-lzo
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ping-restart 120
ping 20
verb 3
ВОПРОСЫ:
ЗАДАЧА ВИДЕТЬ СЕТЬ 192.168.0.0 (WINDOWS) за сервером OpenVPN 10.0.0.1 (WINDOWS) из сети 192.168.10.0 (MAC OS)
1. Правильно ли указаны route и push нет ли лишних параметров в конфиге СЕРВЕРА?
2. Что то нужно дополнительно прописать в конфиг клиентов или что то убрать оттуда?
3. Что и как нужно прописать в маршруты на компьютеры за сервером OpenVPN сети 192.168.0.0 или это не нужно и маршрут сервера OpenVPN сам все сделает?
4. Что нужно прописать в iptables самого клиента MacOS??? Возможно команда push «route» не проходит на стороне MacOS???
5. Нужна ли дополнительная настройка: # route-gateway 192.168.0.200 под правилом: route 192.168.10.0 255.255.255.0 10.0.0.1
если в самом правиое задается шлюзоваться через 10.0.0.1 ??? Может OpenVPN не врубается???
И ЕЩЕ: В данном маршруте сеть 192.168.10.0 должна быть видна из под 10.0.0.1 нужно ли дополнительно указывать серверу OpenVPN чтобы он ходил через шлюз в локальной сети??? Или это сделает шлюз по умолчанию в настройках интерфейса LAN???
Факт в том, что все танцы с бубном НЕ ДАЮТ РЕЗУЛЬТАТА и сеть из 192.168.10.0 не пингует 192.168.0.0 за сервером OpenVPN!!! Перечитал КУЧУ статей в Интернете!!!
ПРОШУ ПоМоЩи, пожалуйста???
Здравствуйте, уважаемые гуру! Сеовсем я запутался в настройках и уже бьюсь не первый день с openvpn.
Схема такая: opevpn сервер (192.168.50.0), ae0 (192.168.0.90)-роутер длинк(192.168.0.1)(внешний ип)- удаленный клиент (через кучу разных сетей) получает ип 192.168.50.10
конфиг сервера
Код: Выделить всё
port 8303
proto udp
dev tun0
ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key
dh /usr/local/etc/openvpn/keys/dh1024.pem
#crl-verify /usr/local/etc/openvpn/crl.pem
server 192.168.50.0 255.255.255.0
push "dhcp-option DNS 192.168.0.1"
push "dhcp-option DNS 192.168.0.90"
push "dhcp-option WINS 192.168.0.1"
push "route 192.168.0.0 255.255.255.0"
push "route 192.168.50.0 255.255.255.252"
#push "route 192.168.51.0 255.255.255.0"
client-config-dir ccd
route 192.168.50.0 255.255.255.0
route 192.168.0.0 255.255.255.0
push "redirect-gateway def1"
client-to-client
tls-server
tls-auth keys/ta.key 0
tls-timeout 120
auth SHA1
cipher BF-CBC
keepalive 10 120
comp-lzo
max-clients 100
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 3
Код: Выделить всё
sysctl -a net.inet.ip.forwarding
net.inet.ip.forwarding: 1
ccd
Код: Выделить всё
ifconfig-push 192.168.50.10 192.168.50.9
iroute 192.168.51.0
push "route 192.168.0.0 255.255.255.0
Что происходит: клиент коннектится нормально, получает адрес из ccd прописывает дефолтный маршрут на впн сервер.
пинги
192.168.0.90 пингуется (внешняя карта сервера см.выше)
192.168.50.1 тоже пингуется. шары всякие видны, но
192.168.0.1 — не пингуется хоть тресни и соотвественно дальше вся локалка тоже.
по трассировке видно такое (пишу по памяти потому как гладиолус дома) от клиента:
1. хоп 192.168.50.1
2. хоп 192.168.0.1
3. * * * * * * * * * * * *
и всё на этом заканчивается.
так же пробовал поднять НАТ на pf
Код: Выделить всё
# TUN (Виртуальный интерфейс OpenVPN 10.10.100.1)
ext_if_ovpn="tun0"
# Виртуальная подсеть OpenVPN
vpnhost_table="{192.168.50.0/24}"
# Подсети Филиалов
filials_subnet="{192.168.0.0/24}"
# Для того что бы из подсети могли ходить друг на друга
nat pass on $ext_if_ovpn from $vpnhost_table to $filials_subnet -> ($ext_if_ovpn)
тоже не помогло. возможно конфиг не правильный но было много попыток сделать верный и все равно не заработал.
Есть еще один казус: после коннекта, клиент пингует всё, что хочет внутри впн локалки 192.168.50.0, нно вот сервер клиента пингануть никак не может. Клиент под windows 7.
опять же пробовал писать в ccd разные маршруты в iroute но толку от этого не прибавилось. кручу опенвпн первый раз и прям встрял с этой проблемой…
обгуглил всю гуглю, вижу я такой не единственный, но пути решения других людей мне не помогают
Прошу помощи у населения этого форума всея сети.
Заранее благодарен за любой намек в правильную сторону потому как перерыл кучу маршрутов и не один не помогает
вижу чо проблема в маршрутизации, но где именно не врублюсь….