Dlaczego DNAT na 127.0.0.1 wymaga szczególnej ostrożności
Zrozum route_localnet przy przekierowywaniu ruchu zewnętrznego do komponentu proxy powiązanego z loopbackiem.
Usługa nasłuchuje na 127.0.0.1:1080. Reguła DNAT kieruje ruch przychodzący na ten adres, a jednak połączenie zawodzi. Usługa może być sprawna, a reguła NAT może pasować: adresy loopback IPv4 mają specjalne traktowanie w routingu.
route_localnet w Linuksie określa, czy adresy 127/8 są podczas routingu traktowane jako adresy marsjańskie. Wartość domyślna zachowuje zwykłą granicę loopbacku. Wyjątek dla konkretnego interfejsu może być istotny w zamierzonym projekcie lokalnego przekierowania.
To wyjaśnia, dlaczego działająca reguła z innej maszyny może zależeć od sysctl, którego nie skopiowano. Nie uzasadnia to jednak włączania tej opcji wszędzie.
Założenie bezpieczeństwa zmienia się wraz z trasą
Powiązanie z loopbackiem jest często stosowane, ponieważ komponent pomocniczy nie ma niezależnego uwierzytelniania klientów. Jeśli ruch z innego interfejsu może być tam kierowany, sam adres powiązania nie opisuje już osiągalnego odbiorcy. Ogranicz źródła wejścia, miejsce docelowe i port w rzeczywistym zestawie reguł, w tym ruch deklarujący loopbackowe adresy źródłowe lub docelowe, gdy jest to istotne.
Przejrzyj przestrzeń nazw sieci zawierającą usługę. Loopback kontenera nie jest loopbackiem hosta, a zmiana ustawienia interfejsu hosta nie tworzy automatycznie nasłuchującego procesu w kontenerze.
rp_filter odpowiada na inne pytanie dotyczące walidacji ścieżki źródłowej. Globalne wyłączenie nie jest ogólnym zamiennikiem zrozumienia routingu loopbacku. Podobnie ip_nonlocal_bind dotyczy wiązania gniazd z adresami nie-lokalnymi, a nie tego, by ta ścieżka DNAT była poprawna.
Na koniec przekierowany protokół musi pasować do nasłuchującego procesu. Wysyłanie surowego ruchu HTTP lub TLS do portu SOCKS nadal wymaga translatora; wyjątek w routingu nie zapewni brakującego uzgadniania.