本文为大家分享如何利用NAT打洞实现免费的公网IP。快来试试吧!
什么是NAT
你的IPv4地址是多少呢?如我们可以利用在线网站查找当前设备的公网IP。
可我们在路由器中查看时,你就会看到当前IP为100开头的IP地址。
这是怎么回事呢?运营商在 IPv4 中使用 NAT(网络地址转换) 技术,让许多设备共享一个公网 IP。当然,IP 的使用者不仅仅包括你家的设备,可能小区中的很多设备和你家的设备共享一个 IP。
什么是NAT打洞
NAT 打洞(NAT Traversal)是一种技术,它允许位于私有网络中的设备与外部世界建立直接的通信连接1。打洞的过程是指A向B的外网地址发送消息,一旦A与B都向对方的外网地址发送了数据包,就打开了A与B之间的“洞”,一旦应用程序确认已经可以通过往对方的外网地址发送数据包的方式让数据包到达NAT后面的目的应用程序,程序会自动停止继续发送用于“打洞”的数据包,转而开始真正的P2P数据传输。
开启NAT
在默认情况下,nat是关闭的。因此需要我们手动开启。现根据我们常见的家庭网络类型,简单说说开启步骤。
即,光猫只做光电转换。路由器拨号上网。因此,我们需要在路由器中进行相关配置就行了。
注:不同品牌的路由器,开启方式大同小异。
找到 高级设置
- DMZ
(部分路由器叫做DMZ
主机),打开DMZ
开关,并将地址指定为你的设备 IP 地址
这也是目前主流的网络连接方式。具体配置方式如下:使用超管密码,进入光猫后台。找到 安全
- 防火墙
- 安全级
,改为低
进入应用
- DMZ 主机
,指定为路由器的 IP
地址(或 MAC 地址)
接着进入 应用
- UPnP
,将其变为使能(启用
)
接下来,进入路由器后台 找到 高级设置
- DMZ 主机
打开 DMZ 开关,并将地址指定为你的设备 IP 地址
打洞测试
我们可以使用Natter
进行打洞测试。首先下载项目到本地。
git clone https://github.com/MikeWang000000/Natter.git
#测试
python natter.py -m test
示例
将本地的22端口暴露在公网
python natter.py -p 22
连接
总结
利用NAT打洞,我们可以方便地将内网IP暴露在公网。但是唯一的不足是,因为IP地址是共享,所有IP地址在重启光猫或路由器后,可能会发生变化。
原文始发于微信公众号(kali笔记):一文读懂 NAT打洞及实践
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论