因为搬家,导致ISP给我分配的IPV4公网地址没有了,因此我开始在网上寻找其他的内网穿透方案。使用过FRP以及基于IPV6的内网穿透方案,要么就是速度实在是太慢,要么就是需要的前置条件太多,最近在研究bt打洞的过程给了我穿透的灵感,我就去网上搜索了一下,果然有相关的穿透方案,以下就是我整理的一些方案的实现。

前提

此方案需要你的网络环境为NAT1(Full cone NAT)

STUN的穿透工具有很多,例如NatterNATMapLucky,在这里我以Natter和Lucky为例,实现STUN的穿透

防火墙规则

使用端口转发或者DMZ开放需要打洞的端口,在这里我使用类似DMZ的方式,编辑/etc/config/firewall文件,添加以下配置到末尾,将其中的ip替换为你的:

1
2
3
4
5
6
7
8
9
config redirect                   
option target 'DNAT'
option src 'wan'
option dest 'lan'
option proto 'tcp udp'
option src_dport '1-65535'
option dest_ip '192.168.1.38'
option dest_port '1-65535'
option name 'Forward'

运行脚本

将natter仓库中的python文件克隆到本地,然后使用以下命令运行:

1
python natter.py -t 3456

如果你防火墙规则设置正确,并且你的网络环境为NAT1,那么你应该会看到以下结果

访问http://xxx.xxx.xxx.xxx:1163

出现这样的页面说明穿透成功了

接下来你就可以转发你想穿透出去的端口了

比如我想把80端口穿透出去那么就去掉-t,输入以下命令

1
python natter.py 80

使用Lucky(推荐)

Lucky这个工具集成了DDNS,STUN,端口映射等功能,还能自动开放防火墙的端口,部署的过程请参考官方文档

在STUN内网穿透中,我们可以很方便的添加我们想要STUN出去的端口