Maneira eficaz de detectar rede NAT dentro do Linux

Maneira eficaz de detectar rede NAT dentro do Linux

No Ubuntu preciso detectar se o endereço IP da rede é um sistema NAT (não precisa de STUN)

Pensei em verificar o tipo de intervalo da classe IP assim:Verifique se o endereço IP está no espaço da rede privada

Mas eu vi outra maneira, usando NETLINK_ROUTE obter o sistema ip local da tabela de rotas da pilha de rede do kernel

Compare esse ip com o ip externo roteável, se forem iguais, a rede não é um sistema nat

Em Perl encontrei um módulo IO::Socket::Netlink::Route, testei e funcionou

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

Mas lendo sobre a rota /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

Sobre Rtnetlink

Rtnetlink allows the kernel's routing tables to be read

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

Já estou usando /sbin/ip route para obter o ip principal da rede ativa, então quero evitar instalar outro módulo, e apenas usei ip route para fazer a detecção do sistema NAT.

Minha abordagem está correta?

informação relacionada