OpenVPN - объединить сети (пинг только в одну сторону)

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

Модератор: SLEDopit

Ответить
perpetual.student
Сообщения: 13

OpenVPN - объединить сети

Сообщение perpetual.student »

Здравствуйте!

Изучаю OpenVPN
Собрал такой "стенд" в VirtualBox:
сервер 1:
OS: Debian 9
hostname: srv1srv
внешний интерфейс: название - isp, IP 10.0.0.49/24 gw 10.0.0.2
внутренний интерфейс: название - lan, IP 192.168.1.1/24
роль: OpenVPN-сервер, 192.168.3.0/24
сервер 2:
OS: Debian 9
hostname: srv2client
внешний интерфейс: название - isp, IP 10.0.0.50/24 gw 10.0.0.2
внутренний интерфейс: название - lan, IP 192.168.2.1/24
роль: OpenVPN-клиент

Конфигурационные файлы сервера
server.conf
Spoiler
local 10.0.0.49
port 1194
#proto udp
proto tcp
dev tun
ca /etc/openvpn/certs/keys/ca.crt
cert /etc/openvpn/certs/keys/server.crt
key /etc/openvpn/certs/keys/server.key
dh /etc/openvpn/dh4096.pem
tls-auth /etc/openvpn/certs/keys/ta.key 0
topology subnet
server 192.168.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0" # отправить сеть сервера
route 192.168.2.0 255.255.255.0 # сеть клиента1
client-config-dir /etc/openvpn/ccd
client-to-client
keepalive 10 120
cipher AES-256-CBC
user openvpn
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
verb 3
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
mode server
tls-server

ccd/srv2client1
Spoiler
ifconfig-push 192.168.3.2/24
iroute 192.168.2.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"

Конфигурационные файлы клиента:
Spoiler
pull
client
tls-client
dev tun
#proto udp
proto tcp
remote 10.0.0.49 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/srv2client1.crt
key /etc/openvpn/certs/srv2client1.key
remote-cert-tls server
tls-auth /etc/openvpn/certs/ta.key 1
cipher AES-256-CBC
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
verb 3


в сети каждого есть второй ПК, 192.168.1.2 и 192.168.2.2
Суть проблемы: не могу из сети 192.168.2.0/24 пропинговать сеть за сервером, сам сервер пигнуется

Код: Выделить всё

root@srv2client:~# ping 192.168.1.1 -c 1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.507 ms

--- 192.168.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.507/0.507/0.507/0.000 ms
root@srv2client:~# ping 192.168.1.2 -c 1
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
^C
--- 192.168.1.2 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms


сеть клиента пингуется номрально

Код: Выделить всё

root@srv1srv:~# ping 192.168.2.2 -c1
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=63 time=0.691 ms

--- 192.168.2.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.691/0.691/0.691/0.000 ms
root@srv1srv:~# ping 192.168.2.1 -c1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=0.359 ms

--- 192.168.2.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.359/0.359/0.359/0.000 ms


Код: Выделить всё

root@srv1srv:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 isp
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 isp
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 lan
192.168.2.0     192.168.3.2     255.255.255.0   UG    0      0        0 tun0
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 tun0


Код: Выделить всё

root@srv2client:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 isp
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 isp
192.168.1.0     192.168.3.1     255.255.255.0   UG    0      0        0 tun0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 lan
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 tun0

Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: OpenVPN - объединить сети

Сообщение s.xbatob »

а остальные хосты в 192.168.1 нужный маршрут знают?
Спасибо сказали:
perpetual.student
Сообщения: 13

Re: OpenVPN - объединить сети

Сообщение perpetual.student »

s.xbatob писал(а):
21.07.2017 11:38
а остальные хосты в 192.168.1 нужный маршрут знают?

знают. 192,168,1,2 прекрасно видит 192,168,2,1 и 192,168,2,2

Код: Выделить всё

PS C:\> ping 192.168.2.2 -n 2

Обмен пакетами с 192.168.2.2 по с 32 байтами данных:
Ответ от 192.168.2.2: число байт=32 время<1мс TTL=62
Ответ от 192.168.2.2: число байт=32 время<1мс TTL=62

