Я использую несколько операционных систем на своих клиентах (Ubuntu, Mint, Alpine, Windows 7-10), и я хотел бы получить доступ к своей домашней сети через VPN и, например, в отеле, где я хотел бы просматривать интернет через мой домашний интернет подключение.

Я прочитал интересную статью здесь. В нем утверждается, что если VPN-соединение не установлено и у вас есть сетевое соединение (например, VPN-сервер не работает, клиент еще не подключен и т.д.), То ваш клиентский компьютер будет использовать локальную сеть без туннелирования вместо VPN. Я предполагаю, что то же самое может произойти, если я по какой-то причине потеряю соединение с моим VPN-сервером и даже не узнаю, что отправляю половину сообщений в незашифрованном виде. Есть ли способ предотвратить это и заставить каждое приложение на клиентском компьютере использовать только VPN-туннель?

Я нашел несколько похожих вопросов в теме, которые были, например, специфичны для Win7. То, что я ищу, является общим решением. Итак, теоретически, каков рецепт, чтобы сделать это в любой системе Windows и Linux (без конкретных системных деталей), и если это невозможно, то почему?

1 ответ1

1

Общие подходы:

  • Блокируйте нежелательные пакеты от отправки с помощью брандмауэра.
  • Настройте таблицу маршрутизации так, чтобы пакеты никогда не проходили по прямому пути.

Первый способ может быть реализован путем фильтрации исходящих пакетов по их исходному адресу, поскольку у вас будут разные адреса для подсети ЛВС и туннеля VPN. (Конечно, вам нужно добавить исключение для самого VPN-клиента.)

Во-вторых, удалив существующий маршрут по умолчанию (0.0.0.0/0 или ::/0), чтобы пакеты немедленно возвращались с ошибками "Сеть недоступна". Опять же, вам нужно настроить исключение для VPN-сервера, добавив очень узкий маршрут (возможно, даже /32 или /128).

Некоторые операционные системы также поддерживают "домены маршрутизации", "VRF" или "пространства имен сети", которые ограничивают то, какие сетевые интерфейсы программа видит, поэтому вы можете создать отдельное пространство имен только для VPN-клиента и назначить ему физический интерфейс Ethernet. , (Остальные программы будут вынуждены использовать все, что осталось, например, в Linux виртуальный "ветхий" интерфейс для связи между пространствами имен.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .