Ich glaube, die Antwort, dass addr-type LOCAL Loopback bedeutet, ist falsch, weil es nur eine Teilantwort ist und extrem irreführend ist. LOCAL bedeutet JEDE IP, die einer der Schnittstellen des Hosts zugewiesen ist, einschließlich Loopback. Wenn Sie sagen, dass LOCAL einfach 127.0.0.0/8 ist (wie sasanet angegeben hat), dann würden Sie es auf die Loopback-Schnittstelle beschränken, was schlichtweg falsch ist.
Darüber hinaus kann die IP sogar routingfähig und öffentlich sein. Für den Host ist es irrelevant, da sich diese IP aus seiner Sicht auf den Host selbst bezieht. Wenn Sie die öffentliche IP-Adresse, die einer seiner Schnittstellen zugewiesen ist, curlen oder pingen, wird es das Paket offensichtlich nicht versenden, sondern lokal weiterleiten. Beispiel:
IP-Adresse zeigt 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
(wie bereits gesagt, ist es offensichtlich irrelevant, ob die ip privat oder öffentlich ist, solange sie der netzwerkschnittstelle zugewiesen ist)
Ziemlich gute Erklärung hier:http://security.maruhn.com/iptables-tutorial/x6330.html
Eine weitere Diskussion darüber:http://www.linuxquestions.org/questions/linux-networking-3/wtf-addrtype-in-iptables-manpage-746659/
Die Terminologie „lokale Route“ bedeutet, dass die Pakete „lokal“ an Ihren Host geliefert werden, da das Ziel einer der Schnittstellen Ihres Hosts zugewiesen ist. Das tut es nicht bedeutet nur localhost
, wie in Loopback-Adressen (oder 169.254/16
wie in "link-local"-Adressen).
Linux verwendet das Netlink-Protokoll, um Nachrichten zwischen Kernel-Space und User-Space zu senden – eine der darin enthaltenen Netlink-Familien ist NETLINK_ROUTE
, die verwendet werden kann, um Routing-Updates zu erhalten, Schnittstellenadressen zu ändern, etc . Beispielsweise verwendet der Befehl ip-route von iproute2 dies.
Betrachten wir die addrtype
Quellcode von iptables sehen Sie Verweise auf linux/rtnetlink.h
, der RTN_LOCAL
definiert als Nachrichtentyp. Die rtnetlink(7)
Manpage beschreibt RTN_LOCAL
als:
rtm_type Route type
───────────────────────────────────────────────────────────
RTN_LOCAL a local interface route
Nichts davon fühlt sich ganz klar an, wenn Sie darüber lesen, und einige der besten Referenzen, die ich finden kann, sind verschiedene Internetquellen, daher ist es verständlich, warum es Verwirrung gibt.