关于运营商分配假公网 IP 的问题

2022-08-27 20:34:35 +08:00
 Marionic0723
感谢 @onion83 发的图


这种技术多半是是运营商用来应对那些啥都不知道又跟风申请公网 IP 的小白的,用了这招之后,拨号获取到的 IP 和上网查到的的确是同一个,NAT 类型也会测出最宽松,能骗过绝大多数人,只有需要公网开服务而且正好端口和别人冲突的时候才会发现异常。

那么问题来了,如何分辨这种假公网?多用户在同一端口开放服务后,NAT 设备如何处理流量?

我的想法:
1.分别在低位和高位端口开设服务,然后用跨运营商的网络去访问它,查看访问能否成功,如果有不成功的,除了被运营商封锁(如 25 ,80 ,443 ),剩下的端口就是给别人了,证明公网 IP 是共享的。
2.内网发起路由跟踪,看看到达运营商真正的公网网关前是否出现丢包跳数。手机流量一般就是这样,只不过能看出是内网 IP 。
还有什么想法欢迎各位补充。
32695 次点击
所在节点    宽带症候群
248 条回复
mikewang
2022-08-28 00:24:18 +08:00
@xxfye
根据 SEQ 是可以判断连接,但是需要上下文。
传入连接,peer 发来一个 SYN ,这是第一条报文,前面没有相关的 SEQ ,那么是怎么判断目的地的呢?
cnbatch
2022-08-28 00:25:10 +08:00
@xxfye 那就来个现实的假设。

假设某个假公网(假设是 123.45.67.89 )后面有 3 个 3389 (都是 Windows 远程桌面),那么外界某台机器发起请求,连接到 123.45.67.89:3389 的时候,应该连后面的哪台机器?
xxfye
2022-08-28 00:29:06 +08:00
@mikewang 你说的运营商开放端口映射,据我所知移动已经在搞了,针对物联网,但目前不对个人用户开放。
比如说 A 买了 B 公司的产品 C ,C 连接上互联网后,B 会向移动申请开放 A 家出口 IP 的某个端口,所有入站的该端口的流量都会转发到 A 私网地址,同时 C 会在 A 的光猫上用 upnp 打通一个端口接受入站。这样 C 就能完整接受入站连接了。
xxfye
2022-08-28 00:32:32 +08:00
@mikewang
@cnbatch
你们说的也有道理,单纯靠 seq 很难判断是哪台机器响应,是我的考虑不周。
也可能是提前探测是否有开放相同端口的用户,尽量避免分配的同一个 ip
wuosuper
2022-08-28 00:43:06 +08:00
@xxfye @cnbatch @mikewang @onion83 根据厂商提供的说明文档,开放端口的情况,在外部访问这个假公网地址,网关会采用广播的方式把 syn ack 同时发送给共享这个 IP 的所有用户,先到先得,首个响应的用户会获得这个入向端口的使用权。
cnbatch
2022-08-28 00:46:17 +08:00
@wuosuper 这样做的话,在我刚才提的假设当中,很大几率会露陷而被用户发现了。
xxfye
2022-08-28 00:46:32 +08:00
@wuosuper
这么看,后面就是用户内卷时代,比谁家能够更快响应。
你说的七元组 NAT 是什么?
wuosuper
2022-08-28 00:52:35 +08:00
@xxfye 文档中:源 IP 地址 /目的 IP 地址 /源端口 /目的端口 /传输层协议 /L4 、L7 、传输内容或协议 /来源、响应端口标识号、用户标识号、连接标识号
cocomaster
2022-08-28 00:54:46 +08:00
如果入站连接正常,对于目前没有公网 IP 的宽带来说倒是好事?
获得了"假"公网 IP ,起码能从外面访问家里的机器了,从无到有的提升。3389 冲突我换一个别的就行了
wuosuper
2022-08-28 00:57:07 +08:00
@cbatch 根据运营商的实际统计,每一组用户里面有开端口需求的用户每 10 个里面平均 1.5 个,所以运营商会记录下有频繁固定端口入向连接的用户做标记,均匀的分到每个池里面,保障这个平均数,比如让两个有开端口访问标记的用户与 8 个从未开端口的用户共享同一个池,即使后期普遍开放端口,也可以按照每个用户开的端口号不同分配不同的地址池,所以冲突的概率是低上加地,实在倒霉遇到冲突了,运营商也只会让你重启光猫,换一个 IP 就通了。
xxfye
2022-08-28 01:02:35 +08:00
@wuosuper 看起来真的是利用某些应用层特征进行 NAT ,能透漏那家的设备吗,某兴还是某为?
感觉通信行业真是能人辈出,属实是针尖雕花了。
wwbfred
2022-08-28 01:25:00 +08:00
@xxfye 坚决反对这种做法。网路层 /传输层设备去分析会话、表示、应用层数据,绝对不是一个正常的选择。分层是计算机网络的基础与核心,破坏了这一点会造成很多上层的未定义行为,后患无穷。另外下层协议的正常运行依赖于上层协议的设计,学过计算机网络的都会觉得这极其离谱。
计算机网络的本质是协议。而协议之所以称作协议,核心就是这件事大家要商量好。自己瞎搞出来的一个东西,谁都不告诉,这连协议都不能叫,又怎么能叫做"牛逼"。你可以告诉用户,哪些端口共享哪些端口独享,大多数人根本用不到几万个端口,分上几百个独享端口,剩下的端口做动态映射,比这样瞎 JB 搞要强得多。现在这么搞本质上不是解决问题,而是减少投诉,除此之外没有任何优势。为它洗地的,要我说不是计算机网络没学好,就是利益相关。
xxfye
2022-08-28 01:39:42 +08:00
@wwbfred
你说得都对。
你计算机网络学的好。
你了不起,你清高。
52acca
2022-08-28 01:40:50 +08:00
刚测试一下自己的发现端口不通,惊呼自己也被骗了,后来才发现是 ddns 没更新,虚惊一场
wwbfred
2022-08-28 02:01:08 +08:00
@xxfye 我一点也不清高。只要你提出你的理由,有理有据地反驳我,我就承认我是那个学的不好的。阴阳怪气是一个人最后的保护伞,轻易不要使用。
fayloue
2022-08-28 02:16:11 +08:00
@52acca 即使假公网,路由器上对外开的端口也是正常能通的。
snw
2022-08-28 02:19:14 +08:00
鉴于外网连入是向内网广播的,你可以考虑监听所有端口,然后把所有目的地不是你使用的端口的包全都回 RESET ,看邻居会不会跳起来🐶
xxfye
2022-08-28 02:33:54 +08:00
@wwbfred 别的不说,上来就扣帽子说利益相关和洗地,到底谁先开始阴阳怪气的?

况且这项技术就是牛逼啊,在我眼里,这和 ss 之类技术没什么不同。
但 gfw 越来越高时,有人发明了 ss ,大家称一句牛逼很正常。
那么当用户不满意时,运营商搞这一套技术可能解决大量问题,怎么就不能称一句牛逼了。
难道 SS 就是“商量好”的协议吗。

另外你的想法并不好,分配几百个独享端口就意味要收回公网 ipv4 ,怎么解决用户的投诉,怎么扭转用户的思维?谁来教他们配置指定范围的端口映射?

我是数学出身的金融从业人员,计算机网络确实不太行,上面讨论也可以看出我确实犯了些基本错误。
但我很了解用户是什么,用户的要求比什么都重要,但很多时候只想要一个结果,并不在乎过程是什么。
wwbfred
2022-08-28 03:03:07 +08:00
@xxfye 你没有理解计算机网络里的"协商"是什么意思。用户层协议服务端与客户端之间要协商好,网络层协议路由器和路由器之间要协商好。所以 SS 当然是商量好的协议,要不怎么运行得起来。另外独享端口并不一定意味着回收公网 IPV4 ,你能理解伪公网 IP 的运行模式,怎么在这个基础上的独享端口就变成必须回收了呢?
我建议你在了解一件事物之前不要轻易批评它或赞美它,尤其在它是个专业问题的时候。用户想要一个好的结果,没有问题,但你的评论是站在技术的角度来评价的,还给它起了个 NAT+的名字,搞得它好像比 NAT 还牛逼一样。那你就别怪别人怼你技术不行了。
QwQmoe
2022-08-28 04:54:54 +08:00
我们或许可以用 ping 回复的数据包进行感知。据我个人猜测,大部分人没有关闭路由器上的 ping 回复。而 NAT4444 是如何处理 ICMP Ping 数据包的?如果映射至内网中的所有主机,并保留所有来自主机的回复,那么 ping 客户端会有多包回复的提示。(前提是 ping 客户端不是 Windows ,Windows 会丢弃掉多包)那么是否是随机映射到内网中的一台主机?又或者是 CGNAT 网关自己做回复?通过在被分配了假公网 IP 的路由器上不断的修改 icmp 回复的 TTL ,用跨运营商的网络多 ping 几次,或许能找到些许猫腻。

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

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

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

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

© 2021 V2EX