Linux常用网络工具总结(一)

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

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

ping

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

ping google.com

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

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

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

netstat

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

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

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

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

lsof

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

fgp@controller:~$ sudo lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 1290 root 3u IPv4 10300 0t0 TCP *:ssh (LISTEN)sshd 1290 root 4u IPv6 10302 0t0 TCP *:ssh (LISTEN)

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

可以指定多个条件,但默认是OR关系的,如果需要AND关系,必须传入参数,比如查看22端口并且使用Ipv6连接的进程:

fgp@controller:~$ sudo lsof -c sshd -i 6 -a -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 1290 root 4u IPv6 10302 0t0 TCP *:ssh (LISTEN)

列出所有与(我的宿主机IP地址)的ipv4连接:

iftop

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

sudo iftop

nc

nc(netcat)被称为网络工具的瑞士军刀,其非常轻巧但功能强大!常常作为网络应用的Debug分析器,可以根据需要创建各种不同类型的网络连接。官方描述的功能包括:

simple TCP proxies

shell-script based HTTP clients and servers

network daemon testing

a SOCKS or HTTP ProxyCommand for ssh(1)

and much, much more

总之非常强大,能够实现简单的聊天工具、模拟ssh登录远程主机、远程传输文件等。一个经典的用法是端口扫描。比如我要扫描主机端口,探测哪些端口开放的(黑客攻击必备):

fgp@controller:~$ nc -zv 192.168.56.2 1-100 |& grep 'succeeded!'Connection to 192.168.56.2 22 port [tcp/ssh] succeeded!Connection to 192.168.56.2 80 port [tcp/http] succeeded!

从结果中发现,该主机打开了和端口。

tcpdump

(dump traffic on a network)是一个强大的命令行抓包工具,千万不要被它的名称误导以为只能抓取tcp包,它能抓任何协议的包。它能够实现一样的功能,并且更加灵活自由!比如需要抓取目标主机是,通过端口的传输数据包:

sudo tcpdump -n-i eth1'dst host 192.168.56.1 && port 22'

输出为:

抓取包:

sudo tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

其中为前两个字母,为前两个字母。

指定以ACII码输出数据包,使用指定抓取包的个数。

telnet

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

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

ifconfig

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

查看网卡ip地址:

为网卡eth0增加一个新的地址(虚拟网卡):

关闭网卡以及开启网卡:

本文来自企鹅号 - 松勤软件学院媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

Rookey.Frame企业级快速开发框架开源了

Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程、支持工作流(BPM)、支持二次开发,具有...

4396
来自专栏*坤的Blog

Word文件乱码XML

一个朋友写的文档因为异常关机,导致全部文件变成了xml的乱码,正好帮他解决了,感觉这些或许有些帮助,就先记录下来了.

3269
来自专栏枕边书

用Lua定制Redis命令

前言 Redis作为一个非常成功的数据库,提供了非常丰富的数据类型和命令,使用这些,我们可以轻易而高效地完成很多缓存操作,可是总有一些比较特殊的问题或需求需要解...

4697
来自专栏*坤的Blog

Word文件乱码XML

2452
来自专栏哲学驱动设计

多层分布式设计模式

    原来就想写一些关于分布式的设计。正好目前开发的GIX4项目中,需要对客户端的许多操作进行记录。这个功能的设计或多或少能说明,一般情况下,多层的分布式系统...

2735
来自专栏魏豪的专栏

另一个Web应用服务器——Tomcat

Tomcat 由于其比较突出的优势,譬如 技术先进、性能稳定,而且免费,所以深受 Java 语言爱好者的喜爱,并且得到了部分软件开发商的认可,目前已经成为比较流...

3290
来自专栏ShaoYL

GitHub 使用手册 - 基础篇

4348
来自专栏pythonlove

Linux防火墙iptables(三)

我们前面两篇已经把iptables介绍的比较充分了,今天来说一个iptables对layer 7的实践。我们说过iptables/netfilter工作在内核空...

1352
来自专栏木头编程 - moTzxx

小程序 发送模板消息的功能实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

2.3K2
来自专栏较真的前端

关于webpack的面试题总结

本文首发于前端面试总结@知乎专栏,各位可以通过点击文章下方的阅读原来来访问原文地址

4.3K6

扫码关注云+社区

领取腾讯云代金券