Credo che la risposta che addr-type LOCAL significhi loopback sia sbagliata, perché è solo una risposta parziale ed è estremamente fuorviante.LOCAL significa QUALSIASI IP assegnato su una delle interfacce dell'host, incluso il loopback. Se dici che LOCAL è semplicemente 127.0.0.0/8 (come ha affermato sasanet), lo limiteresti all'interfaccia di loopback, il che è chiaramente sbagliato.
Inoltre, l'IP può anche essere instradabile e pubblico. Per l'host è irrilevante, perché dal suo punto di vista l'IP farà riferimento all'host stesso. Se esegui il curling o il ping all'ip pubblico assegnato su una delle sue interfacce, ovviamente non invierà il pacchetto, lo instraderà localmente.esempio:
indirizzo ip show 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
(come già detto, è ovviamente irrilevante se l'ip è privato o pubblico, purché sia assegnato all'interfaccia di rete)
Una buona spiegazione qui:http://security.maruhn.com/iptables-tutorial/x6330.html
Un'altra discussione a riguardo:http://www.linuxquestions.org/questions/linux-networking-3/wtf-addrtype-in-iptables-manpage-746659/
La terminologia "percorso locale" significa che i pacchetti verranno consegnati "localmente" al tuo host, poiché la destinazione è assegnata a una delle interfacce del tuo host. No significa solo localhost
, come negli indirizzi di loopback (né 169.254/16
come negli indirizzi "link-local").
Linux utilizza il protocollo Netlink per inviare messaggi tra lo spazio del kernel e lo spazio utente:una delle famiglie Netlink in esso è NETLINK_ROUTE
, che può essere utilizzato per ricevere aggiornamenti di routing, modificare indirizzi di interfaccia, etc . Ad esempio, il comando ip-route da iproute2 utilizza this.
Guardando il addrtype
codice sorgente di iptables, vedrai riferimenti a linux/rtnetlink.h
, che definisce RTN_LOCAL
come tipo di messaggio. Il rtnetlink(7)
pagina man descrive RTN_LOCAL
come:
rtm_type Route type
───────────────────────────────────────────────────────────
RTN_LOCAL a local interface route
Niente di tutto questo sembra esattamente chiaro quando lo leggi, e alcuni dei migliori riferimenti che posso trovare sono fonti Internet varie, quindi è comprensibile il motivo per cui c'è confusione.