本文我们简单的说说利用Python进行Nat打洞,实现内网端口映射。无需公网IP,无需公网服务器。有手即可!
克隆项目
git clone https://github.com/MikeWang000000/Natter.git
#检查网络环境
python natter.py --check-nat
如果没有报错,便可以直接上手使用了。
穿透NAT
我想将kali的80端口进行映射
python natter.py 192..168.5.180 80
需要注意的是,目前是无法访问的,我们需要在路由器中打开相应的端口映射端口。
| 协议 | 外部端口 | 内部 IP 地址 | 内部端口 |
|---|---|---|---|
| TCP | 32622 | 192.168.1.100 | 80 |
这样我们便可以利用打洞的方式,实现访问内网设备了。
使用配置文件
如果您不想手动设置端口转发,可以交由 Natter 处理。同时,使用配置文件,Natter 可以提供更多有用的功能。
python natter.py -c ./natter-config.json
配置文件的说明如下:
// 注意:JSON 配置文件不支持代码注释,此处为说明配置用途。
{
\"logging\": {
\"level\": \"info\", // 日志等级:可选值:\"debug\"、\"info\"、\"warning\"、\"error\"
\"log_file\": \"./natter.log\" // 将日志输出到指定文件,不需要请留空:\"\"
},
\"status_report\": {
// 当外部IP/端口发生改变时,会执行下方命令。
// 大括号 {...} 为占位符,命令执行时会被实际值替换。
// 不需要请留空:\"\"
\"hook\": \"bash ./natter-hook.sh \'{protocol}\' \'{inner_ip}\' \'{inner_port}\' \'{outer_ip}\' \'{outer_port}\'\",
\"status_file\": \"./natter-status.json\" // 将实时端口映射状态储存至指定文件,不需要请留空:\"\"
},
\"open_port\": {
// 此处设置 Natter 打洞IP:端口。(仅打洞)
// 此处地址为 Natter 绑定(监听)的地址,Natter 仅对这些地址打洞,您需要手动设置端口转发。
// 注意:使用默认出口IP,请使用 0.0.0.0 ,而不是 127.0.0.1 。
\"tcp\": [
\"0.0.0.0:3456\",
\"0.0.0.0:3457\"
],
\"udp\": [
\"0.0.0.0:3456\",
\"0.0.0.0:3457\"
]
},
\"forward_port\": {
// 此处设置需要 Natter 开放至公网的 IP:端口。(打洞 + 内置转发)
// Natter 会全自动打洞、转发,您无需做任何干预。
// 注意:使用本机IP,请使用 127.0.0.1,而不是 0.0.0.0 。
\"tcp\": [
\"127.0.0.1:80\",
\"192.168.1.100:443\"
],
\"udp\": [
\"127.0.0.1:53\",
\"192.168.1.100:51820\"
]
},
\"stun_server\": {
// 此处设置公共 STUN 服务器。
// TCP 服务器请确保 TCP/3478 端口开放可用;
// UDP 服务器请确保 UDP/3478 端口开放可用。
\"tcp\": [
\"stun.stunprotocol.org\",
\"stun.voip.blackberry.com\"
],
\"udp\": [
\"stun.miwifi.com\",
\"stun.qq.com\"
]
},
\"keep_alive\": \"www.qq.com\" // 此处设置 HTTP Keep-Alive 服务器。请确保该服务器 80 端口开放,且支持 HTTP Keep-Alive。
}
方案
推荐方案:
光猫设置桥接模式,在路由器系统如 OpenWRT 上直接运行 Natter(仅经过一层 NAT)
可行方案:
在子网中的主机上运行 Natter,在光猫或路由器上对其开启 DMZ 功能,或对需要开放的端口设置端口转发。(经过多层NAT)
大概率会失败的情形
不满足基本条件:
经过测试,我的网络不是 NAT 1;
多层非可控 NAT:
光猫处于路由模式,我无法关闭光猫的防火墙,并对其设置 DMZ 主机或改桥接;
运营商设置了防火墙:
我在外部网络使用 nmap 对出口 IP 地址进行 TCP 全端口扫描,发现均为 filtered 。
效果
更多精彩文章 欢迎关注我们