GitHub: https://github.com/MikeWang000000/Natter
Natter 是一个 “TCP 打洞” 工具。它可以将 NAT 1 网络下的 TCP 端口直接暴露至公网,达到公网 IP 相似效果。
详细介绍在这里:/t/879549
今年比较忙,先前规划的新版 Natter ,今天终于发布了第一版候选版本:v2.0.0-rc1
Natter v2 完全重写了之前的代码,改动也比较大,主要目的是适配 Docker 。
Natter v2 取消了配置文件的设计,并且重新设计了命令行参数,单个实例仅负责单个端口。
这样仅通过 docker-compose.yml 就能调整所有配置,无需再去改 Natter 的配置文件。
快速开始:
docker run --net=host --rm nattertool/natter
打洞成功,则可以访问公网端口打开测试页面。
快速启动一个 Nginx + Natter 的服务:
git clone 'https://github.com/MikeWang000000/Natter'
cd Natter/natter-docker/nginx
docker compose up
快速启动一个 qBittorrent + Natter 的服务(与公网同等体验,qB 显示公网绿色标识):
git clone 'https://github.com/MikeWang000000/Natter'
cd Natter/natter-docker/qbittorrent
docker compose up
Docker 中使用 Natter 的详细文档:
https://github.com/MikeWang000000/Natter/blob/master/natter-docker/README.md
欢迎大家测试找 bug ~
同时感谢以下项目使用不同语言实现了 Natter 相似的功能:
供大家参考。
|      1super5xy      2023-12-31 15:26:14 +08:00  1 好东西 | 
|      2nullptrexp      2023-12-31 16:38:13 +08:00  1 好东西 | 
|  |      3heiher      2023-12-31 17:47:55 +08:00 via Android  1 好东西,感谢作者 | 
|  |      4cy18      2023-12-31 20:01:15 +08:00  1 如果有办法在 dns 记录里面把端口信息加进去,或者弄个 url 跳转之类的,那用起来就方便了。 | 
|  |      5mikewang OP @cy18  SRV 记录端口信息参考: https://github.com/MikeWang000000/Natter/tree/master/natter-docker/minecraft URL 跳转参考: https://github.com/MikeWang000000/Natter/tree/master/natter-docker/nginx-cloudflare 这两个示例都是 CloudFlare API 的实现。 | 
|      6chenqh      2023-12-31 20:22:05 +08:00  3 比我强多了,py 网络我只会用 requests.. | 
|  |      7GoodRui      2023-12-31 22:05:47 +08:00 via Android  1 看起来不错啊!支持大佬~ | 
|  |      8SenLief      2023-12-31 22:13:19 +08:00  1 没有公网的能不能用?好像也不是 NAT1 | 
|  |      10zhcode      2024-01-01 00:30:35 +08:00  1 感谢大佬,一直在用 | 
|  |      11jqtmviyu      2024-01-01 04:15:41 +08:00  1 话说有了 v6 后是不是对这类打洞软件没那么大需求了. | 
|  |      12Zy143L      2024-01-01 08:36:13 +08:00 via Android  1 没考虑加入 upnp 吗? 可以跳过 dmz | 
|  |      13zhengrt      2024-01-01 10:36:38 +08:00  1 好东西,支持一下 | 
|  |      14mikewang OP #11 @jqtmviyu 是的,不过像 BT 等有 v4 端口效果还是更好一些。v6 全球普及之后就用不着打洞了。 | 
|      15iijboom      2024-01-01 12:15:17 +08:00  1 看起来 nat4 不支持么,不太确定 | 
|  |      16mikewang OP #12 @Zy143L DMZ 是懒人做法(作为示例),实际可以用 -b 选项绑定端口,然后路由器进行单个转发。 加上 UPnP 支持之前考虑过,不过 UPnP 不一定可靠,会导致一些问题难以排查; 另一点考虑,就是实现协议并且维护状态,会使得 Natter 代码膨胀的比较厉害。( Natter 的理念是不引入第三方包,各种协议全部自己实现) | 
|  |      17mikewang OP  1 #15 @iijboom NAT 4 不支持。 原理上,NAT 4 意味着传出连接对特定 IP 映射特定端口,因此没法反过来从其他 IP 接受传入连接。 所以需要通过桥接/DMZ 方式提升 NAT 等级为 NAT 1 。如果运营商提供的网络就是 NAT 4 ,那就没有办法了。 | 
|      19rtz      2024-01-01 19:26:46 +08:00  1 建议添加一个功能:主动上报端口和 IP 在命令行指定一个 http(s)链接,每次 IP 或者端口变化都向这个链接提交最新变化 这个功能是我之前在老的 Natter 上自己加的,配合 CF Worker 自动生成 QuantimultX 的订阅信息 | 
|  |      20mikewang OP @rtz 当前版本支持 -e /path/to/script.sh 调用通知脚本,通知脚本可以自己定制,比如使用 curl 请求。 不知到这样是否能满足需求。 相关文档: https://github.com/MikeWang000000/Natter/blob/master/docs/script.md | 
|  |      22sunnysab      2024-01-02 10:28:36 +08:00  1 @jqtmviyu 校园网环境,openwrt 发现 IPV6 中继总是配不好,到头来还得打洞。op 上的 upnpd 貌似又不支持 v6 ,头疼着呢。。 | 
|  |      23D2h0VL89HMAU417B      2024-01-02 13:41:56 +08:00  1 先收藏 | 
|  |      24Misakax      2024-01-02 14:58:50 +08:00  1 一个 docker 能转发多个端口吗🤣 | 
|  |      2524en      2024-01-02 17:43:57 +08:00  1 好东西,感谢作者 | 
|  |      26MFWT      2024-01-02 21:45:12 +08:00  1 用了很久 natter 了,继续支持! | 
|  |      27Ipsum      2024-01-02 23:26:52 +08:00  1 现在运营商这么大方了?直接 tcp 全锥了? | 
|  |      29mikewang OP #27 @thank243577 目前还是挺常见的,除了某些地区因为治理 PCDN 的原因故意改成 NAT 4 除外。 | 
|  |      30MFWT      2024-01-03 09:28:37 +08:00  1 @thank243577 广东移动,不论是新增还是存量,都能拿到 FullCone v4 + /60 v6 | 
|      31HandSonic      2024-01-20 02:03:04 +08:00 via iPhone udp 无法使用,所有 STUN 服务器都超时 | 
|      35lzy2998157572      2024-01-28 13:48:19 +08:00 @MFWT #30 广州移动是/64 v6 |