OpenVPNでIPredator VPNを使用していますが、接続が切断された場合、VPNなしではインターネットからデータを送信しません。 iptablesとrangeでそれができると聞きました。どうやってやるの?また、VPNが割り当てているIPの範囲を確認するにはどうすればよいですか?
VPNを開始する前に、netstat -rn
およびifconfig -a
のコピーを取得してください。 VPNを開始すると、これら2つのコマンドの違いにより、VPNがルートに関して作成するネットワークと、それらのネットワークの可視性を得るために割り当てられているIPがわかります。また、VPNを提供するサーバーのIPを取得する必要があります(またはトラフィックto VPNサーバーがIPに到達しません)。また、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
PCからインターネットへのトラフィックOUTBOUND
を停止し、VPNサーバーとそれが提供するネットワークへのトラフィックのみを許可するには、これで十分です。
OPは、Arch Linuxにはnetstat
またはifconfig
が同梱されていないことを指摘しています。その場合の選択肢は次のとおりです。
ip addr show
はインターフェースを表示し、ip route show
は現在のルートを表示します。