ufwを使用してIP非依存VPNキルスイッチを設定する方法

ufwを使用してIP非依存VPNキルスイッチを設定する方法

答えを探していましたが、何も見つかりませんでした。

ほとんどのスマートなインターネットユーザーのように、私もVPNを使用しています。私が間違っている場合は修正できますが、VPNを設定するとき(少なくともOpenVPNプロトコルを使用)、ネットワークルーティングは次のようになります。

app 1 -----
           |
app 2 -----+ ----- tun0 -----> outside world
           |
app 3------+

その後、VPNがオフになっている場合:

app 1 -----
           |
app 2 -----+ -----------> outside world [No protection :(]
           |
app 3------+

その他 源泉tun0VPN IPアドレスからのトラフィックを許可するように設定します。ただし、ほとんどの場合、IPアドレスは不明またはランダムに選択されます(つまり、ユーザーがランダムに選択)。

これについて数時間を費やした後に私が経験している問題は、それがうまくいくことができるということです(tun0がどこにでも行くことを許可します)。ただtun0がすでに有効になっている場合ただこの接続セッション中。接続を終了すると、ルールは許可されません。どのトラフィックが通過し、VPNに接続することもできません。

奇妙なことに、Androidではこれはとても簡単です。私がしなければならなかったのは、AFWall +(私のお気に入りのVPN)をインストールし、VPNへのネットワーク接続を許可してから、私が望むアプリのVPN接続のみを許可することでした。他のすべてのユーザーはブロックされ、VPN がダウンしてもトラフィックは許可されません。PCではなぜそんなに難しいのですか?

長すぎます。すべて/一部のトラフィックが tun0 に移動できるようにし、トラフィックが tun0 からどこにでも移動できるようにする ufw ルールはありますか?

ベストアンサー1

私はそれを次のように扱います。XYの問題:あなたの目標(X)は、特定のアプリケーションにVPNを使用させ、VPNが失敗した場合にインターネット接続を停止することです。あなた考えるこれにはファイアウォールルールとキルスイッチを使用する必要がありますが、より簡単な解決策があります。ネットワークネームスペース

したがって、新しいネットワーク名前空間にインターフェイスを作成するようにOpenVPNを設定しますtun(例:この問題)。次に、この名前空間内のVPNを介してのみインターネットにアクセスする必要があるすべてのアプリケーションを起動します(使用方法についてはip netns exec上記のリンクを参照)。 VPNが失敗すると、アプリケーションはインターネットにアクセスできなくなります。価格が上がったら、もう一度訪問できます。

ボーナスにより、デフォルトのネームスペースで実行されているすべてのアプリケーションは、VPNなしでインターネットに直接アクセスできます(したがって接続速度が速くなります)。

ファイアウォールルールを使用してこれを行うのはより複雑です。確かにVPNに関連付けられているすべてのIPアドレスがわかった後にのみファイアウォールルールを設定できます。ファイアウォールはIPに基づいて動作するため、この問題を解決する方法はありません。

AFWall+が実際に何をしているのかわかりません(知っていましたか?)。おそらく、内部的には名前空間を使用しています。

おすすめ記事