Статистика Ping для 192.168.2.2:
    Пакетов: отправлено = 2, получено = 2, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек
PS C:\> tracert ping 192.168.2.2
Не удается разрешить системное имя узла ping.
PS C:\> tracert 192.168.2.2

Трассировка маршрута к 192.168.2.2 с максимальным числом прыжков 30

  1    <1 мс    <1 мс    <1 мс  192.168.1.1
  2    <1 мс    <1 мс    <1 мс  192.168.3.2
  3    <1 мс    <1 мс    <1 мс  192.168.2.2

Трассировка завершена.


да и по крупному счёт, обе дебиан - это клоны. разница в настройках: мак адреса сетевых, хостнейм и то что касается опенвпн, потому и непонятно, почему за клиентом видна сеть, а за сервером - нет
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: OpenVPN - объединить сети

Сообщение nerve »

ip forwarding включен?
Спасибо сказали:
perpetual.student
Сообщения: 13

Re: OpenVPN - объединить сети

Сообщение perpetual.student »

nerve писал(а):
21.07.2017 12:34
ip forwarding включен?

да

Код: Выделить всё

root@srv1srv:~# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
root@srv2client:~# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: OpenVPN - объединить сети

Сообщение s.xbatob »

А про адреса туннеля (я так понял, про сеть 192.168.3)? Вы пингуете с srv1srv, значит адресом источника будет локальный адрес туннеля.
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: OpenVPN - объединить сети

Сообщение nerve »

192.168.1.1 прописан шлюзом на 192.168.1.2?
на 192.168.1.2 нет фаервола?
Спасибо сказали:
perpetual.student
Сообщения: 13

Re: OpenVPN - объединить сети

Сообщение perpetual.student »

s.xbatob писал(а):
21.07.2017 14:02
А про адреса туннеля (я так понял, про сеть 192.168.3)? Вы пингуете с srv1srv, значит адресом источника будет локальный адрес туннеля.

пинг с:
srv1srv (ip192.168.1.1) любого адреса за клиентом1 (192.168.2.1, 192.168.2.2) - проходит
∟win10 (ip192.168.1.2) любого адреса за клиентом1 (192.168.2.1, 192.168.2.2) - проходит
srv2client (ip192.168.2.1) на адрес 192.168.1.1 - проходит, 192.168.1.2 - не проходит
∟win7 (ip192.168.2.2) на адрес 192.168.1.1 - проходит, 192.168.1.2 - не проходит
добавил ещё одну сеть
srv3client2 (ip192.168.4.1) на адрес 192.168.1.1 - проходит, 192.168.1.2 - не проходит, но при этом отлично пингуется сеть srv2client (192.168.2.0/24)
∟winXP (ip192.168.4.2) на адрес 192.168.1.1 - проходит, 192.168.1.2 - не проходит, ^^^^^^^^^

nerve писал(а):
21.07.2017 15:12
192.168.1.1 прописан шлюзом на 192.168.1.2?

да
nerve писал(а):
21.07.2017 15:12
на 192.168.1.2 нет фаервола?

нет

вот ведь зоопарк в вируталбоксе развёл )))
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: OpenVPN - объединить сети

Сообщение s.xbatob »

perpetual.studen... Ещё раз: в таблице маршрутизации на 192.168.1.2 куда указывает маршрут в сеть 192.168.3.0/24?
Должен на 192.168.1.1
Спасибо сказали:
perpetual.student
Сообщения: 13

Re: OpenVPN - объединить сети

Сообщение perpetual.student »

s.xbatob писал(а):
21.07.2017 17:28
perpetual.studen... Ещё раз: в таблице маршрутизации на 192.168.1.2 куда указывает маршрут в сеть 192.168.3.0/24?
Должен на 192.168.1.1

в таблице маршрутизации на 192.168.1.2 нет упоминай о 192.168.3.0/24. а значит пойдёт на шлюз 192.168.1.1, там (по идее) должно в соответствии с таблицей маршрутизации в туннель. или я не прав?
Spoiler

Код: Выделить всё

