Ce projet est utilisé pour établir une cartographie de port TCP / UDP d'une adresse publique NAT ISP à l'adresse privée locale. Si toutes les couches de NAT sont des cônes complets (NAT-1), tout hôte peut accéder aux services internes via l'adresse publique cartographiée. En mode Bind, tout le trafic ne passe pas par ce programme.
中文文档
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 mode TCP, ce programme établira un mappage de port TCP en deux étapes:
Ce programme appellera ensuite le script spécifié par l'argument pour informer l'adresse publique après l'établissement de la cartographie du port. Le script peut mettre à jour l'enregistrement DNS pour l'accès externe.
Veuillez noter que vous devez ouvrir le pare-feu pour permettre l'accès au port de liaison.
GOTO Network -> pare-feu -> Règles de trafic
Ajouter une règle de trafic:
Si la liaison du port échoue car elle est déjà utilisée, ce programme essaiera de savoir quel processus de service local occupe le port et activera la réutilisation à distance. Cela fonctionne dans Linux Kernel 5.6 et plus tard, et doit fonctionner en tant que racine.
# 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 443Semblable au mode Bind, ce programme écoutera sur le port lié, accepte les connexions entrantes et les transmet à l'adresse cible.
Une autre façon consiste à utiliser le DNAT du pare-feu pour avancer, et de cette façon devrait utiliser le mode Bind.
GOTO Network -> pare-feu -> Port Forward
Ajoutez une règle de transfert de port:
{public-addr} {public-port} {ip4p} {private-port} {protocol} {private-addr}
Le format d'adresse IP4P utilise des adresses spéciales IPv6 pour coder les adresses et ports IPv4 pour une distribution facile via des enregistrements DNS AAAA.
2001::{port}:{ipv4-hi16}:{ipv4-lo16}
Mit