Клиент OpenVPN пингует, но не разрешает DNS

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

Давний наблюдатель, впервые пишу. Я прочитал почти все сообщения по open-vpn на этом сайте, но не могу решить эту проблему.

Я могу подключиться к серверу openvpn без проблем и могу пинговать внутренние адреса и 8.8.8.8, но не могу получить доступ к интернету. Я изменил конфигурационные файлы как для сервера, так и для клиента, iptables, и убедился, что моя сеть настроена правильно. Сервер был настроен с установкой road warrior. Кто-нибудь знает, почему это не работает? Заранее благодарю за помощь.

Server.conf

port 51820
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
cipher AES-128-CBC
comp-lzo

client.ovpn

client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote [my_public_ip] 51820
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-128-CBC
comp-lzo
setenv opt block-outside-dns
key-direction 1
verb 3
<ca>
-----BEGIN CERTIFICATE-----

IP Tables

sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i eno1 -p udp -m state --state NEW -m udp --dport 51820 -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A FORWARD -i tun+ -j ACCEPT
-A FORWARD -i tun+ -o eno1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eno1 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o tun+ -j ACCEPT

Интерфейсы:

source /etc/network/interfaces.d/*

# Циклический сетевой интерфейс
auto lo
iface lo inet loopback

# Основной сетевой интерфейс
auto eno1
iface eno1 inet static
address 192.168.1.213
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1 8.8.8.8

sysctl.conf

net.ipv4.ip_forward=1

Похоже, ваша конфигурация нормально подходит для TCP-соединений, но не для UDP, а, к сожалению, DNS использует UDP. Этот ответ может прояснить вашу проблему.

Обычно я использую nat таблицу для организации NAT, вместо использования FORWARD в input таблице. Возможно, вам стоит попробовать настроить ваш iptables в соответствии с инструкцией, как это.

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

Когда вы сталкиваетесь с проблемой, когда клиент OpenVPN может пинговать IP-адреса, но не может разрешить имена доменов, это может быть связано с несколькими факторами в вашей конфигурации. Рассмотрим шаги по диагностике и решению этой проблемы.

Анализ проблемы

Заключение:

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

Важные аспекты конфигурации

  1. Конфигурация сервера (server.conf):

    • Вы используете директивы push "redirect-gateway def1 bypass-dhcp" и push "dhcp-option DNS", что указывает на то, что сервер должен перенаправлять весь трафик через VPN и предоставлять DNS-серверы клиенту. Однако важно убедиться, что указанный DNS (в данном случае 192.168.1.1 и 8.8.8.8) доступен и правильно настроен.
  2. Конфигурация клиента (client.ovpn):

    • Включение параметра block-outside-dns полезно для предотвращения утечек DNS, однако этот параметр поддерживается только на Windows и может не действовать на других системах. Убедитесь, что нет конфликтующих настроек в вашем DNS.
  3. Рулевой фильтр (iptables):

    • Ваша конфигурация iptables выглядит хорошо для перенаправления VPN-трафика. Однако важно убедиться, что у вас есть правила NAT. Вы можете добавить следующее правило для разрешения NAT:
      sudo iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
    • Это правило позволит пакетам, выходящим на внешний интерфейс (eno1), менять свои IP-адреса на адрес интерфейса eno1. Это особенно важно для корректной работы NAT.
  4. DNS-настройки:

    • Убедитесь, что ваш системный DNS настроен правильно. Попробуйте вручную установить DNS-серверы в настройках сети вашего клиента (например, 8.8.8.8 и 1.1.1.1) и протестируйте разрешение имен с помощью nslookup или dig.
  5. Проверка маршрутизации:

    • Используйте команду route -n на клиенте, чтобы проверить маршруты. Убедитесь, что маршруты к вашим DNS-серверам корректны и включены в таблицу маршрутизации.

Проверка после всех изменений

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

  • Попробуйте выполнить ping google.com и посмотрите, произойдет ли разрешение имени.
  • Проверьте рабочие DNS-серверы с помощью nslookup google.com.

Заключение

Вам потребуется провести проверки по каждому из перечисленных аспектов, чтобы установить источник проблемы. Каждое изменение конфигурационной части следует тестировать и проверять итоги. Понимание маршрутизации и NAT в iptables, а также правильная настройка DNS — ключ к успешному подключению и работе через OpenVPN. Если ни один из шагов не сработал, обратите внимание на логи OpenVPN, они могут содержать полезную информацию о том, что пошло не так во время попыток подключения или передачи трафика.

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

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