netstat与ss命令
2019-02-19 本文已影响0人
testerzhang
1. netstat命令
netstat命令用来打印Linux网络系统的状态信息。
语法:
# 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)
具体参数:
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称
-t或--tcp:显示TCP传输协议的连线状态
-u或--udp:显示UDP传输协议的连线状况
-a或--all:显示所有连线中的Socket;
-s或--statistics:显示网络工作信息统计表
1.1 常用命令
- 列出所有端口(包括监听和未监听的)
# 列出所有端口
# netstat -a
#列出所有TCP端口
# netstat -at
#列出所有UDP端口
# netstat -au
- 列出所有处于监听状态的Sockets
#只显示监听端口
# netstat -l
#只列出所有监听TCP端口
# netstat -lt
#只列出所有监听UDP端口
# netstat -lu
#只列出所有监听UNIX端口
# netstat -lx
- 在netstat输出中显示PID和进程名称
# netstat -pt
- 在netstat输出中不显示主机,端口和用户名(host,port or user)
# netstat -an
- 显示核心路由信息
# netstat -r
使用netstat -rn
显示数字格式,不显示主机名称
1.2 经常使用的命令
- 检测当前匹配的端口的所有套接字并显示进程号
# netstat -nap |grep 具体端口号
- 检测服务器各种连接状态数量
# netstat -na | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
2. ss命令
ss命令用于查看本机的端口连接状态
语法:
$ 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 ]
具体的参数:
参数 作用
-a 显示所有的套接字
-l 显示所有连接状态的套接字
-e 显示详细的套接字信息
-m 显示套接字的内存使用情况
-p 显示套接字的进程信息
-4 显示ipv4的套接字信息
-6 显示ipv6的套接字信息
-t 仅显示tcp的套接字信息
-u 仅显示udp的套接字信息
-n 不解析主机名(提升速度)
-r, --resolve 把 IP 解释为域名,把端口号解释为协议名称
-x, --unix 显示 unix domain sockets,与 -f 选项相同
-s 查看概述
2.1 常用命令
- 查看主机的监听端口
$ ss -tnl
- 通过 -r 选项解析 IP 和端口号
$ ss -tlr
- 使用 -p 选项查看监听端口的程序名称
$ 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 协议来说,既包含监听的端口,也包含建立的连接
$ ss -tna
- 匹配远程地址和端口号
# ss dst 192.168.111.3
# ss dst 192.168.111.3:48926
- 匹配本地地址和端口号
# ss src 192.168.119.103:80
- 多条件匹配
(注意下面命令中的转义符和空格,都是必须的。如果不用转义符,可以使用单引号)
显示established状态的源端口是8356或者目标端口是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 经常使用的命令
- 检测当前匹配的端口的所有套接字并显示进程号
# ss -nap|grep 端口号