addr-type LOCAL がループバックを意味するという答えは間違っていると思います。なぜなら、それは部分的な答えであり、非常に誤解を招くからです.LOCAL は、ループバックを含む、ホストのインターフェイスの 1 つに割り当てられた IP を意味します。 LOCAL が単純に 127.0.0.0/8 であると言う場合 (sasanet が述べているように)、それをループバック インターフェイスに限定することになりますが、これは明らかに間違っています。
さらに、IP はルーティング可能でパブリックにすることもできます。ホストの観点からは、IP はホスト自体を参照するため、これは無関係です。インターフェイスに割り当てられたパブリック IP に curl または ping を実行すると、パケットは明らかに送信されず、ローカルにルーティングされます。例:
IP アドレスは dev eth0 を表示します:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 0a:e7:8b:89:d5:f4 brd ff:ff:ff:ff:ff:ff
inet 172.31.20.254/20 brd 172.31.31.255 scope global dynamic eth0
valid_lft 3110sec preferred_lft 3110sec
ip route show table local:
local 172.31.20.254 dev eth0 proto kernel scope host src 172.31.20.254
(既に述べたように、IP がネットワーク インターフェイスに割り当てられている限り、IP がプライベートかパブリックかは明らかに無関係です)
ここでかなり良い説明:http://security.maruhn.com/iptables-tutorial/x6330.html
それに関する別の議論:http://www.linuxquestions.org/questions/linux-networking-3/wtf-addrtype-in-iptables-manpage-746659/
「ローカル ルート」という用語は、宛先がホストのインターフェイスの 1 つに割り当てられているため、パケットがホストに「ローカルに」配信されることを意味します。 しない localhost
のみを意味します 、ループバック アドレスのように (または 169.254/16
「リンクローカル」アドレスのように)。
Linux は Netlink プロトコルを使用して、カーネル空間とユーザー空間の間でメッセージを送信します。その中の Netlink ファミリの 1 つは NETLINK_ROUTE
です。 、ルーティング アップデートの受信、インターフェイス アドレスの変更などに使用できます。 .たとえば、iproute2 の ip-route コマンドはこれを使用します。
addrtype
を見ると iptables のソース コードでは、linux/rtnetlink.h
への参照が表示されます。 RTN_LOCAL
を定義する メッセージタイプとして。 rtnetlink(7)
man ページでは RTN_LOCAL
について説明しています として:
rtm_type Route type
───────────────────────────────────────────────────────────
RTN_LOCAL a local interface route
これについて読んでもはっきりとわかるものはなく、私が見つけることができる最良の参考文献のいくつかはさまざまなインターネット ソースであるため、混乱が生じる理由は理解できます。