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

3800
John Schlong

Я хочу полностью отключить интернет-соединение при обрыве 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

3
Нет экспертов по сетям Mac? John Schlong 8 лет назад 0

2 ответа на вопрос

3
nbari

Лучшее, что я нашел, - это использовать 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 from any to 81.171.71.XX  # Allow traffic for VPN pass out on $vpn all 

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

Измените 81.171.71.XXIP-адрес, который вы получаете при подключении.

включить пф

$ sudo pfctl -e 

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

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

Отключить pf:

$ sudo pfctl -d 

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

Обновить

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

Хорошо, спасибо, я закончил тем, что использовал клиент AirVPN для Mac OS X, и он работает из коробки. На всякий случай, если кто-то захочет сэкономить время в будущем. John Schlong 7 лет назад 0
Я только что попробовал `killswitch` на macOS 10.12.6, и он отлично работает. Установите с помощью brew install killswitch. Если это не удается, попробуйте сначала `brew tap vpn-kill-switch / killswitch`, а затем установите. Таким образом, он может не загрузить бутылку, но затем будет скомпилирован из источника для вас. iled 6 лет назад 1
0
plopper

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

#!/bin/bash  while true  do result=$(scutil --nc list | grep Connected) if [ -z "$result" ]; then killall Transmission exit fi  done