BitComet 端口映射与 UPnP — 黄灯转绿灯、让别人连得上你
什么是红黄灯问题
BitComet 主界面最底部状态栏最左侧有一个网络状态灯(小图标),鼠标悬停上去会显示当前网络状态:
- 绿灯:BitComet 处于外网可达状态——互联网上的其他 BT 客户端可以主动连接你的电脑、从你这里下载数据。
- 黄灯:BitComet 处于部分可达状态——你能主动连上别人、别人不一定能主动连上你。通常意味着路由器的 UPnP 端口映射要么没开、要么没成功。
- 红灯:BitComet 处于完全内网状态——既没人能连你,你也可能连不上部分对等者。在企业网络、校园网、或者运营商级 NAT(CGNAT)环境下常见。
为什么灯的颜色重要?因为 BT 协议是双向通信的:你要从别人那里下载数据、别人也要从你这里下载数据。如果别人连不上你,你作为下载者只能从少数"外网可达"的种子那里拿数据;你作为做种者贡献的上传数据量为 0——BT 社区的人把这种人叫做"吸血"。
状态灯变色的原理
BitComet 启动后会做以下检测来判断自己的网络状态:
- 检查本机 IP:是公网 IP 还是内网 IP(10.x.x.x、192.168.x.x、172.16~31.x.x 都是内网 IP)。
- 向外部测试服务器发请求:BitComet 内置了几个"外部可达性检测"服务器(类似 What's My IP 服务),请求服务器反过来尝试连接你的 BitComet 监听端口。如果能连上 = 绿灯;连不上 = 黄灯或红灯。
- 同时尝试 UPnP/ NAT-PMP:如果检测到在内网,BitComet 会尝试通过 UPnP 协议让路由器自动配置端口映射。
UPnP 自动端口映射
UPnP(Universal Plug and Play) 是一套设备自动发现和配置的协议。大多数家用路由器都支持 UPnP。BitComet 利用 UPnP 做这件事:
- BitComet 启动后,通过 UPnP 向你的家用路由器发送请求:"请把你 WAN 口的某个端口(比如 16881)转发到我这台电脑的内网 IP 的同一个端口"。
- 如果路由器支持 UPnP 且已开启,它会自动添加一条端口映射规则。
- 互联网上的其他 BT 客户端连接路由器 WAN 口 IP 的 16881 端口时,路由器会自动把请求转发到你的电脑,BitComet 就能收到了。
开启 BitComet 的 UPnP
默认就是开的。检查方法:
- 选项 → BT → 找到 "自动配置网络连接" 相关选项。
- 确保 "启用 UPnP 端口映射" 勾选。
- 下面有一个 "UPnP 定期刷新映射" 选项——勾选后 BitComet 每隔一段时间(默认 2 小时)重新向路由器请求一次映射,防止路由器重启后映射丢失。
UPnP 没成功的症状
- BitComet 启动后网络状态灯一直是黄色或红色。
- 打开 BitComet 的 "日志" 选项卡,搜索
UPnP,看到类似 "UPnP device not found" 或 "Port mapping request denied" 的消息。 - 即使 BitComet 开着,你打开路由器管理界面(通常是
192.168.1.1或192.168.0.1),在 UPnP/应用转发页面里也看不到 BitComet 添加的规则。
手动端口映射
如果 UPnP 自动配置不管用(有些路由器禁用了 UPnP、有些公司网络路由器根本不支持),你需要手动在路由器上配置端口映射。
步骤
- 查 BitComet 当前监听的端口号:
- 选项 → BT → 找到 "BT 监听端口"。默认通常是 16881,也可能是 16882、16883 等——BitComet 在端口被占用时会自动递增。
- 建议把这个端口固定下来(取消"随机端口"勾选,手动填一个固定值,比如 16881),这样路由器端口映射配置不会每次都要改。
- 查电脑的内网 IP:
- 在 BitComet 的日志里能看到,或者打开
cmd运行ipconfig找 IPv4 地址,比如192.168.1.105。 - 建议在路由器里给这台电脑固定 IP(通过 MAC 地址绑定),否则 DHCP 每次重启可能给你分配不同 IP,端口映射又失效了。
- 路由器管理界面配置端口映射:
- 打开浏览器访问路由器管理界面(
192.168.1.1),登录后找到"端口转发""应用转发"或"虚拟服务器"之类的页面。 - 添加一条规则:
| 字段 | 值 |
|---|---|
| 服务名称(随便起) | BitComet |
| 服务端口(WAN 口监听) | 16881 |
| 内部 IP / 目标 IP | 192.168.1.105 |
| 内部端口(LAN 口转发) | 16881 |
| 协议 | TCP + UDP(或 ALL) |
| 启用 | 是 |
- 保存并测试:
- 保存后回到 BitComet,等几十秒,状态灯应该从黄变绿。
- 如果没变色,重启一下 BitComet 再看。
防火墙配置
即使路由器端口映射成功了,Windows 防火墙或第三方安全软件也可能阻止 BitComet 的入站连接:
Windows 防火墙
BitComet 安装时默认会自动添加放行规则。但如果你手动改过防火墙设置或安装后防火墙软件变了,可能需要手动检查:
- 打开"Windows Defender 防火墙" → 左侧"高级设置"。
- 找到"入站规则"列表,搜索 "BitComet"。
- 确认存在一条规则,Action = Allow、Protocol = TCP + UDP、Local Port = BitComet 监听端口。
- 如果没有,手动新建:新建规则 → 端口 → TCP → 允许特定本地端口(填 BitComet 的监听端口)→ 允许连接 → 所有配置文件 → 名称填 BitComet。UDP 也要重复一次。
第三方安全软件
360、腾讯电脑管家、火绒等国内安全软件对入站连接有比较严格的拦截策略,可能需要:
- 把 BitComet 添加到"信任程序"或"白名单"。
- 在防火墙模块里手动放行 BitComet 的监听端口。
- 有些安全软件有"BT 下载加速"或类似的专门模块,可以直接启用。
运营商级 NAT(CGNAT)
如果你无论怎么折腾路由器端口映射、防火墙,状态灯始终是红色,很大可能你家里的宽带是运营商级 NAT(Carrier-Grade NAT, CGNAT):
- 运营商只给了你一个内网 IP(比如
100.64.x.x范围),而不是传统的公网 IPv4。 - 所有用户在运营商的大路由器后面共享几个公网 IP。
- 你根本没有对外端口映射的权限——因为你连控制运营商路由器的权限都没有。
怎么确认
- 在电脑上打开浏览器访问 What's My IP 类的网站,记下它显示的你的公网 IP。
- 打开你路由器的管理界面,看 WAN 口显示的 IP 是多少。
- 如果两者不同,你家就是 CGNAT。
怎么解决
- 打电话给运营商申请公网 IP:很多运营商(特别是中国电信)允许宽带用户免费申请公网 IPv4,只要说"家里要装摄像头远程访问需要公网 IP"。
- 用 IPv6:现在绝大多数宽带运营商已经给家庭用户分配 IPv6 公网地址了。BitComet 新版本支持 IPv6,如果你的路由器开启了 IPv6 且 BitComet 的 IPv6 监听端口可达,就能绕过 CGNAT 限制——其他 IPv6 的 BT 用户可以直接连你。
- 用中继(relay):BitComet 支持通过 DHT 中继节点转发连接,但中继不是所有客户端都支持、性能也差很多。
- 接受现实:作为下载者影响不大(你能正常从别人那里下),只是作为做种者没法对外贡献上传数据。如果上传量不大也无所谓。
总结
| 状态 | 可能原因 | 解决方法 |
|---|---|---|
| 绿灯 | 外网可达,一切正常 | 无需操作 |
| 黄灯 | 在内网但 UPnP/手动映射部分成功 | 检查路由器 UPnP 是否开启;手动端口映射 |
| 红灯 | CGNAT / 防火墙拦截 / 路由器完全不支持 | 申请公网 IP;开 IPv6;检查防火墙 |