Manera efectiva de detectar la red NAT dentro de Linux

Manera efectiva de detectar la red NAT dentro de Linux

En Ubuntu necesito detectar si la dirección IP de la red es un sistema NAT (no es necesario STUN)

Pensé en verificar el tipo de rango de clase de IP de esta manera:Compruebe si la dirección IP está en un espacio de red privado

Pero vi otra forma: usar NETLINK_ROUTE para obtener el sistema IP local de la tabla de rutas de la pila de red del kernel.

Compare esa ip con la ip externa enrutable, si son iguales, la red no es un sistema nat

En Perl encontré un módulo IO::Socket::Netlink::Route, lo probé y funcionó

https://metacpan.org/pod/release/PEVANS/Socket-Netlink-Route-0.05/lib/IO/Socket/Netlink/Route.pm

Pero leyendo sobre la ruta /sbin/ip:

All operations with the ip route command are atomic, so each command will return either RTNETLINK answers

http://linux-ip.net/html/tools-ip-route.html

Acerca de Rtnetlink

Rtnetlink allows the kernel's routing tables to be read

https://man7.org/linux/man-pages/man7/rtnetlink.7.html

Ya estoy usando la ruta /sbin/ip para obtener la IP principal de la red activa, por lo que quiero evitar instalar otro módulo y solo usé la ruta IP para realizar la detección del sistema NAT.

¿Es correcto mi enfoque?

información relacionada