โครงการนี้ใช้เพื่อสร้างการแมปพอร์ต TCP/UDP จากที่อยู่สาธารณะ ISP NAT ไปยังที่อยู่ส่วนตัวในท้องถิ่น หากเลเยอร์ทั้งหมดของ 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 443ในโหมด TCP โปรแกรมนี้จะสร้างการแมปพอร์ต TCP ในสองขั้นตอน:
โปรแกรมนี้จะเรียกสคริปต์ที่ระบุโดยอาร์กิวเมนต์เพื่อแจ้งที่อยู่สาธารณะหลังจากสร้างการแมปพอร์ต สคริปต์สามารถอัปเดตบันทึก DNS สำหรับการเข้าถึงภายนอก
โปรดทราบว่าคุณต้องเปิดไฟร์วอลล์เพื่ออนุญาตให้เข้าถึงพอร์ต BIND
Goto Network -> Firewall -> กฎจราจร
เพิ่มกฎการจราจร:
หากการเชื่อมโยงพอร์ตล้มเหลวเนื่องจากมีการใช้งานแล้วโปรแกรมนี้จะพยายามค้นหากระบวนการบริการท้องถิ่นใดที่ใช้งานพอร์ตและเปิดใช้งานพอร์ตซ้ำจากระยะไกล สิ่งนี้ใช้งานได้ใน Linux Kernel 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 443คล้ายกับโหมด BIND โปรแกรมนี้จะฟังบนพอร์ตที่ถูกผูกไว้ยอมรับการเชื่อมต่อที่เข้ามาและส่งต่อไปยังที่อยู่เป้าหมาย
อีกวิธีหนึ่งคือการใช้ DNAT ของไฟร์วอลล์ไปข้างหน้าและวิธีนี้ควรใช้โหมดการผูก
Goto Network -> Firewall -> Port Forwards
เพิ่มกฎการส่งต่อพอร์ต:
{public-addr} {public-port} {ip4p} {private-port} {protocol} {private-addr}
รูปแบบที่อยู่ IP4P ใช้ที่อยู่พิเศษ IPv6 เพื่อเข้ารหัสที่อยู่ IPv4 และพอร์ตเพื่อการแจกแจงแบบง่าย ๆ ผ่านบันทึก DNS AAAA
2001::{port}:{ipv4-hi16}:{ipv4-lo16}
มิกซ์