Как автоматически отключить интернет при обрыве VPN/OpenVPN в Linux

  • 280
  • 0
  • 100,00%
  • 3

Существует огромное количество ситуаций, в которых может потребоваться блокировать исходящий трафик при разрыве VPN/OpenVPN соединения для сохранения собственной анонимности/приватности.

Информация в данной статье не является истиной в последней инстанции и может быть неверной/некорректной, поэтому пользуйтесь данными рекомендациями на свой страх и риск.

Технически, мы просто будем блокировать весь трафик, который идет не через VPN/OpenVPN с помощью фаервола iptables. В таком случае, даже если в какой то момент времени будет разорвано ваше VPN соединение, никто не сможет увидеть ваш IP, который выдал провайдер. Подразумевается, что у вас уже настроено рабочее VPN соединение, через которое можно получить доступ к сайтам и к DNS серверам. Первым делом устанавливаем пакет iptables-persistent, он позволяет автоматически применять правила iptables при загрузке вашего компьютера.

Можно конечно загружать эти правила и любым другим удобным для вас способом, не используя пакет iptables-persistent
apt update
sudo apt install iptables-persistent

На вопрос о сохранении правил для IPv4 - отвечаем утвердительно, в результате в файле /etc/iptables/rules.v4 будут сохранены текущие правила.

Переименовываем файл /etc/iptables/rules.v4 в /etc/iptables/rules_old.v4 (он понадобится в случае, если мы захотим вернуть изначальные настройки фаервола). Создаем файл /etc/iptables/rules.v4 и открываем для редактирования любым удобным текстовым редактором (я пользую nano для этих целей):

sudo nano /etc/iptables/rules.v4

Вставляем в этот файл следующее содержимое:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

-A INPUT -s x.x.x.x -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d x.x.x.x -p tcp --dport 443 -j ACCEPT

-A INPUT -i tun0 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT

COMMIT
  • x.x.x.x - это IP адрес VPN/OpenVPN сервера к которому вы будете подключаться.
  • tcp - это протокол, который используется при подключении к VPN, если будет использоваться udp, то надо заменить tcp на udp. Данная строка будет тогда выглядеть так:
    -A OUTPUT -d x.x.x.x -p udp --dport 443 -j ACCEPT
  • 443 - это порт, к которому происходит подключении. Если используется отличный от 443, то надо его заменить на актуальный.
  • tun0 - название вашего интерфейса, который появляется при создании VPN-тоннеля. Если используется отличный от tun0, то надо его заменить на актуальный.

Теперь пытаемся применить наши правила:

sudo iptables-restore < /etc/iptables/rules.v4

Если после ввода команды не вылезло никаких предупреждений, то значит правила применились, а после перезагрузки, они должны будут применяться автоматически при старте ОС.

Теперь, без активного VPN/OpenVPN соединения не должно быть доступа к сайтам и даже DNS серверам. А после установки VPN соединения - все должно работать как обычно, т.к. весь исходящий трафик будет идти через VPN.

Если мы захотим вернуть старые правила (которые были активны на ПК в момент установки iptables-persistent), то можно применить их следующей командой:

sudo iptables-restore < /etc/iptables/rules_old.v4
Только не забываем, что автоматически при старте системы будут применяться правила, которые находятся в файле /etc/iptables/rules.v4


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

Ваш e-mail не будет опубликован.

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.