Linux常用命令收集整理

有一臺 三-豐-雲-免-費-主-機,經常都要跟 Linux 打交道,經常要使用到linux的各種命令,當然每次都可以找度娘,但一些基本常的命令還是需要熟練掌握。

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 地址等)

查看網卡信息:

這是一份你需要的Linux 網絡命令大全
給網卡配置 IP 地址:

這是一份你需要的Linux 網絡命令大全
開關網卡:

ifconfig eth0 down
ifconfig eth0 up

1.2 ip

ip 是非常強大的工具,可以替換 net-tools 包的所有工具,如常見的 ifconfig、 netstat、 route、 arp 等,比如查看網卡信息:

這是一份你需要的Linux 網絡命令大全
查看路由:

這是一份你需要的Linux 網絡命令大全
查看 arp 信息:

這是一份你需要的Linux 網絡命令大全
更多的用法大家用到可以 man ip 一下。

02 連通性探測

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

2.1 ping

這個命令通常用來判斷網絡的連通性和網速情況,偶爾用來查看域名的 IP,比如:

這是一份你需要的Linux 網絡命令大全
可以看到百度對應域名的 IP。

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

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

2.2 telnet

telnet 通常用作遠程登錄,用來確定遠程服務的狀態,探測遠程服務器的某個端口是否能訪問,也可以探測本地的,如:

這是一份你需要的Linux 網絡命令大全
可見成功連接到 localhost 的 22 端口,說明該端口已經打開。

2.3 traceroute & tracepath

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

這是一份你需要的Linux 網絡命令大全
可以看到,從主機到 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 等,也是集多種工具於一身的組合工具。最常用的就是用來檢查本地系統都打開了哪些端口:

這是一份你需要的Linux 網絡命令大全
其他的一些常見用法還有:

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 連接:

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

3.4 netcat(nc)

nc 被稱爲瑞士×××,非常輕巧但功能強大,能夠創建各種不同類型的網絡連接、能夠實現簡單的聊天工具、遠程傳輸文件、debug 分析、掃描端口等。

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

這是一份你需要的Linux 網絡命令大全
可以看到,該主機開放了 22 和 80 端口。

04 流量統計

4.1 ifstat

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

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

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

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 地址。

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

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.com has address 18.215.177.38
www.a.b.com has address 18.215.177.39

7.2 nslookup

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

查看 google.com 的 DNS 地址:

這是一份你需要的Linux 網絡命令大全
查看使用的 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 提供的更全面:

這是一份你需要的Linux 網絡命令大全
7.4 whois

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

這是一份你需要的Linux 網絡命令大全
比如,查看 coolshell.cn 這個域名是陳皓在萬網註冊的,註冊時間是 2009 年,註冊郵箱是 [email protected]

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 是網橋的第三方開源實現,它自帶一套命令集,有興趣的讀者可以進一步研究下。

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