私はopenVPNと一緒にIPredator VPNを使用していますが、接続が失われたときにVPNなしでインターネットからデータを送信しないようにしたいと思います。 iptablesとScopeを使ってこれを行うことができると聞きました。どうすればいいですか? VPNが私に割り当てたIP範囲をどのように見つけることができますか?
答え1
VPNを開始する前にnetstat -rn
とifconfig -a
。 VPNを起動すると、これら2つのコマンドの違いにより、VPNがルーティング側で作成したネットワークとそのネットワークの可視性を確保するために割り当てられたIPがわかります。また、VPN(またはトラフィック)を提供するサーバーのIPを取得する必要があります。到着VPNサーバーはそれにアクセスできません。)また、VPNサーバーが代わりにudp
を使用しているとしますtcp
。その場合はtcp
、これを反映するために2番目のルールを更新する必要があります。
これがある場合は、OUTPUT
iptablesにルールを追加してホストが表示できる内容を設定できます。
iptables -F OUTPUT
iptables -I OUTPUT -d VPNSERVER -p udp -j ACCEPT -m comment --comment "Allow traffic to VPN SERVER"
iptables -I OUTPUT -s VPNIP -d VPNNETWORK/CIDR -j ACCEPT -m comment --comment "Allow all traffic to VPN newtork"
iptables -I OUTPUT -j DROP -m comment --comment "Drop all other traffic"
iptables -F OUTPUT
既存のルールを更新し、この点に注意してくださいが、元の質問で要求されたとおりに実行してください。
VPNSERVER
これがVPNサーバーのIPになります。
VPNIP
VPNがあなたに割り当てたIP。次のようなVPNNETWORK/CIDR
ルーティングされたネットワークに存在します。netstat -rn
10.1.0.0/24
これらのルールをデバッグするときは、一部のプロトコルでは追加の処理が必要になる可能性があるため、削除される項目を記録するのが便利な場合があります。
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
OUTBOUND
これは、PCからインターネットへのトラフィックをブロックし、VPNサーバーとVPNサーバーが提供するネットワークにのみトラフィックを到達させるのに十分です。
OPはArch Linuxnetstat
またはifconfig
。この場合の選択肢は次のとおりです。
ip addr show
インターフェイスが提供され、ip route show
現在持っているパスが表示されます。