이 프로젝트는 ISP NAT 공개 주소에서 지역 개인 주소로 TCP/UDP 포트 매핑을 설정하는 데 사용됩니다. NAT의 모든 층이 전체 콘 (NAT-1) 인 경우, 모든 호스트는 매핑 된 공개 주소를 통해 내부 서비스에 액세스 할 수 있습니다. BIND 모드에서는 모든 트래픽 이이 프로그램을 거치지 않습니다.
中文文档
git clone --recursive https://github.com/heiher/natmap.git
cd natmap
make
# statically link
make ENABLE_STATIC=1
# cross compile
make CROSS_PREFIX= ${cross-toolchain} /bin/x86_64-unknown-linux-
# android
mkdir natmap
cd natmap
git clone --recursive https://github.com/heiher/natmap.git jni
ndk-build Usage:
natmap [options]
Options:
-4 use IPv4
-6 use IPv6
-u UDP mode
-d run as daemon
-i <interface> network interface or IP address
-k <interval> seconds between each keep-alive
-s <addr>[:port] domain name or address of STUN server
-h <addr>[:port] domain name or address of HTTP server
-e <path> script path for notify mapped address
-f <mark> fwmark value (hex: 0x1, dec: 1, oct: 01)
Bind options:
-b <port>[-port] port number range for binding
- <0>: random allocation
- <port>: specified
- <port>-<port>: sequential allocation within the range
Forward options:
-T <timeout> port forwarding timeout in seconds
-t <address> domain name or address of forward target
-p <port> port number of forward target (0: use public port)
# TCP
natmap -s turn.cloudflare.com -h example.com -b 80
# UDP
natmap -u -s turn.cloudflare.com -b 443TCP 모드 에서이 프로그램은 두 단계로 TCP 포트 매핑을 설정합니다.
그런 다음이 프로그램은 포트 매핑이 설정된 후 공개 주소를 알리기 위해 인수에 의해 지정된 스크립트를 호출합니다. 스크립트는 외부 액세스를 위해 DNS 레코드를 업데이트 할 수 있습니다.
바인드 포트에 액세스 할 수 있도록 방화벽을 열어야합니다.
GOTO 네트워크 -> 방화벽 -> 트래픽 규칙
트래픽 규칙 추가 :
포트 바인딩이 이미 사용 중이기 때문에 고장이 발생하면이 프로그램은 어떤 로컬 서비스 프로세스가 포트를 차지하고 포트 재사용을 원격으로 활성화하려고합니다. 이것은 Linux 커널 5.6 이상에서 작동하며 루트로 실행해야합니다.
# TCP
natmap -s turn.cloudflare.com -h example.com -b 80 -t 10.0.0.2 -p 80
# UDP
natmap -u -s turn.cloudflare.com -b 443 -t 10.0.0.2 -p 443BIND 모드와 마찬가지로이 프로그램은 바운드 포트에서 듣고 들어오는 연결을 수락하고 대상 주소로 전달합니다.
또 다른 방법은 방화벽의 DNAT를 사용하여 전진하는 것이며,이 방법은 바인드 모드를 사용해야합니다.
GOTO 네트워크 -> 방화벽 -> 포트 포워드
포트 포워드 규칙 추가 :
{public-addr} {public-port} {ip4p} {private-port} {protocol} {private-addr}
IP4P 주소 형식은 IPv6 특수 주소를 사용하여 DNS AAAA 레코드를 통해 쉽게 배포하기 위해 IPv4 주소와 포트를 인코딩합니다.
2001::{port}:{ipv4-hi16}:{ipv4-lo16}
MIT