Natter 更新了:更稳定的 TCP 打洞, Docker 支持...

2023-12-31 15:07:51 +08:00
 mikewang

Natter

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 的配置文件。


快速开始:

  1. 光猫设置桥接;
  2. 路由器设置 DMZ 主机为服务器(软路由上直接用 docker 则跳过);
  3. 服务器上运行:
    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 ~

9605 次点击
所在节点    宽带症候群
35 条回复
super5xy
2023-12-31 15:26:14 +08:00
好东西
nullptrexp
2023-12-31 16:38:13 +08:00
好东西
heiher
2023-12-31 17:47:55 +08:00
好东西,感谢作者
cy18
2023-12-31 20:01:15 +08:00
如果有办法在 dns 记录里面把端口信息加进去,或者弄个 url 跳转之类的,那用起来就方便了。
mikewang
2023-12-31 20:08:14 +08:00
chenqh
2023-12-31 20:22:05 +08:00
比我强多了,py 网络我只会用 requests..
GoodRui
2023-12-31 22:05:47 +08:00
看起来不错啊!支持大佬~
SenLief
2023-12-31 22:13:19 +08:00
没有公网的能不能用?好像也不是 NAT1
mikewang
2023-12-31 22:32:24 +08:00
@SenLief 这个就是给没有公网的宽带用的。不是 NAT1 应该不行了,不过试试才知道~
zhcode
2024-01-01 00:30:35 +08:00
感谢大佬,一直在用
jqtmviyu
2024-01-01 04:15:41 +08:00
话说有了 v6 后是不是对这类打洞软件没那么大需求了.
Zy143L
2024-01-01 08:36:13 +08:00
没考虑加入 upnp 吗?
可以跳过 dmz
zhengrt
2024-01-01 10:36:38 +08:00
好东西,支持一下
mikewang
2024-01-01 12:04:43 +08:00
#11 @jqtmviyu 是的,不过像 BT 等有 v4 端口效果还是更好一些。v6 全球普及之后就用不着打洞了。
iijboom
2024-01-01 12:15:17 +08:00
看起来 nat4 不支持么,不太确定
mikewang
2024-01-01 12:18:34 +08:00
#12 @Zy143L DMZ 是懒人做法(作为示例),实际可以用 -b 选项绑定端口,然后路由器进行单个转发。

加上 UPnP 支持之前考虑过,不过 UPnP 不一定可靠,会导致一些问题难以排查;
另一点考虑,就是实现协议并且维护状态,会使得 Natter 代码膨胀的比较厉害。( Natter 的理念是不引入第三方包,各种协议全部自己实现)
mikewang
2024-01-01 12:30:14 +08:00
#15 @iijboom NAT 4 不支持。
原理上,NAT 4 意味着传出连接对特定 IP 映射特定端口,因此没法反过来从其他 IP 接受传入连接。

所以需要通过桥接/DMZ 方式提升 NAT 等级为 NAT 1 。如果运营商提供的网络就是 NAT 4 ,那就没有办法了。
flynaj
2024-01-01 13:32:00 +08:00
@cy18 natmap 可以,openwrt 系统集成有
rtz
2024-01-01 19:26:46 +08:00
建议添加一个功能:主动上报端口和 IP
在命令行指定一个 http(s)链接,每次 IP 或者端口变化都向这个链接提交最新变化
这个功能是我之前在老的 Natter 上自己加的,配合 CF Worker 自动生成 QuantimultX 的订阅信息
mikewang
2024-01-01 19:48:57 +08:00
@rtz 当前版本支持 -e /path/to/script.sh 调用通知脚本,通知脚本可以自己定制,比如使用 curl 请求。
不知到这样是否能满足需求。
相关文档: https://github.com/MikeWang000000/Natter/blob/master/docs/script.md

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1004806

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX