Jak funguje překlad ICMP přes NAT?

Jak funguje překlad ICMP přes NAT?
« kdy: 12. 12. 2024, 23:07:27 »
čistě ze zajímavosti , co v conntrack nebo network stacku routerů všech hopů po cestě dělá to, že když nějaký cílový server na odmítnutí TCP spojení (má iptables  -j REJECT) vrátí libovolný ICMP reject , že tento ICMP doputuje správně až ke původcovi za devatero NATy?

Nějak to fungovat musí. Přestože nejde o jeden TCP flow. Jak je to řešeno, co v tom má prsty?
-RELATED
nebo jde o zabudovanou funkcionalitu NATování
-ICMP

zvláštní je taky, že v conntrack nevidím icmp záznam. V conntrack vidím jen icmp pro echo&reply


Re:Jak funguje překlad ICMP přes NAT?
« Odpověď #1 kdy: 13. 12. 2024, 17:01:55 »
Při odmítnutí spojení se zpět posílá ICMP Type-3 (unreachable), jež obsahuje informace o původním paketu v payloadu. Parsováním ICMP odpovědi (zde Type-3 unreachable) - obsahu - zjistí NATující router ke kterému spojení odpověď patří a díky povolenému "RELATED" zprávu správně přepošle. Viz packet capture.

Zdroje ke čtení:
https://networklessons.com/cisco/ccie-routing-switching-written/icmp-internet-control-message-protocol
https://linux.die.net/man/8/iptables

Citace
RELATED -- meaning that the packet is starting a new connection, but is associated with an existing connection, such as an FTP data transfer, or an ICMP error.

jjrsk

  • *****
  • 582
    • Zobrazit profil
Re:Jak funguje překlad ICMP přes NAT?
« Odpověď #2 kdy: 13. 12. 2024, 17:32:04 »
Ja jen doplnim, protoze to zjevne je stale treba opakovat. Zatimco ipv4 se bez icmp obejde a bude to nejak fungovat, tak ipv6 bez icmp nefunguje a to tak ze vubec nijak.

"vdyt sem to z toho 4kovyho firewallu opsal a tam to fungovalo"

Tudiz jakekoli firewallovani icmp na ipv6 je treba velmi zvazit a peclive otestovat.

Re:Jak funguje překlad ICMP přes NAT?
« Odpověď #3 kdy: 13. 12. 2024, 18:08:38 »
Filtrování ICMP u IPv4 je též špatný nápad kvůli hledání síťových problémů a zejména kvůli PMTUD. Také se dost často filtruje UDP traceroute (ano sám mám občas máslo na hlavě).

Zafiltrovat ICMPv6 je stejné, jako zafiltrovat ethertype 0x0806 (ARP) u IPv4. U IPv6 je to ještě pikantnější o ICMP ve ztřetězené hlavičce - což dokáže poměrně pěkně zatopit firewallům. Také se dost často stává, že u ACL se zapomene na local-link IPv6 aresy.

Nicméně to jsme trochu odbočili od původního tématu ...  :-X