karabanov
@karabanov
Системный администратор

OpenVPN: почему не пингуется P-t-P адрес?

Захотелось разобраться с OpenVPN.
Сгенерировал сертификаты, настроил сервер используя дефолтный конфиг, который идёт в комплекте с OpenVPN, tun интерфейс поднялся и все вроде бы работает, но почему работает так, понять не могу.

Суть в следующем: в конфиге сервера есть директива "server 172.31.1.0 255.255.255.0" при запуске сервера поднимется вот такой интерфейс:
~$ ip addr list tun0
24: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 172.31.1.1 peer 172.31.1.2/32 scope global tun0
       valid_lft forever preferred_lft forever
~$

На клиенте в, в свою очередь, поднимется вот такой интерфейс:
~$ ip addr list tun0
23: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none
    inet 172.31.1.6 peer 172.31.1.5/32 scope global tun0
~$

В этих IP адресах я увидел нечто знакомое, но сразу не понял что к чему, поиск всети прояснил ситуацию с адресами, оказывается сервер нарезал подсеть 172.31.1.0/24 на подсети 172.31.1.0/30 и 172.31.1.4/30 и назначил первый IP из этих подсетей в качестве своего IP и IP клиента, а второй адрес в качестве адреса пира. И все бы ничего, но адрес пира не пингуется. Ни 172.31.1.2 ни 172.31.1.5 и это вводит меня в замешательство. То есть он и не должен пинговаться при таком раскладе, логика подсказывает, что на клиенте IP должен быть 172.31.1.2, а адрес пира 172.31.1.1 и тогда все встанет на свои места. При этом с клиента успешно пингуется сервер по своему IP 172.31.1.1, а с сервера пингуется клиент по своему IP 172.31.1.6.

У коллеги на микротике поднят OpenVPN сервер, он использует tun интерфейс и при подключении к нему на ноутбуке поднимется вот такой интерфейс:
~$ ip addr list tun0
23: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none
    inet 172.16.1.29 peer 172.16.1.30/32 scope global tun0
~$

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

Почему так происходит и как сделать так, чтобы я смог пинговать пира?
  • Вопрос задан
  • 3993 просмотра
Решения вопроса 1
karabanov
@karabanov Автор вопроса
Системный администратор
Спасибо, @ValdikSS

Да, topology - это то, что нужно (и даже лучше оказалось возможным назначить tun интерфейсу IP 172.30.1.1/24). Какая незаметная опция, я её почему-то не встречал раньше, а искать в документации то не знаю что, тоже не будешь...
Выяснил, что разработчики рекомендуют использовать topology subnet, но не назначают её по умолчанию ради обратной совместимости, по умолчанию используется как раз запутаный способ нарезания на /30 подсети. Чтобы адрес пира пинговался следует использовать topology ptp, тогда получится аутентичный тоннель.

Вот собственно интерфейс на сервере:
~$ ip addr list dev tun1
45: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 172.30.1.1/24 brd 172.30.1.255 scope global tun1
       valid_lft forever preferred_lft forever
~$

А это на клиенте:
~$ ip addr list dev tun1
32: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none 
    inet 172.30.1.2/24 brd 172.30.1.255 scope global tun1
~$


И таблица маршрутизации выглядит менее запутанной. Раньше было как-то так:
172.31.1.1 via 172.31.1.5 dev tun0 
172.31.1.5 dev tun0  proto kernel  scope link  src 172.31.1.6

А теперь сама лаконичность:
172.30.1.0/24 dev tun1  proto kernel  scope link  src 172.30.1.2
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы