Вопрос или проблема
Мы используем 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 и настройки фаервола, проверьте работоспособность системы:
-
Перезапустите OpenVPN:
service openvpn restart
-
Проверьте статус соединения:
Используйте командуifconfig
для проверки, чтоtun0
настроен и активен. -
Проверка блокировки трафика:
Отключите OpenVPN и попробуйте получить доступ к интернет-ресурсам. Доступ должен быть заблокирован.
Шаг 5: Обратная связь и мониторинг
Регулярно проверяйте логи фаервола, чтобы убедиться, что несанкционированный трафик блокируется, и что все соединения через VPN работают корректно.
Важные Заметки
- Убедитесь, что вы правильно определили свои локальные IP-адреса в конфигурации фаервола.
- В случае использования других сетевых интерфейсов, корректируйте конфигурации в соответствии с вашей сетевой архитектурой.
- Обратите внимание на возможные конфликты с другими службами, которые могут использовать сетевой интерфейс.
Таким образом, настройка OpenVPN с использованием фаервола PF на OpenBSD 7.6 позволит вам контролировать все соединения, обеспечивая безопасность вашей системы и предотвращая утечки трафика.