1. netstat命令
netstat命令用來打印Linux網(wǎng)絡(luò)系統(tǒng)的狀態(tài)信息庐椒。
語法:
# netstat -h
usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}
netstat [-vnNcaeol] [<Socket> ...]
netstat { [-veenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s } [delay]
-r, --route display routing table
-I, --interfaces=[<Iface>] display interface table for <Iface>
-i, --interfaces display interface table
-g, --groups display multicast group memberships
-s, --statistics display networking statistics (like SNMP)
-M, --masquerade display masqueraded connections
-v, --verbose be verbose
-n, --numeric don't resolve names
--numeric-hosts don't resolve host names
--numeric-ports don't resolve port names
--numeric-users don't resolve user names
-N, --symbolic resolve hardware names
-e, --extend display other/more information
-p, --programs display PID/Program name for sockets
-c, --continuous continuous listing
-l, --listening display listening server sockets
-a, --all, --listening display all sockets (default: connected)
-o, --timers display timers
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB
-T, --notrim stop trimming long addresses
-Z, --context display SELinux security context for sockets
<Iface>: Name of interface to monitor/list.
<Socket>={-t|--tcp} {-u|--udp} {-S|--sctp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
<AF>=Use '-A <af>' or '--<af>'; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
具體參數(shù):
-n或--numeric:直接使用ip地址舞肆,而不通過域名服務(wù)器;
-p或--programs:顯示正在使用Socket的程序識別碼和程序名稱
-t或--tcp:顯示TCP傳輸協(xié)議的連線狀態(tài)
-u或--udp:顯示UDP傳輸協(xié)議的連線狀況
-a或--all:顯示所有連線中的Socket;
-s或--statistics:顯示網(wǎng)絡(luò)工作信息統(tǒng)計表
1.1 常用命令
- 列出所有端口(包括監(jiān)聽和未監(jiān)聽的)
# 列出所有端口
# netstat -a
#列出所有TCP端口
# netstat -at
#列出所有UDP端口
# netstat -au
- 列出所有處于監(jiān)聽狀態(tài)的Sockets
#只顯示監(jiān)聽端口
# netstat -l
#只列出所有監(jiān)聽TCP端口
# netstat -lt
#只列出所有監(jiān)聽UDP端口
# netstat -lu
#只列出所有監(jiān)聽UNIX端口
# netstat -lx
- 在netstat輸出中顯示PID和進程名稱
# netstat -pt
- 在netstat輸出中不顯示主機,端口和用戶名(host,port or user)
# netstat -an
- 顯示核心路由信息
# netstat -r
使用netstat -rn
顯示數(shù)字格式冈欢,不顯示主機名稱
1.2 經(jīng)常使用的命令
- 檢測當(dāng)前匹配的端口的所有套接字并顯示進程號
# netstat -nap |grep 具體端口號
- 檢測服務(wù)器各種連接狀態(tài)數(shù)量
# netstat -na | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
2. ss命令
ss命令用于查看本機的端口連接狀態(tài)
語法:
$ ss -h
Usage: ss [ OPTIONS ]
ss [ OPTIONS ] [ FILTER ]
-h, --help this message
-V, --version output version information
-n, --numeric don't resolve service names
-r, --resolve resolve host names
-a, --all display all sockets
-l, --listening display listening sockets
-o, --options show timer information
-e, --extended show detailed socket information
-m, --memory show socket memory usage
-p, --processes show process using socket
-i, --info show internal TCP information
-s, --summary show socket usage summary
-4, --ipv4 display only IP version 4 sockets
-6, --ipv6 display only IP version 6 sockets
-0, --packet display PACKET sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
-d, --dccp display only DCCP sockets
-w, --raw display only RAW sockets
-x, --unix display only Unix domain sockets
-f, --family=FAMILY display sockets of type FAMILY
-A, --query=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-F, --filter=FILE read filter information from FILE
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
具體的參數(shù):
參數(shù) 作用
-a 顯示所有的套接字
-l 顯示所有連接狀態(tài)的套接字
-e 顯示詳細的套接字信息
-m 顯示套接字的內(nèi)存使用情況
-p 顯示套接字的進程信息
-4 顯示ipv4的套接字信息
-6 顯示ipv6的套接字信息
-t 僅顯示tcp的套接字信息
-u 僅顯示udp的套接字信息
-n 不解析主機名(提升速度)
-r, --resolve 把 IP 解釋為域名钦椭,把端口號解釋為協(xié)議名稱
-x, --unix 顯示 unix domain sockets,與 -f 選項相同
-s 查看概述
2.1 常用命令
- 查看主機的監(jiān)聽端口
$ ss -tnl
- 通過 -r 選項解析 IP 和端口號
$ ss -tlr
- 使用 -p 選項查看監(jiān)聽端口的程序名稱
$ ss -tlp
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 127.0.0.1:2208 *:* users:(("hpiod",2841,0))
0 0 *:9090 *:* users:(("redis-server",17961,5))
0 0 *:hello-port *:* users:(("rpc.statd",2590,7))
0 0 *:sunrpc *:* users:(("portmap",2536,4))
0 0 *:ssh *:* users:(("sshd",4372,4))
0 0 *:telnet *:* users:(("xinetd",19846,5))
0 0 127.0.0.1:ipp *:* users:(("cupsd",2869,4))
0 0 *:postgres *:* users:(("python",26279,3),("python",26282,3),("python",26282,5))
-
查看建立的 TCP 連接
-a --all 對 TCP 協(xié)議來說宿亡,既包含監(jiān)聽的端口常遂,也包含建立的連接
$ ss -tna
- 匹配遠程地址和端口號
# ss dst 192.168.111.3
# ss dst 192.168.111.3:48926
- 匹配本地地址和端口號
# ss src 192.168.119.103:80
- 多條件匹配
(注意下面命令中的轉(zhuǎn)義符和空格,都是必須的挽荠。如果不用轉(zhuǎn)義符克胳,可以使用單引號)
顯示established狀態(tài)的源端口是8356或者目標(biāo)端口是10021平绩,且目的地址是192.168.59.37所有 TCP 套接字:
# ss state established \( sport = :8356 or dport = :10021 \) dst 192.168.59.37
# ss state established '( sport = :8356 or dport = :10021 )' dst 192.168.59.37
2.2 經(jīng)常使用的命令
- 檢測當(dāng)前匹配的端口的所有套接字并顯示進程號
# ss -nap|grep 端口號