Waarom DNAT naar 127.0.0.1 speciale zorg vereist
Begrijp route_localnet bij het doorsturen van extern verkeer naar een aan loopback gebonden proxycomponent.
Een dienst luistert op 127.0.0.1:1080. Een DNAT-regel stuurt inkomend verkeer naar dat adres, maar de verbinding mislukt. De dienst kan gezond zijn en de NAT-regel kan overeenkomen: IPv4-loopbackadressen krijgen een speciale routeringsbehandeling.
De route_localnet van Linux bepaalt of adressen uit 127/8 tijdens routering als Mars-adressen worden behandeld. De standaardwaarde behoudt de gebruikelijke loopbackgrens. Een uitzondering voor een specifieke interface kan relevant zijn voor een bewust lokaal doorstuurontwerp.
Dat verklaart waarom een werkende regel van een andere machine kan afhangen van een sysctl die u niet hebt gekopieerd. Het rechtvaardigt niet om de optie overal aan te zetten.
De beveiligingsaanname verandert met de route
Een loopbackbinding wordt vaak gebruikt omdat een hulpprogramma geen onafhankelijke clientauthenticatie heeft. Als verkeer van een andere interface daarheen kan worden gerouteerd, beschrijft het bindadres alleen niet langer het bereikbare publiek. Beperk de inkomende bronnen, bestemming en poort in de feitelijke regelset, inclusief verkeer dat loopback-bron- of bestemmingsadressen claimt waar dat relevant is.
Beoordeel de netwerknaamruimte die de dienst bevat. De loopback van een container is niet die van de host, en het wijzigen van een host-interface-instelling maakt niet automatisch een luisteraar in de container.
rp_filter beantwoordt een andere vraag over validatie van het bronpad. Het wereldwijd uitschakelen is geen algemene vervanging voor het begrijpen van loopbackroutering. Evenzo gaat ip_nonlocal_bind over het binden van sockets aan niet-lokale adressen, niet over het correct maken van dit DNAT-pad.
Ten slotte moet het doorgestuurde protocol bij de luisteraar passen. Rauw HTTP- of TLS-verkeer naar een SOCKS-poort sturen vereist nog steeds een vertaler; een routeringsuitzondering kan de ontbrekende onderhandeling niet leveren.