Этот проект используется для создания картирования порта TCP/UDP из общедоступного адреса ISP NAT на местный частный адрес. Если все слои NAT являются полными конусами (NAT-1), любой хост может получить доступ к внутренним услугам через карту общедоступного адреса. В режиме привязки весь трафик не проходит эту программу.
中文文档
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 -> Брандмауэр -> Правила трафика
Добавить правило трафика:
Если привязка порта не удается, потому что она уже используется, эта программа попытается выяснить, какой локальный процесс обслуживания занимает порт и включает в себя повторное использование порта. Это работает в ядре 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 443Подобно режиму Bind, эта программа будет прослушиваться на связанном порту, принимает входящие подключения и пересылает их на целевой адрес.
Другим способом является использование DNAT брандмауэра для вперед, и этот способ должен использовать режим привязки.
Goto Network -> Брандмауэр ->
Добавить правило первого порта:
{public-addr} {public-port} {ip4p} {private-port} {protocol} {private-addr}
Формат адреса IP4P использует специальные адреса IPv6 для кодирования адресов и портов IPv4 для удобного распространения через записи DNS AAAA.
2001::{port}:{ipv4-hi16}:{ipv4-lo16}
Грань