In Ubuntu muss ich feststellen, ob die Netzwerk-IP-Adresse ein NAT-System ist (STUN ist nicht erforderlich).
Ich dachte, ich könnte den IP-Klassenbereichstyp folgendermaßen überprüfen:Überprüfen Sie, ob sich die IP-Adresse im privaten Netzwerkbereich befindet
Aber ich habe einen anderen Weg gesehen, mit NETLINK_ROUTE das lokale IP-System aus der Routentabelle des Kernel-Netzwerkstapels abzurufen
Vergleichen Sie diese IP mit der externen routbaren IP. Wenn sie gleich sind, handelt es sich bei dem Netzwerk nicht um ein NAT-System.
In Perl habe ich ein Modul IO::Socket::Netlink::Route gefunden, ich habe es getestet und es funktioniert
https://metacpan.org/pod/release/PEVANS/Socket-Netlink-Route-0.05/lib/IO/Socket/Netlink/Route.pm
Aber wenn man über die /sbin/ip-Route liest:
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
Über Rtnetlink
Rtnetlink allows the kernel's routing tables to be read
https://man7.org/linux/man-pages/man7/rtnetlink.7.html
Ich verwende bereits /sbin/ip route, um die Haupt-IP des aktiven Netzwerks zu erhalten, daher möchte ich die Installation eines weiteren Moduls vermeiden und verwende IP route nur zur Erkennung des NAT-Systems.
Ist mein Ansatz richtig?