Lazy loaded image
Linux 网络管理
Words 2743Read Time 7 min
2025-10-2
2025-11-12
date
related_level
slug
linux_network
type
Post
relate_date
summary
Linux 网络管理工具汇总,涵盖 ip、netplan、systemd-networkd、nmcli、域名解析等
status
Published
tags
网络
DNS
实用教程
category
运维管理
last_updated
Nov 12, 2025 02:47 PM
是否已更新
orginal_page
是否推荐
参考资料
Linux 网络配置文件及位置
Debian 网络配置文件 /etc/network/interfaces
配置样例:ipv4 静态地址,ipv6 slaac 并指定路由
  • vim /etc/network/interfaces
    • ipv4 根据自身情况自行修改
    • ipv6 gateway 根据自身实际 ipv6 路由进行修改
  • systemctl restart networking
    • 重启网络
Ubuntu 网络配置文件 /etc/netplan/*.yaml
参考资料
  • 创建 netplan 配置文件
    • sudo vim /etc/netplan/99_config.yaml
  • 应用 netplan 配置文件
    • sudo netplan apply
样例 99_config.yaml
配置静态 IP 地址
启用 DHCP 动态分配
配置 DNS 名称解析器
  • search 配置DNS搜索域,当查找不完整的主机名时尝试在DNS搜索域中查找主机名
  • addresses 配置DNS服务器的IP地址
配置直连路由
  • 通过使用 "on-link" 关键字可以设置默认路由或任何路由,其中网关是一个直接连接到网络的IP地址,即使该地址与在接口上配置的子网不匹配也可以使用
IPv4
IPv6
配置路由寻址(source routing)
  • 任一网络上的客户端能够连接到另一个网络,并允许来自正确接口的响应
    • ens3位于192.168.3.0/24网络,ens5位于192.168.5.0/24网络
    • 默认路由仍然分配给ens5,允许任何其他流量通过它
连接至 AP
连接至 AP(禁用 DHCP)
RHEL 网络配置文件/etc/sysconfig/network-scripts/ifcfg-<device_name>
  • 设备标识符 device_name 可以通过 ifconfig 指令查看
  • DNS配置文件 /etc/resolv.conf
  • 主机名 /etc/hostname
  • hosts文件 /etc/hosts
 

Linux 网络管理

ip 通用网络管理
参考资料
ip link 网络连接管理
  • ip link set [dev ]<device> name <NEWNAME> 设置设备名称
  • ip link set [dev ]<device> {up | down} 启用/挂起连接
  • ip address 协议地址管理
  • ip neighbour 邻居/ARP表管理
  • ip route 路由表管理
    • 添加默认网关
      • ip route add default via <ip>
      • ip route add default via <ip>
    • ip route add
  • ip rule 路由策略数据库管理
netplan 通用网络配置管理
参考资料
  • netplan 可以搭配不同后端(例如 systemd-networkd 或 NetworkManager)使用
sudo netplan get [key] 显示当前网络规划配置
  • [key] 为设备标识符(如 [network.]ethernets.eth0);默认为 all
  • sudo netplan status [interface] [--all] 显示当前网络配置
更改网络配置
  • sudo netplan set [key=value] 命令行更改网络配置
  • 编辑 YAML 配置文件
  • sudo netplan apply 应用网络配置
sudo netplan try 尝试应用网络配置,未确认则自动回滚
可选参数
  • [--config-file CONFIG_FILE]
  • [--timeout TIMEOUT]
systemd-networkd 网络管理
参考资料
  • networkctl status 查看 systemd-networkd 状态
  • networkctl list 查看现有连接及其状态
  • networkctl lldp 查看和管理 LLDP(Link Layer Discovery Protocol)信息
  • sudo networkctl {up | down} <device> 启用/挂起设备
  • sudo networkctl {renew | forcerenew} <device> 刷新动态配置
    • 如从 DHCP 服务器动态获取的 IP
  • sudo networkctl reconfigure <device> 重新配置设备
    • 配置后需要 sudo networkctl reload 重新加载配置
NetworkManager 命令行终端 nmcli 管理网络
参考资料
systemctl status NetworkManager
  • RHEL 8 之后默认使用 Network Manager 管理网络
Ubuntu 安装 Network Manager
  • apt install network-manager
  • 除此之外,可以通过 nmtui 文本终端进行管理
直接修改配置文件之后重新加载也可以
  • ls /etc/NetworkManager/system-connections/
  • vim /etc/NetworkManager/system-connections/<conn-id>.nmconnection
  • nmcli con reload id <conn-id>
可用 connection type
  • 6lowpan
  • 802-11-olpc-mesh (alias olpc-mesh)
  • 802-11-wireless (alias wifi)
  • 802-3-ethernet (alias ethernet)
  • adsl
  • bluetooth
  • bond
  • bond-slave (deprecated for ethernet with controller)
  • bridge
  • bridge-slave (deprecated for ethernet with controller)
  • cdma
  • dummy
  • generic
  • gsm
  • hsr
  • infiniband
  • ip-tunnel
  • ipvlan
  • loopback
  • macsec
  • macvlan
  • olpc-mesh
  • ovs-bridge
  • ovs-interface
  • ovs-port
  • pppoe
  • team
  • team-slave (deprecated for ethernet with controller)
  • tun
  • veth
  • vlan
  • vpn
  • vrf
  • vxlan
  • wifi-p2p
  • wimax
  • wireguard
  • wpan
nmcli general 显示 NetworkManager 的状态和权限等
  • nmcli general { status | hostname | permissions | logging | reload } [ ARGUMENTS ...]
  • nmcli general [status] 显示 NetworkManager 当前状态
  • nmcli general permissions 显示当前用户的 NetworkManager 操作权限
  • nmcli general reload [ conf | dns-rc | dns-full ] 重新加载 NetworkManager 配置
nmcli networking 管理网络
  • nmcli networking { on | off | connectivity } [ ARGUMENTS ...]
  • nmcli networking connectivity [check] 获取网络连接状态
    • check 可选,指示 NetworkManager 重新检查连接性
  • nmcli networking [ on | off ] 开启或关闭 NetworkManager
    • 关闭后 NetworkManager 管理的接口均会停用
  • nmcli monitor 监控网络变更
    • 监听特定连接可以用 nmcli con monitor [ id | uuid | path ] <ID>
nmcli con 管理连接
  • nmcli connection { show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export | migrate } [ARGUMENTS...]
  • nmcli connection show 列出内存和磁盘上的连接配置文件
    • --active 选项仅显示活动配置文件
  • nmcli connection { up | down } [ id | uuid | path ] <ID> 启用或停用特定连接
    • id 默认是 connection name
nmcli connection add [save { yes | no }] \ { option value | [+|-]setting.property value } 添加连接
  • 添加 ipv4 连接
    • nmcli con add con-name dhcp type ethernet ifname ens33 ipv4.method auto
      • dhcp
      • nmcli con up dhcp
    • nmcli c a con-name static ifname ens33 autoconnect no type ethernet ip4 10.0.0.10/24 gw4 10.0.0.1 ipv4.method
      • 静态连接
      • nmcli con up static
  • 添加 ipv4/v6 双栈连接
    • nmcli c a ifname interface_name type ethernet ipv4.method auto ipv6.method auto
  • nmcli connection edit [ id | uuid | path ] <ID> 交互式编辑
nmcli connection modify [ id | uuid | path ] <ID> 修改连接配置
  • 修改之后需要重新 up 或 reload 以适用配置
  • 不提供 ID 的话则修改默认配置
修改 static 的自动连接
  • nmcli con mod static connection.autoconnect no
添加 static 连接的 DNS 服务器
  • nmcli con mod static ipv4.dns 10.0.0.10
  • nmcli con mod static +ipv4.dns 8.8.8.8
    • 第二 DNS 服务器
修改 static 连接的 ip 地址
  • nmcli con mod static ipv4.addresses 10.0.0.100/24
  • nmcli con mod static +ipv4.addresses 10.20.30.40/16
  • nmcli connection reload [ id | uuid | path ] <ID> 重新加载连接配置
  • nmcli connection delete [ id | uuid | path ] <ID> 删除连接
nmcli device 管理网络设备
  • nmcli device wifi 仅查看 wifi
  • nmcli device wifi connect [b]ssid -ask 连接到特定 ssid 的 wifi
  • nmcli device show wlan0 显示 wlan0 设备的信息
nmcli agent 交互式密钥代理
systemd-resolved 网络名称解析
参考文档
配置文件
  • /etc/systemd/resolved.conf
  • resolvectl [status] 显示当前系统各接口 DNS 解析状态
  • resolvectl flush-cache 刷新 DNS 缓存
  • resolvectl query <domain> 查询指定域名的IP地址
 

Linux 网络接口管理

查看所有以太网网络接口
  • ip a
  • sudo lshw -class network
ethtool 管理以太网接口设备
参考资料
  • sudo ethtool <device_name> 查看网络接口的设备参数及特性
    • --driver 查看驱动信息
    • --statistics 查看统计信息
  • sudo ethtool --test <device_name> <offline|online> 测试网络接口
    • 不是所有接口都支持测试
    • offline 模式提供了更全面的测试,但它可能会通过重新启动来中断设备的工作
  • sudo ethtool --change <device_name>
ifconfig 管理网络接口配置
参考资料
  • ifconfig 已过时,建议使用新的 ip 指令
启用或禁用特定网络接口
  • sudo ifconfig <device_name> up
  • sudo ifconfig <device_name> down
 

Linux 端口管理

查看监听端口使用情况
  • netstat -tulpen 较古老,建议使用 ss 替代
ss -tulpen 套接字(sockets)指令
  • -t: 只显示TCP协议相关的连接
  • -u: 只显示UDP协议相关的连接
  • -l: 只显示监听(LISTEN)状态的连接
  • -p, --processes: 显示与每个连接相关的进程信息
  • -e, --extended: 显示详细套接字信息
  • -n: 显示数字形式的IP地址和端口号
sudo lsof -Pan -i | grep LISTEN 显示打开文件(list opened file),包含进程
  • -a 与(and)操作
  • -i 指定要显示的网络连接信息。
  • -P 强制不将端口号或主机名解析为符号名称
  • -n 强制不将主机名解析为IP地址
  • sudo nmap -sTU -O {IP_addr}
    • 需要安装nmap
查看特定端口使用情况
  • sudo lsof -Pan -i :{port}
查看特定进程占用端口
  • sudo lsof -Pan -i -p {PID}
 

Linux 域名解析

/etc/hostname 主机名配置文件和 /etc/hosts 本地域名解析文件
参考资料
  • hosts File Format for TCP/IP
  • /etc/hostname 仅包含主机名,需要与 /etc/hosts 中的DNS记录结合形成完全限定域名(FQDN, Fully Qualified Domain Name)
  • hostname -A 查看当前主机 FQDN
如设置 FQDN 为 foo.example.com
  • /etc/hostname
    • 仅包含 foo
    • 通过 hostnamectl 修改,请勿直接修改
  • /etc/hosts
    • 127.0.0.1 foo.example.com foo
hostnamectl 主机名配置工具
  • hostnamectl status
    • 查看主机名及其环境配置
  • hostnamectl hostname <to-set-name>
    • 查看主机名或设置主机名
/etc/systemd/resolved.conf systemd-resolved 服务的主配置文件
  • 修改后需要重启 systemd-resolved 服务
    • systemctl restart systemd-resolved
  • 部分特殊配置项
    • Domains=~.
      • ~ 指示了一个“路由专用”域(routing-only domain),意味着该域不会被用作默认搜索路径的一部分来补全不完全限定的主机名
      • . 代表根域,所有的查询都将被视为完全限定域名(FQDN)
resolvectl 域名解析配置工具
参考资料
一些常用指令
  • resolvectl status
    • 查看当前域名解析配置
  • resolvectl flush-caches
    • 清理DNS记录缓存
  • resolvectl query example.com
    • 返回对应域名的 DNS 记录
  • resolvectl dns <interface> <dns_server1> <dns_server2>
    • 设置接口对应 DNS 服务器
  • resolvectl domain <interface> example.internal
    • 设置接口对应检索域
特殊DNS服务器 nameserver 127.0.0.53
本地回环地址,与 systemd-resolved 服务相关联
  • 允许系统通过 systemd-resolved 进行名称解析,而不是直接查询外部 DNS 服务器
  • 能够同时管理多个网络接口上的DNS配置,并根据当前活动连接自动选择合适的DNS服务器进行查询
如何禁用 nameserver 127.0.0.53
  • resolvectl status | grep resolv.conf
    • resolv.conf mode: stub 代表当前配置了 127.0.0.53 为域名服务器
  • vim /etc/systemd/resolved.conf
    • #DNSStubListener=yes 取消注释并改为 DNSStubListener=no 即可禁用
/etc/resolv.conf DNS 解析器配置文件
  • 定义DNS服务器 nameserver <ip|hostname.domain>
定义检索域 search <search_domain1> <search_domain2>
  • 设置本地检索域 local 后,在解释不完全限定域名 hostname 时,会先将 hostname 与本地检索域 local 组成 FQDN(hostname.local)进行DNS查询
  • hostname 包含 . 时,首次将可能进行对 FQDN(hostname)进行DNS查询而跳过本地检索域
    • 可以在 ndot:<value> 中进行设置
  • 排序列表 sortlist
    • 在解析具有多个 IP 地址的域名时确定 IP 地址的优先级
选项 options <option>:<value>
  • timeout:5 设置超时等待时间为 5 s
  • ndot:1 设置域名可以具有的最小点数,默认值为 1
  • attempts:5 设置尝试次数
    • 仅当所有配置的名称服务器未能返回结果时才算作重试
    resolvconf 管理 /etc/resolv.conf
    参考资料
    • 多个工具会修改 /etc/resolv.confresolvconf 作为中间件集中管理 DNS 配置来合并配置、避免冲突等
    dnsmasq 轻量级 DNS 服务器和 DHCP 服务器软件
     
     
    上一篇
    kustomize 声明式配置管理工具
    下一篇
    Linux 包管理器

    Comments
    Loading...