Este projeto é usado para estabelecer um mapeamento de porta TCP/UDP de um endereço público ISP NAT para o endereço privado local. Se todas as camadas de NAT forem cones completos (NAT-1), qualquer host poderá acessar serviços internos através do endereço público mapeado. No modo de ligação, todo o tráfego não passa 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 443No modo TCP, este programa estabelecerá um mapeamento de porta TCP em duas etapas:
Este programa ligará para o script especificado pelo argumento para informar o endereço público após a criação do mapeamento da porta. O script pode atualizar o registro DNS para acesso externo.
Observe que você precisa abrir o firewall para permitir o acesso à porta de ligação.
Rede Goto -> Firewall -> Regras de Trânsito
Adicione uma regra de trânsito:
Se a ligação da porta falhar porque já estiver em uso, este programa tentará descobrir qual processo de serviço local ocupa a porta e ativará a reutilização da porta remotamente. Isso funciona no Linux Kernel 5.6 e posterior e precisa ser executado 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 443Semelhante ao modo de ligação, este programa ouvirá na porta vinculada, aceita conexões recebidas e as encaminhará para o endereço de destino.
Outra maneira é usar o DNAT do Firewall para encaminhar, e dessa maneira deve usar o modo de ligação.
Rede GOTO -> Firewall -> Port Forwards
Adicione uma regra de porta para a frente:
{public-addr} {public-port} {ip4p} {private-port} {protocol} {private-addr}
O formato de endereço IP4P usa endereços especiais IPv6 para codificar endereços e portas IPv4 para facilitar a distribuição através dos registros DNS AAAA.
2001::{port}:{ipv4-hi16}:{ipv4-lo16}
Mit