首页
学习
活动
专区
工具
TVP
发布

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增加一个新的地址(虚拟网卡):

关闭网卡以及开启网卡:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222B0N43E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券