介绍一个可能有助于 CGN NAT 端口映射的工具

2019-09-23 22:30:43 +08:00
 feast
7998 次点击
所在节点    宽带症候群
37 条回复
intelmd
2019-09-23 23:03:03 +08:00
feast
2019-09-23 23:06:32 +08:00
PCP 连接在 P2P 传输中的应用

在 NAT444/DS-Lite 场景中引入 PCP,目的就是解决 CGN 设备接入的终端用户之间的 P2P 应用(电话会议、在线游戏、P2P 传输)问题。PCP 连接在 P2P 传输中的应用如图 6-2 所示。
图 6-2 PCP 连接在 P2P 传输中的应用示意图

PC1/PC2 与 P2P 服务器建立 TCP 连接。
说明:
如下子步骤以 PC1 为例进行介绍,PC2 类似。

PC 建立 P2P 连接,操作系统需要支持 UPnP 协议( Universal Plug and Play ),并推荐使用支持 UPnP 协议的 P2P 软件。

PC1 用户打开 P2P 软件,软件自动向 CPE1 网关设备发送打开 UDP 监听端口的 UPnP 请求报文。
CPE1 设备作为 UPnP Proxy,终结 UPnP 请求;作为 PCP 客户端,向 CGN1 设备发送 PCP 请求,为 PC1 用户获取公网 IP 地址和端口号。
CGN1 设备作为 PCP 服务器,响应客户端的请求,从公网地址池中选取公网资源,建立私网 IP 地址、端口号与公网 IP 地址、端口号的映射关系,并向 CPE1 设备发送 PCP 响应报文(携带给 PC1 用户分配的公网 IP 地址和端口号)。
CPE1 设备将获取的公网 IP 地址和端口号发送给 UPnP 请求用户 PC1,此时用户可以在 P2P 软件中查看到获取的公网 IP 地址和端口号。
PC1 通过获取的公网资源与远端的 P2P 服务器建立 TCP 连接。
PC1 向 P2P 服务器上报本地保存种子文件的信息,并实时上报用户状态。
P2P 服务器收到 PC1 的 TCP 报文,解析请求报文中的应用层信息,记录 PC1 的公网 IP 地址和端口号。
PC1 向 P2P 服务器发起查找文件动作时,服务器将拥有该文件所有用户信息均发给 PC1,其中包括 PC2 的公网 IP 地址和端口号。
PC1 向 P2P 服务器发送下载请求(从 PC2 处进行下载)。
P2P 服务器向 PC2 发送 PC1 的下载请求。
PC2 收到 PC1 下载文件请求,直接与 PC1 建立 UDP 连接,上传报文给 PC1。
PC1 直接从 PC2 下载文件,PC1 和 PC2 的 P2P 传输建立。

目前支持 PCP 的 CPE(路由)可能寥寥无几,不过毕竟都是软件,电脑模拟即可,各位可以先用这个库探测下各地的局端情况,考虑到 NAT44,尽量电脑拨号获取 100.64 段 IP,并关闭防火墙
feast
2019-09-23 23:07:15 +08:00
@intelmd V2EX 今天访问奇慢,发一个贴竟然主贴内容不见了
feast
2019-09-23 23:08:17 +08:00
工具 github.com ¥ libpcp ¥ pcp,MSVC+cmake 编译
虽然作为中国 IP 资源最丰富的运营商,电信很多地方仍然是执行了 CGN NAT 改造,一方面应对长期 IPv4 枯竭的压力,二方面通过 CG-NAT 使得单个 IP 得以成百上千倍的复用,预留了足够的用户发展空间,不过 CGN 改造对玩 PT NAS 的肯定是噩梦,尽管目前还可以通过按闹分配的方式投诉获得 IP,不过鉴于任何行得通路子在中国必定会被搞臭的经验,靠这种费时费神的方式肯定是不行的了,那么似乎 CGN ( 100.64 )下完全就没办法了? IETF 实际上在引入 CGN 的时候就同步开发了新的解决方案,即 PCP (RFC 6887)端口控制协议,由于该协议比较新,大多数设备不支持,所以目前可能这个东西能够使用的地方非常少,不过既然有,那就大胆探测下局端是否支持,目前看来,比较老的 ME60 都有相关支持软件,唯一的问题可能就是局端有没有配置(粗略看了下华为,似乎不是默认打开的),所以以后投诉如果有机会联系到工程师最好让打开 PCP,这个比回退工单相信阻力要小很多,以下摘抄自华为手册
feast
2019-09-23 23:16:48 +08:00
“ME60 VSU 系列单板 PCP 功能许可证”
感觉华为收费又会把这个搞砸,so,各位还是投诉吧
loveqianool
2019-09-23 23:24:13 +08:00
附言呀,贴吧直播吗?
Buges
2019-09-23 23:41:43 +08:00
那么问题来了,这个类似 UPnP 的玩意有啥正当的用途?
直接以“我要用 p2p 应用”的理由不被驳回就见鬼了...
feast
2019-09-24 00:59:50 +08:00
你大可认为该项功能毫无卵用,可是能在 CGN 上开一个 TCP 端口是非常有意义的
wheat0r
2019-09-24 01:04:23 +08:00
信我,让运营商去直接配设备的成功率远小于要一个公网 IP。
另一个方面,就我观察,现在的运营商没几个用 CGN 地址段的,全是 10.0.0.0/8,能找运营商要 100.64 ,为什么不直接要一个公网地址。
Buges
2019-09-24 10:09:28 +08:00
@feast 我没说毫无卵用...至少得给个正当用途,或者说,说服工程师给你配置的理由吧。
闹公网 ip 的人还要自称用监控之类的原因呢...
cdh1075
2019-09-25 13:25:34 +08:00
要一整个 ip 浪费,以后如果能每人给 100 个公网 ip 的端口就完美了
feast
2019-09-25 13:35:19 +08:00
@cdh1075 PCP 这东西就是拿来在 CGN 的公网 IP 上开 TCP 洞的
feast
2019-09-25 13:37:42 +08:00
@Buges 我不讨论投诉策略,怎么投诉那是你自己的事,每个人想法都不同,况且我这个东西并不需要投诉,你只要试下局端是否打开,我给的建议仅仅是你遇到坚决不给回退公网的地方的最后尝试方法,P2P 这东西本身就不受待见
feast
2019-09-25 13:39:01 +08:00
@wheat0r CGN 不一定非得是这个专用段,大可自己编译去探测一下有没有反应,你说是么,探测下你会怀孕?
feast
2019-09-25 13:41:22 +08:00
@wheat0r 你不想要我还不想告诉你们这东西呢,偷偷用多安逸,发出来大概率就会被运营商封堵
ragnaroks
2019-09-26 10:36:50 +08:00
联通的光猫和局端支持,以测试通过,ed2k 高 ID
bibiisme
2019-09-26 13:50:47 +08:00
@wheat0r 你用的是移动?电信联通全是 100.64 的,而且就算是移动现在也全是 CGN 了。
feast
2019-09-27 01:47:08 +08:00
@ragnaroks 不错啊,来点截图
LBL584520
2019-10-06 20:02:25 +08:00
@feast 感谢回复!
Windows7 平台下有吗?

我不会操作 linux,也没有 lunix 平台
(工具 github.com ¥ libpcp ¥ pcp,MSVC+cmake 编译) ?? ( linux 下 autogen.sh && make 即可)??


不是学计算机的
只是对计算机略感兴趣的一个普通人,非专业人士
feast
2019-10-06 22:43:57 +08:00
@LBL584520 抽空编译了个,依赖 VS2005 运行 imgchr.com/i/ugySun

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/603512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX