新闻详情

新闻详情

首页 / 资讯中心 / 详情

KOS服务器网络配置实战:bond、VLAN与静态路由完整指南

发布时间:2026/9/30 14:52:08来源:尧图网络
KOS服务器网络配置实战:bond、VLAN与静态路由完整指南
上个月接手了一批预装 KeyarchOS浪潮信息云峦操作系统简称 KOS的服务器业务方要求当天晚上完成网络初始化两块网卡做 bond、按机房拓扑划两个 VLAN、配好默认路由和 DNS。说实话第一次独自动这套系统时我心里是有点打鼓的——毕竟之前主要碰 CentOS而 KOS 在服务器圈里虽然不算冷门但网上针对网络配置的实操记录确实比较零散。跑完几个机柜、踩过几个坑之后我把整个网络配置过程整理成了这篇操作笔记。它适合刚接手 KOS 的运维同学也适合从 CentOS/RHEL 或 openEuler 切换过来、想直接照着做的人。里面没有太多理论包装全是能直接敲进终端的命令和配置。1. 先搞清楚KOS里的网络栈由谁接管NetworkManager、ifcfg文件和它们的分工1.1 为什么第一步要先看“谁在管网络”KOS 面向数据中心和云场景默认的网络管理方式是 NetworkManager以下简称 NM同时对传统的 ifcfg 文件体系做了很好的兼容。这意味着你在/etc/sysconfig/network-scripts/下看到的ifcfg-*文件依然有效但真正决定网卡状态的是 NetworkManager。我见过不少从 CentOS 6/7 过来的人上来就直接vim /etc/sysconfig/network-scripts/ifcfg-eth0改完 IP 之后执行systemctl restart network结果系统提示找不到服务或者配置确实生效了、但一重启机器 IP 又没了。根因就是对这套“NM 接管 ifcfg 文件”的机制不熟。KOS 里NetworkManager服务默认是开着的你可以用下面几条命令确认当前系统的网络管理栈systemctl status NetworkManager nmcli general status ls /etc/sysconfig/network-scripts/如果看到NetworkManager处于active (running)那后面所有操作都以 NM 为中心。1.2 ifcfg文件与NetworkManager的配合关系KOS 中 ifcfg 文件并不是“废弃”的NM 会动态读取ifcfg-*文件并把它转化为内部连接connection。所以改完 ifcfg 文件后你需要让 NM 重新加载而不是傻等nmcli connection reload nmcli connection up ens3我个人的理解是ifcfg 文件是“持久化存储”NM 是“运行时管家”两者通过nmcli connection这条线同步。你在命令行用nmcli connection add/modify做的修改最终也会写回 ifcfg 文件。反过来也一样手动改了 ifcfg 文件但没执行reloadnmcli看到的连接信息还是旧的这往往就是“文件里明明改了但就是不生效”的原因。1.3 上手前的四板斧在动任何配置之前我建议先把当前网络现状完整看一遍免得后面改完找不到原始状态ip addr show ip route show nmcli connection show hostnamectl这四条命令分别告诉你IP 地址和网卡状态、路由表、NM 认识的连接配置、主机名。我每次接手一台新 KOS 机器都会先把这四样输出存到一个临时文件里作为配置前的“基线”。出问题的时候翻回来对比效率高很多。2. 第一台KOS入网主机名、静态IP和DNS的配置链路2.1 设置主机名别只敲 hostnamectl每台服务器都应该有明确的身份标识。KOS 上修改主机名非常简单hostnamectl set-hostname kos-node-01但这里有个容易被忽略的细节hostnamectl只改了系统层的主机名/etc/hosts里如果还写着旧主机名很多依赖本地解析的程序比如部分集群软件、sudo、邮件服务会取到不一致的结果。所以我的习惯是改完hostnamectl之后顺手把/etc/hosts里的对应行更新一遍cat /etc/hosts # 将 127.0.1.1 后面的旧主机名改为 kos-node-01如果你不确定当前生效的主机名用hostname和hostnamectl都看一眼两个输出一致才算改完。2.2 静态IP配置先用nmcli再用ifcfg理解原理服务器场景下基本都要配静态 IP而不是 DHCP 自动获取。在 KOS 上我推荐先掌握nmcli命令行方式因为它是最不容易出错、也最适合批量操作的路径。假设我的业务网卡是ens3要配 IP10.10.100.11/24网关10.10.100.1DNS 用10.10.100.2和114.114.114.114nmcli connection add \ con-name prod-data \ type ethernet \ ifname ens3 \ ipv4.method manual \ ipv4.addresses 10.10.100.11/24 \ ipv4.gateway 10.10.100.1 \ ipv4.dns 10.10.100.2 114.114.114.114这里我给连接取了一个自定义名字prod-data而不是默认的ens3。这个习惯很重要连接名是一个逻辑标识你可以随时把连接从ens3换绑到别的物理网卡上业务配置不用重写。随后激活这条连接nmcli connection up prod-data2.3 直接编辑ifcfg文件适用批量脚本和版本管理如果你需要批量生成几十台机器的网络配置或者想把配置纳入 Git 管理直接写 ifcfg 文件反而更直观。KOS 上对应的文件是/etc/sysconfig/network-scripts/ifcfg-ens3一个完整的静态 IP 配置长这样TYPEEthernet BOOTPROTOnone NAMEens3 DEVICEens3 ONBOOTyes IPADDR10.10.100.11 PREFIX24 GATEWAY10.10.100.1 DNS110.10.100.2 DNS2114.114.114.114 DEFROUTEyes写完之后按前面说的执行nmcli connection reload再nmcli connection up ens3。有几个字段我想额外解释一下BOOTPROTOnone明确关闭 DHCP改成静态配置。如果是dhcpIPADDR会被忽略。ONBOOTyes开机自动激活该网卡。我踩过最蠢的坑就是这里漏写yes重启后机器完全失联只能带外管理口进去改。PREFIX24等价于NETMASK255.255.255.0但 KOS 上我更推荐PREFIX简洁不易错。DEFROUTEyes允许这条连接写入默认路由。如果你有多条连接只有一条可以设yes否则默认路由会互相“打架”。2.4 两种方式怎么选我的判断标准对比项nmcli 命令直接编辑 ifcfg适合场景单台调试、交互式配置、动态修改批量生成、配置入库、版本管理学习成本中等命令多但可补全低字段死记即可出错概率低NM 会做校验中等字段拼写或引号容易错是否立即生效需要up激活需要reloadup给新人的建议先学nmcli把命令跑通之后再回头看 ifcfg 文件里被自动写入了什么这样理解最扎实。给老手的建议批量场景直接用脚本写 ifcfg但写完一定要校验一遍ONBOOT和BOOTPROTO。3. 多网卡bond实践从物理口到bond0的完整步骤与验证3.1 为什么服务器上一定要做bond数据中心里的服务器通常至少有两块物理网卡。做 bond 的核心目的有两个一是链路冗余一块网卡或一根网线挂了业务流量自动切换到另一块不中断二是提升吞吐把两块网卡的带宽汇聚起来比如两块 25G 网卡 bond 后逻辑上变成一条 50G 的管道。KOS 对 Linux 内核标准的 bonding 驱动支持得很好不需要额外装包确认模块加载即可modprobe bonding lsmod | grep bonding如果lsmod没有输出说明模块没加载但一般不会因为内核默认就编译进去了。3.2 用nmcli完成bond0的完整配置流程这里我用两块网卡ens3和ens4做例子bond 模式选active-backup主备模式逻辑 bond 口叫bond0。先创建 bond 连接nmcli connection add \ type bond \ con-name bond0 \ ifname bond0 \ mode active-backup \ bond.options miimon100,use_carrier1解释一下两个参数miimon100每 100 毫秒检测一次链路状态。这个值太短会误判抖动太长则故障切换慢我这边生产环境基本都用 100。use_carrier1以网卡物理载波状态作为判断依据比单纯发探测包更可靠。接下来把两块物理网卡“挂”到 bond0 上nmcli connection add type ethernet con-name bond0-slave-1 ifname ens3 master bond0 nmcli connection add type ethernet con-name bond0-slave-2 ifname ens4 master bond0最后给 bond0 配置 IPnmcli connection modify bond0 \ ipv4.method manual \ ipv4.addresses 10.10.200.10/24 \ ipv4.gateway 10.10.200.1 \ ipv4.dns 10.10.100.2全部执行完后把 bond0 拉起来nmcli connection up bond03.3 验证bond是否正常工作别只盯ifconfig输出很多人配完 bond 只看ip addr里有没有bond0这远远不够。我每次都要进到内核 bonding 的虚拟文件里看真实状态cat /proc/net/bonding/bond0这个文件会明确告诉你Bonding Mode当前运行模式比如IEEE 802.3ad Dynamic link aggregation对应 mode 4或active-backup。MII Status每个 slave 是up还是down。Active Slave当前实际承载流量的物理口是谁。如果看到某一个 slave 的MII Status是down先别急着换网线可能是对端交换机端口没配好或者miimon检测策略太严格。另外可以用ethtool ens3查看网卡速率和自协商状态确保物理链路本身是正常的。3.4 bond模式怎么选看你的交换机支持什么模式名称特点适用场景mode 0balance-rr轮询负载均衡需要交换机支持很少用跨交换机场景有乱序风险mode 1active-backup主备冗余同一时刻只有一块网卡工作最稳妥不挑交换机强烈推荐mode 4802.3ad动态链路聚合两块网卡同时收发交换机需开启 LACP吞吐最高如果你暂时无法确认交换机配置我建议先选mode 1它不需要交换机做任何特殊处理只要两根网线都通就行。等网络侧把 LACP 配好再改mode 4也不迟nmcli connection modify bond0 bond.options mode802.3ad,miimon100,use_carrier1 nmcli connection reload nmcli connection up bond0改模式之后一定再看一眼/proc/net/bonding/bond0确认协商成了802.3ad而不是嘴上说了算。4. VLAN子接口和路由把一张物理网卡拆成多个逻辑网络4.1 在KOS上创建VLAN子接口的两种方式服务器经常要“一卡多用”同一块物理网卡既要跑管理网段又要跑业务网段甚至还要跟存储网络通信。这时候 VLAN 就派上用场——交换机的 trunk 口把带 VLAN tag 的帧送进来服务器侧拆出多个逻辑子接口。假设物理网卡是enp3s0要创建 VLAN 100 和 VLAN 200 两个子接口nmcli connection add \ type vlan \ con-name vlan100 \ ifname enp3s0.100 \ vlan.id 100 \ dev enp3s0 \ ipv4.method manual \ ipv4.addresses 10.10.100.11/24ifname写成enp3s0.100是 Linux 下 VLAN 子接口的命名惯例点号后面的数字对应 VLAN ID光看名字就能知道是哪个网络排障时非常方便。如果你习惯用 ifcfg 文件创建/etc/sysconfig/network-scripts/ifcfg-enp3s0.100DEVICEenp3s0.100 NAMEenp3s0.100 TYPEVlan PHYSDEVenp3s0 VLAN_ID100 BOOTPROTOnone IPADDR10.10.100.11 PREFIX24 ONBOOTyes创建完子接口后用ip link show能看到类似这样的输出enp3s0.100enp3s0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UPenp3s0表示这个 VLAN 子接口依附于哪块物理网卡。如果状态不是UP检查一下物理网卡状态和交换机 trunk 配置。4.2 默认路由和静态路由让数据包按预期走VLAN 配好之后最关键的是路由。KOS 默认会根据网卡配置生成一条默认路由但真实生产环境里经常需要一些“特殊路径”比如访问某个测试网段要走另一条链路。先看当前路由表ip route show默认路由一般长这样default via 10.10.100.1 dev enp3s0.100如果要加一条静态路由比如访问10.20.0.0/16网段要走10.10.200.1且从enp3s0.200出去可以临时敲ip route add 10.20.0.0/16 via 10.10.200.1 dev enp3s0.200但这只是临时的重启即失效。要持久化我习惯在 ifcfg 目录下新建一个路由文件/etc/sysconfig/network-scripts/route-enp3s0.20010.20.0.0/16 via 10.10.200.1 dev enp3s0.200写完后nmcli connection reload。下次开机KOS 会自动加载这个文件里的静态路由。4.3 策略路由当一台服务器需要多张路由表时有一种场景静态路由解决不了服务器有两条线业务流量希望默认走10.10.100.1但来自某个特定网段的流量必须走10.10.200.1。普通路由表只有一个数据包无法区分“来源”。这时候要用策略路由也就是多路由表。先创建一个新路由表比如编号 100ip rule add from 10.10.200.0/24 table 100 ip route add default via 10.10.200.1 dev enp3s0.200 table 100ip rule的意思是凡是源地址属于10.10.200.0/24的数据包去查询table 100里的路由规则而默认路由表只处理其他流量。KOS 上持久化策略路由的话依然写在/etc/sysconfig/network-scripts/route-enp3s0.200里default via 10.10.200.1 dev enp3s0.200 table 100同时在/etc/iproute2/rt_tables里给 100 起个名字也行但大多数人直接用数字简单不额外维护。4.4 验证连通性ping、traceroute、ip route get 组合使用配置全做完之后不要只敲ping 网关就完事。我推荐按这个顺序验证ping -c 3 10.10.100.1 ip route get 10.20.0.1 traceroute -n 10.20.0.1ip route get特别有用它会把内核实际计算出来的出接口和下一跳直接告诉你比如10.20.0.1 via 10.10.200.1 dev enp3s0.200 src 10.10.200.10如果这条输出和你预期不一样那就说明前面某个环节配错了。traceroute则负责定位是哪个跳数丢包把问题范围缩小到交换机还是服务器。5. 配置完不等于配完重启失效、网卡命名和排障三板斧5.1 这里有一份我攒下来的KOS网络踩坑清单现象根本原因解决办法重启后 IP 丢失ONBOOTno或 NM 未托管该连接改成ONBOOTyesnmcli con up改了 ifcfg 不生效没执行nmcli connection reload改完马上reload再up网卡名变了导致脚本失联命名规则从eth0变成enp3s0用ifcfg里的DEVICE和NAME固定匹配手动改了/etc/resolv.conf被覆盖NM 接管 DNS 管理在 ifcfg 或nmcli里改 DNSbond 主备切换不生效miimon没配或交换机不支持确认内核参数和交换机端口为 trunk多个连接争抢默认路由多条连接的DEFROUTEyes只保留一条默认路由这张表是我在实际维护 KOS 机器时真金白银踩出来的每一个都可以对应到一个具体的深夜排障场景。5.2 网卡命名规则别再写死 eth0KOS 沿用了现代 Linux 的可预测命名规则常见的有ens3、enp3s0、eno1。这些名字不是随便生成的而是根据网卡的 PCI 物理位置、板载信息等规则固化下来的好处是同一个网口在每次开机后名称稳定。但也带来一个小问题很多人习惯在脚本里写死eth0到 KOS 上一跑就报错。我的建议是脚本里尽量通过nmcli connection show拿连接名或者用ip link先确认实际网卡名再操作不要拍脑袋猜。如果非要用传统的eth0命名可以加内核启动参数net.ifnames0但我不推荐因为会丢失可预测命名的排障优势而且和集群里其他机器不一致时特别难受。5.3 排障三板斧从现象到根因的思路网络不通的时候先不要急着反复重启网卡。我总结了一个固定的排查链路第一步确认网卡和连接状态nmcli device status ip addr show如果看到网卡state unmanaged说明 NM 没有托管这块网卡这时无论你怎么配 IP 都不会生效。原因一般是 ifcfg 文件里缺少NAME和DEVICE或者连接没有正确导入。解决办法是先nmcli dev set ens3 managed yes再reload。第二步确认路由决策ip route get 目标IP这一步能把问题聚焦到“路由没走对”还是“下一跳不通”。如果ip route get出来的接口不是你以为的那个那就是路由表配置有误。第三步抓包验证tcpdump -i enp3s0.100 icmp -c 5看到 ICMP 请求发了出去、但没有回应说明是物理链路上二层/三层的问题如果 tcpdump 根本看不到包那就是本地路由或网卡状态问题。抓包一上问题归属立刻清晰。5.4 我的备份与回滚习惯最后给各位一个实用建议动 KOS 网络配置之前先把整目录备份一份cp -a /etc/sysconfig/network-scripts /root/network-scripts.bak.$(date %Y%m%d%H%M)以后任何一次改完发现不对劲直接把备份目录整体拷回去再执行nmcli connection reload systemctl restart NetworkManager就能回到改动前的状态。这个习惯我坚持了很多年救过我不止一次。KOS 的网络配置方式和 RHEL/openEuler 高度一致一旦把 NetworkManager 这套托管关系摸透了你完全可以把这套操作流程复制到整个机房的几百台机器上后续再用脚本批量生成 ifcfg 文件运维效率会高很多。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

