Вопрос или проблема
Я настроил клиент и сервер 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
– успешный, но пинг с сервера на клиент и внутри туннеля не проходит.
Возможные причины проблемы
-
Маршрутизация:
- Убедитесь, что таблицы маршрутизации корректны на обеих сторонам.
- Выполните команду
route -n
илиip route
на обоих VPS, чтобы проверить наличие маршрутов, указывающих на подсеть 10.8.0.0/24.
-
Firewall (iptables):
- Проверьте настройки iptables на обеих машинах. Должны быть разрешены ICMP пакеты (пинги).
- Выполните
sudo iptables -L -v
для проверки правил и убедитесь, что на обеих сторонах нет блокировок для трафика из сети 10.8.0.0.
-
VPN интерфейсы:
- Убедитесь, что интерфейсы tun на обеих сторонах активированы и настроены корректно. На сервере и клиенте должно быть установлено значение
UP
для tun интерфейса, что видно из логов.
- Убедитесь, что интерфейсы tun на обеих сторонах активированы и настроены корректно. На сервере и клиенте должно быть установлено значение
Шаги для устранения неполадок
-
Проверка конфигурации:
- Проверьте конфигурационные файлы сервера и клиента на наличие ошибок. Обратите внимание на строки, отвечающие за маршрутизацию:
- Сервер может отправить клиенту маршруты через параметр
push
в конфигурации. - Убедитесь, что в конфигурации сервера присутствует параметр
push "route 10.8.0.0 255.255.255.0"
.
- Сервер может отправить клиенту маршруты через параметр
- Проверьте конфигурационные файлы сервера и клиента на наличие ошибок. Обратите внимание на строки, отвечающие за маршрутизацию:
-
Логи OpenVPN:
- Проверьте логи обоих серверов при установке соединения. Уровень детализации
verb 3
уже установлен, поэтому можно видеть, как происходит инициализация соединения и обмен маршрутами.
- Проверьте логи обоих серверов при установке соединения. Уровень детализации
-
Использование команд для проверки сети:
- Используйте
traceroute
для определения, где теряются пакеты. - На клиенте, запустив
ping
, указывайте флаг-I tun0
, чтобы убедиться, что пакеты идут именно через виртуальный интерфейс.
- Используйте
-
Тестирование:
- Попробуйте временно отключить iptables (
sudo iptables -F
) для диагностики, затем поочередно разрешайте трафик и проверяйте пинг. - Просмотрите все сетевые интерфейсы с помощью команды
ifconfig
и убедитесь, что IP адреса назначены корректно.
- Попробуйте временно отключить iptables (
Заключение
После выполнения данных шагов вы получите четкое представление о причинах отсутствия пинга между клиентом и сервером OpenVPN. Убедитесь, что маршрутизация настроена правильно, iptables не блокирует трафик и OpenVPN корректно передаёт маршруты на клиент. Если после всех действий проблема сохраняется, рассмотрите возможность запроса поддержки на специализированных форумах OpenVPN или у вашего провайдера VPS.