Este proyecto se utiliza para establecer una asignación de puertos TCP/UDP desde una dirección pública ISP NAT a la dirección privada local. Si todas las capas de NAT son conos completos (NAT-1), cualquier host puede acceder a los servicios internos a través de la dirección pública asignada. En el modo de enlace, todo el tráfico no pasa por este programa.
中文文档
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 443En el modo TCP, este programa establecerá una asignación de puerto TCP en dos pasos:
Este programa llamará al script especificado por el argumento para informar la dirección pública después de establecer la asignación de puertos. El script puede actualizar el registro DNS para acceso externo.
Tenga en cuenta que debe abrir el firewall para permitir el acceso al puerto de enlace.
GOTO Network -> Firewall -> Reglas de tráfico
Agregue una regla de tráfico:
Si el enlace de puerto falla porque ya está en uso, este programa intentará averiguar qué proceso de servicio local ocupa el puerto y habilita la reutilización del puerto de forma remota. Esto funciona en Linux Kernel 5.6 y posterior, y necesita ejecutarse como root.
# 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 443Similar al modo de enlace, este programa escuchará en el puerto unido, acepta conexiones entrantes y las reenviará a la dirección de destino.
Otra forma es usar el DNAT del firewall para reenviar, y de esta manera debería usar el modo de enlace.
GOTO Network -> Firewall -> Puerto hacia adelante
Agregue una regla de reenvío del puerto:
{public-addr} {public-port} {ip4p} {private-port} {protocol} {private-addr}
El formato de dirección IP4P utiliza direcciones especiales IPv6 para codificar direcciones y puertos IPv4 para una fácil distribución a través de registros DNS AAAA.
2001::{port}:{ipv4-hi16}:{ipv4-lo16}
MIT