如何高效的用 Linux 命令行管理網絡?

如何高效的用 Linux 命令行管理網絡?
做者 | JackTian
來源 | 公衆號:傑哥的IT之旅(ID:Jake_Internet)git

前言
在平常工做中,咱們所常常使用的 Linux 服務器操做系統,不管是要查看網絡設備的信息、管理網絡接口、下載文件、調試網絡問題仍是查看網絡的統計數據,均可以在終端下用命令來完成。github

ifconfig / ip a
命令 ifconfig 與 ip a 是相似的,用於輸出網絡接口配置、調優等各類選項,可便捷的查看 IP 地址和其它網絡接口的信息以及查看全部啓用的網絡接口的狀態、名字或指定網絡接口名字來顯示一個接口的信息。ubuntu

# ip a
# ifconfig
# ifconfig ens32

ifdown / ifup
ifdown 和 ifup 跟命令 ifconfig down 和 ifconfig up 功能是一致的,主要用來給指定網絡接口名來操做啓用或禁用的狀態,在 Ubuntu 上須要 root 權限可以使用 sudo 來執行。服務器

# sudo ifdown eth0
# sudo ifup eth0

ping
ping 發送報文到指定的 IP 地址,可測試聯通性,使用 -c 參數,能夠指定發送報文包的個數。網絡

執行 ping 命令將使用 ICMP 傳輸協議。ssh

如能 ping 通將進行輸出要求響應的信息,ping 不通時,將顯示沒有路由或拒絕等相關性的響應信息,可根據輸出信息來解決具體的網絡狀況;curl

# ping -c 4 www.baidu.com

tracepath / traceroute
tracepath 和 traceroute 命令功能相似,不須要root權限。socket

Ubuntu 是預裝了 tracepath 命令,traceroute 命令沒有預裝。tcp

tracepath 命令:能夠追蹤出到指定目的地址的網絡路徑,並進行輸出了每一個路徑上的每一跳地址信息,當網絡出現問題或是慢了,可以使用 tracepath 命令能夠查出網絡在哪裏斷了或是慢了。ide

traceroute 命令:用來追蹤網絡數據包的路由路徑,數據包大小預設是 40Bytes。數據包從一個出發點到一個目的地,走的路由路徑可能會不太同樣,但大體上是相同的。

# tracepath www.baidu.com
# traceroute www.baidu.com

mtr
mtr 命令:是把 ping 命令和 tracepath 命令合二爲一了。

mtr 會持續發包,並顯示 Host Address 和每一跳 ping 所用的時間等;

# mtr www.github.com

按鍵q或ctrl+c來進行退出。

如何高效的用 Linux 命令行管理網絡?
ifplugstatus
Ubuntu 操做系統上是沒有安裝這個命令的,可經過下面的命令來安裝:

# sudo apt install ifplugd

ifplugstatus 命令:用來查看全部網絡接口的狀態,也能夠指定網絡接口;

# ifplugstatus
lo: link beat detected
ens32: link beat detected

# ifplugstatus ens32
ens32: link beat detected

curl / wget
使用 curl 或 wget 命令,可直接在終端下載文件。

curl 需在後面加一個參數選項:-O 再跟一個文件路徑便可;

# curl -O http://www.freelogovectors.net/wp-content/uploads/2016/12/ubuntu_logo.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   282  100   282    0     0    156      0  0:00:01  0:00:01 --:--:--   156

# ll | grep ubuntu_logo.png 
-rw-r--r--  1 root     root          282 10月 29 16:49 ubuntu_logo.png

wget 不須要任何參數選項,所下載的文件將存放置當前目錄下;

# wget http://www.freelogovectors.net/wp-content/uploads/2016/12/ubuntu_logo.png

# ll | grep ubuntu_logo.png 
-rw-r--r--  1 root     root        95737 12月 13  2016 ubuntu_logo.png

host
host 命令:用來作 DNS 查詢。

若是命令參數是域名,命令會輸出關聯的 IP;若是命令參數是 IP,命令則會輸出關聯的域名。

# host www.sina.com
# host IP Address

whois
whois 命令:用於輸出指定站點的 whois 記錄等信息。

# whois www.github.com

netstat
netstat 命令:用於顯示網絡接口的統計信息,包括打開的 socket 和 路由表。

-p:能夠顯示打開的 socket 對應的程序。

# netstat -p
激活Internet鏈接 (w/o 服務器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 jacktian-virtual-ma:ssh 192.168.1.124:44284     ESTABLISHED 4285/sshd: root@pts 
活躍的UNIX域套接字 (w/o 服務器)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     路徑
unix  2      [ ]         數據報                59572    4296/systemd         /run/user/0/systemd/notify
unix  2      [ ]         數據報                49351    3344/systemd         /run/user/1000/systemd/notify
unix  3      [ ]         數據報                19222    1/init               /run/systemd/notify

-s:顯示全部端口的詳細統計信息。

# netstat -s
Ip:
    Forwarding: 2
    30932 total packets received
    2 with invalid headers
    11 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    30911 incoming packets delivered
    18611 requests sent out
    22 outgoing packets dropped
Icmp:
    5499 ICMP messages received
    3 input ICMP message failed
    ICMP接收歷史
        destination unreachable: 141
        timeout in transit: 5354
        echo requests: 2
        echo replies: 2
    7523 ICMP messages sent
    0 ICMP messages failed
    ICMP發出歷史
        destination unreachable: 145
        echo requests: 7376
        echo replies: 2

例如:結合各項參數,來進行查看 22 端口的信息。

# netstat -anpt | grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      979/sshd            
tcp        0     36 192.168.1.142:22        192.168.1.124:44284     ESTABLISHED 4285/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      979/sshd
相關文章
相關標籤/搜索