web-dev-qa-db-ja.com

Mac OSX用のVPNキルスイッチを作成する方法

私がやりたいのは、VPN接続がダウンしたときにインターネット接続を完全に無効にすることです。 Viscosityを介してVPN(privatevpn.com)に接続しています。

私は本のすべてを試しました。 Viscosityで切断スクリプトを作成しようとしましたが、トリガーされないか、トリガーに一貫性がなく、接続が脆弱なままになります。 Viscosityでルーティングのトリックも試しましたが、どちらも機能しません。

私のUbuntuマシンには、完全に機能するソリューションがあります。ufwルールを使用してファイアウォールを制御します。 VPNに接続するには、UFWを無効にする必要があります。次に、VPNが接続されたら、UFWを有効にします。これにより、接続が漏れないようにします。

Macにはpfと呼ばれるものがあります。 ufwルールと同じように動作するようにpfを設定できるかもしれませんが、設定方法がわかりません。

Macでも実行したいUFWルールは次のとおりです。同じルールを使用するようにpfを設定するのを誰かが手伝ってくれるかもしれません。

ステータス:アクティブロギング:オン(低)デフォルト:拒否(受信、拒否(送信)、無効(ルーティング)新しいプロファイル:スキップ

どこからでもアクションへ193.180.119.0/24で許可どこでも許可193.180.119.0/24

3
John Schlong

私が見つけた最良のことは、VPNプロバイダーに接続した後、 [〜#〜] pf [〜#〜] で利用可能 mac os X を使用することです。 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に変更します。

pfを有効にする

$ Sudo pfctl -e 

ルールをロードします。

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

Pfを無効にする:

$ Sudo pfctl -d

Ipvanishの問題が原因で、これを実装する必要がありました。これは主に、アプリケーションがクラッシュしてVPNがダウンし、トラフィックがデフォルトの暗号化されていないルートに戻ったためです。

更新

あなたは試してみることができます killswitch それはあなたのためにこれをすべて自動的に行うことができます。

3
nbari

このスクリプトでうまくいくでしょうか?

#!/bin/bash

while true 
do
  result=$(scutil --nc list | grep Connected)
  if [ -z "$result" ]; then
     killall Transmission
     exit
  fi 
done
0
plopper