Linux 내부에서 NAT 네트워크를 감지하는 효과적인 방법

Linux 내부에서 NAT 네트워크를 감지하는 효과적인 방법

Ubuntu에서는 네트워크 IP 주소가 NAT 시스템인지 감지해야 합니다(STUN 필요 없음).

나는 다음과 같이 IP 클래스 범위 유형을 확인한다고 생각했습니다.IP 주소가 사설망 공간에 있는지 확인

하지만 다른 방법은 NETLINK_ROUTE를 사용하여 커널 네트워크 스택의 경로 테이블에서 로컬 IP 시스템을 가져오는 것을 보았습니다.

해당 IP를 라우팅 가능한 외부 IP와 비교합니다. 동일하면 네트워크는 NAT 시스템이 아닙니다.

Perl에서 IO::Socket::Netlink::Route 모듈을 찾았고 테스트하고 작업했습니다.

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

그러나 /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

Rtnetlink 소개

Rtnetlink allows the kernel's routing tables to be read

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

나는 활성 네트워크의 기본 IP를 얻기 위해 이미 /sbin/ip 경로를 사용하고 있으므로 다른 모듈을 설치하는 것을 피하고 NAT 감지 시스템을 수행하기 위해 ip 경로를 사용했습니다.

내 접근 방식이 맞습니까?

관련 정보