支付协议地图:x402、AP2、MPP、ACP四类协议的本质与选型逻辑 2026/9/30 15:58:05

支付协议地图:x402、AP2、MPP、ACP四类协议的本质与选型逻辑

1. 这不是协议说明书,是支付系统工程师的“协议地图”你刚接手一个跨境支付模块重构任务,需求文档里赫然写着“需兼容x402、AP2、MPP、ACP四类协议”,但翻遍内部Wiki只找到几行缩写定义;你参加银行侧技术对接会,对方说…

阅读更多 →
AutoGen多智能体系统:构建可落地的AI协作操作系统 2026/9/30 15:58:04

AutoGen多智能体系统:构建可落地的AI协作操作系统

1. 这不是玩具,是能干活的协作流水线——AutoGen 多智能体系统的真实定位AutoGen、多智能体、ConversableAgent、GroupChat、CrewAI——这几个词最近在技术圈刷屏,但很多人点开文档第一眼就懵了:这到底是个啥?是又一个“AI玩具”&…

阅读更多 →
Linux 基础指令详解:从目录操作到权限管理,一篇带你真正入门 2026/9/30 15:57:37

Linux 基础指令详解:从目录操作到权限管理,一篇带你真正入门

Linux 学习的第一道门槛,往往不是命令太多,而是不知道每条命令解决什么问题。 本文不按“命令清单”生硬罗列,而是模拟一次真实的服务器操作过程:登录系统、定位目录、创建项目、查看日志、搜索文件、打包备份和配置权限。一、Lin…

