Linux之網絡相關命令——ping、tranceroute、netstat、ftp、lftp、wget、ssh、scp、sftp

網絡連接方面,Linux可以說是萬能的. Linux工具可以建立各種網絡系統及應用,包括防火牆、路由器、域名服務器、NAS(網絡附加存儲)盒等。
這裏主要講一些經常用到的命令,涉及網絡檢測以及文件傳輸等方面。所涉及的命令包括:

  • ping: 向網絡主機發送 ICMP ECHO_REQUEST數據包
  • traceroute: 顯示數據包到網絡主機的路由路徑
  • netstat: 顯示網絡連接、路由表、網絡接口數據、僞連接以及多點傳送成員等信息
  • ftp:文件傳輸命令
  • lftp:改善後的文件傳輸命令
  • wget:非交互式網絡下載器
  • ssh: OpenSSH(SSH協議的免費開源實現)版的SSH客戶端(遠程系統登錄命令)。
  • scp: srcure copy的縮寫,是遠程複製文件命令。
  • sftp: secure file transfer program的縮寫,安全文件傳輸程序。

0.參考書籍

《Linux命令行大全》 [美] William E. Shotts. Jr 著 郭光偉 郝記生 譯, 人民郵電出版社

如有侵權,可聯繫博主刪除。

1. 檢查、檢測網絡

1.1 ping—向網絡主機發送特殊數據包

ping命令會向指定的網絡戶籍發送特殊網絡數據包IMCP ECHO_REQUEST.多數網絡設備收到該數據包後會做出迴應,通過此法即可驗證網絡連接是否正常,

$ ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79: icmp_seq=1 ttl=44 time=27.7 ms
64 bytes from 39.156.69.79: icmp_seq=2 ttl=44 time=27.1 ms
64 bytes from 39.156.69.79: icmp_seq=3 ttl=44 time=27.2 ms
64 bytes from 39.156.69.79: icmp_seq=4 ttl=44 time=27.0 ms
...
^C
--- baidu.com ping statistics ---
32 packets transmitted, 32 received, 0% packet loss, time 31129ms

一旦程序啓動,ping命令便以既定的時間間隔(默認1s)傳送數據包直到該命令被打斷。按下Ctrl+C結束。
數據包丟失0%說明網絡運行正常。

1.2 traceroute—跟蹤網絡數據包的傳輸路徑

traceroute程序會顯示文件通過網絡從本地系統傳輸到指定主機過程中所有停靠點的列表。
例如

$ traceroute baidu.com
 1  10.20.3.1 (10.20.3.1)  5.509 ms  5.782 ms  6.082 ms
 2  10.250.1.1 (10.250.1.1)  0.206 ms  0.198 ms  0.179 ms
 3  * * *
 4  224.fudan.edu.cn (202.120.224.3)  1.518 ms  2.661 ms  2.050 ms
 5  * * *
 6  10.255.19.1 (10.255.19.1)  3.072 ms  2.929 ms  2.983 ms
 7  10.255.249.45 (10.255.249.45)  1.623 ms  1.311 ms  1.216 ms
 8  10.255.38.250 (10.255.38.250)  1.414 ms  1.532 ms  1.719 ms
 9  202.112.27.1 (202.112.27.1)  2.414 ms  2.153 ms  3.080 ms
10  101.4.115.105 (101.4.115.105)  2.367 ms  2.299 ms  2.217 ms
11  101.4.117.30 (101.4.117.30)  21.143 ms  23.262 ms  22.130 ms
12  101.4.116.118 (101.4.116.118)  29.939 ms  29.975 ms  30.451 ms
13  101.4.112.69 (101.4.112.69)  27.647 ms  27.083 ms  27.551 ms
14  101.4.113.110 (101.4.113.110)  30.981 ms  31.284 ms  31.169 ms
15  101.4.116.66 (101.4.116.66)  30.915 ms  28.574 ms  28.971 ms
16  101.4.117.110 (101.4.117.110)  31.936 ms  32.072 ms  32.223 ms
17  202.97.57.173 (202.97.57.173)  29.062 ms 202.97.88.233 (202.97.88.233)  27.312 ms  27.359 ms
18  * 180.149.159.10 (180.149.159.10)  27.638 ms *
19  36.110.244.94 (36.110.244.94)  65.536 ms * *
20  * * *
21  220.181.182.34 (220.181.182.34)  28.894 ms 220.181.17.90 (220.181.17.90)  29.379 ms *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

說明從測試系統到https://www.baidu.com/網站的連接需要經過30個路由器,對於提供身份信息的路由器,列表列出了主機名、IP地址以及運行狀態信息。信息包含了從本地系統到路由器3次往返時間。
而對於那些因爲路由器配置、網絡堵塞或是防火牆等等原因不提供身份信息的路由器,則直接用星號行表示。

1.3 netstat—檢查網絡設置及相關統計數據

netstat使用-ie選項,可以檢查系統中的網絡接口信息。

$ netstat -ie

enp13s0f1 Link encap:Ethernet  HWaddr a0:42:3f:37:59:55
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2001:da8:8001:263:a242:3fff:fe37:5955/64 Scope:Global
          inet6 addr: fe80::a242:3fff:fe37:5955/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:526542080 errors:0 dropped:1452651 overruns:703 frame:0
          TX packets:332330448 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:618633150746 (618.6 GB)  TX bytes:217758725891 (217.7 GB)
          Memory:c7200000-c721ffff

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:155800939 errors:0 dropped:0 overruns:0 frame:0
          TX packets:155800939 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:221954702938 (221.9 GB)  TX bytes:221954702938 (221.9 GB)

