https://unsplash.com/photos/sxtgi626e60
前景提要,natter 可以 TCP “打洞” https://www.v2ex.com/t/879549
打洞需要 FullCone(NAT1)
NATMap 是 natter 的 C 语言 port
luci-app-natmap 是 NATMap 的 luci 界面,主要用来配置 NATMap
原来的 luci-app-natmap 功能比较简单,所有功能都需要通过通知脚本来实现,考虑到有小伙伴并不会写脚本又有这方面的需求,而 NATMap 又有几个典型的应用场景,就把这几个使用场景内置到了 NATMap OpenWrt 版的中,需要配置对应功能使用的小伙伴可以只填入必要的配置信息即可,介绍一下几种典型应用吧
配合 qBittorrent/Transmission 实现无公网 IP 做种
受 https://github.com/Mythologyli/qBittorrent-NAT-TCP-Hole-Punching 启发,通过将 qBittorrent 的端口改成打洞后得到的端口,使 tracker 上报的端口和 IP 和实际能接受入站流量的端口一致,拿得其他节点可以正常连上自己的做种软件,达到拔号拿不到公网 IP 的情况下依然可以做种
使用 luci-app-natmap 配置
注意转发端口应该填写 0 ,因为 qBittorrent 端口会在打洞成功后被修改,填 0 后,会配置流量转发到修改后的端口
配合 Emby Connect 实现无公网 IP 随时随地连接家中的 Emby 服务器
使用 NATMap 打洞后就可以通过公网 IP 加运营商分配的端口来连接了,因为端口是变的,在用 Emby 的时候如果端口变了就要重新输入,体验就会很差,还好 Emby 有 提供一个 Emby Connect 服务,其作用有点类似 DDNS ,在 Emby 服务器上将账号和 Emby Connect 账号关联起来,客户端通过 Connect 账户登录,连接服务器时可以通过 Connect 服务器获得最新的地址和端口以用于连接,这样即使端口变了,客户端也是无感的,打开就能连上,体验和有公网 IP 基本相当
Emby 后台配置,在网络下,配置端口号和地址,地址通常会使用 DDNS 的域名,这个看自己吧
然后在 luci-app-natmap 中配置 Emby 地址和 API key 即可,端口变化后会通过 API 配置外网端口号,API 调用完成后最新的端口号就会被更新到 Connect 的服务器 https://emby.media/community/index.php?/topic/116636-what-will-do-when-client-apps-get-307-response-code/&do=findComment&comment=1233694
API Key 可以在 Emby 后台拿到
luci-app-natmap 配置
配合 Trojan/Shadowsocks 等等实现异地组网回家
这个使用场景主要解决代理客户端如 Surge/Stash 等怎么拿到最新的端口号的问题,我的博客文章有详细的介绍
https://imciel.com/2023/04/07/connect-to-home-without-public-ipv4/
简单来讲就是在端口号更新时通过 Surgio 更新 Proxy Provider 并在客户端配置一个定时更新,基本上也就无感知了,可以随时随地「回家」了
|
|
使用以及代码
代码在 https://github.com/EkkoG/openwrt-natmap https://github.com/EkkoG/luci-app-natmap
预编译文件在 https://github.com/EkkoG/openwrt-dist
可以根据自己的设备添加 feed 安装或者根据架构选择分支手动下载安装