全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 4311|回复: 62
打印 上一主题 下一主题

重磅!Linux 网络重装脚本支持 Vultr 纯 IPv6,双栈机型

  [复制链接]
跳转到指定楼层
1#
发表于 2022-11-18 21:39:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 天权璇玑 于 2022-11-18 22:18 编辑

给旧贴编辑内容也没啥热度了,算了再水一贴。

项目地址,欢迎 star:

https://github.com/leitbogioro/Tools

使用方法,旧贴里有:

https://91ai.net/forum.php?mod=viewthread&tid=1094336

大吊展示:



最近更新内容,太长不看版:

  • Debian 原版太素净了,于是预置大量常用组件,支持文件彩色显示;
  • 定制了一个漂亮的 Debian 欢迎画面;
  • 首家支持 Vultr 2.5 刀单栈 IPv6 机器(仅限 DHCP,其他纯 IPv6 VPS 应该也可,欢迎测试上报)
  • 首家支持双栈(IPv4 IPv6 公网 IP 皆有)机型(自动完成 IPv4/6 配置,不用在新系统里手工改,仅限 Debian、DHCP)
  • 市面上绝大部分 VPS 都支持 DHCP,包括甲骨文,系统是否支持 DHCP,安装前脚本会自动判断逻辑。但用过我的旧版,或者萌咖的,或者其他魔改萌咖版脚本重装成 Debian/Ubuntu 的机型,系统网络配置一定是静态分配的,这是源头萌咖脚本逻辑判断不够完善。
  • 符合以上条件,如果要用我的新脚本重装,读取网络配置肯定会出问题,请一定把网络配置改成正确的。如果有 DHCP,要么请手动改回去,要么用面板重装功能重装一个附带正确网络配置的系统。
  • 甲骨文机器无面板重装功能,所以你如果既不想删机,又想重装,可以放心大胆地把网络配置改成 DHCP,例如 Debian,把:/etc/network/interfaces 里内容改成“iface inet 机器网卡名称 dhcp”(IPv4)和“iface inet6 机器网卡名称 dhcp”(IPv6),重启后再运行新的重装脚本。


-------------------------------------我是分隔线-------------------------------------

技术细节版:

经过广泛测试,我发现萌咖的脚本安装 Debian 类(Debian/Ubuntu)系统时,preseed 文件制定的“d-i”(Debian install)的网络配置流程有大问题,它是强制读取当前系统 IPv4 地址、子网掩码、网关,并指定一个 DNS 服务器(默认“8.8.8.8”),并且把这些配置硬塞给新安装系统的网络配置中。

以往大家用的都是 IPv4 单栈机型,这样配置没什么问题,直到随着 IPv6 普及,单栈 IPv6,双栈机型的大量出现,这种配置的缺陷就慢慢体现出来了:

1. “d=i”手动指定网络参数配置,只能写入一种,要么 IPv4,要么 IPv6,不能混搭,给同一参数指定多项配置的话,要么无效,要么下一条配置顶掉了上一条,对于双栈机,此过程如果要同时写入 IPv4 和 IPv6 配置是无意义的;

2. “d-i” DHCP 默认优先用 IPv4 连接网络源安装,如果 IPv4 有网;

3. 对于单栈 IPv6 机器,“d-i” DHCP 可以正确获取 IPv6 配置并完成安装,系统安装结束后,网卡里会自动配置 IPv4(仅限内网)和 IPv6。

基于这些事实和相关实验,我们可以得到以下结论:

1. 纯 IPv6 单栈机强制给 IPv4 参数,必然会安装失败,因为给机器的是 IPv4 配置,虽然原系统里有,但 IPv4 的路由是无法连接网络的,在此过程中系统无法获得 IPv6 配置并连接网络,不能成功连接到相关源,后续安装更无从谈起。

2. 纯 IPv6 单栈机强制给 IPv6 参数,虽然可以通过校验网络连接部分,但因为缺少内网 IPv4 配置,导致一些内部路由转发出现问题,使连接源下载组件的时候,频繁报错,需要连接 VNC 手动确认,不但丢失了全自动安装效果,还会导致安装后 ssh 无法连接机器。

3. 双栈机型安装时仅配置了 IPv4,如果要支持 IPv6,需要在重装后进入系统手动配置一下。

4. 现在绝大部分 VPS 商家由于面临多机器管理,给每台机器镜像里单独定制静态分配 IP 从成本和管理便利性来说都会造成更多麻烦,所以 VPS 支持 DHCP 是大势所趋,不必纠结于必须手动配置网络。

所以,我在脚本程序中加入了完善的逻辑判断,确保可以顺利读出当前主流 Linux 发行版,比如红帽系的 CentOS/AmalLinux/Rockey/Vzlinux,Debian 系的 Debian/Ubuntu 中的网络配置方式,如果是 DHCP,“d-i”流程自动跳过强制写入 IPv4 配置流程。这一前提,必须是原系统网络配置正确,不能原来是动态的,被改成静态的,反之亦然。

对于 Debian 双栈 DHCP 机型如何确保安装后,首次 ssh 连接机器后,就能发现 IPv4 和 IPv6 都已经配置好了,既然安装前网络阶段只能配置完成 IPv4,那么 IPv6 只能放在后续 preseed 流程中,我的方法是获得当前系统网卡硬件名称,后续在 Debian 网络配置文件里写入开启 IPv6 的 DHCP 配置参数。

如果你的 VPS 仅支持静态网络参数配置,也不要担心,确保你当前系统网络配置是完全正确的情况下,脚本逻辑有完善的逻辑判断,确认你的机器不是 DHCP,从而返回手动配置 IPv4 流程,让你的机器能重装后正确连接网络。

从 Ubuntu 18.04 以后,系统引入了一个叫 netplan 的组件来管理网络连接参数,netplan 的配置文件是 yaml 语法,靠不同长度的缩进来区分不同网卡的参数从属项,语法跟 interfaces 完全不一样,preseed 阶段写入是真的麻烦,所以双栈机 Ubuntu 系统 IPv6 的 DHCP 配置文件写入不想搞了。

再次提醒一下,Ubuntu 22.04 虽然支持全新的,叫“Cloud-init”的网络重装方式,是由 Ubuntu 母公司 Canonical 开发的,但这种方式对机器硬件性能要求很高,CPU 支持虚拟化是必须项,否则安装过程中 qemu 程序就会启动失败。

这一点对一般的 VPS 而言是真的难顶,虽然他们的母机 CPU 必然支持虚拟化的,但经过虚拟化后的客户机 CPU 想再有虚拟化支持可就不一定了,经过观察,目前搬瓦工、Virmach、Racknerd、Cloudcone 等绝大部分廉价 Linux VPS CPU 都是不支持虚拟化的,Vultr、DigitalOcean、Linode 等廉价套餐也不支持,硬件配置高的机型也不一定支持,特性是一样的。现在确认 CPU 支持虚拟化的,只有甲骨文、独服等等了。

虽然我可以制作一个无人值守安装镜像,通过 dd 来实现支持,但这和 Linux 网络重装的理念就相去甚远了,系统核心文件来自官方权威的源才让人放心,私人打包的靠不靠谱两说,问题是我自己还要维护一个直链下载站,时间和成本都是难题。

所以 Ubuntu 22.04 今后还能不能搞,你自己也应该有答案了,Cloud-init 清理低端人口,适用范围太窄,是 Ubuntu 自己断了这条路的,不让低价值 MJJ 用新的纯净版 Ubuntu 了,我也没办法。所以:

F*ck the canonical!

一些小缺陷:

DHCP 和网络配置逻辑对多网卡的识别不佳,有多网卡且各网卡都需要静态配置网络参数的机器,建议安装前禁用掉其他不常用网卡,仅保留默认常用主网卡,安装完系统后再启用其他网卡完成配置。
来自 35#
 楼主| 发表于 2022-11-18 22:55:02 | 只看该作者
本帖最后由 天权璇玑 于 2022-11-18 22:57 编辑
huanx 发表于 2022-11-18 22:53
我刚才测试了一下


请审题,自动 v6 配置仅限 DHCP 机型,而且是 v4 v6 都支持 DHCP 才行,而且目标重装的系统必须是 Debian,且原机器网络配置一定要正确,不是以前脚本自动设置的静态配置,我拿甲骨文的双栈机跑过,重装后重启两个自动配好
匿名
来自 47#
匿名  发表于 2022-11-19 03:09:43
HOH 发表于 2022-11-18 22:45
收皮啦,就你这种默认勾选安装捆绑功能的废品,留着自己用吧

越来越少人分享技术帖就是因为有你这种人,你牛逼不用这个也不用上来就喷。
推荐
发表于 2022-11-18 22:18:51 | 只看该作者
花里胡哨的,我用debian就是要干净,要颜色自己取消bashrc注释就好了,不需要别人帮我画蛇添足

点评

不太理解还不封这个人是为什么。每次看见这个人的神论都觉得绝。  发表于 2022-11-19 19:56
匿名
推荐
匿名  发表于 2022-11-19 00:15:41
HOH 发表于 2022-11-18 22:45
收皮啦,就你这种默认勾选安装捆绑功能的废品,留着自己用吧

你妈死了吧
推荐
发表于 2022-11-18 22:45:16 | 只看该作者
**璇玑 发表于 2022-11-18 22:32
你 fork 一下我代码,把我定制内容全删了,搞个纯净版的,我赶紧去给你 star ...


收皮啦,就你这种默认勾选安装捆绑功能的废品,留着自己用吧
推荐
发表于 2022-11-19 00:10:01 | 只看该作者
一个好好的技术帖
结果进来个阴阳怪气的
也是服了
推荐
发表于 2022-11-18 22:57:18 | 只看该作者
天权璇玑 发表于 2022-11-18 22:55
请审题,自动 v6 配置仅限 DHCP 机型,而且是 v4 v6 都支持 DHCP 才行,而且系统必须是 Debian,我拿甲骨 ...

那安装完 是不是也是DHCP呢?    原来如此 感谢!!
推荐
发表于 2022-11-18 22:53:12 | 只看该作者
天权璇玑 发表于 2022-11-18 22:51
当然可以,萌咖的脚本我只添加新功能,不改原来就支持的特性

我刚才测试了一下

  1. iface ens3 inet6 static
  2.         address 2400:6180:***/64
  3.         gateway 2400:6180:*' > /etc/network/interfaces
复制代码


重装没有V6信息哦
推荐
发表于 2022-11-18 22:43:51 | 只看该作者
天权璇玑 发表于 2022-11-18 21:57
不喜欢的话,登录系统后可以清空 motd,删除掉欢迎页提示:

rm -rf /etc/update-motd.d/* ...

还有一个问题是 原版 ARM或者AMD 可以自己判断
只需要 -v 64(系统位数,32 或 64 或 arm64)  也可以DD ARM64
2#
发表于 2022-11-18 21:40:42 | 只看该作者
Vultr 新搞的架构让装 RouteOS 都麻烦,希望支持一下
4#
发表于 2022-11-18 21:41:24 | 只看该作者
技术贴,流明
6#
发表于 2022-11-18 21:41:45 | 只看该作者
感谢分享


收藏了,好贴
7#
发表于 2022-11-18 21:42:02 | 只看该作者
支持                                                               
8#
发表于 2022-11-18 21:42:27 | 只看该作者
支持甲骨文吗
表妹 该用户已被删除
9#
发表于 2022-11-18 21:42:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
10#
 楼主| 发表于 2022-11-18 21:43:12 | 只看该作者

支持,甲骨文双栈机支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-26 06:51 , Processed in 0.143473 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表