|
点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”
7 i& G) K# A$ v: \5 D# y干货福利,第一时间送达!
' p f! ~; k5 ?: p ?
2 q5 Z8 X7 T& q* C
2lm2tt2ae0d64060925515.png
) s, b/ q( o, x6 e
最近有小伙伴说没有收到当天的文章推送,这是因为微信改了推送机制,有一部分小伙伴刷不到当天的文章,一些比较实用的知识和信息,错过了就是错过了,建议大家加个星标??,就能第一时间收到推送。
) Q# j* Z2 }3 E7 E
kuxar35oxdh64060925616.png
5 A: J) y u) H. K# h) Z% u编译 | 苏宓 & X( G* k% S9 H. e
出品 | CSDN(ID:CSDNnews)IPv4 即将迎来付费时代:
% m6 ?9 f0 L' A4 W" `去年 7 月,亚马逊云科技宣布自 2024 年 2 月 1 日起,所有公共 IPv4 地址将按每小时 0.005 美元的价格收费,约合每月 4 美元,而且无论其是否附加到服务中,都要收费;$ B2 ^" J Z" D$ v& ^
基于容器的部署平台 Fly.io 也在不久前更新社区公告,称会在 2 月 1 日之后,对每个专用 IPv4 每月收取约 2 美元的费用;
, u4 Q: K, C% ~; l7 p' I开源数据处理服务平台 Supabase 计划推出一个 IPv4 的付费附加服务,每月费用为 4 美元。" q( D7 r: Q/ w4 F# C
随着时间一天天临近,围绕「IPv4 收费,迁移到 IPv6」的讨论愈发激烈。5 B M8 D+ t* `5 x8 l
近日,开源数据处理服务平台 Supabase CEO 兼联合创始人 Paul Copplestone 也发起一则关于“做好准备,IPv6 即将到来”的呼吁。然而,由于 IPv4 讯息和 IPv6 讯息标头有很大不同,因此这两种协议无法互操作,同时升级到 IPv6 之路也面临多重挑战,甚至在有开发者进行了尝试使用,最终得出一个结论:IPv6 是一场“灾难”,我们未来虽可以解决困难,但目前准备仍然不足。, k( c, h0 j* H! u3 B2 q/ s
pb41th2bbvn64060925716.png
; W1 x* Q+ ~( A' v+ \' |全球 IPv4 地址消耗殆尽,升级到 IPv6 提上日程众所周知,随着互联网的不断发展,设备的数量急剧增加,导致 2019 年负责英国、欧洲、中东和部分中亚地区互联网资源分配的欧洲网络协调中心(RIPE NCC)无奈宣布,其最后的 IPv4 地址空间储备池在 2019 年 11 月 25 日 UTC + 1 15:35 完全耗尽,全球 42 亿个 IPv4 地址已分配完毕。
; p# Z% S) p) c; l7 z; ?9 v耗尽之后,对于想要继续使用公共 IPv4 地址的用户而言,他们主要靠回收和未使用地址段的释放才能用上 IPv4,其中这些地址要么来自倒闭的组织,要么来自于那些已经迁移到 IPv6 时不再需要的地址。
, q8 P1 }, V6 Z6 x) e' x不难想象,获取日益稀缺的 IPv4 中间过程变得复杂,成本自然而然涨起来了。 z+ O* Q! s9 v v
此前,亚马逊云科技也曾透露过,在过去五年中,由于难以获得公共 IPv4 地址,单个地址的获取成本上涨了 300% 以上。0 |' N5 s9 |+ \* k1 J' s8 C+ \: {
所以正如文章伊始所述,各大公司不得不采取收费政策,一方面为了鼓励大家在使用公共 IPv4 地址时更加节俭,另一方面,想要借此推动行业内采用 IPv6。" {( Z0 h- A* {6 ]: A X/ a4 a) H+ I" Q
Paul Copplestone 表示,“虽然亚马逊云科技每月收取约 4 美元,对个人来说相对较少,但我的假设是,AWS 是许多基础设施公司(如 Supabase)的基础层——我们为每个 Postgres 数据库提供完整的 EC2 实例,因此这将使我们的 AWS 账单增加数百万美元。”
$ L `; X. n3 ^) X5 _6 n1 r也有一些分析师表示,对于任何规模的 AWS 客户来说,这些费用都可以忽略不计,他们也许都不会在自己的账单上注意到这笔新增的支出。然而,对于许多中小企业和初创企业来说,这笔费用很容易就占到账单的 10-30%。8 z. e; ~$ q* B) S1 O
4 @, D9 q. }; ^ Q5 D% r! N
jgjsa43q1vw64060925816.png
+ S% p6 Z& l5 a* X" v5 k/ L F# T0 S4 G& s, o) w' ?5 Y3 g( t
三种选择
0 F# e0 H& v7 j5 e那么在避不开这笔费用时,公司又有什么样的方法来尽可能地减少支出?$ \# w, [6 U; ~1 q; B$ C
对此,Paul Copplestone 分享了 AWS 上的基础设施公司的三种选择:
, F8 v1 S$ z/ e! Z6 {) E3 q" L+ w将成本转嫁给客户头上。这一点其实很好理解,就如 AWS、Fly.io 所做的,当涉及到租用或者购买 IPv4 地址时,制定新的收费政策,让客户为此付费买单。对于一个 IPv4 地址,AWS 新的收费金额为每年 43.80 美元(0.05*一天 24 小时*一年 365 天)。! B9 B7 n% D' S( V1 w
提供变通办法(例如代理)。此外,相关企业也可以为客户提供 IPv4 代理服务,通过代理将 IPv6 流量映射为 IPv4 流量。这种方式允许 IPv6 设备访问 IPv4 资源,同时减少对 IPv4 地址的直接需求;或者通过网络地址转换(NAT)技术优化 IPv4 地址的利用。共享一个 IPv4 地址,同时使用不同的端口来区分不同的服务或用户。, J& k3 Y- j- R: s" r" S% Q
只提供 IPv6,希望所有人都能跟上使用。9 W: K" ~! Y1 \; x( O& B- E
+ E" `/ L% }3 B/ [+ t( M b! E& p
ji1dgz5gcro64060925916.png
4 z/ ?/ i* Q2 I4 ~% a" z4 k
6 `6 K0 F7 g# z7 s$ o# R9 z- aIPv6 普及存在的挑战
0 q' i# O1 ~( u* I1 o& ^& _从长远角度来看,第三种方式即“只提供 IPv6”是最节约成本、解决后顾之忧的方案。因为作为 IPv4 的替代者,IPv6 提供了更好的支持移动设备、更灵活的地址分配、更简化的头部结构以及更好的安全性。
5 p0 s Z! u4 }2 C, i9 V$ Y U更为值得注意的是,IPv6 的地址空间极其庞大,可以提供大约 3.4 x 10^38 个地址,也有不少人调侃道——“IPv6 让全球每一粒沙子都有地址”,其数量远远超过 IPv4,从而满足未来互联网设备的增长需求。* b; ~8 L1 C( A, v o' V
oze010r4bmq64060926016.png
! g" e; \6 {+ j& UIPv6 的到来显然是件好事,但是据 Google 统计的数据显示,IPv6 推出十多年时间,截至 2024 年 1 月 15 日,互联网上使用 IPv6 的用户未达五成,占比 41.23%。6 P7 I3 i- \; p) q, }; s# V9 s
bh3a3mqia4h64060926116.png
( P: C N+ U! G, R+ Z: _至于其中原因,Paul Copplestone 将其归因为两个方面:
3 p: {5 Z- z+ I& X, a3 `ISP 支持力不足
9 P' S t0 {5 _6 C缺乏工具支持
. I. o6 K3 @% V S2 q
- ]3 Z# Y- \5 i
b4llck5pzli64060926216.png
9 e. C' H2 @- r1 _1 B, b7 _. ]5 u
( |. F: p* a' N3 U( S/ \1 s' `0 s
ISP 支持力不足* Q/ G) Q/ v0 M, V, h# V' `- S/ H9 Q. f
“你的互联网服务提供商支持 IPv6 吗?”
3 c7 E. z, Y; |2 i0 x2 d- g; O在 Paul Copplestone 看来,全球采用 IPv6 的最大挑战是 ISP(互联网服务提供商,Internet Service Provider)的支持。
& C! p6 c" h6 L3 B9 n+ O Z简单来看,当你输入一个网站的域名时,它会被转换成一个 IP 地址。传统上,这些地址都是 IPv4 地址:
: u( N% [8 U% p7 J, P, Zexample.com → 93.184.216.34这些域名最终将被转换为 IPv6:8 |- p2 f: R5 B
example.com → 2607:f8b0:4006:819::200eISP 收到该地址后,负责把所有流量路由到正确的目的地。
5 c3 U) `) n) W4 _遗憾的是,许多 ISP 还没有为此做好准备——它们需要更新的交换机、更新的软件以及与 IPv4 的互操作性。所有这些都需要花钱,而在过去 10 年中,这种投资并不值得。' l- Y1 k8 Z7 i" U! Q Q
如果你的互联网服务供应商不支持 IPv6,当域名/服务器开始解析为 IPv6 而不是 IPv4 时,你将会受到以下影响,以及报一些错误:0 V# k/ M4 } L
你在 AWS 中设置了 Web 服务器吗?是的话,你将无法通过 SSH 连接到它。
( B1 W4 x, H% @, |你是否使用直接连接从本地计算机连接到 Supabase 数据库?是的话,你需要使用连接池,它将解析为 IPv4(供应商将为这些 IPv4 地址付费)。% w7 n6 O* R* a' p) `
你是从 Vercel 连接到任何 AWS 服务器的吗?如果不为服务器设置 IPv4 地址,连接很快就会失败。
# n" e3 o/ x3 {3 x1 h" _/ U
& {4 f$ m# E* q
w3ywfckagno64060926316.png
! M6 u# ^% i) {$ S8 O/ K' D; h5 N. Q+ ]. g5 S
缺乏工具支持: m. b9 b- y( j6 |
此外,许多开发者工具都还没有针对 IPv6 进行设置。Paul Copplestone 使用自家的开源 Firebase 替代方案 Supabase 来举例说明,他们的数据团队要想他们的工具链支持 IPv6,需要进行以下更改:# Q3 L9 R% C _( f# d
为 VPC 网络添加 IPv6 支持。
6 a$ i% ~1 t- u为 Airflow VM 添加 IPv6 支持。, K, `0 h- R! C3 p; ]# b, F2 c
为 Docker 和 Compose 添加 IPv6 支持。! l9 X+ Q- l2 c
这些看起来都很简单的一句话,但要真正地实现,非常麻烦。下面是配置 Docker 的步骤:
; g: J0 H- L! A$ {9 R6 o6 d T1. 更新 /etc/docker/daemon.json:
5 N) P+ ^: Q! c' M x+ ^7 }2 {1 `( N' b/ T
"ipv6": true,"fixed-cidr-v6": "fd00:ffff::/80","ip6tables": true,"experimental": true
, l2 s: W) V" X8 `; t- H2. 重新启动 Docker 服务:
! g0 `& \ a: D- e* ]2 ]! x+ s7 t' J
9 n* ^& |* [) C6 J8 h( P0 Lsystemctl restart docker
1 O5 e$ a; J2 E! g6 k3. 创建一个临时 IPv6 网络并进行测试:( ]# ~) G4 }5 g- p# w! P
% K7 e, V# i' f8 {/ e, f N9 C$ }docker network create --ipv6 --subnet fd00:ffff::/80 ip6netdocker run --rm -it --network ip6net busybox ping6 google.com -c3 P0 X" a) C! [! J
4. 检查 IPv6 iptables 配置(FORWARD)
4 ~) {- N; _2 c: c
& M( Y' S, a( Z, t( Y* c" M3 |ip6tables -L
' Q2 t% Y! F. r o5. 添加 IPv6 网络配置到组成配置文件 docker-compose.yaml 中0 X2 z# y4 o. |+ j
% N& B" ]: z4 J1 f( a3 n( X4 h _+ k
# enable IPv6 to default networknetworks: default: enable_ipv6: true ipam: config: - subnet: fd00:c16a:601e::/80 gateway: fd00:c16a:601e::1) c. m' d4 I0 F& ?. S
6. 检查是否在容器中运行 ^1 d6 B5 G1 ^6 [
# f2 I+ y, p7 m0 ?% Zdocker exec -it "airflow_airflow-worker_1" bashcurl -6 https://ifconfig.co/ip# G4 |0 K9 p+ s! v3 ~! a1 C
对于像 Docker 这样无处不在的工具来说,这实在是太复杂了。6 z+ Z* t w& w! k/ V9 P+ u
yxruhanoalu64060926416.png
2 i+ h( o& @2 _! w1 X2 M. X7 p迁移到 IPv6,困难重重9 u- l% _% `$ U: o/ ?2 r
话虽如此,在真实尝试过程中,DevOps 工程师 Mathew Duggan 坦言,还是被迁移到 IPv6 所遇见困难吓到了:“几乎没有任何东西可以开箱即用。主要的依赖程序立即停止运行,而变通方法也无法满足生产需要。团队向 IPv6 迁移的过程非常坎坷,这主要是因为几乎没有人做过这项工作。我们多年来都没有做这项工作,现在我们需要付出代价。”
/ t \5 L! H: aMathew Duggan 尝试将自己的博客(https://matduggan.com/ipv6-is-a-disaster-and-its-our-fault/)迁移到 IPv6,使用 CDN 管理 IPv4 流量。
4 V$ `- b! h. s$ q2 X他表示,“实际设置过程很简单。我配置了一个 Debian 设备,并选择了 ‘IPv6’。然后,我得到了第一个‘惊喜’。这台设备没有获得 IPv6 地址,只是得到了一个 /64 的地址,即 18,446,744,073,709,551,616。好消息是,我的小型 ARM 服务器可以通过扩展,在所有公共地址上运行我曾工作过的每家公司所有网络基础设施。“+ m9 Z+ j8 @1 {. p3 V
然而当他尝试像普通服务器一样设置它时,问题来了。
$ ?9 W3 I: e3 X( T5 P! S+ T: D4 F问题一:无法通过 SSH(Secure Shell Protocol)登录 f `$ @% F3 x7 h* S( g
「这是一个可以预见的问题」,Mathew Duggan 说道,这是因为他工作或家里的 ISP 都不支持 IPv6,所以才需要设置自己的服务器,但现在却完全不起作用。
* l# @" Y v8 u* I; @于是,Mathew Duggan 只能先附加一个 IPv4 地址,然后通过 SSH 登录,再设置 Cloudflared 来运行隧道。
6 u8 V# {% o7 H1 Y$ I让他失望的是,Cloudflare 系统并不会自行处理其中的转换工作。所以删除 IPv4 地址时,隧道意外崩溃了。 N8 ~0 k# Y: |: G4 I! l2 j% }
默认情况下,Cloudflared 工具使用的是 IPv4,我们需要编辑 systemd 服务文件,添加:--edge-ip-version 6。这样,隧道才能正常启动,Mathew Duggan 也能通过 SSH 登录了。- M* A" ~( v* b/ J) U
问题 2:无法使用 GitHub- k/ I8 @: `0 T8 y0 K7 K, |
当 Mathew Duggan 的服务器开始运行后,他尝试运行服务器设置脚本时,结果立刻就报错了。它正在尝试访问 hishtory 的安装脚本,这是一个很棒的 shell 历史工具。它试图从 GitHub 提取安装文件,但失败了。% j, j! q& W# M* {1 l1 ~6 q
Mathew Duggan 产生了疑惑,“这肯定不对。GitHub 一定支持 IPv6?”。
5 O5 @: u( H0 T# y结果意外发现这个整个互联网都在用的发布软件服务 GitHub 竟然不支持 IPv6。
2 n9 j9 p* U% w1 U5 q; z6 }* a最后迫于无奈,Mathew Duggan 使用了 TransIP Github 代理服务器,效果还不错。但是随后 Python 出现了 urllib.error.URLError 错误:。8 v: F6 e6 f8 \7 H; n/ R" P
“好吧,我放弃了。我猜 Debian 中的 Python 3 版本不喜欢 IPv6,但我现在没心情排查它”,Mathew Duggan 说道。6 Z+ f3 A2 J ?' M; P1 P& U
问题 3 :无法设置 Datadog% `- a- n& ?" N! m' P. N0 l' M u. Z
接下来,Mathew Duggan 想设置 Datadog 来监控这台服务器。
5 x/ w, A. T; `( V& o, G4 l9 {Bug 再次出现,当他访问 Datadog,登录并开始操作时,系统立即崩溃了。他只是简单设置是运行 curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh,现在 S3 支持 IPv6,那么问题究竟出在哪里?
4 m% Z6 P9 |5 X+ b/ I. U# ]经过排查,Mathew Duggan 发现问题不是出现在 S3 或服务器上,因为他可以正常使用 AWS 提供的 S3 连接测试。后来他通过 apt 手动操作解决了问题。+ D( A) d4 t: N% v9 B6 O8 j+ E$ M
直至此时,Mathew Duggan 清晰地感知到,纯使用 IPv6 根本没有前途。如果不上代理和技术补丁,那几乎没有什么东西能正常工作。$ J1 z* B. S5 i4 `( o
后来,为了从 IPv6 访问 IPv4 资源,他选用了NAT64 服务(https://nat64.net/)作为支持。
, z' }- o* ?8 b" @' z+ N此外,他也查找了很多工具,结果发现大多数工具都已经失效,如下列表单中的 Dresel 链接无法工作;Trex 在测试中出现了问题;August Internet 彻底消失;大多数 Go5lab 测试设备离线;Tuxis 倒是可以工作,但在 2019 年推出之后似乎就没升级过。只有一个 Kasper Dupont 支持度还是可以的。, q1 z1 \3 r& M4 T* o
# Z5 r& M# f2 S: v
vfjotnxuq4d64060926516.png
+ P( Q1 ~/ d; _5 i/ f- G, L
* }( `/ y& E. B1 X. x; x; f0 @IPv6 的普及任重而道远1 p& \- _$ X+ O" E, u
在 Paul Copplestone 和 Mathew Duggan 看来,现在虽然已经到了向 IPv6 迁移的时期,但是大多数基础设施和软件还没有为这种变化做好准备。Duggan 警告称,需要针对 IPv6 进行培训和准备,这将是数字专业人员面临的重大挑战。6 L, U+ p6 B/ N5 P7 V
对此,也有不少开发者感同身受,来自 HN 上的网友纷纷吐槽道:( O" w0 H1 ?/ r6 c
“我仍然在诅咒 IPv6 的设计者没有让它向后兼容 IPv4。IPv6 的设计无疑更好,但由于缺乏向后兼容性,向 IPv6 过渡绝对是个大难题。我知道设计者认为过渡只需要几年时间,但将近 30 年过去了......我们还是在这。”% j# A# A- x5 Y
IPv6 并不能真正解决地址耗尽的问题,除非 IPv6 地址成为一等公民,而只有当我们不再需要依赖 IPv4 地址时才会发生这种情况。* U4 A( Z, Z3 I
那么不迁移到 IPv6,停留在 IPv4 上,它可能无法满足日益增长的需求,导致性能下降和服务不稳定,同时许多组织采用 NAT 技术来共享有限的 IPv4 地址,这也为其增加了网络管理的复杂性,可能导致一些应用程序或服务的功能受限。
( G" f( ^9 O$ [7 ?! v8 Q基于此,越来越多的组织加入到实施 IPv6 迁移的浪潮之中。
# }& ]8 G+ r9 n来源:
$ ~: ?0 c0 j$ f1 ?+ ]( C; Zhttps://supabase.com/blog/ipv6
0 N5 e% l0 I8 D9 y; G: vhttps://matduggan.com/ipv6-is-a-disaster-and-its-our-fault/" G1 C7 B$ D9 Q9 s8 R4 x" X) \+ _
https://news.ycombinator.com/item?id=39032665, L3 K$ k9 Z; V, x5 V6 n& p5 [* u
——EOF——你好,我是飞宇,本硕均于某中流985 CS就读,先后于百度搜索、字节跳动电商以及携程等部门担任Linux C/C++后端研发工程师。
. S% c2 | F: x) T! ?最近跟朋友一起开发了一个新的网站:编程资源网,已经收录了不少资源(附赠下载地址),如果屏幕前的靓仔/女想要学习编程找不到合适资源的话,不妨来我们的网站看看,欢迎扫码下方二维码白嫖~* {$ `# |% ?2 e2 L: N8 @2 f& _
1 {) z% b/ Q" N" N
smjcll40vks64060926617.gif
' i5 z; Z' R0 C$ H+ V
; e. A) M* a* `# N
同时,我也是知乎博主@韩飞宇,日常分享C/C++、计算机学习经验、工作体会,欢迎点击此处查看我以前的学习笔记&经验&分享的资源。
; Z' o/ @) C, V8 M. W8 v, D( [我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。
( C( H2 n. o' ^- } g
vgjcaiuw1mm64060926717.png
: f4 H& D8 h1 A" o# t J. I( v
欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会。+ V. `" v ?, {4 K n
) p* ?% M% A6 x& w# [: w/ s4 A
ifqhce0gnzw64060926818.png
- z& J9 k: T* K ^7 r( [
加个微信,打开另一扇窗$ C9 x1 l6 \) W4 o9 S f) L
nkle1rs0u3g64060926918.gif
|
|