Linux

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系統中使用 ip 指令查詢與更改網路設定。

ifconfig 指令是一個在過去的 Linux 系統中很常被使用的網路設定工具,而 ip 指令則是一個新的替代工具,功能比既有的 ifconfig 更豐富,而且 ip 指令目前在 Ubuntu Linux 中已經是預設會安裝的基本指令(ifconfig 預設並不會安裝),所以熟悉 ip 指令的使用方式對於 Linux 管理者來說是很重要的。

查詢網路 IP 位址設定

若要查詢 Linux 主機上各網路介面的 IP 位址,可以使用 ip address show 指令,而這個指令也有一些簡短的寫法,功能都相同:

# 查詢 IP 位址
ip address show

# 查詢 IP 位址(簡短指令)
ip address

# 查詢 IP 位址(簡短指令)
ip addr

# 查詢 IP 位址(簡短指令)
ip a

執行後的輸出會類似這樣:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 50:eb:f6:d6:ab:99 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 84:7b:57:da:75:91 brd ff:ff:ff:ff:ff:ff
    inet 172.20.10.13/28 brd 172.20.10.15 scope global dynamic noprefixroute wlan0
       valid_lft 86332sec preferred_lft 86332sec
    inet6 2001:b400:e7d5:6d49:b371:89fc:baae:193f/64 scope global noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::c99f:e954:478:50bf/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 00:e0:4c:a1:21:2d brd ff:ff:ff:ff:ff:ff

若只想要顯示 IPv4 或 IPv6 的網路位址,可以加上 -4-6 參數:

# 查詢 IP 位址(只顯示 IPv4 位址)
ip -4 address

# 查詢 IP 位址(只顯示 IPv6 位址)
ip -6 address

若只想要顯示指定網路介面的設定,可以用 dev 來指定網路介面,而 dev 也可以省略,以下幾種寫法都有相同的功能:

# 只顯示 wlan0 網路介面資訊
ip address show dev wlan0

# 只顯示 wlan0 網路介面資訊(簡短寫法)
ip addr show wlan0

# 只顯示 wlan0 網路介面資訊(簡短寫法)
ip addr list wlan0

ip 指令預設的輸出資訊比較多,如果希望輸出比較簡短的資訊,可以加上 -br 參數:

# 查詢 IP 位址(簡短輸出)
ip -br address show
lo               UNKNOWN        127.0.0.1/8 ::1/128 
eth0             DOWN           
wlan0            UP             172.20.10.13/28 2001:b400:e7d5:6d49:b371:89fc:baae:193f/64 fe80::c99f:e954:478:50bf/64 
eth1             DOWN

新增網路 IP 位址設定

若要在 eth0 這個網路介面上新增一個 192.168.0.1 的 IP 位址,並將網路遮罩設定為 255.255.255.0,可以執行:

# 新增 IP 位址
sudo ip address add 192.168.0.1/255.255.255.0 dev eth0

# 新增 IP 位址(簡短寫法)
sudo ip a add 192.168.0.1/24 dev eth0

在預設的情況下,ip 指令不會自動設定廣播位址,我們可以使用以下指令手動新增廣播位址:

# 新增廣播位址
sudo ip address add broadcast 192.168.0.255 dev eth0

另一種更常見的設定方式是在指定 IP 位址與網路遮罩時,將廣播位址指定為加號(+),這樣可以讓 ip 指令自動依據 IP 位址與網路遮罩來計算廣播位址:

# 新增 IP 位址(自動新增廣播位址)
sudo ip address add 192.168.0.1/255.255.255.0 broadcast + dev eth0

若要重設廣播位址,可以將廣播位址設定為減號(-)。

刪除網路 IP 位址設定

若要刪除網路介面上的 IP 位址,可以使用 ip address del 指令:

# 刪除 eth0 網路介面上指定 IP 位址
sudo ip address del 192.168.0.1/255.255.255.0 dev eth0

# 刪除 eth0 網路介面上指定 IP 位址(簡短寫法)
sudo ip addr del 192.168.0.1/24 dev eth0

若要一次刪除指定網路介面上的所有 IP 位址,可以使用 ip address flush 指令:

# 刪除 eth0 網路介面上所有的 IP 位址
sudo ip address flush dev eth0

啟用與停用網路介面

若要啟用或停用指定的網路介面,可以使用 ip link set 指令:

# 啟用 eth0 網路介面
sudo ip link set dev eth0 up

# 停用 eth0 網路介面
sudo ip link set dev eth0 down

查詢 ARP 快取

若要查詢目前系統上的 ARP 快取資訊,可以使用 ip neigh show 指令:

# 查詢 ARP 快取
ip neigh show

# 查詢 ARP 快取(簡短寫法)
ip n show

# 查詢 ARP 快取(簡短寫法)
ip n
172.20.10.1 dev wlan0 lladdr 5e:87:30:98:db:64 REACHABLE 
2001:b400:e7d5:6d49:d18c:f25e:ed50:373a dev wlan0 lladdr 5e:87:30:98:db:64 router STALE 
fe80::5c87:30ff:fe98:db64 dev wlan0 lladdr 5e:87:30:98:db:64 router REACHABLE

修改 ARP 項目

若要新增 ARP 項目,可以使用 ip neigh add 指令:

# 新增 ARP 項目
sudo ip neigh add 192.168.0.5 lladdr 00:11:22:33:44:55 dev eth0 nud permanent

這裡的 nud permanent 參數是將此 ARP 項目的狀態設定為 permanent(永久有效),關於其他的 ARP 項目狀態說明,可以參考 ip-neighbour(8) 線上手冊。

若要修改 ARP 項目,則可使用 ip neigh chg 指令:

# 修改 ARP 項目狀態
sudo ip neigh chg 192.168.0.5 dev eth0 nud reachable

刪除 ARP 項目

若要刪除 ARP 項目,則可使用 ip neigh del 指令:

# 刪除 ARP 項目
sudo ip neigh del 192.168.0.5 dev eth0

若要將 ARP 表整個清空,可以使用 ip neigh flush 指令:

# 刪除 eth0 網路介面上的所有 ARP 項目
sudo ip neigh flush dev eth0

查詢路由表

若要查詢目前系統上的路由表(routing table),可以使用 ip route list 指令:

# 查詢路由表
ip route list

# 查詢路由表(簡短寫法)
ip route

# 查詢路由表(簡短寫法)
ip r

若要查詢指定網段的路由設定,可以在指令後方加上要查詢的網段:

# 查詢指定網段的路由
ip route list 192.168.0.0/24

# 查詢指定網段的路由(簡短寫法)
ip r list 192.168.0.0/24

新增路由設定

若要在路由表中新增陸由設定,可以使用 ip route add 指令,例如將 eth0 網路介面上的 192.168.0.254 設定為預設閘道:

# 新增 eth0 網路介面上的預設閘道
sudo ip route add default via 192.168.0.254 dev eth0

刪除路由設定

若要刪除路由表中的路由設定,可以使用 ip route delete 指令,例如刪除預設閘道設定:

# 刪除預設閘道設定
sudo ip route delete default

更改網路卡 MAC 位址

網路卡的 MAC 位址在 ip address show 指令的輸出中就會顯示,若只要單純查詢 MAC 位址,可以使用 ip link show 指令:

# 查詢網路介面 MAC 位址
ip link show

如果需要更改網路卡的 MAC 位址,可以使用 ip link show 指令,先將網路介面停用,待修改完 MAC 位址之後,再重新啟用網路介面:

# 啟用 eth0 網路介面
sudo ip link set dev eth0 up

# 更改網路介面 MAC 卡號
sudo ip link set dev eth0 address 00:11:22:33:44:55

# 停用 eth0 網路介面
sudo ip link set dev eth0 down

彩色輸出

如果希望 ip 指令輸出彩色的訊息,方便閱讀,可以加上 -c 參數,例如:

# 輸出彩色的訊息
ip -c address show

加上彩色的輸出畫面繪像這樣:

ip 指令彩色輸出

如果希望 ip 指令可以自動輸出彩色的訊息,可以在 .bashrc 的設定中新增一條 alias:

# 自動讓 ip 指令輸出彩色的訊息
alias ip='ip -c'

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago

Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例

介紹如何使用 Cryptset...

1 年 ago