NAT 和 UPnP 设置,让节点连接更通畅
NAT 是什么
NAT(网络地址转换)是家用路由器的标准功能——多台设备共用一个公网 IP。路由器后面的设备(电脑、手机)拥有的是内网 IP(如 192.168.x.x),外部节点无法主动发起连接。
这对 P2P 有什么影响?P2PSearcher 作为一个 P2P 节点,需要能被其他节点主动连接才能收到搜索请求和资源结果。如果 NAT 类型是"对称型"(Symmetric NAT),外部节点基本连不进来,P2PSearcher 的 DHT 节点连接质量就会很差。
UPnP 是什么
UPnP(通用即插即用)是路由器的一项功能,允许内网应用自动请求路由器开放特定端口并做端口映射。开启 UPnP 后,P2PSearcher 启动时可以自动告诉路由器"请把外部端口 X 映射到我的电脑端口 Y",外部节点就能通过公网 IP + 端口找到 P2PSearcher 了。
怎么在路由器里开 UPnP
路由器管理后台(通常是浏览器打开 http://192.168.1.1 或 http://192.168.0.1)里找:
- 位置通常在"高级设置"→"网络"→"UPnP"或"NAT 设置"分类下
- 不同品牌路由器命名略有差异:TP-Link 叫"UPnP 设置",小米叫"UPnP 自动端口映射",华为叫"NAT 穿透"
- 找到开关后设为"启用",保存设置
UPnP 开启后路由器会自动允许 UPnP 应用申请端口,不需要手动一个个配。
P2PSearcher 里的 NAT 设置
部分版本的 P2PSearcher 在网络设置里有 NAT 相关选项:
- 启用 UPnP:让 P2PSearcher 主动向路由器申请端口映射
- 启用 NAT 穿透:如果路由器不支持 UPnP,尝试用 UDP hole punching 技术打洞
- 手动指定端口:如果 UPnP 和 NAT 穿透都不管用,可以手动填一个端口号(比如 50000),然后在路由器后台手动配端口转发规则
怎么判断 NAT 类型
如果你想知道自己的 NAT 类型,在 P2PSearcher 的网络设置里通常能看到检测结果。或者用 eMule 的"eMule 网络"测试——eMule 会显示你的 ID 是 HighID(公网可达)还是 LowID(NAT 限制)。
- HighID:NAT 穿透基本没问题,P2PSearcher 节点连接质量好
- LowID 但能搜索:穿透模式 + UPnP 已经在工作
- LowID 且搜不到:NAT 限制太强,参考穿透模式那页 + 运营商屏蔽排查
NAT 和穿透模式的关系
穿透模式主要解决的是 ED2K 服务器被屏蔽的问题,NAT/UPnP 解决的是 DHT 节点连接的问题。两个是不同层面的设置,互不干扰。在 NAT 限制严重的环境下,同时开启穿透模式 + UPnP + NAT 穿透三个选项效果最好。
安全提示
UPnP 虽然方便,但也意味着外部应用可以自动请求开放端口。对于家用路由器来说,默认开 UPnP 是可以接受的(P2P 场景下是必要的),但要注意:
- 不要在公共网络(网吧、酒店 WiFi)里开 UPnP
- 用完 P2PSearcher 后可以在路由器里关 UPnP,或者只让 P2PSearcher 的端口保持开放