這是一份你須要的Linux 網絡命令大全

做爲一名 IT 從業者,常常都要跟 Linux 打交道,其中網絡更是用得頻繁,掌握基本的網絡命令是必備的技能,更是提升咱們工做效率的必備良器,今天這篇文章就來梳理下經常使用的網絡工具。由於梳理的命令比較多,因此文章天然不會深刻介紹這些命令的用法,你們能夠有個印象,而後學習工做中碰到了再具體去查好了。shell

總的來講,Linux 網絡命令涉及到這麼幾塊:小程序

  • 網絡配置: ifconfig、 ip
  • 連通性探測: ping、 traceroute、 telnet、 mtr
  • 網絡鏈接: netstat、 ss、 nc、 lsof
  • 流量統計: ifstat、 sar、 iftop
  • 交換與路由: arp、 arping、 vconfig、 route
  • 防火牆: iptables、 ipset
  • 域名: host、 nslookup、 dig、 whois
  • 抓包: tcpdump
  • 虛擬設備: tunctl、 brctl、 ovs

01 網絡配置

最重要的兩個工具就是 ifconfig 和 ip,這兩個工具分別來自兩個工具包 net-tools 和 iproute2,其中, net-tools 包還包含如 route、 netstat、 tc、 ifstat 等等經常使用的工具,不過, net-tools 包已經逐步在被 iproute2 包替換。對於咱們學習來講,不妨都學習下,這樣也有助於理解和記憶。微信小程序

1.1 ifconfig

ifconfig 一般是用來查看網卡的信息(好比 IP 地址、收發包及丟包狀況等),以及配置網卡(如啓停網卡,修改網卡 MTU,修改 IP、MAC 地址等)緩存

查看網卡信息:性能優化

給網卡配置 IP 地址:bash

開關網卡:服務器

ifconfig eth0 down
ifconfig eth0 up
複製代碼

1.2 ip

ip 是很是強大的工具,能夠替換 net-tools 包的全部工具,如常見的 ifconfig、 netstat、 route、 arp 等,好比查看網卡信息:微信

查看路由:網絡

查看 arp 信息:架構

更多的用法你們用到能夠 man ip 一下。

02 連通性探測

連通性探測意在使用工具探測兩個網絡節點之間的連通性,經常使用的有 ping、 telnet、 traceroute、 tracepath、 mtr 等工具。

2.1 ping

這個命令一般用來判斷網絡的連通性和網速狀況,偶爾用來查看域名的 IP,好比:

能夠看到百度對應域名的 IP。

使用 -c 參數能夠指定發送數據包的個數, -w 指定最長等待時間, -I指定發送數據包的網卡。

ping 只能使用 ipv4,要使用 ipv6,能夠用 ping6 命令。

2.2 telnet

telnet 一般用做遠程登陸,用來肯定遠程服務的狀態,探測遠程服務器的某個端口是否能訪問,也能夠探測本地的,如:

可見成功鏈接到 localhost 的 22 端口,說明該端口已經打開。

2.3 traceroute & tracepath

traceroute 主要用來探測從源主機到目標主機之間的每一跳路由節點,一般和 ping 結合起來排查網絡故障, ping 測連通性和網速,若是網絡不通,能夠藉由 traceroute 進一步排查是哪一個路由節點出問題了。若是網絡卡頓,也能夠判斷出哪裏是瓶頸。

能夠看到,從主機到 baidu.com 共經歷了 30 跳,每一跳都統計了響應時間。

相似的工具還有一個 tracepath。

2.4 mtr

mtr 全稱是 mytraceroute,是一個集大成的工具,它集成了 ping、 traceroute、 nslookup 的功能,診斷網絡問題很是方便。

mtr 有個好處就是可以 實時刷新 數據,好比 mtr-n www.baidu.com 能夠看到,從本地到百度通過的全部路由,並顯示每一個路由間的丟包率、響應時間等。

經常使用參數:

mtr -r 不會刷新,一次性打印 10個包的統計結果
mtr -s 用來指定ping數據包的大小
mtr -n no-dns不對IP地址作域名反解析
mtr -a 來設置發送數據包的IP地址,這個用於主機有多個IP時。
mtr -i 使用這個參數來設置ICMP返回之間的要求默認是1秒
mtr -c 指定發送多少個數據包
mtr -4 IPv4
mtr -6 IPv6
複製代碼

03 網絡鏈接

主要涉及到對網絡鏈接狀態的統計,好比鏈接打開了哪些端口、TCP/UDP、socket 的狀態是什麼等等。經常使用的工具備 netstat、 ss、lsof、 netcat等。

3.1 netstat

