【意见征集】一键重装支持访客时区 静态双栈 网卡重定向

68次阅读

共计 3313 个字符,预计需要花费 9 分钟才能阅读完成。

内容最后由 天权璇玑 于 2022-12-2 20:17 编辑 项目地址:https://github.com/leitbogioro/Tools 最近更新及使用方法:https://369369.xyz/host/topic/1094336.html 另外,你支持新安装的系统中,默认将网卡名重定向吗?小投票的内容如果看不懂,参见本帖第三节:3。自动识别网卡是否被重定向。投票结果会影响到后续开发,请慎重选择。1。访客时区自动设置缺省情况下,如果我们给脚本的时区一个固定值,比如:Asia/Shanghai,即可满足绝大部分国人的需求,但本着国际主义精神,该脚本面向的是全世界用户,包括我的 github 项目文档就是用纯英文写的,为了适应全世界各地用户的时区,我添加了根据访问该 VPS 用户的 IP 地址,确定其时区的功能,该功能通过 https://ipgeolocation.io/ 提供的 API 完成。如果你不想被 API 追踪,或想手动设置时区,也可以添加 -timezone 参数,如:-timezone "Asia/Shanghai" 来完成设置,如果输入的格式不对,或者不在当前系统内置的时区列表内,比如“Asia\\Osaka”,脚本仍提供了一个缺省值:"Asia/Tokyo"。另外,我通过 ping 谷歌和 Twitter 的连通性来确认机器是在中国大陆境内还是境外,如果是境内,跳过使用 API,直接给上海时区,正好覆盖到绝大部分生活在国内的国人,操作国内机器的需求。考虑到中国大陆的 VPS 购买需要实名制,一个从未来过中国大陆的外国人无法完成购买,所以曾经来过,或在中国大陆生活过,拥有正式身份(包括临时的),拥有购买中国大陆 VPS 能力,且目前正生活在非东八区时区以外的这一部分人的数量极少,所以不在自动时区设置功能所照顾的范围内,如果你正好是这一部分人,请根据自己所生活的地区,手动设置正确的时区。如果你使用的是代理连接机器,那么很抱歉,本脚本不是电脑病毒或者贞子,无法从终端逃逸到你当前运行的实体机上,查询你的物理网卡外网 IP 地址并完成正确的时区设置,只能按你用哪个 IP 连接到的这台机器设置当地时区,包括代理服务器。这种情况下,你也需要手动设置正确的时区。2。双栈静态网络支持针对各位坛友 VPS 极为特殊的疑难杂症,比如双栈(同时拥有 IPv4 和 IPv6 地址)且都是静态地址配置的机器,做出了优化,由于系统安装程序只能完成一个网卡的单栈(IPv4)配置,所以支持静态 IPv6 的实现,即获取用户当前系统 IPv6 配置并写入到新系统里的步骤,放到 preseed 后续流程中,双栈动态 DHCP 机器当然也 ok,此特性仅限 Debian。出现这个案例的机器,最初是坛友 @坏坏 向我汇报的,他的机器来自荷兰的一个 oneman 小商家,结果实验做到一半,机器失联了,后来一直连不上了。于是我就用甲骨文的双栈机继续验证,强写静态双栈配置,然后重装,实验后发现新功能可用。再次提醒,如果你的机器仅支持静态网络配置,请务必在脚本命令最后,加上“–dhcp-static”参数。实验机器:甲骨文 Oracle ARM 2 OCPU 12 GB 双栈机,区域:澳大利亚悉尼。强写静态 IPv4 和 IPv6 配置的网络配置 preseed 内系统安装阶段写入了正确的 IPv4 配置 preseed 内后续执行阶段写入了正确的 IPv6 配置再次进入系统后,网络配置是正确的,不要在意网卡名为什么换了这些细节,详情在第 3 节,压力测试顺便一块儿做了 Red Hat 系列由于版本 7 和 8 的网络配置在 /etc/sysconfig/network-scripts/ 里,9 的网络配置在 /etc/NetworkManager/system-connections/ 里,不同目录里网络配置文件的格式完全不同,处理起来实在麻烦,所以双栈机静态地址配置 IPv6 的就不支持了,DHCP 可自动配置好。3。自动识别网卡是否被重定向部分商家的部分系统模板,如 BandwagonHost 的 Ubuntu 22.04 amd64,默认会在 /etc/default/grub 这个文件的“GRUB_CMDLINE_LINUX=""”项目中,插入:"net.ifnames=0 biosdevname=0" 值,包括坛友 @坏坏 的机器,这个参数是通过 grub 或 grub2 引导 Linux 内核时,强制所有网卡的名称重定向为统一的 eth0,eth1……这样的,而不再是网卡本身的物理名称,比如 ens18,ens3,enp0s3,等等。这么做比较方便网络管理员用脚本对一个大局域网里数十台,乃至上万的计算机的网络配置进行统一管理,因为网卡名称都统一了,不会因为网卡制造商名称不同而不同,坏处是一旦新安装系统里,未指定附带这个值,那么原系统里获取的比如“eth0”的网卡名称,以及与它有关的网络配置,在新系统内就无效了。所以,我在脚本里默认对网卡重定向的机器做了优化,如果什么都不指定,脚本会自动检测当前系统是否将网卡名称重定向了,如果是,新安装的系统内继承这个配置,并且由于我们知道这样做,默认第一个网卡名必然是“eth0”,所以属于网卡“eth0”的,预先写好的网络配置内容仍然有效。如果没有做这个设置,那么我们在当前系统获得的网卡名称就是真实的,属于该网卡名称下的网络配置对新系统也有效。为了给那些喜欢追求新鲜感和刺激感,勇于挑战自我的朋友们,提供更加 exciting 的选择,我还添加了两个参数,一个是 –adapter " 真实的物理网卡名 ",另一个是 –netdevice-unite(该参数不需要指定值)。这两个参数不建议混用,因为它们的作用几乎是相反的:–adapter 的作用是,如果你的原系统网卡名重定向了,当且仅当你知道这台机器网卡正确的物理名称是什么,并且要在新系统里关闭网卡重定向功能是才需要指配,为什么要告诉脚本物理网卡的真实名称?因为 Linux 内核网卡重定向功能对真实网卡名进行了完全隐藏,我在系统里找半天也无法找到,既然在当前系统内无法找到,那就只能你手动指配。注意,如果指配错误,会直接影响到重启后安装程序自动配置 IPv4 网络,以及后续 IPv6 网络配置文件的写入正确性。正如其名,–netdevice-unite 的作用恰好反过来,即如果你当前系统网卡并没有被重定向,但想要在待安装的新系统里进行重定向,那么你可以指配这个参数,无论在哪个商家,哪个配置的机器上安装,在新系统里,网卡名称会被统一成 eth0 eth1……等,但代价是新系统里不再记录真实网卡的名字,在使用这个参数时,你应该提前记好这台机器本来真实网卡的名字是什么,以备以后重装时,不再需要网卡重定向了之后还原配置。动态网卡未重定向网络配置动态网卡重定向网络配置静态网卡重定向网络配置第 2 节里有。网卡未重定向时,grub 自定义配置文件:/etc/default/grub 网卡重定向时,grub 自定义配置文件,目录同上如果想在当前系统手动修改网卡重定向,或取消网卡重定向怎么办?打开文件,寻找到“GRUB_CMDLINE_LINUX=""”项目,针对“net.ifnames=0 biosdevname=0”,加入表示重定向网卡名称,删除表示还原网卡真实名称。vim /etc/default/grub 复制代码刷新 grub 配置才能生效,grub1 或 grub2 命令不同,根据实际情况自己选择:grub-mkconfiggrub2-mkconfig 复制代码当然,说了这么复杂,你只需要记住,相信脚本的自动判断能力,指派的东西越多,出错的概率越大,the less is more。另外,以上这些,自己怎么折腾都行,不要在正式的生产环境中操作,尤其是涉及到修改内核加载参数的操作,谁也无法承担生产环境中出错带来的不可逆的后果,你应当对你自己的行为负责。0.0 2022-12-02 20:33 2 太牛逼了? zdszf 2022-12-02 20:42 3 太牛逼了 支持 Arch Linux 3351239779 2022-12-02 21:08 4 顶一下你的帖子,让我重新在主机论坛看到了光 鸡不择食 2022-12-02 21:16 55k 不来了?

正文完
 0