network.service是否启用决定网络发现基础能力:其active且enabled、网卡配置ONBOOT=yes、firewalld放行137/138/1900/5353等UDP端口,三者缺一不可。

network.service 是否启用决定网络发现基础能力
CentOS 7 没有独立的「网络发现开关」,所谓「网络发现」(如局域网内看到其他主机、被其他设备识别)实际依赖底层网络服务是否启动、网卡是否 up、以及防火墙是否放行对应协议。最关键的开关是 network.service 本身是否启用并运行。
-
systemctl is-active network返回active才代表网络服务已加载配置并尝试激活所有ONBOOT=yes的网卡 -
systemctl is-enabled network返回enabled表示开机自动启动该服务(否则即使配置正确,重启后也无网络) - 若返回
inactive或disabled,ip addr show可能只显示lo,其他网卡无 IP,自然无法被发现
ONBOOT=yes 是网卡参与「发现」的前提条件
即使 network.service 正常运行,单个网卡仍需显式启用才能参与网络通信和被发现。关键参数在网卡配置文件中,不是全局开关。
- 路径必须是
/etc/sysconfig/network-scripts/ifcfg-<interface></interface>,例如ifcfg-ens33或ifcfg-enp0s3 - 确认存在且值为
ONBOOT=yes—— 若为no,该网卡开机不启动,对内对外均不可见 - 不要只改
ONBOOT就完事:还需确保BOOTPROTO=static或dhcp,且 IP、子网、网关等基础参数有效(否则虽 up 但无地址,仍无法被发现) - 改完必须执行
systemctl restart network,仅ifdown/ifup不保证 NetworkManager 和传统 network 服务状态一致
firewalld 默认会屏蔽 NetBIOS/SMB/SSDP 等发现协议
即使网络服务和网卡都正常,CentOS 7 默认开启的 firewalld 会拦截常见的局域网发现流量,导致 Windows 主机看不到 Linux、或 NAS 无法识别 CentOS 共享。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 临时验证:运行
systemctl stop firewalld,再从另一台机器尝试 ping 或nmap -sU -p 137,138,1900 <centos-ip></centos-ip>,看是否响应 - 永久放行(不建议全关):
firewall-cmd --permanent --add-service=samba(SMB)、--add-port=1900/udp(UPnP/SSDP)、--add-port=5353/udp(mDNS) - 执行
firewall-cmd --reload生效;注意samba服务本身也需systemctl start smb并enabled - 若用
iptables替代(非默认),规则位置在/etc/sysconfig/iptables,需手动加-A INPUT -p udp --dport 137:138 -j ACCEPT等
nmcli 或 nmtui 不直接控制「发现」,但可能覆盖 ifcfg 配置
如果系统同时启用了 NetworkManager(桌面版默认开),它会接管网卡管理,此时直接编辑 ifcfg-* 文件可能被忽略,导致你以为改了 ONBOOT=yes 却无效。
- 检查是否冲突:
systemctl is-active NetworkManager和systemctl is-active network不应同时为active - 推荐二选一:要么停用
NetworkManager(systemctl disable NetworkManager),专注用network.service;要么完全用nmcli管理,例如nmcli connection modify "System ens33" connection.autoconnect yes -
nmtui图形界面里「Automatically connect」勾选与否,对应的就是connection.autoconnect,不是ONBOOT - 混用时最容易踩坑:改了 ifcfg 但 NM 没 reload,或改了 NM 设置但 ifcfg 里
ONBOOT=no导致重启后失效
真正影响「能否被发现」的从来不是某个单一开关,而是 network.service 启动状态、单个网卡的 ONBOOT 值、firewalld 对 UDP 发现端口的放行策略这三层叠加的结果。任意一层断开,局域网内就大概率「看不见」这台 CentOS 7。

















