Как сделать VPN kill-switch для Mac OS X

Я хочу полностью отключить интернет-соединение при обрыве VPN-соединения. Я подключаюсь к своему VPN (privatevpn.com) через Visidity.

Я перепробовал все в книге. Я пытался использовать сценарии отключения в Visidity, но они никогда не запускаются и не запускаются непоследовательно и оставляют уязвимым мое соединение. Я также пробовал трюки с маршрутизацией в Visidity, но он тоже не работает.

На моих машинах с Ubuntu у меня есть решение, которое работает отлично, я использую правила ufw для управления брандмауэром. Чтобы подключиться к VPN, мне нужно отключить UFW, а затем, после подключения VPN, я включаю UFW, и он защищает соединение от утечки.

На Mac есть нечто, называемое pf. Я мог бы настроить pf так же, как работают мои правила ufw, но я не понимаю, как его настроить.

Вот мои правила UFW, которые я также хотел бы запустить на Mac, может, кто-нибудь может помочь мне настроить pf на использование тех же правил?

Статус: активный Ведение журнала: включено (низкое) По умолчанию: отказать (входящий, отказать (исходящий), отключено (направлено) Новые профили: пропустить

К действиям из любого места, разрешенным в 193.180.119.0/24 из любого места, разрешенным к 193.180.119.0/24

2 ответа

Лучшее, что я нашел, это использовать PF, доступный на Mac OS X, после подключения к вашему провайдеру VPN просто нужно изменить IP.

Создать файл ~/killswitch/pf.conf содержащий это

# Options
set block-policy drop
set ruleset-optimization basic
set skip on lo0

# Interfaces
wifi = "en1"
vpn = "utun1"

# Block everything
block out all
block in all

# Outbound: Allow only VPN 
pass out on $wifi proto {tcp, udp} from any to 81.171.71.XX

# Allow traffic for VPN
pass out on $vpn all

Дважды проверьте ваши интерфейсы, в моем случае en1 это WiFi и uten1 VPN-туннель.

+ Изменить 81.171.71.XX на IP, который вы получаете при подключении.

включить пф

$ sudo pfctl -e 

Загрузите правила:

$ sudo pfctl -Fa -f /path/to/pf.conf 

Отключить pf:

$ sudo pfctl -d

Я должен был реализовать это из-за проблемы с ipvanish, главным образом из-за сбоя приложения, что приводило к падению VPN, и трафик возвращался к стандартному, без зашифрованного маршрута.

Обновить

Вы можете попробовать убить, он может сделать все это для вас автоматически.

Может ли этот скрипт добиться цели?

#!/bin/bash

while true 
do
  result=$(scutil --nc list | grep Connected)
  if [ -z "$result" ]; then
     killall Transmission
     exit
  fi 
done
Другие вопросы по тегам