阅读更多 →
DeepSeek证券研报自动化生成方案:从数据预处理到部署的工程化落地指南 2026/9/30 15:57:37

DeepSeek证券研报自动化生成方案:从数据预处理到部署的工程化落地指南

简介:这份257页的PDF文档面向金融科技从业者、量化研究员与AI工程师,系统讲解如何用DeepSeek-R1构建证券研报自动化生成方案,解决人工研报撰写效率低、数据源异构、专业术语适配难等痛点。内容覆盖金融数据预处理、财经文本清洗、Embedding模…

阅读更多 →
备份容灾解决方案是什么?从数据备份到业务容灾的完整梳理 2026/9/30 15:57:37

备份容灾解决方案是什么?从数据备份到业务容灾的完整梳理

备份容灾解决方案,是指为保障数据安全和业务连续性,将备份、复制、快照、异地存放、自动恢复等多种手段组合在一起形成的一套系统性方案。它的目标不只是“数据丢了能找回来”,还包括“业务中断后能尽快恢复运行”。备份与容灾的区别 备份和容…

阅读更多 →
SAM3安装问题排查指南:环境配置、权重下载与微调依赖详解 2026/9/30 15:57:27

SAM3安装问题排查指南:环境配置、权重下载与微调依赖详解

搜索框里敲下“SAM3 安装问题”的人,大概率都已经在终端和报错之间来回拉扯了好几个小时。明明教程里的演示一切正常,自己照着敲,不是缺包就是版本冲突,要么权重下载到一半就断,好不容易全装好了又发现读不进模型。说实…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