不同發行版、不同場景採用不同網路管理後端。掌握主流四種方式,覆蓋 99% 生產環境。
# 1. 查看連線設定檔
nmcli con show
# 2. 新增/修改乙太網路連線為靜態 IP
nmcli con add type ethernet con-name "eth0-static" ifname eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "192.168.1.1 8.8.8.8" \
ipv4.dns-search "example.com" \
connection.autoconnect yes
# 3. 或修改現有連線
nmcli con mod "Wired connection 1" \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "1.1.1.1 8.8.8.8"
# 4. 啟用連線
nmcli con up "eth0-static"
# 5. 驗證
ip a show eth0
ip route
cat /etc/resolv.conf
nmtui:文字模式選單,適合無圖形環境。/etc/NetworkManager/system-connections/eth0-static.nmconnection (600 權限,含密碼明文)。
/etc/netplan/01-netcfg.yaml (YAML 縮排嚴格!)network:
version: 2
renderer: networkd # 或 NetworkManager
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
search: [example.com]
# 可選:MTU、啟用 IPv6、VLAN、橋接、綁定
# mtu: 9000
# dhcp6: false
# addresses: [2001:db8::1/64]
netplan generate # 生成後端配置 (驗證語法)
netplan apply # 套用配置
networkctl status eth0
resolvectl status eth0
注意:Netplan 只是前端,實際後端由 renderer 指定 (systemd-networkd 或 NetworkManager)。
/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=1.1.1.1
DNS2=8.8.8.8
DOMAIN=example.com
# 可選
# IPV6INIT=no
# MTU=9000
# NM_CONTROLLED=no # 關鍵:告訴 NetworkManager 不管這張卡
systemctl restart network
# 或
ifdown eth0 && ifup eth0
警告:RHEL 8+ 預設使用 NetworkManager,network.service 已棄用。建議遷移至 nmcli/Netplan。
/etc/systemd/network/10-eth0.link (可選,命名規則)[Match]
MACAddress=00:11:22:33:44:55
[Link]
Name=eth0
/etc/systemd/network/20-eth0.network[Match]
Name=eth0
[Network]
DHCP=no
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=1.1.1.1
DNS=8.8.8.8
Domains=example.com
# 可選
# IPv6AcceptRA=no
# LinkLocalAddressing=no
# MTUBytes=9000
systemctl enable --now systemd-networkd systemd-resolved
networkctl reload
networkctl status eth0
resolvectl status eth0
優點:極簡、無額外依賴、systemd 原生整合、容器友好。
ip a:確認 IP 已綁定介面。ip route:確認預設閘道 (default via)。ping -c 3 192.168.1.1:閘道可達。ping -c 3 8.8.8.8:外網可達。dig example.com / nslookup example.com:DNS 解析正常。cat /etc/resolv.conf:檢查 nameserver (systemd-resolved 通常指向 127.0.0.53)。ss -tulpn | grep :22:SSH 端口監聽正常。firewall-cmd --list-all / ufw status / nft list ruleset:防火牆允許 SSH/HTTP/HTTPS。cloud-init 透過 User Data 注入網路配置,或彈性 IP 綁定。選擇適合你發行版與管理模式的方式,並將配置納入版本控制 (GitOps/Ansible),才是基礎設施即代碼 (IaC) 的正確姿勢。