Клиент и сервер OpenVPN не могут пинговать друг друга (Соединение установлено)

Вопрос или проблема

Я настроил клиент и сервер OpenVPN между двумя VPS. У меня есть настройка клиента и сервера, сервер использует 10.8.0.1 и 10.8.0.2 IP-адреса в интерфейсе tun, а клиент использует 10.8.0.6 и 10.8.0.5 в интерфейсе tun. (vps1 – это клиент, а vps2 – сервер.) Клиент может пинговать IP сервера tun 10.8.0.1, но не другие IP. С сервера я не могу пинговать ни один из IP tun или IP tun клиента.

конфигурация сервера:

port 1194
proto udp
dev tun0

ca ca.crt
cert server.crt
key server.key
tls-server
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo
user nobody
group nobody
persist-key
persist-tun

verb 3

конфигурация клиента:

client
dev tun
proto udp
remote 198.168.XXX 1194
nobind
tun-mtu 1500
persist-key
persist-tun
keepalive 14 120
ca ca.crt
cert client.crt
key client.key
comp-lzo
verb 3

Согласно логам, соединение настроено успешно,

Jun  9 13:25:28 vps2 openvpn[6484]: MULTI_sva: pool returned IPv4=10.8.0.6, IPv6=(Not enabled)
Jun  9 13:25:28 vps2 openvpn[6484]: MULTI: Learn: 10.8.0.6 -> vps1.xxx/xxxxx:33012
Jun  9 13:25:28 vps2 openvpn[6484]: MULTI: primary virtual IP for vps1.xxx/xxxxx:33012: 10.8.0.6
Jun  9 13:25:30 vps2 openvpn[6484]: vps1.xxx/xxxxx:33012 PUSH: Received control message: 'PUSH_REQUEST'
Jun  9 13:25:30 vps2 openvpn[6484]: vps1.xxx/xxxxx:33012 send_push_reply(): safe_cap=940
Jun  9 13:25:30 vps2 openvpn[6484]: vps1.xxx/xxxxx:33012 SENT CONTROL [vps1.xxx]: 'PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5' (status=1)

И туннели установлены с обеих сторон:

Сервер

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:420 (420.0 b)  TX bytes:1968 (1.9 KiB)

Клиент

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Клиент также может пинговать и ssh на сервер через IP шлюза

root@vps1:~# ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=72.6 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=72.6 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=72.7 ms
^C
--- 10.8.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 72.666/72.691/72.726/0.221 ms

root@vps1:~# ssh 10.8.0.1
[email protected]'s password:

Но не может пинговать IP opnevpn с сервера и клиента.

root@vps1:~# ping 10.8.0.2
PING 10.8.0.2 (10.8.0.2) 56(84) bytes of data.
^C
--- 10.8.0.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2000ms

root@vps1:~# ping 10.8.0.5
PING 10.8.0.5 (10.8.0.5) 56(84) bytes of data.

Вы все перепутали. Прежде чем устанавливать более постоянные конфигурации, проведите тест, как описано здесь.

Для сервера ifconfig

`openvpn --dev tun1 --ifconfig 10.9.8.1 10.9.8.2` 

вам нужна обратная ifconfig на клиенте, т.е.

openvpn --remote 192.168.SER.VER --dev tun1 --ifconfig 10.9.8.2 10.9.8.1

Прежде чем соединение установится, что подтверждается следующим образом:

Sat Aug 20 15:37:39 2016 Peer Connection Initiated with [AF_INET]192.168.0.178:1194
Sat Aug 20 15:37:39 2016 Initialization Sequence Completed

каждая сторона может пинговать только себя.

Вам следует проверить множество состояний:

1 маршрутизация от вашего клиента к серверу

2 проверьте интерфейс источника, который вы используете с ping

причина в том, что вы используете ping, например, с одним из физических интерфейсов, и
на вашем сервере у вас нет маршрута к вашему туннелю для физического интерфейса.

3 проверьте маршрутизацию в пункте назначения и iptable и так далее

Ответ или решение

Проблема с OpenVPN: Клиент и сервер не могут пинговать друг друга (Подключение установлено)

Установка OpenVPN между двумя VPS может сопровождаться рядом проблем, среди которых отсутствие возможности пинга между клиентом и сервером даже в случае успешно установленного VPN-соединения. Рассмотрим детально возможные причины и методы их решения, основываясь на предоставленных вами конфигурациях и логах.

Описание ситуации

  • Сервер (VPS2) использует внутренний IP 10.8.0.1 и 10.8.0.2 на интерфейсе tun.
  • Клиент (VPS1) использует 10.8.0.6 и 10.8.0.5 на своем tun интерфейсе.
  • Пинг с клиента на сервер работает: ping 10.8.0.1 – успешный, но пинг с сервера на клиент и внутри туннеля не проходит.

Возможные причины проблемы

  1. Маршрутизация:

    • Убедитесь, что таблицы маршрутизации корректны на обеих сторонам.
    • Выполните команду route -n или ip route на обоих VPS, чтобы проверить наличие маршрутов, указывающих на подсеть 10.8.0.0/24.
  2. Firewall (iptables):

    • Проверьте настройки iptables на обеих машинах. Должны быть разрешены ICMP пакеты (пинги).
    • Выполните sudo iptables -L -v для проверки правил и убедитесь, что на обеих сторонах нет блокировок для трафика из сети 10.8.0.0.
  3. VPN интерфейсы:

    • Убедитесь, что интерфейсы tun на обеих сторонах активированы и настроены корректно. На сервере и клиенте должно быть установлено значение UP для tun интерфейса, что видно из логов.

Шаги для устранения неполадок

  1. Проверка конфигурации:

    • Проверьте конфигурационные файлы сервера и клиента на наличие ошибок. Обратите внимание на строки, отвечающие за маршрутизацию:
      • Сервер может отправить клиенту маршруты через параметр push в конфигурации.
      • Убедитесь, что в конфигурации сервера присутствует параметр push "route 10.8.0.0 255.255.255.0".
  2. Логи OpenVPN:

    • Проверьте логи обоих серверов при установке соединения. Уровень детализации verb 3 уже установлен, поэтому можно видеть, как происходит инициализация соединения и обмен маршрутами.
  3. Использование команд для проверки сети:

    • Используйте traceroute для определения, где теряются пакеты.
    • На клиенте, запустив ping, указывайте флаг -I tun0, чтобы убедиться, что пакеты идут именно через виртуальный интерфейс.
  4. Тестирование:

    • Попробуйте временно отключить iptables (sudo iptables -F) для диагностики, затем поочередно разрешайте трафик и проверяйте пинг.
    • Просмотрите все сетевые интерфейсы с помощью команды ifconfig и убедитесь, что IP адреса назначены корректно.

Заключение

После выполнения данных шагов вы получите четкое представление о причинах отсутствия пинга между клиентом и сервером OpenVPN. Убедитесь, что маршрутизация настроена правильно, iptables не блокирует трафик и OpenVPN корректно передаёт маршруты на клиент. Если после всех действий проблема сохраняется, рассмотрите возможность запроса поддержки на специализированных форумах OpenVPN или у вашего провайдера VPS.

Оцените материал
Добавить комментарий

Капча загружается...