
私のマシンでコマンドを入力するとip rule show
、次のような出力が得られます。
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
数字は0、32766そして32767平均?
これらは優先事項であることは理解していますが、0特別な優先度があり、削除できません。
また、新しいポリシーを追加すると、優先度が次のように作成されます。32765私の理解は正しいでしょうか?
また、優先度に関する情報もいくつかありip rule add
ますここ。
実際、歴史的な理由により、ip rule add は優先度値を必要とせず、一意でなくてもかまいません。ユーザーが優先度を指定しない場合は、カーネルによって選択されます。ユーザーが、すでに存在する優先度値を持つルールを作成した場合、カーネルは要求を拒否しません。カーネルは、同じ優先度を持つすべての古いルールの前に新しいルールを追加します。これは設計上の間違いであり、もはや間違いではありません。いつか修正されるでしょうから、この機能に頼らないでください。明示的な優先度を使用してください。
答え1
マニュアルページよりip-rule
:
起動時に、カーネルは次の 3 つのルールで構成されるデフォルトの RPDB を構成します。
1. Priority: 0, Selector: match anything, Action: lookup routing table local (ID 255). The local table is a special routing table containing high priority control routes for local and broadcast addresses. Rule 0 is special. It cannot be deleted or overridden. 2. Priority: 32766, Selector: match anything, Action: lookup routing table main (ID 254). The main table is the normal routing table containing all non-policy routes. This rule may be deleted and/or overridden with other ones by the administrator. 3. Priority: 32767, Selector: match anything, Action: lookup routing table default (ID 253). The default table is empty. It is reserved for some post-processing if no previous default rules selected the packet. This rule may also be deleted. Each RPDB entry has additional attributes. F.e. each rule has a pointer to some routing table. NAT and masquerading rules have an attribute to select new IP address to translate/masquerade. Besides that, rules have some optional attributes, which routes have, namely realms. These values do not override those contained in the routing tables. They are only used if the route did not select any attributes.
したがって、0、32766、32767 という数字は、ルールが適用される優先順位です。
注記:上記の他の番号 255、254、および 253 は、このファイルで説明されているルーティング テーブルに対応します。
$ more /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
上記の名前は、次のようにルーティング テーブルを照会するときに使用できます。
$ ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 172.17.0.0 dev docker0 proto kernel scope link src 172.17.42.1
local 172.17.42.1 dev docker0 proto kernel scope host src 172.17.42.1
broadcast 172.17.255.255 dev docker0 proto kernel scope link src 172.17.42.1
broadcast 192.168.1.0 dev wlp1s0 proto kernel scope link src 192.168.1.80
local 192.168.1.80 dev wlp1s0 proto kernel scope host src 192.168.1.80
broadcast 192.168.1.255 dev wlp1s0 proto kernel scope link src 192.168.1.80