PS C:\> cmd
Microsoft Windows [Version 10.0.15063]
© Корпорация Майкрософт (Microsoft Corporation), 2017. Все права защищены.

C:\>route PRINT
===========================================================================
Список интерфейсов
  8...08 00 27 0c b1 b5 ......Intel® PRO/1000 MT Desktop Adapter #3
  1...........................Software Loopback Interface 1
  7...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
===========================================================================

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.2    281
        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.1.0    255.255.255.0         On-link       192.168.1.2    281
      192.168.1.2  255.255.255.255         On-link       192.168.1.2    281
    192.168.1.255  255.255.255.255         On-link       192.168.1.2    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.1.2    281
  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.1.2    281
===========================================================================
Постоянные маршруты:
  Сетевой адрес            Маска    Адрес шлюза      Метрика
          0.0.0.0          0.0.0.0      192.168.1.1  По умолчанию
          0.0.0.0          0.0.0.0         10.0.0.2  По умолчанию
===========================================================================

IPv6 таблица маршрута
===========================================================================
Активные маршруты:
 Метрика   Сетевой адрес            Шлюз
  1    331 ::1/128                  On-link
  1    331 ff00::/8                 On-link
===========================================================================
Постоянные маршруты:
  Отсутствует

C:\>
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: OpenVPN - объединить сети

Сообщение s.xbatob »

perpetual.studen...
Не знаю: вы до сих пор никаких таблиц маршрутизации не приводили, да и схему сети предлагали нарисовать самостоятельно :)
Но скорее всего туннель работает исправно, а проблема либо в маршрутах, либо в фильтрации либо в запрете на хостах ping (что очень любит делать windows)
Впрочем, если туннель на UDP, а по дороге есть NAT, то возможны проблемы и с ним. Только это проявляется несколько по-другому.
Спасибо сказали:
perpetual.student
Сообщения: 13

Re: OpenVPN - объединить сети

Сообщение perpetual.student »

s.xbatob писал(а):
24.07.2017 11:42
perpetual.studen...
Не знаю: вы до сих пор никаких таблиц маршрутизации не приводили, да и схему сети предлагали нарисовать самостоятельно :)

так они, таблицы маршрутизации, под спойлером.
схема:
OpenVPN_VBox_net.png

Задача:
1) сервера объединяются через тунель опенвпн
2) ПК A, B, C должны видеть друг друга
s.xbatob писал(а):
24.07.2017 11:42
Но скорее всего туннель работает исправно, а проблема либо в маршрутах, либо в фильтрации либо в запрете на хостах ping (что очень любит делать windows)
Впрочем, если туннель на UDP, а по дороге есть NAT, то возможны проблемы и с ним. Только это проявляется несколько по-другому.

а вот здесь Вы правы. Виндовс10, которая имитировала локальную сеть сервера1, блокировала пинг.
Заменил все виртуальные виндовс на дебиан - вопросов больше нет.
конфиги:
Spoiler

Код: Выделить всё

[Пн 2017/07/24 13:53] root@srv1srv:~# cat /etc/openvpn/server.conf
local 10.0.0.49
port 1194
proto udp
#proto tcp
dev tun

ca /etc/openvpn/certs/keys/ca.crt
cert /etc/openvpn/certs/keys/server.crt
key /etc/openvpn/certs/keys/server.key
dh /etc/openvpn/dh4096.pem
tls-auth /etc/openvpn/certs/keys/ta.key 0

topology subnet

server 192.168.3.0 255.255.255.0
ifconfig 192.168.3.1 255.255.255.0
ifconfig-pool-persist ipp.txt

route 192.168.2.0 255.255.255.0        # сеть клиента1
route 192.168.4.0 255.255.255.0        # сеть клиента2

client-config-dir /etc/openvpn/ccd

client-to-client

keepalive 10 120

cipher AES-256-CBC

user openvpn
group nogroup

persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
verb 3

explicit-exit-notify 1

auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA

mode server
tls-server


[Пн 2017/07/24 13:53] root@srv1srv:~# cat /etc/openvpn/ccd/srv2client1
ifconfig-push 192.168.3.2 255.255.255.0
iroute 192.168.2.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.4.0 255.255.255.0"


