Linux 修改 IP 分為「即時生效 (重啟失效)」與「永久生效 (寫入設定檔)」。本文整理傳統 ifconfig/route、現代 ip 指令、nmcli (NetworkManager) 以及各發布版設定檔路徑,涵蓋 IP、閘道、DNS、主機名稱四大項目。
| 項目 | 傳統指令 (net-tools) | 現代指令 (iproute2) |
|---|---|---|
| IP/子網遮罩 | ifconfig eth0 192.168.1.100 netmask 255.255.255.0 | ip addr add 192.168.1.100/24 dev eth0 |
| 預設閘道 | route add default gw 192.168.1.1 | ip route add default via 192.168.1.1 |
| DNS | 編輯 /etc/resolv.conf | 同左 (由 systemd-resolved/NM 管理時勿手改) |
| 主機名 | hostname newname | hostnamectl set-hostname newname --transient |
# /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
IPV6INIT=no
systemctl restart network
# 或
nmcli con reload && nmcli con up eth0
# /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
dns-nameservers 8.8.8.8 1.1.1.1
systemctl restart networking
# 或
ifdown eth0 && ifup eth0
# 列出連線
nmcli con show
# 修改現有連線 (假設名稱為 "Wired connection 1")
nmcli con mod "Wired connection 1" \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8,1.1.1.1" \
ipv4.method manual
# 套用
nmcli con up "Wired connection 1"
# /etc/systemd/network/20-wired.network
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=1.1.1.1
systemctl restart systemd-networkd
/etc/resolv.conf 為各解析器共用檔案;若使用 systemd-resolved 或 NetworkManager,勿手動編輯,改用對應工具 (resolvectl、nmcli)。resolvectl status 或 cat /etc/resolv.conf。ip addr show eth0
ip route show
ping -c 3 192.168.1.1 # 閘道
ping -c 3 8.8.8.8 # 外網
dig +short example.com # DNS 解析
network-scripts 與 NetworkManager 會衝突,二選一。hostnamectl set-hostname newname (systemd) 或編輯 /etc/hostname + /etc/hosts。依據你的發布版與管理工具選擇對應方法,修改 IP 將不再是難題。