netstat 用於查看當前網絡的鏈接狀況,可以查看全部的網絡鏈接,包括 unix socket 等,也是集多種工具於一身的組合工具。最經常使用的就是用來檢查本地系統都打開了哪些端口:

其餘的一些常見用法還有:

  • netstat -i 顯示網絡接口信息
  • netstat -s 顯示全部網絡協議棧信息
  • netstat -r 顯示路由表信息
  • netstat -at 列出全部 TCP 端口
  • netstat -au 列出全部 UDP 端口
  • netstat -lt 列出全部監聽 TCP 端口的 socket
  • netstat -lu 列出全部監聽 UDP 端口的 socket
  • netstat -lx 列出全部監聽 UNIX 端口的 socket
  • netstat -ap | grep ssh 找出程序運行的端口
  • netstat -an | grep ':80' 找出運行在指定端口的進程

3.2 ss

ss 和 netstat 相似,也是用來查看網絡鏈接統計的工具,它的輸出也和 netstat 相似,甚至顯示更多鏈接狀態信息,它最大的優點在於比 netstat 快,在服務器維持上萬個鏈接的狀況下,這種優點就體現得比較明顯。

經常使用參數:

  • -l 查看處於LISTEN狀態的鏈接
  • -t 查看tcp鏈接
  • -4 查看ipv4鏈接
  • -n 不進行域名解析

一般使用 ss-tln4 查看本地監聽的全部端口。

3.3 lsof

lsof 能夠列出當前系統打開文件、打開文件的進程、進程打開的端口。因爲在 Linux 中一切皆文件,因此, lsof 也經常使用來統計網絡相關的文件信息(使用 -i 選項),如 TCP/UDP/Unix socket 的統計信息。

它的使用格式爲 [46][protocol][@hostname|hostaddr][:service|port],好比:

列出全部與主機 172.18.82.173(個人主機IP)22 號端口的 ipv4 鏈接:

3.4 netcat(nc)

nc 被稱爲瑞士軍刀,很是輕巧但功能強大,可以建立各類不一樣類型的網絡鏈接、可以實現簡單的聊天工具、遠程傳輸文件、debug 分析、掃描端口等。

好比掃描主機 172.18.82.173 的 1-100 哪些端口開放:

能夠看到,該主機開放了 22 和 80 端口。

04 流量統計

4.1 ifstat

ifstat 主要用來監測主機網口的網絡流量,經常使用的選項包括:

  • -a:監測主機全部網口
  • -i:指定要監測的網口
  • -t:在每行輸出信息前加上時間戳
  • -b:以 Kbit/s 顯示流量數據,而不是默認的 KB/s
  • delay:採樣間隔(單位是 s),即每隔 delay 的時間輸出一次統計信息
  • count:採樣次數,即共輸出 count 次統計信息

好比,經過如下命令統計主機全部網口某一段時間內的流量數據:

4.2 sar

sar 是一個系統歷史數據統計工具。統計的信息很是全,包括 CPU、內存、磁盤 I/O、網絡、進程、系統調用等等信息。網絡信息一般使用 -n參數來統計,經常使用幾個選項以下:

  • -n DEV:網絡接口統計信息。
  • -n EDEV:網絡接口錯誤。
  • -n IP:IP 數據報統計信息。
  • -n EIP:IP 錯誤統計信息。
  • -n TCP:TCP 統計信息。
  • -n ETCP:TCP 錯誤統計信息。
  • -n SOCK:套接字使用。

4.3 iftop

和 top、 iotop 是一個系列,它主要用來查看網絡流量。

05 交換與路由

5.1 arp

用來管理主機的 ARP 緩存,增刪查改等。

常見用法:

  • arp:顯示 ARP 緩存全部記錄
  • arp -i :顯示指定接口的 ARP 緩存記錄
  • arp -d :刪除指定主機的 ARP 緩存記錄
  • arp -s <硬件地址>:添加 ARP 緩存靜態項

5.2 arping

查看本 LAN 內 IP 對應的主機 MAC 地址,以及 MAC 的佔用問題。

好比,指定從某個接口向某臺主機發送 ARP 包,來得到 MAC 地址。

5.3 vconfig

Linux vlan 配置命令,好比給某個接口增長兩個 vlan 是:

vconfig add eth0 100
vconfig add eth0 200
複製代碼

刪除 vlan 是:

vconfig rem eth0.100
vconfig rem eth0.200
複製代碼

5.4 route

route 用來查看和修改路由表,一樣工具還有 netstat-r 和 ip route。

  • route-n 查看路由表
  • route add/del 增長/刪除路由表

好比添加一條默認路由:

route add default gw 192.168.1.1 dev eth0
複製代碼

06 防火牆

6.1 iptables

iptables 是強大的包過濾工具。 iptables 經過一系列規則來過濾、處理數據包,可以實現防火牆、NAT等功能。

當一個網絡包進入到主機以前,會通過一系列的 iptables 規則檢查,如何經過則接受,不然就丟棄,iptables 的規則由多個表組成,每一個表又由多條鏈構成,總體比較複雜,對於這個工具,咱們 後面再出一篇文章來進行詳細講解。

6.2 ipset

ipset 是一個輔助 iptables 的工具,一般用在限制多個 IP 的場景下,使用 ipset,能夠將多個 IP 放入一個集合,而後 iptables 針對這個集合作限制,這樣能夠大大提升效率。 ipset除了能夠集合 IP 外,還能夠集合 網段、MAC、端口、網卡等。

經常使用操做好比:

建立一個 ipset:

ipset create blacklist hash:ip
複製代碼
  • blackliset 是集合名稱
  • hash 是存儲類型,還支持 bitmap、list 等
  • ip 是存儲類型,能夠是 MAC、端口等

往集合中增長項:

ipset add blacklist 192.168.10.2
複製代碼

從集合中移除項:

ipset del blacklist 192.168.10.2
複製代碼

還能夠指定超時時間限制:

ipset create blacklist hash:net timeout 60
複製代碼

07 域名相關

7.1 host

host 命令是域名分析查詢工具,用來測試域名系統工做是否正常。

好比查看百度域名信息:

[root@by ~] host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 14.215.177.38
www.a.shifen.com has address 14.215.177.39
複製代碼

7.2 nslookup

nslookup 用於交互式域名解析,查看域名解析是否正常,在網絡故障的時候用來診斷網絡問題。

查看 google.com 的 DNS 地址:

查看使用的 DNS 服務器地址:

[root@by ~]# nslookup
> server
Default server: 8.8.8.8
Address: 8.8.8.8#53
Default server: 8.8.4.4
Address: 8.8.4.4#53
複製代碼

7.3 dig

dig 命令也是域名解析工具,可是比 nslookup 提供的更全面:

7.4 whois

whois 用於查看域名全部者的信息,好比註冊郵箱、手機號碼、域名服務商等。

好比,查看 coolshell.cn 這個域名是陳皓在萬網註冊的,註冊時間是 2009 年,註冊郵箱是 haoel@hotmail.com。

08 抓包相關

8.1 tcpdump

tcpdump 是 Linux 下最爲強大的抓包工具。以前寫過一篇完整的文章,詳細請看這裏:

Linux 網絡命令必知必會之 tcpdump,一份完整的抓包指南請查收!

09 虛擬設備

虛擬設備指的是針對 tap/tun、veth-pair、bridge、ovs 等設備的工具。

對於這些設備的操做命令,都隸屬於 ip 命令,好比 tap/tun 設備是 ip tuntap、veth-pair 和 bridge 是 ip link和 ip netns。

除此以外,還有一些相關的輔助工具。

9.1 tunctl

tunctl 實現和 ip tuntap 相似,用來建立 tap/tun 設備。

默認建立 tap 接口:

tunctl
複製代碼

以上等價於 tunctl-p

爲用戶 user 建立一個 tap 接口:

# tunctl -u user
複製代碼

建立 tun 接口:

tunctl -n
複製代碼

刪除接口:

# tunctl -d tap0
複製代碼

9.2 brctl

brctl 用來操做 bridge 網橋,可用於查看網橋、建立網橋、把網卡加入網橋等。

[root@by ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
複製代碼

OVS 是網橋的第三方開源實現,它自帶一套命令集,有興趣的讀者能夠進一步研究下。

10 總結

以上即是平時經常使用的網絡工具集合,除此以外,其實還有不少,推薦你們重點掌握以上這些,若有不懂的地方,man 一下就清楚了。

除了命令以外,跟網絡相關的還有一些重要文件,好比:

  • /etc/hosts:域名到 IP 地址的映射。
  • /etc/networks:網絡名稱到 IP 地址的映射。
  • /etc/resolv.conf:DNS域名地址
  • /etc/protocols:協議名稱到協議編號的映射。
  • /etc/services:TCP/UDP 服務名稱到端口號的映射。

本人Java開發4年Android開發5年,按期分享Android高級技術及經驗分享,歡迎你們關注~(分享內容包括不限於高級UI、性能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程序、Flutter等全方面的Android進階實踐技術;但願能幫助到你們,也節省你們在網上搜索資料的時間來學習,也能夠分享動態給身邊好友一塊兒學習!)喜歡文章的點個贊叭~

相關文章
相關標籤/搜索