Linux 基础教程 27-ss和ip命令
什么是netstat
在Linux系统中输入 man netstat,显示的结果如下所示:
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
从上面可以看出netstat命令的主要功能为:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。- 显示网络连接信息
- 显示路由表信息
- 显示网卡统计信息
- 显示无效的连接信息
- 显示组播成员信息
当我们看完介绍往下的时候,会看到如下的提示信息:
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,或扫描下面的二维码添加关注:

更多精彩

