Linux 伺服器系統管理:第六章 網路管理  上一頁    下一頁

6-5 網路命令彙集

內容:

  • 6-5-1 測試網路介面 - ifconfig

  • 6-5-2 設定網路介面 - ifconfig

  • 6-5-3 靜態路由表設定 - route

  • 6-5-4 測試網路 - ping

  • 6-5-5 路由追蹤 - traceroute

  • 6-5-6 顯示網路狀態 - netstat

  • 6-5-7 ARP 快取表查詢 - arp

  • 6-5-8 DNS 查詢 - nslookup

基本上,各種網路系統都有其專屬管理命令,我們在這裡僅介紹網路基本命令,分別說明如下。

6-5-1 測試網路介面 – ifconfig

ifconfig(Interface Configuration)是設定網路組態最重要的命令,除了可以設定各類型的網路卡之外,也可顯示介面卡的訊息。首先,我們利用 ifconfig 來觀察網路卡的工作狀況,並瞭解網路卡的介面參數之後,再來利用 ifconfig 命令來規劃網路。ifconfig 命令格式如下:

ifconfig [interface]

ifconfig interface [aftype] options | address ...

利用 ifconfig 命令測試網路卡的工作狀況,如下: (執行 #ifconfig 命令)

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 120.118.165.120  netmask 255.255.255.0  broadcast 120.118.165.255

        inet6 fe80::1e18:1dd3:fce7:5e62  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:7f:25:0d  txqueuelen 1000  (Ethernet)

        RX packets 48623  bytes 34513511 (32.9 MiB)

        RX errors 0  dropped 612  overruns 0  frame 0

        TX packets 10017  bytes 2245849 (2.1 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1  (Local Loopback)

        RX packets 668  bytes 52084 (50.8 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 668  bytes 52084 (50.8 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0        

如果某個網路卡未被啟動,或安裝不成功(或未取得 DHCP 伺服器給予 IP 位址)工作,則該網路卡(eth0、eth1)的 IP 位址會看不到。由上述操作範例可以看出,eth0 與 lo 介面已正常運作,也設有相關環境參數。各網路介面參數說明如下:

(A)網路介面型態

系統中常見的介面有下列幾種:

  • 迴授(Loopback)介面 - lo

此迴授介面為虛擬位址,即使沒有連結實際網路也有一個迴授介面。可當作一個網路介面來測試網路功能,資料由迴授介面送出,再送回主機。迴授介面名稱為 lo,而固定 IP 位址為 127.0.0.1。

  • Ethernet 網路介面 – ens33

如果主機上安裝有 Ethernet 網路卡,在開機時核心驅動程式就會自動尋找網路卡並建立介面。

  • 點對點連線 – ppp0

點對點連線是利用 PPP(Point-to-Point Protocol)通訊協定,以數據機連接電話撥接網路時使用。PPP 啟動時以 pppd 為 Daemon,第一個連接介面為 ppp0,依此類推。

(B)介面參數

我們以上述例子中顯示 eth0 和 lo 兩個介面的詳細資料,來說明有關網路介面的參數,如下:

  • Hwaddr:Ethernet 網路位址。一般稱之為 MAC(Medial Access Control)位址,每一片網路卡都有其唯一固定的位址。

  • inet addr:Internet 位址,亦是 IP 位址。如果是 PPP 介面,會由撥接的網路分配。

  • Bcast:廣播位址。上例是 140.127.138.255。

  • Mask:網路遮罩。亦是網路位址的範圍。

  • MTU:最大傳輸單元(Maximum Transfer Unit)。表示這個介面不必分段,而能傳輸的最大封包,一般 Ethernet 介面為 1500 Bytes。

  • Metric:向量值。RIP(Routing Information Protocol)用來計算路徑費用的向量值,該值愈大表示路徑成本愈高(例如,專線承租、或傳輸速率等等)。

  • TX packets:傳送封包的總數、錯誤數量、遺失數量和溢流數量。

  • RX packets:接收封包的總數、錯誤數量、遺失數量和溢流數量。

6-5-2 設定網路介面 - ifconfig

我們可利用 ifconfig 設定或更改介面卡參數,常用之設定格式如下:

# ifconfig 介面 IP-位址 [broadcast 廣播位址] [netmask 網路遮罩]

(A)設定 IP 位址

設定 IP 位址格式如下:

# ifconfig eth0 140.127.138.32 broadcast 140.127.138.255 netmask 255.255.255.0

其中介面和 IP 位址是必要的,廣播位址和網路遮罩部分,系統會依照網路等級(Class A ~ Class C)自動設定。但如果自行規劃次網路,則必須明確指定廣播位址(如 140.127.138.255)和網路遮罩(255.255.255.0)。

(B)停止或啟動網路介面

  • 停止 eth0 網路介面運作

# ifconfig ens33 down

  • 啟動 eth0 網路介面工作

# ifconfig ens33 up

6-5-3 靜態路由表設定 - route

對 Linux 核心而言,當要送出任一封包時,必須知道該封包應往哪一個路由傳送,因此,任一部主機都必須建構一個路由表(Routing Table),一般稱之為『靜態路由表』(Static Routing Table)。靜態路由的設定也是網路工作者最重要的工作,一般在 Linux 系統上是使用 route 命令。

(1)檢視靜態路由表

執行 /sbin/route 指令可以觀察系統核心內的路由表:(執行 # route 命令)

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         gateway         0.0.0.0         UG    100    0        0 ens33

120.118.167.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

上述是由本書範例(圖 6-1)執行的結果,因只做主機系統(只有 ens33 網路卡)並沒有路由器功能,其路由表看起來會比較單調一點。每一行代表一個路徑選擇,各欄位功能說明如下:

  • Destination:封包傳送的目的地之 IP 位址。

  • Gateway:這條路徑所經過的網路閘門,其中 * 表示直接到達,而沒有經過網路閘門轉送。

  • Gnemask:網路遮罩。

  • Flags:表示這條路徑狀況之旗號,其意義為:

    • U 表示啟動(Up)。

    • H 表示這條路徑之目的地為主機(Host)。

    • G 表示這條路徑為網路閘門轉送(Gateway)。

    • D 表示是經由 ICMP 重導路由設定(ICMP Redirect)。

    • M 表示此路徑已經由修改(Modify)。

  • Metric:此路徑之路由值。

  • Refcnt:其他路徑經過的次數。

  • Use:此路徑被使用的次數。

  • Iface:這條路徑所經過的網路介面。

由上例中的最後一列 default,表示主機所欲傳送之目的位址不在路由表內,就傳送到 default 這條路徑上,通常 default 都是經由 Gateway 轉送。

(2)設定靜態路由表 - 主機為目的地

設定某一主機為路由的目的地之格式為:

# /sbin/route add –host [gw gateway] [metric cost] [netmask 遮罩] [dev 介面]

其中 metric、網路遮罩與介面通常都不用加入,系統會自行設定,例如:

# route add -host 140.127.138.33 eth0           [加入主機位址]  

#  route                               [顯示路由表內容]

Kernel IP routing table

Destination     Gateway     Genmask      Flags Metric Ref      Use Iface

140.127.138.33  *          255.255.255.255 UH    0      0        0 eth0

140.127.138.0   *          255.255.255.0   U     0      0        0 eth0

169.254.0.0     *          255.255.0.0     U     0      0        0 eth0

default         140.127.138.254 0.0.0.0     UG    0      0        0 eth0

(3)設定靜態路由表 – 以網路的路由

主機依照欲傳送之封包(或由其它介面進入之封包)的網路位址,來決定轉送到哪一個網路閘門,格式為:

# route add –net 位址 [gw gateway] [metric cost] [netmask 遮罩] [dev 介面]

例如:

# route add -net 140.127.139.0 netmask 255.255.255.0 gw 140.127.138.254

                           [增加一條路由表路徑]

# route                      [顯示路由表內容]

Kernel IP routing table

Destination     Gateway  Genmask         Flags Metric Ref    Use Iface

140.127.138.33  *       255.255.255.255 UH    0      0      0 eth0

140.127.139.0  140.127.138.254 255.255.255.0   UG    0  0    0 eth0

140.127.138.0   *     255.255.255.0   U     0      0        0 eth0

169.254.0.0     *     255.255.0.0     U     0      0        0 eth0

default         140.127.138.254 0.0.0.0 UG    0      0        0 eth0

(4)設定預設路由

預設路由(default)通常是通往網路外部的網路閘門。格式為:

# route add default gw gateway_位址

例如:

# route add default gw 140.127.138.253       [加入預定匣門]

# route                                 [顯示路由表內容]

Kernel IP routing table

Destination     Gateway    Genmask    Flags Metric Ref    Use Iface

140.127.138.33  *     255.255.255.255 UH    0      0     0 eth0

140.127.139.0   140.127.138.254 255.255.255.0   UG    0   0 0 eth0

140.127.138.0   *    255.255.255.0   U     0      0        0 eth0

169.254.0.0     *     255.255.0.0     U     0      0        0 eth0

default         140.127.138.253 0.0.0.0  UG    0      0     0 eth0

default         140.127.138.254 0.0.0.0   UG    0      0     0 eth0

(5)刪除路由

刪除不必要的路由,例如:

# route del default gw 140.127.138.253

# route del 140.127.138.33

6-5-4 測試網路 – ping

ping 為最常用的網路測試命令,一般都是針對主機或網路閘門的 IP 位址進行測試,它的方法是送出一個 ICMP Echo Request 封包到目的地,目的主機收到後會立即回覆一個 ICMP Echo Reply 給原發送端,由發送端計算來回的時間,並顯示出來。使用者利用此來回時間可以預估網路狀態,如果遺失封包過多或延遲時間過長表示網路狀態不穩定。但是當網路不正常,或主機不存在時,發送端在逾時(Time out)沒有收到 Echo Reply 時,也會顯示出來,並繼續發送 Echo Request 封包。ping 命令格式如下:

# ping  [選項]  主機位址

其實 ping 命令格式變化很多,我們僅列出較常用的選項:

  • -c count:設定 ping 的傳送次數(count),預設值為 30。

  • -d :啟動 Socket 的 SO_DEBUG 功能。

  • -f :極速偵測(Flood ping),會快速的連續傳送 ping 封包來測試。

  • -i wait:每筆偵測的相隔時間,預設值為 1 秒。

  • -I Interface_address:發出封包的介面卡位址。

  • -r :忽略 Routing Table,而將封包直接送到遠端主機。。

  • -R:記錄路由過程。

  • -v :顯示詳細的執行過程。

操作範例:(執行 # ping 168.95.1.1 命令)

PING 168.95.1.1 (168.95.1.1) from 192.168.0.50 : 56(84) bytes of data.

64 bytes from dns.hinet.net (168.95.1.1): icmp_seq=0 ttl=246 time=85.3 ms

--- 168.95.1.1 ping statistics ---

6 packets transmitted, 6 packets received, 0% packet loss

round-trip min/avg/max = 80.4/114.0/272.7 ms

一般主機發送 ICMP 封包時都將 TTL(Time-to-Live)設定為 255,因此由上例中,可以看出每一個封包回來時 TTL 皆為 246,表示到達目的主機(168.95.1.1)必須經過 9(255-246)個網路閘門,另外每個封包來回的時間也不一定相同。

6-5-5 路由追蹤 – traceroute

在網路上還有一個重要的管理命令就是 traceroute,當我們希望瞭解封包到達目的地的路徑狀況時,就必須利用 traceroute 來追蹤封包所經過的路徑。但在一般 Internet 網路上,每次封包所經過的路徑也許不同,因此,任何時間執行 traceroute 的結果當然就不會相同,首先我們來探討 traceroute 的運作原理。

最主要的是 traceroute 使用 ICMP 及 IP 標頭裡的 TTL(Time-to-Live)欄位。一般情況下,封包每經過一個網路閘門 TTL 值就被減 1,如果路由器收到一個 TTL 值減 1 以後為 0 時,便會回送一個 ICMP Time Exceeded(Type 11)(逾時)給原發送端,並將該封包丟棄,traceroute 就是利用這種特性來追蹤路徑。它的運作情況如下:首先 traceroute 送出一個 TTL 為 1 的 IP 封包到目的主機,第一個收到的路由器將 TTL 減 1,丟棄該封包,並回送 ICMP 給原發送主機,這個過程確認了這條路徑的第一個路由器;接下來,traceroute 再送 TTL 為 2 的 IP 封包,又可以得到第二個路由器位址,如此重覆一直到封包到達目的主機為止。但當封包到達目的位址時,它的 TTL 也被減成 0,同樣回應 ICMP Time Exceeded 封包,發送端如何來判斷封包已到達目的呢?

其實 traceroute 是以 UDP 封包格式發送,我們只要將 UDP 埠口設定在不可能使用的埠口上即可,一般都會將它設定較大的值(如 30000)。當目的主機收到後,判斷是自己的 IP 位址,但無此埠口服務,便會回應一個 ICMP Port Unreachable(埠口無法到達)給發送端,發送端只要利用『ICMP 埠口無法到達』和『ICMP 逾時』就可判斷是否到達目的主機。一般封包的 TTL 欄位預設值為 255(如 ping),這可能造成 traceroute 的封包在網路上無窮的回繞,因此,traceroute 的 TTL 預設值為 30,表示最高可以追蹤 30 個經過的網路閘門,但可以設定改變其大小。

traceroute 的命令格式如下:

# /usr/sbin/traceroute [選項] 主機位址

同樣的,traceroute 的選項也是很多,我們還是僅列出比較常用的選項:

    • -d :使用 Socket 層級的除錯功能。

    • -F :設定 Don’t Fragment 位元。

    • -g Gateway:設定路由器位址,最多 8 個。

    • -m count:設定最大 TTL 值,預設值為 30。

    • -n :使用 IP 位址,而不用主機名稱。

    • -r :忽略 Routing Table,直接將封包傳送到目的位址。

    • -v :顯示詳細執行過程。

操作範例:(執行 # traceroute 168.95.1.1)

Tracing route to dns.hinet.net [168.95.1.1]

over a maximum of 30 hops:

 

  1     2 ms   <10 ms     1 ms  163.15.2.62

  2     *        *        *     Request timed out.

  3    72 ms    72 ms    70 ms  202.145.93.254

  4    75 ms    72 ms    76 ms  ks.ttn.net [202.145.84.254]

  5    81 ms    82 ms    78 ms  p25545.wan145.ficnet [202.145.255.45]

  6    79 ms    81 ms    79 ms  210.243.127.4

  7    85 ms    78 ms    81 ms  twix2.ttn.net [202.145.255.98]

  8    83 ms    80 ms    81 ms  211.22.41.186

  9    82 ms    83 ms    79 ms  211.22.35.98

 10    80 ms    79 ms    84 ms  211.22.35.1

 11    81 ms    81 ms    80 ms  dns.hinet.net [168.95.1.1]

 

Trace complete.

由上例中可以看出,我們追蹤到 168.95.1.1 經過了 9 個網路閘門(或路由器),traceroute 針對每一個路徑送出 3 個 IP 封包,所回應的時間也不一定相同。追蹤路徑為:第一次到達 163.15.2.62 有回應,但經由 163.15.2.62 往下一個路徑(第二次發送)連續 3 個封包都沒有回應,因此退回來,又找出第一個路徑是 202.145.93.254,得到回應,再經由 202.145.93.254 往下一個路徑(202.145.84.254);連續下去一直到達目的位址 168.95.1.1,其中共經過 9 個網路閘門。

6-5-6 顯示網路狀態 - netstat

顯示網路狀態命令 – netstat 是一個非常實用的工具,不但可以顯示網路運作情形,也可顯示路由表,以及其它重要的訊息,命令格式如下:

# netstat  [選項]

較常用的選項如下:

  • -a :顯示目前所有連接的 Socket。

  • -c :持續列出網路狀態。

  • -C :顯示路由快取資訊。

  • -e :顯示詳細的網路資訊。

  • -g :顯示多重廣播群組名單。

  • -i :顯示網路介面資訊。

  • -I :顯示傾聽中的 Socket 清單。

  • -M :顯示偽裝連線(NAT)。

  • -n :顯示 IP 位址而不是主機名稱。

  • -r :顯示路由表。

  • -s :顯示網路資訊統計清單。

  • -t :顯示 TCP 連線狀態。

  • -u :顯示 UDP 連線狀態。

  • -v :顯示詳細資訊。

  • -w :顯示 Raw Socket 連線。

操作範例:(執行 # netstat –rn 命令,查閱路由表)

Kernel IP routing table

Destination     Gateway    Genmask     Flags   MSS Window  irtt Iface

140.127.139.0   140.127.138.254 255.255.255.0   UG     0 0     0 eth0

140.127.138.0   0.0.0.0    255.255.255.0   U         0 0      0 eth0

169.254.0.0     0.0.0.0    255.255.0.0     U         0 0      0 eth0

0.0.0.0         140.127.138.254 0.0.0.0    UG        0 0      0 eth0

6-5-7 ARP 快取表命令 - arp

如果需要查詢或增減 ARP 快取表(ARP Cache Table),可以使用 arp 指令,格式為:

# /sbin/arp  [選項]

其中常用之選項為:

  • - a :顯示所有記錄。

  • -d hostname:刪除 hostname 主機的記錄。

  • -s hostname hw_address:增加 hostname 主機的硬體位址(hw_address)

操作範例:(執行 # arp 命令)

Address           HWtype  HWaddress           Flags Mask     Iface

gateway           ether   00:25:46:86:88:4b   C                 ens33

120.118.165.107     ether   00:25:b3:0a:c1:17   C                 ens33

6-5-8 DNS 查詢 - nslookup

我們可以利用 nslookup 命令來查詢所指定 DNS 伺服器(/etc/resolv.conf)上的資料,也可以變換 DNS 伺服器查詢其他網域名稱的資料,如下:(執行 nslookup 命令)

> server                            【目前指定的 DNS Server】

Default server: 140.127.1.1

Address: 140.127.1.1#53

> server 168.95.1.1                     【變換 DNS Server】

Default server: 168.95.1.1

Address: 168.95.1.1#53

> www.nsysu.edu.tw                      【查詢主機的 IP 位址】

Server:         168.95.1.1

Address:        168.95.1.1#53

 

Non-authoritative answer:

Name:   www.nsysu.edu.tw

Address: 140.117.11.112

> exit                                     【離開 nslookup】

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: