Почему сервер OpenVPN на CentOS 7 не отвечает на пинги, даже когда соединение установлено?

Добрый день! У меня есть VPS с установленной операционной системой CentOS 7, и я хотел бы настроить доступ к нему через OpenVPN. 

На серверной стороне у меня установлен клиент OpenVPN версии 2.4.12 (из репозитория EPEL), и его конфигурация выглядит следующим образом: 

``` 
port 1194 
proto udp 
dev tun 
ca /etc/openvpn/server/ca.crt 
cert /etc/openvpn/server/my.vpn.crt 
key /etc/openvpn/server/my.vpn.key  # Этот файл должен храниться в секрете 
dh /etc/openvpn/server/dh.pem 
topology subnet 
server 172.22.21.0 255.255.255.0 
ifconfig-pool-persist ipp.txt 
;client-to-client 
duplicate-cn 
keepalive 10 120 
cipher AES-256-GCM 
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 
user nobody 
group nobody 
persist-key 
persist-tun 
status openvpn-status.log 
log-append /var/log/openvpn.log 
verb 3 
explicit-exit-notify 1 
```

На клиентской стороне (Windows 7) у меня установлен клиент версии 2.5.017, с конфигурацией следующего вида: 

``` 
client 
dev tun 
proto udp 
remote xxx.xxx.xxx.xx 1194 
resolv-retry infinite 
nobind 
persist-key 
persist-tun 
mute-replay-warnings 
remote-cert-tls server 
tls-client 
auth SHA512 
<tls-auth> 
</tls-auth> 
key-direction 1 
<ca> 
</ca> 
<cert> 
</cert> 
<key> 
</key> 
cipher AES-256-GCM 
verb 3 
```

VPN-соединение устанавливается успешно и, судя по выводам, маршруты на стороне клиента и сервера настроены. 

Клиентская сторона отображает следующие маршруты:

```
IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0 
```

Каковы следующие шаги для завершения настройки доступа к VPS через OpenVPN?
  • 7 сентября 2024 г. 11:13
Ответы на вопрос 2
Добрый день!

То, что ваш сервер OpenVPN не отвечает на пинги (ICMP Echo Request), даже когда соединение установлено, может быть связано с несколькими причинами. Давайте рассмотрим основные шаги по диагностике и решению этой проблемы.

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

Ваша конфигурация сервера выглядит в целом верно, но стоит обратить внимание на несколько моментов:

1. **IP-подсеть и маршрутизация**:
   Убедитесь, что у вас правильно настроены маршруты и IP-подсеть. Клиент должен иметь возможность маршрутизировать трафик на сервер и обратно. 

2. **`client-to-client`**:
   Если вы планируете, что клиенты смогут общаться друг с другом, раскомментируйте строку `;client-to-client`.

### 2. Проверка брандмауэра

B CentOS 7 включен брандмауэр `firewalld` по умолчанию. Вам нужно убедиться, что он разрешает трафик OpenVPN и ICMP (пинги):

```bash
# Разрешите трафик для порта OpenVPN (UDP 1194)
firewall-cmd --zone=public --add-port=1194/udp --permanent

# Разрешите ICMP (ping)
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="172.22.21.0/24" accept' --permanent
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="172.22.21.0/24" protocol value="icmp" accept' --permanent

# Перезагрузите firewalld чтобы изменения вступили в силу
firewall-cmd --reload
```

### 3. Конфигурация SELinux

Если у вас включен SELinux, он также может блокировать соединение. Попробуйте временно установить SELinux в режим permissive, чтобы проверить, не в этом ли проблема:

```bash
setenforce 0
```

Если это решит вашу проблему, вам нужно будет настроить правила SELinux или оставить его в permissive режиме (не рекомендуем).

### 4. Настройки маршрутизации на клиентской стороне

Проверьте настройки маршрутов на клиенте. Вы можете добавить маршрут к сети OpenVPN вручную, если это необходимо. Убедитесь, что у вашего клиента есть маршрут к IP-адресу сервера OpenVPN.

### 5. Проверка подключения

После внесения изменений попробуйте снова подключиться к OpenVPN и выполните следующие команды:

- На клиенте выполните `ping <VPN-сервер-IP>` и посмотрите, проходят ли пакеты.
- Проверьте логи OpenVPN и убедитесь, что нет ошибок:

```bash
cat /var/log/openvpn.log
```

### 6. Дополнительные параметры

Если вы хотите разрешить пинг в обе стороны, вы также можете добавить следующую строку в конфигурацию сервера:

```bash
push "ping 10"
push "ping-restart 60"
```

Это будет посылать ICMP-реплики для поддержания соединения активным.

### Заключение

Если после выполнения всех шагов проблема остается, вам стоит проверить логи как на стороне сервера, так и на клиенте, чтобы искать возможные ошибки или указания на проблемы. Также по необходимости можете включить более детальную отладку в конфигурациях, установив `verb 5` или `verb 6`.
Скорее всего, как отметил уважаемый ValdikSS , проблема в блокировке протокола у конкретного провайдера VPS, т.к. в локалке и у другого провайдера VPS всё завелось.
Похожие вопросы