もっと詳しく知りたい興味深い質問があります。
以下は、次のルールのリストです。
# ip rule show
0: from all lookup local
32761: from all to 188.40.122.95 lookup vpn
32762: from all to 178.63.26.145 lookup vpn
32763: from all to 176.9.71.146 lookup vpn
32764: from all to 159.69.66.229 lookup vpn
32765: from 192.168.100.0/28 lookup vpn
32766: from all lookup main
32767: from all lookup default
VPNテーブルは以下の通りです
# ip route show table vpn
default dev tun0 scope link
192.168.100.0/28 dev eth0 scope link
IPアドレスにpingを送信すると、88.40.122.95
アウトバウンドインターフェイスはです。ここでデフォルトパスが見つかっtun0
たので理解できます。table vpn
ただし、デフォルトのルートを削除すると、パケットはまだパスを探してインターフェイスを通過できますeth0
。
なぜこれですか?このルールを指定したいです。
32761: from all to 188.40.122.95 lookup vpn
32762: from all to 178.63.26.145 lookup vpn
32763: from all to 176.9.71.146 lookup vpn
32764: from all to 159.69.66.229 lookup vpn
パケットはテーブルの規則に従う必要がありvpn
、テーブルにデフォルト値がないとパケットは失敗します。
この設計を行う理由は、これらのIPに対して生成されたトラフィックが通過して発信することだけを望むためですtun0
。何らかの理由でdefault
ルールが見つからない場合、ルールは失敗するはずです。
答え1
ただし、デフォルトのルートを削除すると、パケットはまだパスを探してインターフェイスeth0を通過できます。
はい、VPNテーブルに一致するエントリがなくなり、ip Routeが次のクエリを実行するためです。
throw
これを防ぐには、VPNテーブルの末尾にパスタイプを使用できます。たとえば、次のようになります。
ip route add throw default table vpn
その後、VPN テーブルにデフォルトのパスがない場合、検索はそこで停止します。
マニュアルページを確認してくださいip-route
。あなたの場合に興味があるかもしれない他のタイプのパス:prohibit
、、unreachable
およびblackhole
。
答え2
ルーティングテーブルに次のルールを追加しました。
ip route add unreachable default metric 100 table vpn
次のように進みます。
➜ ip route show table vpn
default dev tun0 scope link
unreachable default metric 100
192.168.100.0/28 dev eth0 scope link
したがって、デフォルトのルーティングテーブルがある場合はトラフィックが出ることがありますが、デフォルトのルーティングテーブルがないと、そのメトリックを持つルールが一致する100
ため、インターネットにアクセスできなくなります。
テストを経て動作します。マニュアルページを指摘してくれたABとEduardoに感謝します。