OpenVPN—блокировать все интернет-соединения при отключении VPN-соединения

Вопрос или проблема

Мы используем OpenBSD 7.6 и имеем соединение OpenVPN, созданное с помощью pkg_add openvpn (openvpn-2.6.12) и записывая это в /etc/hostname.tun0, перезагрузив компьютер после сохранения:

up
!/usr/local/sbin/openvpn --daemon --config /etc/openvpn/my-config.ovpn

Наш публичный IP-адрес – это IP-адрес сервера OpenVPN, когда мы его проверяем (хорошо). Однако, когда соединение с сервером OpenVPN разрывается, интернет-трафик утечет из VPN, и здесь мы видим наш публичный IP-адрес, (плохо)

Как мы можем настроить этот компьютер так, чтобы весь трафик, отправляемый в/из интернета, проходил исключительно через соединение OpenVPN, а если это соединение прерывается/не установлено, любые попытки доступа в интернет блокировались?

  • ifconfig показывает, что у нас есть bcm0 в качестве нашего ethernet и tun0 в качестве нашего соединения OpenVPN. У этого компьютера есть только один ethernet-порт.

  • netstat -R показывает, что у нас есть только один Rdomain, 0, и интерфейсы lo0 bge0 enc0 tun0 pflog0 находятся под ним с таблицей маршрутизации 0.

  • Нам все еще нужен доступ к компьютеру через локальные IP, независимо от того, установлено ли соединение OpenVPN, прервано или не подключено.

Я просмотрел руководства route, rdomain, trunk, ifconfig, openvpn, но не смог заставить это работать правильно.

В итоге: нам нужно заблокировать весь интернет-трафик от всех процессов, если соединение OpenVPN не установлено. Локальный IP-трафик – это единственное, что может/должно работать независимо от этого соединения, поскольку локальные IP разрешаются на локальные устройства, и ничего на сервере OpenVPN (который мы не контролируем).

Ответ или решение

Для того чтобы настроить OpenVPN на системе OpenBSD 7.6 таким образом, чтобы весь интернет-трафик проходил только через VPN и при разрыве соединения интернет-доступ блокировался, нужно выполнить несколько этапов настройки. Рассмотрим их подробно.

Шаг 1: Настройка OpenVPN

Вы уже внедрили OpenVPN, добавив соответствующий конфигурационный файл в /etc/hostname.tun0. Давайте добавим несколько параметров в конфигурационный файл OpenVPN, чтобы обеспечить блокировку трафика при разрыве соединения.

Редактирование конфигурации OpenVPN

В вашем файле /etc/openvpn/my-config.ovpn добавьте следующие строки:

redirect-gateway def1

Это позволит направить весь трафик через ваш VPN-сервер.

Шаг 2: Настройка фаервола

Для блокировки интернет-трафика, когда VPN отключен, необходимо настроить фаервол (например, pf на OpenBSD). Создайте или отредактируйте файл конфигурации фаервола, обычно это /etc/pf.conf.

Пример конфигурации PF

Добавьте следующую конфигурацию в файл:

# pf.conf

# Включаем сетевой интерфейс
ext_if = "bcm0"
vpn_if = "tun0"

# Активируем все локальные подключения
set block-policy return
set loginterface $ext_if

# Блокируем весь трафик по умолчанию
block all

# Разрешаем локальный трафик
pass in on $ext_if from { 192.168.1.0/24 } to any   # Local network
pass out on $ext_if from any to { 192.168.1.0/24 }  # Local network

# Разрешаем трафик только через VPN, когда он активен
pass out on $vpn_if from any to any
pass in on $vpn_if from any to any

Шаг 3: Включение PF

После изменения конфигурации фаервола, активируйте его с помощью команды:

# Включаем pf
pfctl -f /etc/pf.conf
pfctl -e

Шаг 4: Проверка конфигурации

Помимо изменений конфигурации OpenVPN и настройки фаервола, проверьте работоспособность системы:

  1. Перезапустите OpenVPN:

    service openvpn restart
  2. Проверьте статус соединения:
    Используйте команду ifconfig для проверки, что tun0 настроен и активен.

  3. Проверка блокировки трафика:
    Отключите OpenVPN и попробуйте получить доступ к интернет-ресурсам. Доступ должен быть заблокирован.

Шаг 5: Обратная связь и мониторинг

Регулярно проверяйте логи фаервола, чтобы убедиться, что несанкционированный трафик блокируется, и что все соединения через VPN работают корректно.

Важные Заметки

  • Убедитесь, что вы правильно определили свои локальные IP-адреса в конфигурации фаервола.
  • В случае использования других сетевых интерфейсов, корректируйте конфигурации в соответствии с вашей сетевой архитектурой.
  • Обратите внимание на возможные конфликты с другими службами, которые могут использовать сетевой интерфейс.

Таким образом, настройка OpenVPN с использованием фаервола PF на OpenBSD 7.6 позволит вам контролировать все соединения, обеспечивая безопасность вашей системы и предотвращая утечки трафика.

Оцените материал
Добавить комментарий

Капча загружается...