本文基于Debian而写。
不知道干什么用?使用singbox在家搭建一个ss服务端,出门在外,手机配置内网IP分流到此节点,即可畅快使用内网IP访问家中服务!
singbox服务端一键搭建点我
检测自己的nat类型
检测前一定要最大限度减少本地nat,路由器开dmz,或者直接拨号设备测试!
windows
下载 NatTypeTester,如下检测方法,结果是Full Cone则为nat1。

linux
使用python工具,pystun3。
pystun3是pip包管理器安装,确保本机安装好了python3和pip
1 2 3
| pip install pystun3
pystun3
|
结果如下,显示Full Cone则为nat1。

安装natmap
1
| wget -O /usr/bin/natmap https://github.com/heiher/natmap/releases/download/20240303/natmap-linux-arm64 && chmod +x /usr/bin/natmap
|
写入ddns脚本
创建并授权
1
| touch /usr/bin/ddns_natmap && chmod +x /usr/bin/ddns_natmap
|
此ddns脚本需要使用jq
复制下方脚本内容,使用nano写入/usr/bin/ddns_natmap,需要的信息自行补充!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #!/bin/sh
AUTH='' DOMAIN='' RECORD_NAME=''
IP4P=${3}
ZONE=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=${DOMAIN}" \ -H "Authorization: Bearer ${AUTH}" \ -H "Content-Type: application/json" | jq -r '.result[0].id')
RECORD=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${ZONE}/dns_records?type=A&name=${RECORD_NAME}" \ -H "Authorization: Bearer ${AUTH}" \ -H "Content-Type: application/json" | jq -r .result[0].id)
while true; do curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE}/dns_records/${RECORD}" \ -H "Authorization: Bearer ${AUTH}" \ -H "Content-Type:application/json" \ --data "{\"type\":\"AAAA\",\"name\":\"${RECORD_NAME}\",\"content\":\"${IP4P}\",\"ttl\":60,\"proxied\":false}" > /dev/null 2> /dev/null if [ $? -eq 0 ]; then break fi done
|
设置natmap打洞转发
需修改一下自己的转发IP和端口,以及超时时间之类信息
-T 参数是超时时间,默认是120,这个设置其实还是比较重要的,比如通过natmap打洞的隧道连接ssh时,如果120秒空闲的话,会直接断开ssh连接,我一般设置成3600
1 2 3 4 5 6 7 8 9 10 11 12 13
| cat >> /etc/systemd/system/natmap.service << EOF [Unit] Description=natmap server After=network.target
[Service] Type=simple ExecStart=natmap -i eth0 -4 -s stunserver2024.stunprotocol.org -h qq.com -b [任意未使用端口或0(随机端口)] -t [转发的目标IP] -p [转发的目标端口] -T [超时时间秒] -e /usr/bin/ddns_natmap Restart=on-failure
[Install] WantedBy=multi-user.target EOF
|
设置开机自启
1 2 3
| systemctl daemon-reload systemctl start natmap.service systemctl enable natmap.service
|
代理app解析使用
natmap上传的是IP4P格式的IP,普通客户端无法识别,可在iOS上使用sub-store,或者服务器自建sub-store服务来达到解析IP4P的效果!sub-store可以支持几乎所有客户端的转换!
