Как работает нат на шлюзах с tcp/udp разжеванно и понятно. Как коннтрек из обрабатывает - тоже. А вот если пакет - не tcp/udp? Линукс может форвардить и натить icmp, gre, L2TPv3, UDPLite с использованием коннтрека для поддержки информации о псевдосостоянии соединения.
Как это работает? Там хранятся таблицы IP-LANклиента:IP-WANшлюза:IP-WANсервера:Номер-IP-протокола?
Гугл молчит.