openVPN клиенты не пингуют друг друга

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

  • в конфиге сервера должно быть прописано разрешение для клиентов обращаться друг к другу — добавить в конфиг строчку client-to-client

Именно этот вариант ответа и предлагается всеми поисковиками как основной. Но как видно дальше он не единственый и далеко не полный

  • блочит фаерволл  — надо разрешить openVPN в фаерволе (как на сервере, так и у клиента)

это касается windows систем, ну и вообщем вполне логично

  • Не достаточно прав для openVPN.

Так же актуально для windows систем, openVPN необходимо запускать с правами администратора (если openVPN запущен в качестве службы, то тогда права у неё есть по умолчанию) это нужно  в том числе для того чтобы добавить в таблицу маршрутизации маршруты openVPN

  • Не правильно или не настроена маршрутизация — необходимо прописать пути в iptables для линукс или в route для windows.

например в клиенте на винде стоит с помощью командной строки добавить маршрут:

route -p ADD 192.168.100.0 MASK 255.255.255.0 10.8.0.1 METRIC 1 IF 25

Где route -p ADD — добавить постоянный маршрут, т.е. он прописывается на всё время, не зависимо от того включен впн или нет.

192.168.100.0 — сеть в которую мы хотим попасть, в данном случае сеть за сервером openVPN, MASK — маска. 10.8.0.1 — шлюз, в данном случае это IP openVPN сервера METRIC — метрика(важность маршрута) IF 25 — номер интерфейса на который необходимо посылать пакет. Номера присвоенные сетевым интерфейсам можно посмотреть например с помощью команды route print, в самом начале листинга команды указаны интерфейсы и их номера. В нашем случае 25 это наш TAP интерфейс используемый OpenVPN.

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

Так же этот маршрут можно запушить (толкнуть) клиенту с сервера, если сервер у вас настроен соответствующим образом.

  • Не правильно настроен шлюз. Когда пакеты уходят не в ВПН а в инет.

Рассмотрим ситуацию есть роутер №1 который раздает интернет клиентам сети. Один из клиентов — роутер №2 на котором поднят OpenVPN, и вы со своего компьютера хотите получить доступ к узлам к этой VPN сети. Например обратится к узлу 10.8.0.11 — веб-сервер в vpn сети.

Соответственно на роутере №1 необходимо явным образом прописать маршрут для пакетов идущих в сеть OpenVPN и отправлять их на роутер №2.

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

  • для Windows — необходимо включить службу маршрутизации и удаленного доступа.

После этого всё заработало, и залетало.

openVPN клиенты не пингуют друг друга

 

Предыдущие статьи по теме:

Настройка openVPN

Настройка openVPN на роутерах с прошивкой dd-wrt