萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 修改 IP 地址完整教程:NMCLI、Netplan、傳統網絡腳本三種方式

三大網絡管理體系對比

管理工具適用發行版配置文件位置特點
NetworkManager (nmcli)RHEL 7+/CentOS 7+/Fedora/Ubuntu Desktop/etc/NetworkManager/system-connections/動態管理、支援 GUI/TUI/CLI、熱插拔
NetplanUbuntu 18.04+/20.04+ Server/etc/netplan/*.yaml聲明式 YAML、統一抽象層、systemd-networkd/NetworkManager 後端
傳統 network-scriptsRHEL 6/CentOS 6、舊版 Debian/etc/sysconfig/network-scripts/ifcfg-*傳統 ifcfg 格式、systemd-networkd 兼容

方式一:nmcli(推薦,通用性最強)

查看當前連接

nmcli con show
nmcli device status

修改靜態 IP

# 修改現有連接
nmcli con mod "Wired connection 1" \
  ipv4.addresses 192.168.10.100/24 \
  ipv4.gateway 192.168.10.1 \
  ipv4.dns "8.8.8.8,1.1.1.1" \
  ipv4.method manual \
  connection.autoconnect yes

# 或新建連接
nmcli con add type ethernet con-name eth0-static ifname eth0 \
  ipv4.addresses 192.168.10.100/24 \
  ipv4.gateway 192.168.10.1 \
  ipv4.dns "8.8.8.8,1.1.1.1" \
  ipv4.method manual

生效與驗證

nmcli con up "Wired connection 1"
nmcli device reapply eth0
ip addr show eth0
ping -c 3 8.8.8.8

TUI 圖形配置(無需記憶參數)

nmtui
# 選擇 "Edit a connection" → 選擇介面 → 設置 IPv4 Manual → 填寫 IP/網關/DNS → OK → Activate

方式二:Netplan (Ubuntu Server 18.04+)

配置文件範例

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 192.168.10.100/24
      routes:
        - to: default
          via: 192.168.10.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
        search: [corp.local, example.com]

# 多 IP 配置
    eth0:
      addresses:
        - 192.168.10.100/24
        - 10.0.0.5/24
      routes:
        - to: default
          via: 192.168.10.1
        - to: 10.0.0.0/8
          via: 10.0.0.1

生效與驗證

# 語法檢查
netplan generate

# 應用(試運行)
netplan try

# 正式應用
netplan apply

# 查看生效狀態
ip addr show
networkctl status

方式三:傳統 ifcfg 腳本 (RHEL 7/8 兼容)

配置文件

# /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none          # none=靜態,dhcp=動態
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
DEVICE=eth0
ONBOOT=yes
AUTOCONNECT_PRIORITY=1
IPADDR=192.168.10.100
PREFIX=24
GATEWAY=192.168.10.1
DNS1=8.8.8.8
DNS2=1.1.1.1
DOMAIN=corp.local

生效

# 重啟網絡服務
systemctl restart NetworkManager
# 或
nmcli con reload
nmcli con up eth0

臨時修改(重啟失效,應急測試用)

# ip 命令(iproute2,現代標準)
ip addr add 192.168.10.100/24 dev eth0
ip route add default via 192.168.10.1 dev eth0
ip addr del 192.168.10.100/24 dev eth0

# ifconfig(舊工具,net-tools)
ifconfig eth0 192.168.10.100 netmask 255.255.255.0
route add default gw 192.168.10.1 eth0

多 IP/虛擬 IP 配置

nmcli

# 添加第二個 IP
nmcli con mod "Wired connection 1" +ipv4.addresses 192.168.10.101/24
nmcli con up "Wired connection 1"

Netplan

addresses:
  - 192.168.10.100/24
  - 192.168.10.101/24

傳統別名介面(不推薦,iproute2 原生支援多 IP)

# /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=none
IPADDR=192.168.10.101
PREFIX=24
ONBOOT=yes

IPv6 配置要點

# nmcli
nmcli con mod eth0 ipv6.addresses "2001:db8::100/64"
nmcli con mod eth0 ipv6.gateway "2001:db8::1"
nmcli con mod eth0 ipv6.method manual

# Netplan
addresses:
  - 2001:db8::100/64
routes:
  - to: default
    via: 2001:db8::1

驗證與除錯清單

# 1. 確認 IP 生效
ip -br addr show

# 2. 確認路由
ip route show

# 3. 確認 DNS
resolvectl status
cat /etc/resolv.conf

# 4. 連通性測試
ping -c 3 
ping -c 3 8.8.8.8
ping -c 3 example.com

# 5. 檢查防火牆
firewall-cmd --list-all
iptables -L -n -v

# 6. NetworkManager 日誌
journalctl -u NetworkManager -f

常見陷阱避坑

  • 雙重管理衝突:同時啟用 NetworkManager 和 systemd-networkd 管理同一介面 → 禁用其一
  • YAML 縮進錯誤:Netplan 極其敏感,只用空格,禁止 Tab
  • BOOTPROTO=none vs static:RHEL 8+ 用 none,舊版用 static
  • DNS 不生效:檢查 /etc/resolv.conf 是否為 systemd-resolved 符號鏈接
  • 雲服務器元數據覆蓋:AWS/Azure/GCP 需配置雲初始化保留靜態 IP 或用雲控制台設置

總結建議

  • **新部署首選 nmcli**:跨發行版、支援動態修改、TUI 友好
  • **Ubuntu Server 必學 Netplan**:聲明式、版本控制友好、雲原生標準
  • **維護舊系統**才用 ifcfg,新項目避免
  • **永久修改配置文件 + 重載服務**,勿依賴臨時 ip/ifconfig 命令
  • **變更前備份**,遠程操作預留回滾方案(如控制台訪問)
copyright © 萬盛學電腦網 all rights reserved