[Пн 2017/07/24 13:54] root@srv1srv:~# cat /etc/openvpn/ccd/srv3client2
ifconfig-push 192.168.3.3 255.255.255.0
iroute 192.168.4.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"


Почти нет вопросов. Всё что мне надо работает, но почему вывод route на сервере выводит такую таблицу:

Код: Выделить всё

[Пн 2017/07/24 13:11] root@srv1srv:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 isp
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 isp
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 lan
192.168.2.0     192.168.3.2     255.255.255.0   UG    0      0        0 tun0
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.4.0     192.168.3.2     255.255.255.0   UG    0      0        0 tun0

почему маршрут для виртуальных сетей, лежит через 192,168,3,2
разве должно быть не так:

Код: Выделить всё

[Пн 2017/07/24 13:08] root@srv1srv:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 isp
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 isp
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 lan
192.168.2.0     192.168.3.1     255.255.255.0   UG    0      0        0 tun0
192.168.3.0     192.168.3.1     255.255.255.0   UG    0      0        0 tun0
192.168.4.0     192.168.3.1     255.255.255.0   UG    0      0        0 tun0
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: OpenVPN - объединить сети

Сообщение s.xbatob »

всё правильно: гейтом является дальний конец. Пересылать на свой собственный интерфейс смысла нет.
Спасибо сказали:
perpetual.student
Сообщения: 13

Re: OpenVPN - объединить сети

Сообщение perpetual.student »

s.xbatob писал(а):
24.07.2017 17:01
всё правильно: гейтом является дальний конец. Пересылать на свой собственный интерфейс смысла нет.

тогда для сети 192.168.4.0/24 гейтом должен быть 192.168.3.3?
192,168,3,2 - это ВПН-адрес срв2 с внутренней сеткой 192.168.2.0/24
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: OpenVPN - объединить сети

Сообщение s.xbatob »

Туннели (любые, не только OpenVPN) - это интерфейсы point-to point. Там может быть всего два участника. И маски у них нет. А ещё у openvpn есть особенность: он соединяет стороны не напрямую, а через собственный шлюз. В результате чего каждая сторона видит свою пару адресов. Так что ваша схема неверна. Но в любом случае шлюзом должен быть дальний конец своего туннеля (peer).
Спасибо сказали:
perpetual.student
Сообщения: 13

Re: OpenVPN - объединить сети

Сообщение perpetual.student »

s.xbatob писал(а):
24.07.2017 17:28
Туннели (любые, не только OpenVPN) - это интерфейсы point-to point. Там может быть всего два участника. И маски у них нет. А ещё у openvpn есть особенность: он соединяет стороны не напрямую, а через собственный шлюз. В результате чего каждая сторона видит свою пару адресов. Так что ваша схема неверна. Но в любом случае шлюзом должен быть дальний конец своего туннеля (peer).

ну маска-то у них есть, по умолчанию 30 ("topology net30"), если не указать в server.conf "topology subnet"

Код: Выделить всё

# Network topology
# Should be subnet (addressing via IP)
# unless Windows clients v2.0.9 and lower have to
# be supported (then net30, i.e. a /30 per client)
# Defaults to net30 (not recommended)
;topology subnet

Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: OpenVPN - объединить сети

Сообщение s.xbatob »

/30 - это workaround вокруг очередной ошибки в реализации от M$. На самом деле вот так:

Код: Выделить всё

3: bridge0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether bc:ae:c5:ae:ae:b5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.113.174/24 brd 192.168.113.255 scope global bridge0
       valid_lft forever preferred_lft forever
    inet6 fe80::beae:c5ff:feae:aeb5/64 scope link
       valid_lft forever preferred_lft forever
4: tun5: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.210.1 peer 10.8.210.2/32 scope global tun5
       valid_lft forever preferred_lft forever

Вообще адреса концов туннеля могут быть произвольными и даже привязанными к другим broadcast интерфейсам. Openvpn накладывает кое-какие свои ограничения, но никаких сетей у интерфейсов point-to-point не бывает.
Спасибо сказали:
Ответить