Вопрос или проблема
У меня настроен сервер OpenVPN на Raspberry Pi, когда я его устанавливал, руководство, которое я следовал, рекомендовало добавить строку типа: push "route 192.168.1.0 255.255.255.0"
, чтобы сервер сообщил клиенту, что эта сеть доступна через VPN, или так я понял. Но сейчас я использую Pi в качестве маршрутизатора для общего доступа к подключению WiFi к Интернету с компьютером, используя сеть 192.168.0.0, и думал добавить маршрут для этой сети таким образом, но я попробовал подключиться перед этим, и ПК можно достичь без каких-либо действий.
Делая трассировку, я увидел, что, как оказалось, 10.8.0.1 является шлюзом по умолчанию, поэтому он может просто достичь его оттуда без проблем. Так что я задаюсь вопросом, для чего на самом деле используется это утверждение? Кажется, что это не обязательно для информирования клиента о сети, так как весь трафик в любом случае проходит через VPN.
Обычно используется для настройки маршрутов для клиентов VPN.
Например, я использую его для отправки 0.0.0.0 на один из компьютеров внутри VPN, чтобы весь трафик шел через VPN.
В вашем случае, похоже, вы отправляете маршрут на локальную сеть за VPN, чтобы в итоге отправлять пакеты на конечную точку туннеля VPN для их передачи в локальную сеть.
В таком случае, я бы предложил настроить VPN с использованием мостового устройства TAP, которое автоматически настраивает маршрут к внутренней локальной сети без необходимости перенаправления или NAT.
Ответ или решение
Теория
OpenVPN является одним из наиболее популярных решений для создания виртуальных частных сетей (VPN), и он позволяет пользователям устанавливать безопасные соединения между клиентами и серверами через интернет. Одной из ключевых возможностей OpenVPN является управление маршрутами сетевого трафика. В этом контексте, параметр push "route"
используется для передачи определенных сетевых маршрутов клиентам VPN.
Когда вы добавляете строку push "route 192.168.1.0 255.255.255.0"
в конфигурацию сервера OpenVPN, это означает, что сервер передает этой команде указание клиенту установить маршрут к сети 192.168.1.0/24 через VPN. Это полезно, когда вы хотите, чтобы клиенты VPN имели доступ к определенной локальной сети, находящейся за сервером VPN. Этот маршрут будет указывать клиенту, что для доступа к сети 192.168.1.0 он должен использовать туннель VPN, а не свой локальный интернет-шлюз.
Пример
Рассмотрим следующий пример. У вас есть локальная сеть с адресами 192.168.1.0/24, и вы хотите, чтобы клиенты, подключающиеся через OpenVPN, имели доступ к этой сети. Добавление строки push "route 192.168.1.0 255.255.255.0"
в конфигурацию заставляет клиентов отправлять пакеты для этой сети через VPN-туннель на сервер, который, в свою очередь, перенаправляет их в локальную сеть.
Ваша текущая ситуация такая: вы используете Raspberry Pi в качестве маршрутизатора с сетью 192.168.0.0, и обнаружили, что компьютеры-клиенты могут достигать этой сети без необходимости добавления маршрута. Это может означать, что ваши устройства клиенты по умолчанию перенаправляют весь свой трафик через OpenVPN, используя Raspberry Pi в качестве шлюза по умолчанию за счет маршрута 0.0.0.0, который туннелирует весь трафик через VPN.
Применение
Соответственно, использование push "route"
может не требоваться, если все сетевые ресурсы и так доступны через туннель VPN. Ваша задача может заключаться в оптимизации маршрутизации или развертывании инфраструктуры, где трафик либо идет целиком через VPN (все направления через 0.0.0.0), либо только частично.
На практике, если вы хотите, чтобы только определенные сети проходили через VPN, а другие шли напрямую через интернет, вам нужно особенно уделять внимание на точное использование маршрутов:
-
Добавление Специфических Маршрутов: Если ваш клиент должен иметь доступ только к определённой сети (например, 192.168.0.0/24), необходимо использовать
push "route"
для именно этой сети. Это предоставляет более гибкий контроль и позволяет избежать ненужного туннелирования всего трафика. -
Туннелирование Всего Трафика: Иногда безопасный доступ к сети через VPN стоит выше всех других целей. В таких случаях
push "redirect-gateway def1"
может выступить в роли автоматической передачи маршрута по умолчанию через VPN. -
Бриджирование: Как альтернатива
push "route"
, использование мостов (TAP устройства) предоставит возможность клиентам быть частью той же LAN, что и сервер. Это особенно полезно в сценариях, требующих максимальной прозрачности сетевых интерфейсов.
На выбор структуры маршрутизации может повлиять и ваша конечная цель: хотите ли вы централизованного управления (весь трафик через контрольную точку) или распределённого (с минимальным дефицитом производительности).
Заключение
Таким образом, вы определяете сценарий использования и точные потребности вашего конкретного сетевого окружения. Принятие решений о маршрутизации в OpenVPN во многом зависит от структуры сети и операционных требований, обеспечивающих лучшую производительность и безопасность. В этом контексте, как маршрутные инструкции, так и их внедрение должны поддерживаться детальным планированием инфраструктуры и мониторингом сетевого трафика для достижения оптимальных результатов.