全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 4388|回复: 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 和网络配置逻辑对多网卡的识别不佳,有多网卡且各网卡都需要静态配置网络参数的机器,建议安装前禁用掉其他不常用网卡,仅保留默认常用主网卡,安装完系统后再启用其他网卡完成配置。
2#
 楼主| 发表于 2022-11-18 21:43:12 | 显示全部楼层

支持,甲骨文双栈机支持
3#
 楼主| 发表于 2022-11-18 21:54:16 | 显示全部楼层
腾讯云6折购 发表于 2022-11-18 21:49
一直用的甲骨文自己的ubuntu系统,如果想dd,需要做上面的操作吗?

Ubuntu 是自动配置的 DHCP,脚本是可以正确读取到的,只要你确定自己没有手工改过网络配置
4#
 楼主| 发表于 2022-11-18 21:57:06 | 显示全部楼层
huanx 发表于 2022-11-18 21:54
欢迎页不喜欢 还是喜欢原来一个root的 可以加个参数自由选择呗

不喜欢的话,登录系统后可以清空 motd,删除掉欢迎页提示:

rm -rf /etc/update-motd.d/*
6#
 楼主| 发表于 2022-11-18 22:14:59 | 显示全部楼层
腾讯云6折购 发表于 2022-11-18 22:04
还有一个 centos7作为原系统的时候 能不能d? 萌咖的原版会报错eorr eg啥的 这个大佬修复了吗 ...

我能保证在 CentOS 7+ 上,获取网络参数是否为 DHCP 是正确的,普通 VPS 商家的 CentOS 7 可以重装成 Debian 新版,这一点我跑过搬瓦工模版里的 CentOS 7 系统验证过,甲骨文的红帽系 Linux 重装好像都有问题,你只能用 netboot 手工重装成一个 Debian/Ubuntu,再自动 dd 一个纯净版的,重装方法我一个老文章里有:https://zhuanlan.zhihu.com/p/97527349
7#
 楼主| 发表于 2022-11-18 22:22:22 | 显示全部楼层
HOH 发表于 2022-11-18 22:18
花里胡哨的,我用debian就是要干净,要颜色自己取消bashrc注释就好了,不需要别人帮我画蛇添足 ...

喜欢干净可以把我定制的内容改回去,代码全是公开的,没有不给你选择的权利,过度的干净是简陋,而不是一种简洁的美
8#
 楼主| 发表于 2022-11-18 22:30:31 | 显示全部楼层
HOH 发表于 2022-11-18 22:18
花里胡哨的,我用debian就是要干净,要颜色自己取消bashrc注释就好了,不需要别人帮我画蛇添足 ...

自己撸不出来代码就别输出戾气了,h2o 你都被封了一个号了还成天水贴作死呢
9#
 楼主| 发表于 2022-11-18 22:32:30 | 显示全部楼层
HOH 发表于 2022-11-18 22:18
花里胡哨的,我用debian就是要干净,要颜色自己取消bashrc注释就好了,不需要别人帮我画蛇添足 ...

你 fork 一下我代码,把我定制内容全删了,搞个纯净版的,我赶紧去给你 star
10#
 楼主| 发表于 2022-11-18 22:50:46 | 显示全部楼层
HOH 发表于 2022-11-18 22:45
收皮啦,就你这种默认勾选安装捆绑功能的废品,留着自己用吧

不爱用别用,没人求着你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-6 02:23 , Processed in 0.066210 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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