Назад | Перейти на главную страницу

Сервер OpenVPN отправляет клиенту ложную информацию о шлюзе по умолчанию?

Хотя VPN-клиент успешно подключается к серверу OpenVPN, кажется, что он устанавливает неправильный и поддельный шлюз независимо от того, какие варианты push "redirect-gateway local def1" и / или push "route 10.240.0.0 255.255.0.0" помещены / прокомментированы / раскомментированы в файле server.conf.

В файле server.conf есть это объявление server 10.8.0.0 255.255.255.0, и действительно, серверу назначается 10.8.0.1, но по какой-то причине клиент интерпретирует сообщения, отправленные во время инициации VPN, что он должен маршрутизировать трафик через шлюз по умолчанию, назначенный в 10.8.0.5. Согласно Wireshark, любые последующие пакеты отправляются на 10.8.0.5 и никогда не получают никаких ответов, как если бы эти пакеты попадали в конечную точку VPN TCP, кажется, что они никогда не доходят до интерфейса tun0 сервера (согласно tcpdump на сервере.

Вот соответствующие строки журнала клиента OpenVPN (Tunnelblick), указывающие на изменение таблицы маршрутизации сразу после успешного подключения к VPN:

2015-12-11 02:25:18 /sbin/ifconfig utun0 10.8.0.6 10.8.0.5 mtu 1500 netmask 255.255.255.255 up
2015-12-11 02:25:18 /Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -d -f -m -w -pxxxxxxxxxxx utun0 1500 1543 10.8.0.6 10.8.0.5 init
                                        **********************************************
                                        Start of output from client.up.tunnelblick.sh
                                        No network configuration changes need to be made.
                                        Will NOT monitor for other network configuration changes.
                                        DNS servers '8.8.8.8 208.67.222.222' will be used for DNS queries when the VPN is active
                                        The DNS servers include only free public DNS servers known to Tunnelblick.
                                        Flushed the DNS cache via dscacheutil
                                        /usr/sbin/discoveryutil not present. Not flushing the DNS cache via discoveryutil
                                        Notified mDNSResponder that the DNS cache was flushed
                                        End of output from client.up.tunnelblick.sh
                                        **********************************************
                                        add net 104.196.7.35: gateway 192.168.0.1
                                        add net 0.0.0.0: gateway 10.8.0.5
                                        add net 128.0.0.0: gateway 10.8.0.5
                                        add net 10.240.0.0: gateway 10.8.0.5
                                        add net 10.8.0.0: gateway 10.8.0.5
2015-12-11 02:25:20 Initialization Sequence Completed

Есть ли способ заставить OpenVPN отправлять клиенту правильную информацию? Или я ошибаюсь, и есть ли еще одна причина, по которой пакеты, правильно отправленные на TCP-порт OpenVPN, не попадают в tun0 интерфейс на сервере OpenVPN?

Нет, это правильно.

Ваш OpenVPN работает в режиме топологии net30. В этом режиме процесс OpenVPN сам является маршрутизатором. На самом деле схема виртуальной сети выглядит так:

                                   Client3
                                 10.8.0.14/30
                                    |
                                 10.8.0.13/30
Server 10.8.0.1/30 --- 10.8.0.2/30 OpenVPN 10.8.0.5/30 --- 10.8.0.6/30 Client1
                                 10.8.0.9/30
                                    |
                                 10.8.0.10/30
                                   Client2

со всеми, включая сервер, имеющим дополнительный маршрут 10.8.0.0/24 через 10.8.0.x (x - их соответствующий адрес следующего перехода внутри OpenVPN).

Т.е. 10.8.0.5 - это действительно адрес маршрутизатора OpenVPN, он «спрятан внутри процесса». Это необходимо, если вы хотите присоединить Windows к своей VPN, поскольку в Windows невозможно создать настоящий интерфейс TUN, и он эмулируется с помощью TAP и описанной выше настройки.

Это также причина существования опции iroute. Он используется для настройки маршрутов внутри этого виртуального маршрутизатора.

Если вы никогда не захотите включать клиентов Windows в свою VPN, вы можете настроить режим топологии на p2p и ожидать от клиентов прямых маршрутов .1.

Пожалуйста, обратитесь к руководству OpenVPN https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage раздел режим топологии для получения подробной информации.