广西联通动手了,普通家宽和公网 IP 说拜拜。

2023-01-09 21:46:25 +08:00
 lin559671

公网 IPv4 没了,还剩 ipv6 ,还能做什么。 传统 ipv4 做服务器被阉,悲剧

6087 次点击
所在节点    宽带症候群
53 条回复
youx
2023-01-11 10:15:47 +08:00
全国直接关闭 IPV4 算了
acbot
2023-01-11 11:14:11 +08:00
@youx 如果全关,那么喊着说 v4 资源少,所以要收回的部门又不同意了,因为那样的话 v4 就彻底变成负资产了!
wangerka
2023-01-11 11:32:24 +08:00
@heiher 示例里的 112.24.0.23 这个公网 ip 是哪里来的呢
wangerka
2023-01-11 11:38:34 +08:00
@heiher 我理解一下,运营商有一个公网 IP 是 112.24.0.23 ,分给大概 65535 个用户使用,我发现分给我的端口是 6348 ,于是我在路由器上(100.65.11.55)开一个 7000 端口,把入站流量转给内网的 192.168.0.2:7000 。问题是怎么把公网地址 112.24.0.23:6348 映射至 100.65.11.55:7000 呢,这个 7000 是自己能定的嘛,外部访问的话,必须要 http://112.24.0.23:6348 访问啊
test0103
2023-01-11 15:23:39 +08:00
@siknet 我也是桂林联通,我是装机的时候,跟师傅说的要公网 IP ,然后给我说加后缀,我是两天变成内网的,我现在也是在投诉阶段,我这算是官方渠道申请吗?还是?而且我没有 IPv6 ,你有吗?他们自己也不知道什么事 IPv6
siknet
2023-01-11 15:26:18 +08:00
@test0103 没有 IPV6 ,不知道是设置的问题还是。现在联通说什么都不给公网了的,威胁工信部都没用,算了,老老实实打洞吧
heiher
2023-01-11 19:04:49 +08:00
@wangerka 理解基本上是对的,112.24.0.23 是运营商网关的公网 IP ,100.65.11.55 是分配在用户侧路由器上的私网 IP ,natmap 会让运营商的网关建立起从 112.24.0.23:6438 指向 100.65.11.55:7000 的映射。natmap 还会侦听在 100.65.11.55:7000 ,进而将外部访问的流量转发到 192.168.0.2:7000 。最终在外部访问 112.24.0.23:6348 就等于访问 192.168.0.2:7000 。
heiher
2023-01-11 19:07:37 +08:00
@MeteorVIP HTTP 的话有两种方式:
1. HTTP 302 跳转,从固定入口的跳转服务跳到动态的 IP:端口。
2. CDN 非标端口回源。

这两种方式都是在 natmap 的脚本中调用服务商的 API 更新公网 IP 和端口。
llinge
2023-01-12 10:46:50 +08:00
@heiher #15
你好
1.NATMap 同时支持 TCP 和 UDP 吗
2.原来的服务端程序比如 nginx 需要修改代码或者更改配置文件吗
3.对于 TCP 协议的话是不是所欲数据要经过 NATMap 中转呢, 服务端还能拿到真实的客户端 IP 吗
4.UDP 数据也是经过 NATMap 中转吗?

谢谢
heiher
2023-01-12 11:34:49 +08:00
@llinge #29 你好

1. 同时支持 TCP 和 UDP ,不加 -u 参数是 TCP 模式,加上 -u 参数是 UDP 模式。
2. 服务端侧的程序无需要特殊修改。
3. 运行 TCP 服务端有三种形式:
a. 无转发模式,natmap 和服务端(如 nginx)都运行在路由器,natmap 负责打通端口映射,nginx 直接侦听并接受连接。
b. natmap 转发模式,natmap 运行在路由器,服务端运行在其它主机,natmap 负责打通端口映射和侦听并接受连接,再建立与服务端的连接,并桥接两路连接,该模式服务端不能拿到真实客户端 IP 。
c. 防火墙转发模式,natmap 运行在路由器,服务端进行在其它主机,natmap 负责打通运营商侧的端口映射,路由器额外配置防火墙的端口转发,负责将路由器侧的入站请求转发至服务端主机,该模式服务端可以拿到真实客户端 IP 。
4. UDP 模式与 TCP 完全相同,也是三种形式。
llinge
2023-01-12 12:07:09 +08:00
@heiher #30
模式 a 和模式 c 本质是一样的吧, 这两种模式难道不需要服务端程序开启 SO_REUSEPORT 吗?

