lnstat命令用来显示Linux系统的网路状态。
语法
lnstat(选项)
选项
-h:显示帮助信息;
-V:显示指令版本信息;
-c:指定显示网络状态的次数,每隔一定时间显示一次网络状态;
-d:显示可用的文件或关键字;
-i:指定两次显示网络状的间隔秒数;
-k:只显示给定的关键字;
-s:是否显示标题头;
-w:指定每个字段所占的宽度。
lnstat命令用来显示Linux系统的网路状态。
lnstat(选项)
-h:显示帮助信息;
-V:显示指令版本信息;
-c:指定显示网络状态的次数,每隔一定时间显示一次网络状态;
-d:显示可用的文件或关键字;
-i:指定两次显示网络状的间隔秒数;
-k:只显示给定的关键字;
-s:是否显示标题头;
-w:指定每个字段所占的宽度。
nstat命令和rtacct命令是一个简单的监视内核的SNMP计数器和网络接口状态的实用工具。
nstat/rtacct(选项)
-h:显示帮助信息; -V:显示指令版本信息; -z:显示0计数器; -r:清零历史统计; -n:不显示任何内容,仅更新历史; -a:显示计数器的绝对值; -s:不更新历史; -d:以守护进程的方式运行本指令。
实例
[root@localhost ~]# nstat
#kernel
IpInReceives 15766482 0.0
IpInDelivers 15538384 0.0
IpOutRequests 9746938 0.0
IpReasmReqds 8 0.0
IpReasmOKs 4 0.0
IcmpInErrors 28701 0.0
IcmpInDestUnreachs 405 0.0
IcmpInTimeExcds 1812 0.0
IcmpInParmProbs 173 0.0
IcmpInEchoReps 26613 0.0
IcmpInTimestamps 100 0.0
IcmpOutErrors 27065 0.0
IcmpOutTimeExcds 331 0.0
IcmpOutEchoReps 121 0.0
IcmpOutTimestamps 26613 0.0
IcmpMsgInType0 100 0.0
IcmpMsgInType3 1812 0.0
IcmpMsgInType8 26613 0.0
IcmpMsgInType11 173 0.0
IcmpMsgOutType0 26613 0.0
IcmpMsgOutType3 331 0.0
IcmpMsgOutType8 121 0.0
TcpActiveOpens 24760 0.0
TcpPassiveOpens 573863 0.0
TcpAttemptFails 18347 0.0
TcpEstabResets 67353 0.0
TcpInSegs 15324047 0.0
TcpOutSegs 9296351 0.0
TcpRetransSegs 118479 0.0
TcpInErrs 560 0.0
TcpOutRsts 15269 0.0
UdpInDatagrams 185300 0.0
UdpNoPorts 331 0.0
UdpOutDatagrams 305043 0.0
TcpExtSyncookiesFailed 14328 0.0
TcpExtEmbryonicRsts 15116 0.0
TcpExtOutOfWindowIcmps 79 0.0
TcpExtTW 158436 0.0
TcpExtDelayedACKs 123597 0.0
TcpExtDelayedACKLocked 1087 0.0
TcpExtDelayedACKLost 55670 0.0
TcpExtTCPPrequeued 288438 0.0
TcpExtTCPDirectCopyFromBacklog 11229302 0.0
TcpExtTCPDirectCopyFromPrequeue 669949 0.0
TcpExtTCPHPHits 7539804 0.0
TcpExtTCPHPHitsToUser 7700 0.0
TcpExtTCPPureAcks 2743573 0.0
TcpExtTCPHPAcks 1742135 0.0
TcpExtTCPRenoRecovery 51 0.0
TcpExtTCPSackRecovery 15556 0.0
TcpExtTCPSACKReneging 13 0.0
TcpExtTCPFACKReorder 199 0.0
TcpExtTCPSACKReorder 63 0.0
TcpExtTCPTSReorder 220 0.0
TcpExtTCPFullUndo 213 0.0
TcpExtTCPPartialUndo 868 0.0
TcpExtTCPDSACKUndo 2831 0.0
TcpExtTCPLossUndo 2320 0.0
TcpExtTCPLoss 22652 0.0
TcpExtTCPLostRetransmit 2 0.0
TcpExtTCPRenoFailures 26 0.0
TcpExtTCPSackFailures 4765 0.0
TcpExtTCPLossFailures 2155 0.0
TcpExtTCPFastRetrans 28636 0.0
TcpExtTCPForwardRetrans 3341 0.0
TcpExtTCPSlowStartRetrans 25393 0.0
TcpExtTCPTimeouts 28215 0.0
TcpExtTCPRenoRecoveryFail 26 0.0
TcpExtTCPSackRecoveryFail 2892 0.0
TcpExtTCPDSACKOldSent 55916 0.0
TcpExtTCPDSACKOfoSent 299 0.0
TcpExtTCPDSACKRecv 11680 0.0
TcpExtTCPDSACKOfoRecv 35 0.0
TcpExtTCPAbortOnData 1193 0.0
TcpExtTCPAbortOnClose 14 0.0
TcpExtTCPAbortOnTimeout 3041 0.0
ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp
,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。
天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。
ss(选项)
-h:显示帮助信息;
-V:显示指令版本信息;
-n:不解析服务名称,以数字方式显示;
-a:显示所有的套接字;
-l:显示处于监听状态的套接字;
-o:显示计时器信息;
-m:显示套接字的内存使用情况;
-p:显示使用套接字的进程信息;
-i:显示内部的TCP信息;
-4:只显示ipv4的套接字;
-6:只显示ipv6的套接字;
-t:只显示tcp套接字;
-u:只显示udp套接字;
-d:只显示DCCP套接字;
-w:仅显示RAW套接字;
-x:仅显示UNIX域套接字。
显示ICP连接
[root@localhost ~]# ss -t -a State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 0 *:3306 *:* LISTEN 0 0 *:http *:* LISTEN 0 0 *:ssh *:* LISTEN 0 0 127.0.0.1:smtp *:* ESTAB 0 0 112.124.15.130:42071 42.156.166.25:http ESTAB 0 0 112.124.15.130:ssh 121.229.196.235:33398
显示 Sockets 摘要
[root@localhost ~]# ss -s Total: 172 (kernel 189) TCP: 10 (estab 2, closed 4, orphaned 0, synrecv 0, timewait 0/0), ports 5 Transport Total ip IPv6 * 189 - - RAW 0 0 0 UDP 5 5 0 TCP 6 6 0 INET 11 11 0 FRAG 0 0 0
列出当前的established, closed, orphaned and waiting TCP sockets
列出所有打开的网络连接端口
[root@localhost ~]# ss -l
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 *:3306 *:*
0 0 *:http *:*
0 0 *:ssh *:*
0 0 127.0.0.1:smtp *:*
查看进程使用的socket
[root@localhost ~]# ss -pl Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 *:3306 *:* users:(("mysqld",1718,10)) 0 0 *:http *:* users:(("nginx",13312,5),("nginx",13333,5)) 0 0 *:ssh *:* users:(("sshd",1379,3)) 0 0 127.0.0.1:smtp *:* us
找出打开套接字/端口应用程序
[root@localhost ~]# ss -pl | grep 3306
0 0 *:3306 *:* users:(("mysqld",1718,10))
显示所有UDP Sockets
[root@localhost ~]# ss -u -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:syslog *:*
UNCONN 0 0 112.124.15.130:ntp *:*
UNCONN 0 0 10.160.7.81:ntp *:*
UNCONN 0 0 127.0.0.1:ntp *:*
UNCONN 0 0 *:ntp *:*
iptraf命令可以实时地监视网卡流量,可以生成网络协议数据包信息、以太网信息、网络节点状态和ip校验和错误等信息。
iptraf(选项)
-i网络接口:立即在指定网络接口上开启IP流量监视; -g:立即开始生成网络接口的概要状态信息; -d网络接口:在指定网络接口上立即开始监视明细的网络流量信息; -s网络接口:在指定网络接口上立即开始监视TCP和UDP网络流量信息; -z网络接口:在指定网络接口上显示包计数; -l网络接口:在指定网络接口上立即开始监视局域网工作站信息; -t时间:指定iptraf指令监视的时间; -B;将标注输出重新定向到“/dev/null”,关闭标注输入,将程序作为后台进程运行; -f:清空所有计数器; -h:显示帮助信息。
pfctl命令是PF防火墙的配置命令,PF防火墙( 全称:Packet Filter )是UNIX LIKE系统上进行TCP/ip流量过滤和网络地址转换的软件系统。PF同样也能提供TCP/IP流量的整形和控制,并且提供带宽控制和数据包优先集控制。PF最早是由Daniel Hartmeier开发的,现在的开发和维护由Daniel和openBSD小组的其他成员负责。
PF防火墙的功能很多,本站只列举一些基本配置。
要激活pf并且使它在启动时调用配置文件,编辑/etc/rc.conf
文件,修改配置pf的一行:
pf=yes
重启操作系统让配置生效。
也可以通过pfctl程序启动和停止pf:
# pfctl -e # pfctl -d
注意这仅仅是启动和关闭PF,实际它不会载入规则集,规则集要么在系统启动时载入,要在PF启动后通过命令单独载入。
系统引导到在rc脚本文件运行PF时PF从/etc/pf.conf
文件载入配置规则。注意当/etc/pf.conf
文件是默认配置文件,在系统调用rc脚本文件时,它仅仅是作为文本文件由pfctl装入并解释和插入pf的。对于一些应用来说,其他的规则集可以在系统引导后由其他文件载入。对于一些设计的非常好的unix程序,PF提供了足够的灵活性。
pf.conf文件有7个部分:
除去宏和表,其他的段在配置文件中也应该按照这个顺序出现,尽管对于一些特定的应用并不是所有的段都是必须的。
空行会被忽略,以#开头的行被认为是注释。
引导之后,PF可以通过pfctl程序进行操作,以下是一些例子:
# pfctl -f /etc/pf.conf 载入 pf.conf 文件
# pfctl -nf /etc/pf.conf 解析文件,但不载入
# pfctl -Nf /etc/pf.conf 只载入文件中的NAT规则
# pfctl -Rf /etc/pf.conf 只载入文件中的过滤规则
# pfctl -sn 显示当前的NAT规则
# pfctl -sr 显示当前的过滤规则
# pfctl -ss 显示当前的状态表
# pfctl -si 显示过滤状态和计数
# pfctl -sa 显示任何可显示的
完整的命令列表,请参阅pfctl的man手册页。