欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux之网络命令

程序员文章站 2022-03-11 18:45:16
本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof、ip、tcpdump、iptables等。 本文不会深入研究这些命令的强大用法,因为每个命令都足以写一篇文章,本文只是简单地介绍并辅以几个简单demo实例,旨在大脑中留个印象,平时遇 ......

      本文整理了在实践过程中使用的linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof、ip、tcpdump、iptables等。

本文不会深入研究这些命令的强大用法,因为每个命令都足以写一篇文章,本文只是简单地介绍并辅以几个简单demo实例,旨在大脑中留个印象,平时遇到问题时能够快速搜索出这些工具,利用强大的man工具,提供一定的思路解决问题。

1、ping

使用这个命令判断网络的连通性以及网速,偶尔还顺带当做域名解析使用(查看域名的ip):

ping

 linux之网络命令

默认使用该命令会一直发送icmp包直到用户手动中止,可以使用-c命令指定发送数据包的个数,使用-w指定最长等待时间,如果有多张网卡,还可以通过-i指定发送包的网卡。

小技巧: 在ping过程中按下ctrl+|会打印出当前的summary信息,统计当前发送包数量、接收数量、丢包率等。

其他比如-b发送广播,另外注意ping只能使用ipv4,如果需要使用ipv6,可以使用ping6命令。

2、netstat

这个命令用来查看当前建立的网络连接(深刻理解netstat每一项代表的含义)。最经典的案例就是查看本地系统打开了哪些端口:

netstat -lnpt

 linux之网络命令

netstat能够查看所有的网络连接,包括unix socket连接,其功能非常强大。

另外使用netstat还可以查看本地路由表:

netstat -nr

 linux之网络命令

以上genmask为0.0.0.0的表示默认路由,即连接外网的路由。网络中0.0.0.0的ip地址表示整个网络,即网络中的所有主机。它的作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。

3、lsof

lsof命令用来查看打开的文件(list open files),由于在linux中一切皆文件,那socket、pipe等也是文件,因此能够查看网络连接以及网络设备,其中和网络最相关的是-i选项,它输出符合条件的进程(4、6、协议、:端口、 @ip等),它的格式为[46][protocol][@hostname|hostaddr][:service|port],比如查看22端口有没有打开,哪个进程打开的:

lsof -i :22

 linux之网络命令

可见22端口是sshd这个命令,其进程号pid为9485打开的。

列出所有与192.168.73.128(虚拟机ip)ipv4连接:

 linux之网络命令

4、iftop

用过top以及iotop的,自然能够大致猜到iftop的功能,它是用于查看网络流量的工具(用过top以及iotop的,自然能够大致猜到iftop的功能,它是用于查看网络流量的工具(display bandwidth usage on an interface by host):

iftop

 linux之网络命令

5、tcpdump(dump traffic>命令行抓包工具,千万不要被它的名称误导以为只能抓取tcp包,它能抓任何协议的包。它能够实现wireshark一样的功能,并且更加灵活*!比如需要抓取目标主机是192.168.73.128,通过端口22的传输数据包:

 linux之网络命令

6、telnet

telnet协议客户端(user interface to the telnet protocol),不过其功能并不仅仅限于telnet协议,有时也用来探测端口,比如查看本地端口22是否开放:

 linux之网络命令

可见成功连接到localhost的22端口,说明端口已经打开,还输出了banner信息。

7、ifconfig

ifconfig也是熟悉的网卡配置工具(configure a network interface),我们经常使用它来查看网卡信息(比如ip地址、发送包的个数、接收包的个数、丢包个数等)以及配置网卡(开启关闭网卡、修改网络mtu、修改ip地址等)。查看网卡ip地址:

 linux之网络命令

 

 

ifconfig ens33 down  关闭网卡    ifconfig ens33 up 开启网卡

比如查看baidu.com的ip地址:

 linux之网络命令

8、whois

whois用于查看域名所有者的信息(client for the whois directory service),比如注册邮箱、手机号码、域名服务商等:

 linux之网络命令

我们发现coolshell.cn这个域名是陈皓在万网购买注册的,注册时间是2009年,注册邮箱是haoel@hotmail.com。

9、route

route命令用于查看和修改路由表:

查看路由表:

 linux之网络命令

10、ip

ip命令可以说是无比强大了,它完全可以替换ifconfig、netstat、route、arp等命令,比如查看网卡ens33 ip地址:

 linux之网络命令

查看网卡ens33配置:

 linux之网络命令

查看路由:

 linux之网络命令

查看arp信息:

linux之网络命令

11、brctl 

brctl是linux网桥管理工具,可用于查看网桥、创建网桥、把网卡加入网桥等。查看网桥如下:

linux之网络命令

 

 

其他子命令如addbr用于创建网桥、delbr用户删除网桥(删除之前必须处于down状态,使用ip link set br_name down)、addif把网卡加到网桥等。

12、traceroute

ping命令用于探测两个主机间连通性以及响应速度,而traceroute会统计到目标主机的每一跳的网络状态(print the route packets trace to network host),这个命令常常用于判断网络故障,比如本地不通,可使用该命令探测出是哪个路由出问题了。如果网络很卡,该命令可判断哪里是瓶颈:

 linux之网络命令

可以看到,从主机到www.baidu.com共经过11跳,并统计了总共的响应时间。

另外可以参考tracepath。

13、mtr

mtr是常用的网络诊断工具(a network diagnostic tool),它把ping和traceroute并入一个程序的网络诊断工具中并实时刷新。

 linux之网络命令

 

 

从图上可以看出从本地到www.baidu.com经过的所有路由,每一个路由间的丢包率、响应时间等。

14、ss

ss命令也是一个查看网络连接的工具(another utility to investigate sockets),用来显示处于活动状态的套接字信息。

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也可以正常运行,只是效率会变得稍慢。

其中比较常用的参数包括:       

-l 查看处于listen状态的连接

-t 查看tcp连接

-4 查看ipv4连接

-n 不进行域名解析

因此我们可以通过ss命令查看本地监听的所有端口(和netstat命令功能类似):

 linux之网络命令

15、axel

axel是一个多线程下载工具(a light download accelerator for linux),通过建立多连接,能够大幅度提高下载速度,所以我经常使用这个命令开挂下载大文件,比wget快多了,并且默认就支持断点下载:

开启20个线程下载文件:axel -n 20 url

这个强大的下载工具极力推荐,非常好用!

 

总结linux中的常用的网络工具,其中包括

网络配置相关:ifconfig、ip

路由相关:route、netstat、ip

查看端口工具:netstat、lsof、ss、nc、telnet

下载工具:curl、wget、axel

防火墙:iptables、ipset

流量相关:iftop、nethogs

连通性及响应速度:ping、traceroute、mtr、tracepath

域名相关:nslookup、dig、whois

web服务器:python、nginx

抓包相关:tcpdump

网桥相关:ip、brctl、ifconfig、ovs

参考链接:https://mp.weixin.qq.com/s/n2j-kvg2iwx_berqn3pvgq