跳转到内容

Linux 网络接口配置详解

本文提供具体的命令与配置示例,适用于常见的 Linux 网络场景。重点介绍现代工具:NetworkManagersystemd-networkd 与 Ubuntu 的 netplan。不同发行版默认设置不同,请据此调整路径与服务名。

检查接口与地址:

Terminal window
ip addr show
ip route show
ss -tuln

检查内核与网络服务日志以排查设备或驱动问题:

Terminal window
sudo journalctl -k | tail -n 200
sudo journalctl -u NetworkManager -n 200
sudo dmesg | grep -i ethernet

使接口上线并请求 DHCP:

Terminal window
sudo nmcli device status
sudo nmcli device connect eth0
sudo nmcli device show eth0

使用 nmcli 创建静态 IPv4 连接:

Terminal window
sudo nmcli connection add type ethernet ifname eth0 con-name static-eth0 ipv4.method manual ipv4.addresses 192.0.2.10/24 ipv4.gateway 192.0.2.1 ipv4.dns "8.8.8.8 1.1.1.1"
sudo nmcli connection up static-eth0

可以使用交互式工具 nmtui(若安装)进行图形化配置:

Terminal window
sudo nmtui

systemd-networkd(服务器、极简场景)

Section titled “systemd-networkd(服务器、极简场景)”

/etc/systemd/network/ 放置 .network 文件以启用 DHCP:

[Match]
Name=eth0
[Network]
DHCP=ipv4

静态地址示例:

[Match]
Name=eth0
[Network]
Address=192.0.2.20/24
Gateway=192.0.2.1
DNS=8.8.8.8

重启并检查:

Terminal window
sudo systemctl restart systemd-networkd
sudo networkctl status eth0

/etc/netplan/ 下为 YAML 配置,会翻译到 NetworkManager 或 systemd-networkd。静态示例:

network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses: [192.0.2.30/24]
gateway4: 192.0.2.1
nameservers:
addresses: [8.8.8.8,1.1.1.1]

生效命令:

Terminal window
sudo netplan apply

使用 systemd-resolved 的主机可执行:

Terminal window
systemd-resolve --status
resolvectl status

临时测试 DNS:

Terminal window
dig @8.8.8.8 example.com +short
ping -c2 8.8.8.8
  1. 验证链路:cat /sys/class/net/eth0/operstateethtool eth0
  2. 查看驱动/内核日志:dmesg | grep -i eth0sudo journalctl -k
  3. 确认 IP 与路由:ip addrip route
  4. 测试连通性:pingtraceroutecurl --interface eth0 https://ifconfig.co
  5. 抓包分析:sudo tcpdump -i eth0 -n -s 0 -w /tmp/cap.pcap
  6. 检查 NetworkManager 与 systemd-networkd 是否冲突;仅用一个管理同一接口。
  • 如果配置变更后接口无法上线,运行 sudo ip link set dev eth0 down 然后 sudo ip link set dev eth0 up,并重启对应网络服务(NetworkManagersystemd-networkd)。
  • DHCP 异常时清除租约并请求新租约(具体路径因实现而异)。

如果你希望我按发行版(Debian/Ubuntu、Fedora、Arch)列出更精确的命令和文件路径,我可以接着生成每个发行版的详尽步骤与示例配置。