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

355 天前
 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 ~

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

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

所以需要通过桥接/DMZ 方式提升 NAT 等级为 NAT 1 。如果运营商提供的网络就是 NAT 4 ,那就没有办法了。
flynaj
354 天前
@cy18 natmap 可以,openwrt 系统集成有
rtz
354 天前
建议添加一个功能:主动上报端口和 IP
在命令行指定一个 http(s)链接,每次 IP 或者端口变化都向这个链接提交最新变化
这个功能是我之前在老的 Natter 上自己加的,配合 CF Worker 自动生成 QuantimultX 的订阅信息
mikewang
354 天前
@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