Вопрос или проблема
Мне интересно, какова роль push "route 0.0.0.0"
в /etc/openvpn/server.conf
. На самом деле, у меня была строка push "route 0.0.0.0 "
(обратите внимание на пробел в конце) в файле server.conf, и мне пришлось закомментировать её, чтобы получить доступ к своей локальной сети на сервере и к Интернету через VPN-соединение. Я предполагаю, что это правило охватывает весь сетевой трафик, который не соответствует другим маршрутам… Это так? А если да, то что тогда является шлюзом?
Если вы используете push "redirect-gateway def1"
, вы уже добавляете маршрут по умолчанию (в виде двух диапазонов адресов /1
) с правильным шлюзом (VPN-сервером).
Таким образом, это уже делает то, что вы могли бы подумать, что делает push "route 0.0.0.0"
, за исключением того, что пропущена опция шлюза.
Я просто цитирую руководство:
–route network/IP [netmask] [gateway] [metric]
Добавить маршрут в таблицу маршрутизации после установленного соединения. Можно указать несколько маршрутов. Маршруты будут автоматически удалены в обратном порядке перед закрытием устройства TUN/TAP.Эта опция предназначена как удобный прокси для командной оболочки route(8), одновременно обеспечивая переносимые семантики на различных платформах OpenVPN.
netmask по умолчанию — 255.255.255.255
gateway по умолчанию — берется из –route-gateway или второго параметра к –ifconfig при указании –dev tun.
Значение по умолчанию можно указать, оставив опцию пустой или установив “default”.
Параметры network и gateway также могут быть указаны как разрешаемое имя DNS или из файла /etc/hosts, или как одно из трех специальных ключевых слов:
vpn_gateway — Адрес удаленной точки VPN (выводится либо из –route-gateway, либо из второго параметра к –ifconfig при указании –dev tun).
net_gateway — Предсуществующий IP-шлюз по умолчанию, читаемый из таблицы маршрутизации (не поддерживается во всех ОС).
remote_host — Адрес –remote, если OpenVPN работает в режиме клиента, и в режиме сервера он не определен.
Как видите, указание следующего шага является необязательным. Ваша конфигурация сервера, скорее всего, неявно добавляет либо route-gateway
, ifconfig
, или оба параметра.
Ответ или решение
Вопрос о назначении строки push "route 0.0.0.0"
в конфигурационном файле OpenVPN server.conf
является актуальным для администраторов, которые проводят настройку VPN-серверов. Давайте подробно разберемся, что эта команда делает, и как она влияет на маршрутизацию трафика.
Значение команды
Команда push "route 0.0.0.0"
в OpenVPN предназначена для добавления маршрута в маршрутизированном окружении клиента после установления VPN-соединения. Конструкция 0.0.0.0
представляет собой нечто вроде универсального заполнителя, который указывает на все IP-адреса, то есть на весь трафик. Это означает, что все пакеты, которые не соответствуют более специфичным маршрутам, будут маршрутизироваться через VPN.
Однако, чтобы эта команда работала корректно, необходимо указать и шлюз для маршрута. Если шлюз не установлен, OpenVPN будет использовать шлюз, заданный в параметре --route-gateway
, или IP-адрес, определяемый при запуске с параметром --ifconfig
.
Влияние на доступ к локальной сети и интернету
Из вашего описания становится понятно, что при использовании push "route 0.0.0.0"
вы столкнулись с проблемой доступа к локальной сети и интернету. Это связано с тем, что команда перезаписывает маршруты, направляя весь трафик через VPN, и, если не установлен интернет-шлюз, клиент не может обращаться к ресурсам сети или интернету.
Это объясняется тем, что эта команда действительно является «поймальщиком трафика» и может затмить другие настройки маршрутизации, которые у вас могут быть. В конечном итоге, если вы не укажете шлюз, клиентские устройства не смогут правильно маршрутизировать трафик.
Альтернативное решение — использование redirect-gateway
Как вы уже упомянули, использование push "redirect-gateway def1"
является более предпочтительным решением для достижения подобного результата. Эта команда добавляет маршруты по умолчанию более безопасным способом, добавляя несколько маршрутов с учетом шлюза, установленного на стороне сервера. Это обеспечивает баланс между направлением трафика через VPN-соединение и поддержанием доступа к локальным ресурсам.
Так, redirect-gateway def1
автоматически устанавливает маршруты по умолчанию на клиенте, при этом указав VPN-сервер как шлюз для трафика, направляемого за пределы VPN. Это позволяет поддерживать доступ к локальной сети и интернету одновременно, в то время как push "route 0.0.0.0"
трафик может затмить и помешать доступу к локальным сетям.
Заключение
В итоге, push "route 0.0.0.0"
является мощным инструментом для маршрутизации, но требует тщательной настройки, чтобы избежать блокировки доступа к другим сетевым ресурсам. Если задача состоит в том, чтобы установить внешний трафик через VPN, актуально использовать push "redirect-gateway def1"
, который более прозрачно управляет маршрутизацией, оставляя возможность доступа к локальной сети.
Каждый администратор, занимающийся настройкой OpenVPN, должен быть осведомлён о влиянии таких команд на сетевую конфигурацию и выстраивать маршруты с учётом всех возможных сценариев использования.