Чудят маршруты с OpenVPN (Debian 10, OpenVPN 2.4.7)

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

Модератор: SLEDopit

Аватара пользователя
Yaros
Сообщения: 501
ОС: Debian Wheezy / Gentoo

Чудят маршруты с OpenVPN

Сообщение Yaros »

День добрый.
Нужна подсказка по OpenVPN.
Есть ovpn-сервер, на нем же гипервизор Proxmox. Для виртуалок сделан бридж vmbr0 с адресами 10.100.0.0/16.
Есть клиенты под различными ОС + клиент, который тоже гипервизор (там так же есть vmbr0, подсеть 10.99.0.0/16), вм на котором должны быть видны другим клиентами и вм на сервере.
Происходит какой-то треш с маршрутами.
Конфиг сервера:

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

port 1194
proto udp
dev tun
ca server/ca.crt
cert server/infra.crt
key server/infra.key
dh server/dh.pem
server 10.101.0.0 255.255.255.0
route 10.100.0.0 255.255.0.0
route 10.99.0.0 255.255.0.0
push "route 10.100.0.0 255.255.0.0"
push "route 10.99.0.0 255.255.0.0"
ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/ccd
client-to-client
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
daemon
link-mtu 1461
log-append /var/log/openvpn.log
verb 3
Содержимое ccd для гипервизора:

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

ifconfig-push 10.101.0.6 255.255.255.0
iroute 10.99.0.0 255.255.0.0
Конфиг клиента-гипервизора:

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

client
remote IP 1194
proto udp
dev tun
ca server/ca.crt
cert client/ci-cd.crt
key client/ci-cd.key
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
tun-mtu 1340
auth SHA512
auth-nocache
askpass /etc/openvpn/client/auth.txt
keepalive 20 60
persist-key
persist-tun
log-append /var/log/openvpn.log
verb 3
Виндовый клиент:

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

client
remote IP 1194
proto udp
dev tun
ca server/ca.crt
cert lazy.crt
key lazy.key
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
log-append /var/log/openvpn.log
verb 3
Адреса и маршруты:
Адреса и маршруты ovpn-сервера

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

Infra:~# ip ro
default via REAL_GW dev eth0 onlink
10.99.0.0/16 via 10.101.0.2 dev tun0
10.100.0.0/16 dev vmbr0 proto kernel scope link src 10.100.0.1
10.101.0.0/24 via 10.101.0.2 dev tun0
10.101.0.2 dev tun0 proto kernel scope link src 10.101.0.1
REAL_NETWORK/24 dev eth0 proto kernel scope link src REAL_IP
Infra:~# ip ad
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:25:90:1e:02:e2 brd ff:ff:ff:ff:ff:ff
    inet REAL_IP/24 brd 94.26.226.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::225:90ff:fe1e:2e2/64 scope link
       valid_lft forever preferred_lft forever
4: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 0a:7a:28:ed:65:1f brd ff:ff:ff:ff:ff:ff
    inet 10.100.0.1/16 brd 10.100.255.255 scope global vmbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::a08e:bff:fea8:4486/64 scope link
       valid_lft forever preferred_lft forever
13: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1340 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.101.0.1 peer 10.101.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::c11b:496a:c87d:6d77/64 scope link stable-privacy
       valid_lft forever preferred_lft forever
Адреса и маршруты клиента с гипервизором

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

hyper# ip ad
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 0c:c4:7a:dc:7c:4e brd ff:ff:ff:ff:ff:ff
    inet REAL_IP/24 brd 77.223.103.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::ec4:7aff:fedc:7c4e/64 scope link
       valid_lft forever preferred_lft forever
4: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 0e:34:f1:ba:31:de brd ff:ff:ff:ff:ff:ff
    inet 10.99.0.1/16 brd 10.99.255.255 scope global vmbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::441d:bbff:fed6:de31/64 scope link
       valid_lft forever preferred_lft forever
21: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1340 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.101.0.6 peer 255.255.255.0/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::edfb:d355:c28d:c6f/64 scope link stable-privacy
       valid_lft forever preferred_lft forever
hyper# ip ro
default via REAL_GW dev eth0 onlink
10.99.0.0/16 dev vmbr0 proto kernel scope link src 10.99.0.1
10.100.0.0/16 via 255.255.255.0 dev tun0
10.101.0.0/24 via 255.255.255.0 dev tun0
REAL_NETWORK/24 dev eth0 proto kernel scope link src REAL_IP
255.255.255.0 dev tun0 proto kernel scope link src 10.101.0.6
Адреса и маршруты виндового клиента
OpenVPN-клиент показывает IP 10.101.0.3, однако в выводе ipconfig /all такого IP нет.

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

> route print
IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0    192.168.100.1    192.168.100.3     50
        10.99.0.0      255.255.0.0       10.101.0.1  169.254.141.170    257
       10.100.0.0      255.255.0.0       10.101.0.1  169.254.141.170    257
       10.101.0.0    255.255.255.0       10.101.0.1  169.254.141.170    257
    94.26.226.174  255.255.255.255    192.168.100.1    192.168.100.3    306
        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
      169.254.0.0      255.255.0.0         On-link   169.254.141.170    257
  169.254.141.170  255.255.255.255         On-link   169.254.141.170    257
  169.254.255.255  255.255.255.255         On-link   169.254.141.170    257
     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
    192.168.100.0    255.255.255.0         On-link     192.168.100.3    306
    192.168.100.3  255.255.255.255         On-link     192.168.100.3    306
  192.168.100.255  255.255.255.255         On-link     192.168.100.3    306
        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   169.254.141.170    257
        224.0.0.0        240.0.0.0         On-link     192.168.100.3    306
  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   169.254.141.170    257
  255.255.255.255  255.255.255.255         On-link     192.168.100.3    306
===========================================================================
Постоянные маршруты:
  Отсутствует
Для проверки есть вм 10.99.20.2 и 10.100.2.2. Их не получается пинговать никому, кроме собственных гипервизоров.
Гипервизоры пингуют друг друга, однако не пингуют виндовый клиент, который не пингует вообще никого из них.
Сами вопросы:
1. Откуда вообще взялся адрес 10.101.0.2?
2. Почему виндовый клиент не видит, по сути, вообще ничего?
3. Как все это настроить, чтобы заработало?

P.S. iptables:

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

Infra:~# iptables -S -t nat
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -i eth0 -p tcp -m tcp --dport 10222 -j DNAT --to-destination 10.100.10.2:22
-A PREROUTING -i eth0 -p tcp -m tcp --dport 10280 -j DNAT --to-destination 10.100.10.2:80
-A PREROUTING -i eth0 -p tcp -m tcp --dport 5222 -j DNAT --to-destination 10.100.5.2:22
-A POSTROUTING -s 10.100.0.0/16 -o eth0 -j MASQUERADE

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

hyper# iptables -S -t nat
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -i eth0 -p tcp -m tcp --dport 20222 -j DNAT --to-destination 10.99.20.2:22
-A PREROUTING -i eth0 -p tcp -m tcp --dport 20280 -j DNAT --to-destination 10.99.20.2:80
-A POSTROUTING -s 10.99.0.0/16 -o eth0 -j MASQUERADE
=========
=Мой блог. =
=========
Gentoo-ниасилятар
Спасибо сказали: