全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1662|回复: 5

Linux一键重装更新,支持IPv4/6动静态分别控制,netboot启动

[复制链接]
发表于 2023-4-24 15:31:09 | 显示全部楼层 |阅读模式
本帖最后由 天权璇玑 于 2023-4-24 15:44 编辑

项目地址,欢迎 star,github 主页或私信反馈:

https://github.com/leitbogioro/Tools

支持从甲骨文等主流大厂,各其他商家的任意 Redhat 红帽系统(包括 Oracle Linux CentOS Almalinux Rocky)重装到 Debian,也支持 Ubuntu/Debian 装回红帽系统,只要内存够(红帽系列建议3GB以上),两大类系统永久互装完全没问题!彻底解决了萌咖原版 grub 引导处理有局限,红帽只能装 CentOS 6.9 的困扰(我这个版本已不支持 CentOS 6.9)、要装 Debian 必须原系统为 Debian 的问题,完善了 IPv4 和 IPv6 的处理,支持 IPv4 IPv6 双栈机,IPv6 单栈机。

使用详情参见该贴:

https://hostloc.com/forum.php?mod=viewthread&tid=1159839

本次更新主要包含以下方面:

1. 支持 netbootxyz 自定义重装,仅限 x86 BIOS,可 VNC 调试 机型,添加 -netbootxyz 即可,如:

  1. bash InstallNET.sh -netbootxyz
复制代码


进入 netbootxyz 后,如果发现机器不能自动配置网络,请迅速按“m”进入手动配置网络模式,进入前请务必在原系统或后台,获得本机正确的网络配置信息,包括 IP、掩码、网关,dns 填:1.0.0.1 或 8.8.4.4 即可。

如果是 UEFI 固件、arm64 系统等,建议参考官方文档在 VNC 里进入固件手动选择 netbootxyz.efi 启动。

参见:https://netboot.xyz/docs/kb/providers/oci

左侧列表里还有 DigitalOcean、GCP 等,请自行参考

2. 放弃对低于 512M 内存(非 -netbootxyz 模式)机器的支持,因为 Debian 12 即使开了 low memory mode(低内存模式),也无法在 256MB 机器上启动安装。

3. 针对 IPv4 单栈机 Debian 系统,强制默认用 IPv4 访问网络,避免给 IPv6 dhcp 配置,本机虽然有 IPv6 dns 解析,但没给实际的 IPv6 配置,导致每次通信,先尝试几次 IPv6 失败再用 IPv4 通信,极大地浪费通信时间的问题。

4. 优化安装效率,红帽系统默认使用 dnf 安装必要组件,放弃使用 yum,除非系统不支持使用 dnf 包管理(如:Oracle Linux 7)。

5. 针对 IPv4 和 IPv6 的 IP 动态(dhcp)或静态(static)分别作检测、储存并为新系统写入配置。

开发这个功能的契机,是以前我对 IPv4 和 IPv6 网络配置的策略是检测到任意一个为静态配置,另一个也给静态。除非双方都是动态,才全会给动态。只有 IPv4 或 IPv6 网络的,不对另一个不存在的网络做配置。

但是在帮 @水牛 排查 Hetzner 网络得时候,出现了一个问题:

它控制面板 Debian 原版镜像给的网络配置是 IPv4 dhcp,IPv6 static,然而 CentOS 8 原版镜像给的是 IPv4 static,IPv6 static,用脚本重装新系统如果是IPv4 dhcp,IPv6 static,网络配置就没问题,如果按 IPv4 static,IPv6 static 配置,Debian 安装程序一定会报 unreachable gateway,Hetzner IPv4是公网 IP,网关是内网 IP 172.31.1.1,支持 dhcp 配置 IPv4,新系统安装程序用 dhcp 配置 IPv4,网络是通的,查到的网关仍然是 172.31.1.1,然而照 dhcp 分配的网关,给 IPv4 静态分配该网关,安装程序还是会提示 unreachable gateway。

Hetzner 官方文档里也是网关统一为 172.31.1.1,IP 是用户各自机器的公网 IP,按它的配置,只能给已经在运行的系统上配置好 IPv4,如果安装程序按此手动配置,网络就会配置失败:

  1. ifup

  2. Edit /etc/network/interfaces:

  3. auto eth0
  4. iface eth0 inet static
  5.         address <your IPv4 address>
  6.         netmask 255.255.255.255
  7.         gateway 172.31.1.1
  8.         pointopoint 172.31.1.1
  9.         dns-nameservers 185.12.64.1 185.12.64.2
复制代码


然后几天前,我又碰到了一个案例,是 @maxkvm 提供的一台 Godaddy 的机器,IPv4 单网静态,最头疼的是 IPv4 的配置问题和 Hetzner 家几乎一样,IP 是公网的,网关是内网 IP,这种配置给新系统安装程序,就会报错:unreachable gateway,为保护隐私,他机器 IP 地址已做过处理:


  1. cat /etc/network/interfaces.d/eth0

  2. auto eth0
  3. iface eth0 inet static
  4.         address 184.168.145.90
  5.         netmask 255.255.255.255
  6.         up ip -4 route add default via 169.254.0.1 dev eth0 onlink
复制代码




@maxkvm 边沟通边尝试各种办法,包括用 route -n、netstat -r、arp 等各种命令查询网关或局域网里是否有其他可能担任网关的机器,也尝试过填写过 184.168.145.1、184.168.144.1、184.168.146.1 等当做网关配置,安装程序依然不认,用 netbootxyz 启动,手动填写的网关按上述原版系统中的:169.254.0.1 填,依然配置失败,无法进入。

对于 IPv6 dhcp 来说,网关已经不显示上级指派的路由了,而是由本地 fe80 地址担任,它也起到鉴权的作用,就是区分该内网里有哪些受认证的网卡能自动被 dhcp。无论是动态还是静态,都不会出现 IPv4 这么多麻烦。

上述两例虽有类似,但 Hetzner 好在支持 IPv4 dhcp,这时完全可以不用考虑手动配置,让网卡自行连接 IPv4 dhcp 服务器获得设置即可,IPv6 static 依然能正确地获得手动配置并应用到新系统。

但 Godaddy 的 IPv4 不仅不支持 dhcp,而且静态网卡的配置也属于不通常的类型,我问过搞技术的朋友,遇到这种情况该怎么办,他们说如果不能登陆上游机器查看,是无法获知这个网络的拓扑,也不知道它的真实网关是什么,所以网络配置这关过不去,后面的安装也无法继续。@maxkvm 说:GoDaddy 的客服不支持提交工单,要打电话才行。估计 Godaddy 的客服团队和技术团队是分开的,客服对技术问题也不是很懂,问不到实际网关是什么,在各种尝试方法无果的情况下,对 Godaddy 机器的调试只能放弃。

对于使用 IPv4 网络,且为静态 static 配置的机器,如果你发现本机 IP 和网关不在同一个至少 A 类 和 B 类网段,且 IP 是公网的、网关是一个内网地址,除非能从商家那里问到正确网关,请不要用市面上任何脚本重装,否则 100% 失败。

发表于 2023-4-24 15:32:24 | 显示全部楼层
MARK
发表于 2023-4-24 15:33:34 | 显示全部楼层
前排支持
发表于 2023-4-24 15:35:42 | 显示全部楼层
mark
发表于 2023-4-24 15:38:12 来自手机 | 显示全部楼层
楼主说的那个场景,实际上就是force onlink route。没有找到可以在kickstart或者pressed文件内支持的办法。这种vps的话只适合rescue模式离线dd了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-10 12:06 , Processed in 0.058844 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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