Per què DNAT a 127.0.0.1 necessita una cura especial
Enteneu route_localnet quan redirigiu trànsit extern cap a un component proxy lligat al loopback.
Un servei escolta a 127.0.0.1:1080. Una regla DNAT adreça el trànsit entrant a aquesta adreça, però la connexió falla. El servei pot estar sa i la regla NAT pot coincidir: les adreces de loopback IPv4 reben un tractament d'encaminament especial.
El route_localnet del Linux controla si les adreces 127/8 es tracten com a adreces marcianes durant l'encaminament. El valor per defecte conserva el límit habitual del loopback. Una excepció específica d'una interfície pot ser rellevant per a un disseny deliberat de redirecció local.
Això explica per què una regla que funciona en una altra màquina pot dependre d'un sysctl que no heu copiat. No justifica habilitar l'opció a tot arreu.
La suposició de seguretat canvia amb la ruta
El lligam al loopback sovint s'usa perquè un auxiliar no té autenticació de client independent. Si el trànsit que arriba d'una altra interfície es pot encaminar cap allí, l'adreça de lligam per si sola ja no descriu el públic abastable. Restringiu les fonts d'entrada, la destinació i el port en el conjunt de regles real, incloent-hi el trànsit que afirma adreces d'origen o destinació de loopback quan correspongui.
Reviseu l'espai de noms de xarxa que conté el servei. El loopback d'un contenidor no és el del amfitrió, i canviar un paràmetre d'interfície de l'amfitrió no crea automàticament un oient dins del contenidor.
rp_filter respon una pregunta diferent sobre la validació del camí d'origen. Desactivar-lo globalment no és un substitut general per entendre l'encaminament de loopback. De la mateixa manera, ip_nonlocal_bind tracta de lligar sockets a adreces no locals, no de fer correcte aquest camí DNAT.
Finalment, el protocol redirigit ha d'encaixar amb l'oient. Enviar trànsit HTTP o TLS cru a un port SOCKS encara requereix un traductor; una excepció d'encaminament no pot aportar la negociació que falta.