什么是netstat
在Linux系统中输入 man netstat,显示的结果如下所示:
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
从上面可以看出netstat命令的主要功能为:
- 显示网络连接信息
- 显示路由表信息
- 显示网卡统计信息
- 显示无效的连接信息
- 显示组播成员信息
当我们看完介绍往下的时候,会看到如下的提示信息:
This program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link.
Replacement for netstat -g is ip maddr.
从上面这段话可以看到netstat已经不再维护被ss和ip命令所代替了。详细代替命令如下所示:
ss命令
ss是Socket Statistics的缩写,是用于统计socket信息。几乎所有的Linux系统都会默认包含netstat命令,但并非所有的系统都会默认包含ss命令。netstat是net-tool的成员,而ss是iproute2的成员,如果出现无法使用ss命令时,可以使用
yum -y install iproute iproute-doc
进行安装。iproute2是一套可以支持IPv4/IPv6网络且用于管理TCP/UDP/IP网络的软件包,因此iproute2几乎可以代替net-tool的软件包。以下是对比结果:
用途 | net-tool | iproute2 |
---|---|---|
地址和链路配置 | ifconfig | ip addr ,ip link |
路由表 | route | ip route |
arp表 | arp | ip neigh |
VLAN | vconfig | ip link |
隧道 | iptunnel | ip tunnel |
组播 | ipmaddr | ip maddr |
统计 | netstat | ss |
基本语法
ss [选项] [参数]
常用选项参数如下所示:
选项 | 说明 |
---|---|
-h,--help | 显示帮助信息 |
-V,--version | 显示版本信息 |
-n,--numeric | 以数字形式显示,不解析服务名称 |
-r,--resolve | 解析主机名称和端口 |
-a,--all | 显示所有信息,包含监听和非监听的信息 |
-l,--listening | 仅显示监听信息 |
-o,--options | 显示计时器信息 |
-e,--extended | 显示详细的Socket信息 |
-m,--memore | 显示Socket的内存使用信息 |
-p,--processes | 显示使用Socket的进程信息 |
-i,--info | 显示TCP内部信息 |
-s,--summary | 显示Socket的使用概况 |
-4,--ipv4 | 仅显示ipv4的Socket信息 |
-6,--ipv4 | 仅显示ipv6的Socket信息 |
-t,--tcp | 仅显示TCP的Socket信息 |
-u,--udp | 仅显示UDP的Socket信息 |
-d,--dccp | 仅显示DCCP的Socket信息 |
-w,--raw | 仅显示RAW的Socket信息 |
-s,--sctp | 仅显示SCTP的Socket信息 |
-K,--kill | 尝试强制关闭Socket |
示例
1.查看当前服务器的网络连接信息
当服务器有大量的Socket连接时,可以用来做宏观统计
2.查看所有打开的网络端口
ip命令
ip命令用来显示或配置Linux主机的路由、网络设备、策略路由和隧道。
基本语法
ip [选项] 对象 {命令 | 帮助}
常用选项参数如下所示:
选项 | 说明 |
---|---|
-V,--Version | 显示版本信息 |
-h,--human | 以易于读取的方式输出信息 |
-s,--statistics | 显示详细的统计信息 |
-f,--family | 指定使用的协议类型,协议类型主要有:inet,inet6,bridge,ipx, dnet,mpls,link ,如果未指定协议类型,则系统根据后面的参数自行决定所采用的协议类型 |
-4 | --family inet的简写 |
-6 | --family inet6的简写 |
-B | --family bridge的简写 |
-0 | --family link的简写 |
-o,--oneline | 每条记录单独一行输出 |
-r,--resolve | 查询DNS解析系统,使用主机名代替主机IP地址 |
-c,--color | 对显示的信息进行颜色标识 |
-t,--timestamp | 增加时间戳 |
-ts,--tshort | 与-t参数类似,以短时间形式显示 |
-iec | 以易于读取的形式显示速率信息,如1Ki=1024 |
对象是要管理或获取信息的对象,常用的对象如下所示:
对象 | 说明 |
---|---|
address | 设备上的协议(IPv4/IPv6)地址 |
l2tp | IP上面的隧道(L2TPv3) |
link | 网络设备 |
maddress | 多播地址 |
mroute | 多播路由缓冲条目 |
route | 路由表条目 |
rule | 路由规则 |
tcp_metrics/tcpmetrics | tcp转发优先级 |
tunnel | IP上的隧道 |
命令是用于指定对象上的操作行为,常见的命令如下所示:
命令 | 说明 |
---|---|
add | 增加操作 |
del | 删除操作 |
show/list | 显示操作 |
如果命令用户没有指定,则系统会自动指定操作行为,如show或list
示例
1.添加IP地址:
ip addr add 192.168.8.8/24 dev ens0
2.显示IP地址
ip addr show
或
ip addr list
或
ip addr
3.删除IP地址
ip addr del 192.168.8.8/24 dev ens0
4.启用/禁用网卡
启用网卡
ip link set ens0 up
禁用网卡
ip link set ens0 down
5.显示路由信息
ip route show
6.增加路由信息
ip route add 192.168.8.8/24 via 192.168.8.1
via 192.168.8.1 后面是网关
7.设定网卡仅转发
ip route add 192.168.8.8 dev ens0
8.删除路由
ip route del 192.168.8.8/24 via 192.168.8.1
ip route del 192.168.8.8 dev ens0
9.指定默认网关
ip route add default via 192.168.8.1
默认网关作用很简单明确,当一台主机找不到匹配的转发规则,则把数据转发给默认网关,由该网关进行处理。
10.删除默认网关
ip route del default
11.为不同的源IP指定路由选择
当一个主机有多个网卡且配置了多个IP的时候,对于不同网卡产生的网络数据包,则需要根据其源IP地址选择不同的路由信息,如下所示:
ip route add 192.168.8.0/0 via 192.168.8.1 src 192.168.8.8
上面这个命令的意思就是发到192.168.8.0/0网段的所有网络包,下一跳的路由器IP是192.168.8.1,包的源IP地址为:192.168.8.8
本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注: