Маршрутизируйте весь трафик через OpenVPN

Да, этот вопрос задавали сотни раз, и я искал везде, но безрезультатно.

Название действительно говорит само за себя.

У меня есть сервер OpenVPN (на ubuntu), и я могу подключиться к нему через свой клиент (Windows 8)...

Проблема начинается, когда я пытаюсь перенаправить ВЕСЬ трафик через VPN.

Я добавил push флаги в server.conf:

push "redirect-gateway def1"push "dhcp-option DNS 8.8.8.8"

Когда я подключаюсь от клиента, клиент выводит:

Wed May 07 21:38:40 2014 SENT CONTROL [StretchVPN-CA]: 'PUSH_REQUEST' (status=1)Wed May 07 21:38:41 2014 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 8.8.8.8,route-gateway <Remote Router IP>,ping 10,ping-restart 120,ifconfig 192.168.0.201 255.255.255.0'Wed May 07 21:38:41 2014 OPTIONS IMPORT: timers and/or timeouts modifiedWed May 07 21:38:41 2014 OPTIONS IMPORT: --ifconfig/up options modifiedWed May 07 21:38:41 2014 OPTIONS IMPORT: route options modifiedWed May 07 21:38:41 2014 OPTIONS IMPORT: route-related options modifiedWed May 07 21:38:41 2014 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modifiedWed May 07 21:38:41 2014 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0Wed May 07 21:38:41 2014 open_tun, tt->ipv6=0Wed May 07 21:38:41 2014 TAP-WIN32 device [Local Area Connection 4] opened: \\.\Global\{1F145805-92FC-454E-8FD9-0A6017DD4AD1}.tapWed May 07 21:38:41 2014 TAP-Windows Driver Version 9.9Wed May 07 21:38:41 2014 Notified TAP-Windows driver to set a DHCP IP/netmask of 192.168.0.201/255.255.255.0 on interface {1F145805-92FC-454E-8FD9-0A6017DD4AD1} [DHCP-serv: 192.168.0.0, lease-time: 31536000]Wed May 07 21:38:41 2014 Successful ARP Flush on interface [35] {1F145805-92FC-454E-8FD9-0A6017DD4AD1}Wed May 07 21:38:46 2014 TEST ROUTES: 1/1 succeeded len=0 ret=1 a=0 u/d=upWed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD <Remote Router IP> MASK 255.255.255.255 172.20.10.1Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=25 and dwForwardType=4Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 0.0.0.0 MASK 128.0.0.0 192.168.0.3Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 128.0.0.0 MASK 128.0.0.0 192.168.0.3Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]Wed May 07 21:38:46 2014 Initialization Sequence Completed

Я пробовал использовать флаги на стороне клиента при открытии соединения:

openvpn --config "C:\Program Files\OpenVPN\config\client.ovpn" --redirect-gateway def1 --route-method exe

Но все же, когда я иду в whatsmyip.org , там по-прежнему указан IP-адрес моих клиентов.

У кого-нибудь была эта проблема и удалось ли ее решить?

Большое спасибо

Я протестировал это с помощью сервера OpenVPN и настроил redirect-gateway def1 опция в конфигурации клиента и сервера работает нормально.

Когда я получаю доступ whatismyip.org, я вижу IP-адрес моего сервера OpenVPN.

Ниже приведена конфигурация клиента, которую я использую:

clientdev tunproto udp# THE IP OF THE REMOTE OPENVPN SERVER:remote ip_address portresolv-retry infinitenobindpersist-keypersist-tun# THE CSR FILE:pkcs12 certificate.p12ns-cert-type servercipher AES-256-CBCcomp-lzoredirect-gateway def1verb 3

Я также протестировал добавление опции redirect-gateway def1 к команде openvpn и добился того же результата.Конфигурация сервера такова:

port 1194proto udpdev tundh /etc/openvpn/easy-rsa/keys/dh1024.pemca /etc/openvpn/easy-rsa/keys/ca.crt# ENSURE THE DOMAIN NAME/FILENAME IS CORRECT:cert /etc/openvpn/easy-rsa/keys/cert.crtkey /etc/openvpn/easy-rsa/keys/cert.keyserver 10.5.3.0  255.255.255.0# YOUR LOCAL SERVER IP HERE:client-config-dir ccdroute 10.5.3.0 255.255.255.0ifconfig-pool-persist ipp.txtcipher AES-256-CBCcomp-lzopersist-keypersist-tunstatus log/openvpn-status.log 5status-version 2log-append log/openvpn.logverb 3  # verbose modemanagement localhost port /etc/openvpn/management-password# ROUTE THE CLIENT'S INTERNET ACCESS THROUGH THIS SERVER:push "redirect-gateway def1"push "remote-gateway vpn_server_ip"push "dhcp-option DNS 8.8.8.8"keepalive 10 60

Может быть, вы забыли изменить свой NAT? Запустите эти 3 команды от имени root

Команды:

iptables -I FORWARD -i tun0 -o eth0 \         -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPTiptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \         -j ACCEPTiptables -t nat -I POSTROUTING -o eth0 \          -s 10.8.0.0/24 -j MASQUERADE

Подпись:

  • tun0: ваша виртуальная сетевая карта VPN
  • eth0: ваша обычная сетевая карта
  • 10.8.0.0: блокировка IP-адреса вашей VPN-сети

Я столкнулся с той же проблемой и обнаружил, что при использовании скрипта настройки PiVPN для Open VPN конфигурация сервера содержит строку:

push "redirect-gateway def1 bypass-dhcp"

уже.На клиенте IOS все маршрутизируется через туннель автоматически (так написано в журнале).

На клиенте Tunnelblick вам необходимо добавить эту строку в client.ovpn файл:

redirect-gateway def1 bypass-dhcp

и это должно работать идеально. По крайней мере, так было на моем Mac.

После упорных поисков ответа, кажется, я решил эту проблему, может быть, частично, но, по крайней мере, очень просто:

Я использую Xubuntu 14.04 и пакет OpenVPN из основного источника. В >>Настройки Системная сеть, я заменил предустановленный DNS-адрес 127.0.1.1 с помощью Google 8.8.8.8, и теперь я вижу весь трафик, проходящий через VPN-сервер.

В таблице Wireshark такая строка, как DNS, отсутствует: все данные передаются как TCP по зашифрованному каналу. Я вижу трафик DHCP и DNS, когда смотрю на tun0 (внутренний блокнот). Когда я исследую wlan0 трафик (внешний между ноутбуком и Wi-Fi-маршрутизатором) Я получаю только серые TCP-пакеты.

Я думаю, это происходит потому, что DNS-запрос не нужен при декодировании символов в числа, и он передается в общем потоке, как обычный пакет данных.

Я буду рад узнать ваши соображения, не удивлюсь, если я совершенно не прав

На стороне сервера найдите server.conf файл и просто добавьте в него эту строку

push "redirect-gateway autolocal"

Это перенаправит весь трафик на стороне клиента через туннель

Если ваш клиент OpenVPN работает на Windows 10 (или аналогичной), существует еще одна проблема, на которую следует обратить внимание, - порядок привязки сетевых адаптеров. Существующие настройки DNS-сервера в локальной сети или адаптере Wi-Fi могут иметь приоритет над настройками DNS-сервера для туннельного интерфейса, поэтому, даже если все настроено правильно с точки зрения OpenVPN, Windows продолжает использовать исходный DNS-сервер.

Вы можете исправить это, как описано в этом сообщении на форуме Microsoft.

https://social.technet.microsoft.com/Forums/windowsserver/en-US/1cc5b647-6e51-482b-8998-ac5c3900938c/how-to-force-vpn-clients-to-use-the-dnsserver-from-their-vpn-adapter-not-the-dnsserver-from-their?форум=winserverNIS

Вы пробовали “push"route 0.0.0.0 0.0.0.0” или аналогично push routes?

Не забудьте обратный маршрут в VPN!

Да, это делается автоматически, когда используется нажатие “redirect-gateway def1”… Он добавляет маску 0.0.0.0 127.0.0.0 и маску 127.0.0.0 127.0.0.0 (обгоняя маршрут по умолчанию без удаления уже существующего)

Я обеспокоен, если вы запускаете клиент как “Запуск от имени администратора” в Windows! Эта проблема может возникнуть, если вы запустите клиент OVPN Windows без запуска администратора.