自动 STUN
为无公网地址的私网 NAT1 用户提供自动化 NAT 打洞功能,在 NAT 出口的 IP 地址上打开一个端口,以获得近似公网的连接性。
为什么使用 AutoSTUN?
PeerBanHelper 不受通过 AutoSTUN 创建的连接的用户空间转发带来的原始 IP 地址丢失的影响,将能够自动还原其正确的 IP 地址信息。同时还能够直接 阻断被封禁的 IP 请求隧道入口的连接尝试。 另外,PBH 还提供了一个简洁、直观的连接状态表,以便快速了解通过隧道的连接的统计和 GeoIP 信息。
最棒的是,只要配置正确,后续维护工作将全部自动完成。
PeerBanHelper 提供的是用户空间转发,在低端设备上转发大量流量可能会占用较多的处理资源。
如果您有公网 IP 地址,请使用传统端口转发技术。如果您了解如何配置自己系统的防火墙,建议使用 Lucky 工具的防火墙转发方式,内核空间的转发不但可以保留原始 IP 地址,效果和性能也都比 PeerBanHelper 的方案更好。
原则上不建议使用 AutoSTUN 的同时,将 PeerBanHelper 与下载器放在不同网络/不同设备上。如果无法从 127.0.0.1 访问,则可能会导致效果大打折扣。
此功能只有 NAT1 网络类型的用户可以使用。
受工作原理限制,PeerBanHelper 会在需要的时候修改你的下载器 BT 监听端口到任何值,因此如果下载器外有防火墙限制,则可能导致隧道建立失败。
如何确定我是否能使用 AutoSTUN
要使用 AutoSTUN 需要先检查你的网络是否为公网(公网不建议使用),以及 NAT 类型是否为 NAT1(只有 NAT1 可以用)。
如果你是公网IPv4用户:不建议使用 AutoSTUN 功能,请直接配置端口映射和防火墙,以获得最佳连接性。具体查询方式超出了本文档的范围。
转到 “设置->实验室->AutoSTUN”,如果其中的所有状态图标都是绿色通过,则可以使用 AutoSTUN。
如果不是绿色,请根据提示出现问题的模块查看下面的故障排除指南。
Docker 网络驱动程序故障排除指南
如果 PeerBanHelper 的网络驱动程序测试不通过,则需要将容器的网络模式从 “bridge” 调整为 “host”。
使用 docker-compose 运行的用户,请从 Docker 安装指南页面 获取新版 docker-compose 文件,该文件已经预先配置好了。
使用 CLI 命令运行的用户,请自行配置,相信你会自己想办法解决的。
NAT 类型故障排除指南
要让 PeerBanHelper 的 AutoSTUN 工作,NAT 类型必须是 “[NAT1] 完全圆锥型 NAT (FullCone) ”,这是硬性条件,也是技术原理的限制。
0. 哪些元素可能影响 NAT 类型?
- 运营商 - 只有他们提供 NAT1 你才会有,如中国移动就仅提供 NAT3/4。
- 光猫 - 运营商可能设置了防火墙,此时受限于光猫的保护,内网设备无法获得 NAT1。
- 路由器 - 如果中间有路由器或者安全网关,受限于路由器的限制,不在 DMZ 主机中的设备,或者没有经 UPnP 转发的端口会被限制入站,内网设备会无法获得 NAT1。
- 系统 - 系统自带了防火墙,如果没有放,那么受限于防火墙的保护,此路完全不通,可能也本无法使用。
- 杀毒、安全软件 - 如卡巴斯基这类安全软件会使用自己的安全防火墙接管系统防火墙,受到保护的状 态下,可能也不通。
- Docker 网络 - 需要使用 host 模式,默认的 bridge 显然被 Docker 一转发它 NAT 就爆了。
1. 确定运营商是否提供 NAT1
通常来说,常见运营商中中国电信和中国联通的公众宽带服务通常为用户提供 NAT1 网络服务,部分地区的甚至会提供公网 IP。而如果你是中国移动,那基本上就可以关闭这个页面了。
如果你使用的是物联网卡上网、或者移动流量,那基本上也可以关闭这个页面了。
2. 在最顶部的网络设备上接入网络测试
拿一条网线,直接连接您的电脑和光猫网口。检查是否可以上网。如果可以上网,则说明为路由模式,阅读 2.1 章。反之如果不能上网,则说明为桥接模式,阅读 2.2 章。
2.1. 路由模式光猫调整
由于不同运营商、不同省份、甚至不同城市不同小区都有大量不同型号的光猫,因此配置也都各不相同。但大体如下:
- 确认运营商提供 NAT1,如果本来就没有 NAT1,那么接 下来的是人情世故而非技术问题
- 如果运营商提供 NAT1,但是光猫后的设备不是,那么你需要在光猫内将防火墙级别调整为 “低”,然后找到 UPnP 开关将其打开。
- 如果可能,为电脑配置一个静态 IP 地址,并将其设置为 DMZ 主机。
重新测试,查看是否为 NAT1 网络类型。
2.2. 桥接模式路由器调整
将网线连接电脑和光猫,确保能够不能上网。然后将网线连接光猫上插着的路由器,确保能够上网,则说明当前确实为桥接模式。
不幸的是,路由器也有大量不同的型号,但大致步骤如下:
- 在路由器中为电脑设置一个固定 IP 地址,名字通常是 “DHCP 静态地址” 有时也叫 “IP/MAC 绑定”
- 将新设置的 IP 地址设置为 “DMZ 主机”
- 打开路由器上的 “UPnP 开关”
根据路由器不同可能操作方法也不同,具体参见用户指南或者说明书。
断开网络并重新连接测试,查看是否为 NAT1 网络类型。
3. 本机防火墙设置
在确保上面的 NAT 类型为 NAT1 后,需要设置设备防火墙。
由于 STUN 映射的端口可能会变化,因此无法固定端口号,因此你需要:
- 对于 Windows 使用 exe 安装的用户:安装器会自动完成 Windows 防火墙的配置,只要确保您的杀毒软件(如 卡巴斯基)没有拦截即可。
- 对于 Linux 使用 docker 安装的用户
- 将 docker 设置为 host 模式
- 并关闭系统防火墙(根据发行版不同,该步骤也可能不同。通常为 ufw/firewalld/iptables)
- 对于 Synology DSM 群晖 NAS用户:
- 关闭防火墙:控制面板->安全性->防火墙,取消 “启用防火墙” 复选框
- 或者设置为黑名单模式:
- 控制面板->安全性->防火墙
- 防火墙配置文件点击“编辑规则”
- 选择 “所有界面” 的下拉框,找到连接网线的网口(若有多个,则依次设置)
- 将 “如上述规则皆不符合时:” 修改为 “允许访问”
关闭或者开放防火墙会严重降低安全性。要知道所谓岁月静好都是防火墙的功劳,一旦关闭防火墙,曾经都在 NAT 后保护的设备现在可能会完全暴露在互联网中遭受每秒多达上百次的攻击。
这样做之前请对内网服务做好安全加固,并合理设置防火墙,明确禁止外网流量访问关键服务和端口。
最后一切完成之后,重启 PeerBanHelper,当上面的所有状态都是绿色可用时,则 AutoSTUN 应当可以 正常工作。