
インターフェイスが2つあるホストがあります。 ens4 は mgmnt、ens3 は別のネットワークです。
# ip -br a | sort
ens1 DOWN
ens2 DOWN
ens3 UP 172.16.10.1
ens4 UP 192.168.1.100
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.100 0.0.0.0 UG 0 0 0 ens4
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens4
172.16.10.1 0.0.0.0 255.255.255.0 U 0 0 0 ens3
ens3へのすべてのトラフィックを独自のルーティングテーブルに配置し、そのインターフェイスに到着するトラフィックがローカルルーティングテーブルに到達しないようにしたいと思います。
私は以下を試しました:
- 新しいテーブルを作成しました。
echo "100 custom" > /etc/iproute2/rt_table
- トラフィックと一致するようにルートとルールを追加します。
# ip route add 172.16.10.0/24 dev ens3 table custom
# ip rule add from 172.16.10.0/24 table custom
# ip route show table custom
172.16.10.0/24 dev ens3 scope link
# ip rule list
0: from all lookup local
32765: from 172.16.10.0/24 lookup custom
32766: from all lookup main
32767: from all lookup default
しかし、ブロードキャストとローカルトラフィックがまだメインテーブルにあることを確認しました。
# ip route show table all | grep 172.16.10
172.16.10.0/24 dev ens3 scope link
broadcast 172.16.10.0 dev ens3 table local proto kernel scope link src 172.16.10.1
local 172.16.10.1 dev ens3 table local proto kernel scope host src 172.16.10.1
broadcast 172.16.10.255 dev ens3 table local proto kernel scope link src 172.16.10.1
したがって、直接接続されたルートをルーティングすることはできません。解決策は、インターフェイスとルーティングテーブルを名前空間に配置することです。ブロードキャストとローカルパスを別のルーティングテーブルに移動できますか?問題は、ip address
ドアを追加する方法だと思いますip rule
が、わかりません。
やりたいことができるかどうかを知っている人はいますか?
答え1
調べました。追加されたルーティングルールを削除し、ルーティングを介して再度追加する必要があります。
#ip route del 172.16.10.0/24 dev ens3 table custom
#ip route add 172.16.10.0/24 dev ens3 table custom via 172.16.10.1
# ip route show table custom
172.16.10.0/24 dev ens3 scope link
172.16.10.0/24 via 172.16.1 dev ens3