以上輸出信息顯示,測試系統有兩個網絡端口:第一個稱爲enp13s0f1,是以太網端口;第二個稱爲lo,是系統用來自己訪問自己的迴環虛擬接口。
對於網絡接口進行日常診斷,關鍵是看能否在每個接口信息第四行的開頭找到UP這個詞以及能否在第二行的inet addr字段找到有效的IP地址。第四行的UP代表着該網絡接口已啓動,而對於使用動態主機配置協議的系統(DHCP),inter addr字段裏邊的有效IP地址則說明了DHCP正在工作。

使用-r選項將顯示內核的網絡路由表,顯示了網絡之間傳送數據包時網絡的配置情況。

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0       *               255.255.255.0   U         0 0          0 enp13s0f1
192.168.1.1     0.0.0.0              UG          0  0           0  eth0  

2.通過網絡傳輸文件

2.1 ftp—採用FTP(文件傳輸協議)傳輸文件

ftp是Linux比較經典的命令之一,由File Transfer Protocol協議縮寫而來.
FTP原來的表現形式並不安全,因爲它以明文的方式傳送賬戶名以及密碼。這意味着這些信息並沒有加密,任何一個接觸網絡的人都能看到它們。鑑於此,幾乎所有使用FTP協議進行的網絡文件傳輸都是由匿名FTP服務器處理的。匿名服務器允許任何人使用anonymous登錄名以及無意義的密碼登錄。

2.2 lftp—更好的ftp(文件傳輸協議)

lftp與傳統的ftp程序功能類似,但有很多其它便利的功能,包括多協議支持(HTTP)、下載失敗時自動重新嘗試、後臺進程支持、Tab鍵完成文件名輸入等許多其他功能。

2.3 wget—非交互式網絡下載工具

wget既可以用於從網站上下載內容,也可以從FTP站點下載,單個文件、多個文件甚至整個網址都可以被下載。

$ wget http://linuxcommand.org/index.php
--2020-06-12 20:02:13--  http://linuxcommand.org/index.php
Resolving linuxcommand.org (linuxcommand.org)... 216.105.38.10
Connecting to linuxcommand.org (linuxcommand.org)|216.105.38.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4005 (3.9K) [text/html]
Saving to: ‘index.php’

index.php                       100%[======================================================>]   3.91K  --.-KB/s    in 0s

2020-06-12 20:02:15 (305 MB/s) - ‘index.php’ saved [4005/4005]

從http://linuxcommand.org下載了第一頁。

3. 與遠程主機的安全通信

3.1 ssh—安全登錄遠程計算機

SSH(Secure Shell)協議是爲了解決明文傳送的問題。SSH協議包括兩個部分:一個是運行在遠程主機上的SSH服務端,用來監聽端口22上可能過來的連接請求;另一個是本地系統上SSH客戶端,用來與遠程服務器進行通信。
多數Linux發行版都採用BSD項目的openSSH(SSH的免費開源實現)方法實現SSH。一些版本如Red Hat會默認包含客戶端包和服務端包,而像Ubuntu則僅僅提供客戶端包,系統要接受遠程連擊,必須安裝、配置以及運行OpenSSH-server軟件包,並且必須允許TCP端口22上進來的網絡連接。

例如使用ssh客戶端程序來建立與遠程主機romote-sys的連接的例子

$ ssh remote-sys

第一次嘗試連接的時候,由於ssh程序從來沒有接觸過此遠程主機,所以會跳出一條“不能確定遠程主機真實性”的消息。需要輸入yes來接受遠程主機的身份,一旦建立了連接,會提示用戶盲輸密碼。

輸入正確密碼後,遠程系統的shell提示符便出現了。
遠程shell對話將一直開啓,直到用戶在該對話框中輸入exit命令斷開與遠程系統的連接。連接一旦斷開後,本地shell會話恢復,本地shell提示符又重新出現。

以下一段是博主個人經驗
我們常用的的實際上是ssh [email protected](IP地址) 這樣形式的,有些端口不是默認的22,需要加參數 -p11524(端口號)

ssh命令除了能開啓遠程系統上的shell會話外,還能在遠程系統上執行單個簡單的命令.

$ ssh romote-sys free

3.2 scp和sftp—安全傳輸文件

OpenSSH軟件包含了兩個使用SSH加密隧道進行網絡間文件複製的程序,scp(secure copy)便是其中之一。例如從remote-sys遠程系統的home目錄中將doc.txt的文件複製到本地系統。

$ scp remote-sys:doc.txt .

如果不是本地系統的用戶名登錄遠程系統,那麼需要在遠程主機名前添加將要登錄的遠程系統的賬戶名

$ scp bob@remote-sys:doc.txt

如果是文件夾的話,需要加參數-r
另外一個SSH文件複製程序是sftp。顧名思義,它是ftp程序的安全版本。sftp與ftp很相似,只是sftp採用SSH加密隧道傳輸信息而不是以明文方式傳輸。另外一個優點是不需要遠程服務器運行FTP服務器,僅僅需要SSH服務器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章