对于模式 b 的话, TCP 模式下直接一个连接转发过去就行了.
模式 b UDP 模式下 natmap 对于每个不同来源(srcip:srcport) 的数据也是新建一个 socket 转发到服务端, 以便让服务端区分不同客户端的数据吗 ?

粗看了下代码, 代码风格真秀气, 不知道是在哪家公司练出来的.
heiher
2023-01-12 12:36:32 +08:00
@llinge #31
模式 a 由于 natmap 和业务服务端进行在同一网络空间上,需要绑定同一个源端口,是需要开启 reuseport 的,但是即使服务端没开启这一特性,在 Linux 5.6 及之后内核上,natmap 也会尝试跨进程打开 reuseport ,故业务服务端无需特别配置。

是的,模式 b 由 natmap 在用户态转发,tcp 协议建立两路 tcp 流,由 natmap 进行 splice 。udp 则相对复杂一点点,在用户态维护对应关系,natmap 与业务服务端之间为每一组不同的客户端 srcip:srcport 建立一路 connected 的 udp“连接”。

本着能跑就行的目标写的代码,见笑啦~ :D
llinge
2023-01-12 13:33:02 +08:00
@heiher #32
"跨进程打开 reuseport" 的相关代码在哪一部分呢?

"connected 的 udp" 不用每次都带着地址用 sendto recvfrom 了, 可以直接 send recv, 和 tcp 的 api 一样了, 可以代码复用.
lin559671
2023-01-12 13:34:34 +08:00
看完帖子,看样子我得回归 openwrt 了。之前一直用 routeros
heiher
2023-01-12 13:48:34 +08:00
@llinge #33

https://github.com/heiher/natmap/blob/master/src/hev-misc.c#L70-L234

细节上还是有些不同的,具体见 tfwd 和 ufwd 的差别。
llinge
2023-01-12 14:14:44 +08:00
@heiher #35 多谢
没想到 scanf 还能这样 %64[0-9A-Fa-f] 限定字符串的格式和长度.
更没想到还能通过 /proc/net/tcp[6]一路反查找到进程 pid 和 listenfd, 还能跨进程设置属性.
今天真是长见识了 :-)
MeteorVIP
2023-01-12 17:24:32 +08:00
@heiher #28 我用贝锐的域名,里面有个"隐性 URL",把打洞好的 ip 和端口填进去,访问域名的时候就可以转跳到端口啦,非常爽.多谢.这个方法唯一的缺点是,宽带 ip 改变之后要重新修改一下.但对我这种新手来说满足了.
URL 跳转:访问域名可跳转到一个网址上,实现不加端口号即可访问服务器(显性 URL ,会改变地址栏中的网址,隐性 URL 则反之)
droidmax61
2023-01-13 22:47:48 +08:00
@llinge 基操勿⑥
droidmax61
2023-01-13 22:50:04 +08:00
另外 natter 这个项目也可以试试看,与 natmap 唯一有区别的地方,我觉得就是支持的系统平台不同了,natmap 是不支持 windows 的,natter 因为是用 python 写的,所以可以打包成 exe
test0103
2023-01-14 06:46:00 +08:00
@siknet 关于广西桂林联通的 IPv6 ,我确认了,10010 回复说是有的,我让客服安排师傅上门了,他们沟通后确认是拨号服务器的配置问题,他们是有 IPv6 业务的,如果能多找几个人一起投诉一下,说不定就能有了,12 号宽带师傅上门处理不了,说要联系人去修拨号服务器,到现在还没反馈,我还不能获取到 IPv6 ,我打算过两天还没 IPv6 就继续投诉,双栈了,如果是还是内网的 ipv6 ,至少翻墙多了一点选择,如果是公网,那就 ipv6 over vpn 组网了

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

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

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

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

© 2021 V2EX