Creo que la respuesta de que addr-type LOCAL significa bucle invertido es incorrecta, porque es solo una respuesta parcial y es extremadamente engañosa. LOCAL significa CUALQUIER IP asignada en una de las interfaces del host, incluido el bucle invertido. Si dice que LOCAL es simplemente 127.0.0.0/8 (como ha dicho sasanet), entonces lo limitaría a la interfaz de bucle invertido, lo cual es completamente incorrecto.
Además, la IP puede incluso ser enrutable y pública. Para el anfitrión es irrelevante, porque desde su perspectiva esa IP se referirá al propio anfitrión. Si hace curl o hace ping a la IP pública asignada en una de sus interfaces, obviamente no enviará el paquete, lo enrutará localmente. Ejemplo:
dirección IP mostrar 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
ruta ip mostrar tabla local:
local 172.31.20.254 dev eth0 proto kernel scope host src 172.31.20.254
(como ya se dijo, obviamente es irrelevante si la ip es privada o pública, siempre que esté asignada a la interfaz de red)
Muy buena explicación aquí:http://security.maruhn.com/iptables-tutorial/x6330.html
Otra discusión al respecto:http://www.linuxquestions.org/questions/linux-networking-3/wtf-addrtype-in-iptables-manpage-746659/
La terminología "ruta local" significa que los paquetes se entregarán "localmente" a su host, porque el destino está asignado a una de las interfaces de su host. no solo significa localhost
, como en direcciones loopback (ni 169.254/16
como en las direcciones "enlace-local").
Linux usa el protocolo Netlink para enviar mensajes entre el espacio del kernel y el espacio del usuario; una de las familias de Netlink que contiene es NETLINK_ROUTE
, que se puede utilizar para recibir actualizaciones de enrutamiento, modificar direcciones de interfaz, etc . Por ejemplo, el comando ip-route de iproute2 usa esto.
Mirando el addrtype
código fuente de iptables, verá referencias a linux/rtnetlink.h
, que define RTN_LOCAL
como un tipo de mensaje. El rtnetlink(7)
página man describe RTN_LOCAL
como:
rtm_type Route type
───────────────────────────────────────────────────────────
RTN_LOCAL a local interface route
Nada de esto se siente exactamente claro cuando lo lees, y algunas de las mejores referencias que puedo encontrar son varias fuentes de Internet, por lo que es comprensible por qué hay confusión.