Skip to content
/ natupnp Public

TCP hole punching tool 又一个 tcp 打洞工具

License

Notifications You must be signed in to change notification settings

xmdhs/natupnp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

natupnp

又一个 tcp 打洞工具,参考了 Natternatmap

也就是能在 nat1 的情况,在没有公网 ip 时,打开公网 ip 的 tcp 端口,可以让其他人直接访问到。

和以上两个工具相同。不过不同的是,这个工具集成了 upnp 的功能,能在路由上设置端口映射,增加打洞的成功率,适合在其他设备而非路由器上使用。

使用示例

首先可以检测当前网络是否支持打洞。

natupnp -t 将会在 8086 上监听,然后打印公网地址和端口,可以尝试使用其他网络用浏览器访问,如果显示 ok 则说明打洞成功。

防火墙以及路由器的配置

对于运行 natupnp 的主机,需要开放 -p 指定的端口, -p 8080 8080 就是需要开放的端口了。

对于路由器,分三种情况。

光猫拨号,网线插在路由器的 lan 口

这种情况下,光猫管理界面的 ip,和连接路由器的主机的 ip 在一个网段内。

此时,需要在光猫上开启 upnp。一般在 高级配置-日常应用-upnp 配置,可能需要光猫的超级管理员密码,通常能在网上搜到。

光猫拨号,网线插在路由器的 wan 口

这种情况下的光猫管理界面 ip,和连接路由器的设备的 ip 不在一个网段。

在光猫上设置 DMZ 主机,通常在 高级配置-NAT设置-DMZ配置,在其中配置路由器的 ip 或者 mac 地址,并把路由器的 upnp 功能开启(通常默认是开启)

光猫桥接,路由器拨号

应该不需要额外的操作即可成功打洞,若不成功,可以检查 upnp 功能是否开启。

命令

和 natmap 一样,支持绑定和转发两种模式。

绑定模式在 linux 上,若指定的端口之前已经有其他程序使用,则该程序需对连接或者监听设置 SO_REUSEADDR 和 SO_REUSEPORT 否则会报错。

绑定

natupnp -p 8080

当前设备需在防火墙开放 8080 端口

转发

natupnp -p 8080 -d 127.0.0.1:80

会将数据转发到 127.0.0.1:80,也需要在防火墙开放 8080 端口

若成功会打印在公网 ip 上开放的端口和公网 ip。

挂钩

natupnp -p 8080 -e echo

打洞成功后,会调用 -e 指定的脚本/命令/程序,参数顺序为

args[1] localAddr args[2] local port args[3] out addr args[4] out port

例如

192.168.1.100 9102 1.1.1.1 32622

About

TCP hole punching tool 又一个 tcp 打洞工具

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published