大家好,今天给各位分享Linux网络工具大全及使用指南的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
使用此命令来确定网络连通性和速度,偶尔也将其用于域名解析(检查域名的IP):
ping google.com
默认情况下,该命令将持续发送ICMP 数据包,直到用户手动终止它。可以使用-c命令指定发送的数据包数量,使用-W指定最大等待时间。如果有多个网卡,还可以通过-I指定发送的数据包。网卡。
提示: 按ctrl+| ping过程中会打印出当前的摘要信息,统计当前发送的包数、接收的包数、丢包率等。
其他如-b 发送广播。另请注意,ping 只能使用ipv4。如果需要使用ipv6,可以使用ping6命令。
网络统计
该命令用于查看当前建立的网络连接(了解netstat各项的含义)。最经典的案例是检查本地系统打开了哪些端口:
fgp@controller:~$ sudo netstat -lnpt
[sudo] fgp: 的密码
有效的互联网连接(仅限服务器)
Proto Recv-Q Send-Q 本地地址外部地址状态PID/程序名称
tcp 0 0 0.0.0.0:3306 0.0.0.0:* 监听2183/mysqld
tcp 0 0 0.0.0.0:11211 0.0.0.0:* 监听2506/memcached
tcp 0 0 0.0.0.0:9292 0.0.0.0:* 监听1345/python
tcp 0 0 0.0.0.0:6800 0.0.0.0:* 监听2185/ceph-osd
tcp 0 0 0.0.0.0:6801 0.0.0.0:* 监听2185/ceph-osd
tcp 0 0 0.0.0.0:28017 0.0.0.0:* 监听1339/mongod
tcp 0 0 0.0.0.0:6802 0.0.0.0:* 监听2185/ceph-osd
tcp 0 0 0.0.0.0:6803 0.0.0.0:* 监听2185/ceph-osd
tcp 0 0 0.0.0.0:22 0.0.0.0:* 监听1290/sshd
Netstat可以查看所有网络连接,包括unix socket连接,其功能非常强大。
还可以使用netstat查看本地路由表:
fgp@controller:~$ sudo netstat -nr
内核IP路由表
目标网关Genmask 标志MSS 窗口irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 brqcb225471-1f
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 brqcb225471-1f
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
上面的Genmask 0.0.0.0表示默认路由,即连接外网的路由。网络中的IP地址0.0.0.0代表整个网络,即网络中的所有主机。它的作用是帮助路由器发送在路由表中无法查询到的数据包。如果设置了全零网络的路由,则在路由表中查询不到的报文将被发送到全零网络的路由。
拉索夫
lsof命令用于查看打开的文件(列出打开的文件)。由于Linux中一切都是文件,套接字、管道等也是文件,因此可以查看网络连接和网络设备。与网络最相关的是-i 选项。它输出合格的进程(4、6、协议、端口、@ip等)。其格式为[46][协议][@主机名|主机地址][:服务|端口]。例如,检查22端口是否开放。哪个进程打开了:
fgp@controller:~$ sudo lsof -i :22
命令PID 用户FD 类型设备大小/关闭节点名称
sshd 1290 root 3u IPv4 10300 0t0 TCP *:ssh(监听)
sshd 1290 root 4u IPv6 10302 0t0 TCP *:ssh(监听)
可以看到sshd命令打开了22端口,其进程号pid为1290。
可以指定多个条件,但默认为OR 关系。如果需要AND关系,则必须传入-a参数,比如查看22端口的进程,使用Ipv6连接:
fgp@controller:~$ sudo lsof -c sshd -i 6 -a -i :22
命令PID 用户FD 类型设备大小/关闭节点名称
sshd 1290 root 4u IPv6 10302 0t0 TCP *:ssh(监听)
列出到192.168.56.1(我的主机IP 地址)的所有ipv4 连接:
fgp@controller:~$ sudo lsof -i 4@192.168.56.1
命令PID 用户FD 类型设备大小/关闭节点名称
sshd 2299 root 3u IPv4 14047 0t0 TCP 控制器:ssh-mac:54558(已建立)
sshd 2377 fgp 3u IPv4 14047 0t0 TCP 控制器:ssh-mac:54558(已建立)
伊夫托普
用过top和iotop的人自然能大致猜到iftop的功能。它是一个查看网络流量的工具(显示主机在接口上的带宽使用情况):
须藤iftop
图片.pngiftop
数控
nc(netcat)被称为网络工具中的瑞士军刀,它非常轻巧但功能强大!通常用作网络应用程序的调试分析器,它可以根据需要创建各种类型的网络连接。官方描述的功能包括:
简单的TCP 代理
基于shell 脚本的HTTP 客户端和服务器
网络守护进程测试
用于ssh 的SOCKS 或HTTP ProxyCommand(1)
还有很多很多,总之它非常强大,可以实现简单的聊天工具、模拟SSH登录远程主机、远程文件传输等。一个经典的用法就是端口扫描。比如我要扫描192.168.56.2主机的1~100端口,检测哪些端口开放(黑客攻击所必需):
fgp@controller:~$ nc -zv 192.168.56.2 1-100 | grep "成功!"
连接192.168.56.2 22端口[tcp/ssh]成功!
连接192.168.56.2 80端口[tcp/http]成功!
从结果中我们发现主机开放了22和80端口。
tcp转储
tcpdump(转储网络流量)是一个功能强大的命令行数据包捕获工具。不要被它的名字误导,以为它只能捕获TCP 数据包。它可以捕获任何协议的数据包。它可以实现与Wireshark相同的功能,并且更加灵活、自由!例如,需要捕获目标主机192.168.56.1以及通过22端口传输的数据包:
sudo tcpdump -n -i eth1 "目标主机192.168.56.1 端口22"
输出是:
tcpdump: 详细输出被抑制,使用-v 或-vv 进行完整协议解码
监听eth1,链路类型EN10MB(以太网),捕获大小65535 字节
23:57:39.507490 IP 192.168.56.2.22 192.168.56.1.54558: 标志[P.],seq 3010719012:3010719120,ack 1116715283,win 354, [ nop,nop,TS val 1049052 ecr 187891473],长度108
23:57:39.507607 IP 192.168.56.2.22 192.168.56.1.54558: 标志[P.],seq 108:144,ack 1,win 354,选项[nop,nop,TS val 1049052 ecr 18 7 891473],长度36
23:57:39.507784 IP 192.168.56.2.22 192.168.56.1.54558: 标志[P.],seq 144:252,ack 1,win 354,选项[nop,nop,TS val 1049052 ecr 18 7 891476],长度108
抓取HTTP数据包:
sudo tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 或tcp[20:2]=0x4854
其中0x4745是‘GET’、‘GE’的前两个字母,0x4854是‘HTTP’、‘HT’的前两个字母。
指定-A以ACII代码输出数据包,使用-c指定捕获数据包的数量。
远程登录
Telnet协议客户端(TELNET协议的用户界面),但其功能不限于telnet协议,有时也用于检测端口,例如检查本地22端口是否开放:
fgp@controller:~$ telnet 本地主机22
正在尝试:1.
连接到本地主机。
转义字符是“^]”。
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
可以看到,成功连接localhost的22端口,说明该端口已经开放,并输出了banner信息。
如果配置
ifconfig也是大家熟悉的网卡配置工具(配置网络接口)。我们经常用它来查看网卡信息(如IP地址、发送包数、接收包数、丢包数等)以及配置网卡(启用关闭网卡、修改网络mtu) 、修改ip地址等)。
查看网卡IP地址:
fgp@controller:~$ ifconfig eth0
eth0链接encap:以太网硬件地址08:00:27:c9:b4:f2
inet6 addr: fe80:a00:27ff:fec9:b4f2/64 Scope:Link
上行广播运行组播MTU:1500 指标:1
RX 数据包:27757 错误:0 丢弃:0 溢出:0 帧:0
TX 数据包:589 错误:0 丢弃:0 超限:0 运营商:0
碰撞:0 txqueuelen:1000
RX 字节:10519777 (10.5 MB) TX 字节:83959 (83.9 KB)
为网卡eth0添加新地址(虚拟网卡):
fgp@controller:~$ sudo ifconfig eth0:0 10.103.240.2/24
fgp@controller:~$ ifconfig eth0:0
eth0:0 链接encap:以太网HWaddr 08:00:27:c9:b4:f2
inet addr:10.103.240.2 Bcast:10.103.240.255 Mask:255.255.255.0
上行广播运行组播MTU:1500 指标:1
关闭网卡并打开网卡:
sudo ifconfig eth0 下来
sudo ifconfig eth0 up
nslookupdig
nslookup 用于交互式域名解析(交互式查询Internet 名称服务器)。当然,你也可以直接传入域名,作为Ad-Hoc命令使用,比如检查google.com的IP地址:
fgp@controller:~$ nslookupgoogle.com
服务器: 114.114.114.114
地址: 114.114.114.114#53
非权威答案:
名称: google.com
地址: 37.61.54.158
检查使用的DNS服务器地址:
fgp@controller:~$ nslookup
服务器
默认服务器: 114.114.114.114
地址: 114.114.114.114#53
默认服务器: 8.8.8.8
地址: 8.8.8.8#53
dig 命令也是一个域名解析工具(DNS 查找实用程序),但它提供了更全面的信息:
fgp@controller:~$ diggoogle.com
;DiG 9.9.5-3ubuntu0.8-Ubuntugoogle.com
;全局选项: +cmd
;得到答复:
; -HEADER-操作码:查询,状态:无错误,id: 53828
; flags: qr rd ra;查询: 1、答案: 1、权威: 4、附加: 4
;问题部分:
;google.com。在A
;答案部分:
google.com。 2730 于37.61.54.158
;权力部分:
google.com。 10204 IN NS ns2.google.com。
google.com。 10204 在NS ns4.google.com。
google.com。 10204 在NS ns3.google.com。
google.com。 10204 IN NS ns1.google.com。
;附加部分:
ns1.google.com。 86392 在216.239.32.10
ns2.google.com。 80495 在216.239.34.10
ns3.google.com。 85830 在216.239.36.10
ns4.google.com。 13759 在216.239.38.10
;查询时间: 17 毫秒
;服务器: 114.114.114.114#53(114.114.114.114)
; WHEN: 星期四5 月5 日00:11:48 CST 2016
;味精尺寸rcvd: 180
域名查询
Whois用于查看域名所有者信息(whois目录服务的客户端),例如注册的电子邮件地址、手机号码、域名服务提供商等:
fgp@controller:~$ whoiscoolshell.cn
域名:coolshell.cn
ROID: 20090825s10001s91994755-cn
域名状态: 正常
注册人ID: hc401628324-cn
注册人: 陈浩
注册人联系邮箱:haoel@hotmail.com
赞助Registrar: 阿里云计算有限公司(万网)
名称服务器: f1g1ns1.dnspod.net
名称服务器: f1g1ns2.dnspod.net
报名时间: 2009-08-25 00:40:26
过期时间: 2020-08-25 00:40:26
DNSSEC: 未签名
我们发现,coolshell.cn域名是陈浩在万网购买并注册的。注册时间为2009年,注册邮箱为haoel@hotmail.com。
路线
Route命令用于查看和修改路由表:
查看路由表:
fgp@controller:~$ sudo 路由-n
内核IP路由表
目标网关Genmask 标记度量参考使用Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 brqcb225471-1f
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 brqcb225471-1f
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
添加/删除路由都是add/del子命令,比如删除默认路由:
sudo 路由删除默认值
添加默认路由,网关为192.168.1.1,网卡为brqcb225471-1f:
sudo 路由添加默认gw 192.168.1.1 dev brqcb225471-1f
ip
ip命令可以说是极其强大的。可以完全替代ifconfig、netstat、route、arp等命令。例如查看网卡eth1的IP地址:
[]内的内容表示:可写,也可不写。
如果是{},您必须选择{} 中给出的选项之一。
fgp@controller:~$ sudo ip addr ls dev eth1
3: eth1:mtu 1500 qdisc pfifo_fast 状态UP 组默认qlen 1000
链接/以太08:00:27:9a:d5:d1 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.2/24 brd 192.168.56.255 范围全局eth1
永远有效_lft 永远首选_lft
inet6 fe80:a00:27ff:fe9a:d5d1/64 范围链接
永远有效_lft 永远首选_lft
检查网卡eth1配置:
fgp@controller:~$ sudo ip link ls eth1
3: eth1:mtu 1500 qdisc pfifo_fast 状态UP 模式DEFAULT 组默认qlen 1000
链接/以太08:00:27:9a:d5:d1 brd ff:ff:ff:ff:ff:ff
查看路线:
fgp@controller:~$ ip 路由
默认通过192.168.1.1 dev brqcb225471-1f
172.17.0.0/16 dev docker0 proto 内核范围链接src 172.17.0.1
192.168.1.0/24 dev brqcb225471-1f 原型内核范围链接src 192.168.1.105
192.168.56.0/24 dev eth1 原型内核范围链接src 192.168.56.2
查看arp信息:
fgp@controller:~$ sudo ip neigh
192.168.56.1 dev eth1 lladdr 0a:00:27:00:00:00 可到达
192.168.0.6 dev vxlan-80 lladdr fa:16:3e:e1:30:c8 永久
172.17.0.2 dev docker0 lladdr 02:42:ac:11:00:02 陈旧
192.168.56.3 dev eth1 失败
192.168.1.1 开发brqcb225471-1f lladdr 30:f
c:68:41:12:c6 STALE 查看网络命名空间: fgp@controller:~$ sudo ip netns ls qrouter-24bf83c7-f61d-496b-8115-09f0f3d64d21 qdhcp-9284d7a8-711a-4927-8a10-605b34372768 qdhcp-cb225471-1f85-4771-b24b-a4a7108d93a4 进入某个网络命名空间: fgp@controller:~$ sudo ip netns exec qrouter-24bf83c7-f61d-496b-8115-09f0f3d64d21 bash root@controller:~# ifconfig qg-0d258e6d-83 Link encap:Ethernet HWaddr fa:16:3e:93:6f:a3 inet addr:172.16.1.101 Bcast:172.16.1.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe93:6fa3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1035 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:102505 (102.5 KB) TX bytes:1200 (1.2 KB) brctl brctl是linux网桥管理工具,可用于查看网桥、创建网桥、把网卡加入网桥等。 查看网桥: fgp@controller:~$ sudo brctl show bridge name bridge id STP enabled interfaces brq9284d7a8-71 8000.12841adee45f no tap36daf550-27 tape729e013-df vxlan-80 brqcb225471-1f 8000.080027c9b4f2 no eth0 tap0d258e6d-83 tapb844e7a5-83 docker0 8000.0242e4580b61 no veth50ed8dd 以上因为部署了openstack neutron以及docker,因此网桥比较复杂。 其他子命令如addbr用于创建网桥、delbr用户删除网桥(删除之前必须处于down状态,使用ip link set br_name down)、addif把网卡加到网桥等。 traceroute ping命令用于探测两个主机间连通性以及响应速度,而traceroute会统计到目标主机的每一跳的网络状态(print the route packets trace to network host),这个命令常常用于判断网络故障,比如本地不通,可使用该命令探测出是哪个路由出问题了。如果网络很卡,该命令可判断哪里是瓶颈: fgp@controller:~$ sudo traceroute -I -nint32bit.me traceroute to int32bit.me (192.30.252.154), 30 hops max, 60 byte packets 1 192.168.1.1 4.610 ms 5.623 ms 5.515 ms 2 117.100.96.1 5.449 ms 5.395 ms 5.356 ms 3 124.205.97.48 5.362 ms 5.346 ms 5.331 ms 4 218.241.165.5 5.322 ms 5.310 ms 5.299 ms 5 218.241.165.9 5.187 ms 5.138 ms 7.386 ms ... 可以看到,从主机到int32bit.me共经过30跳,并统计了每一跳间的响应时间。 另外可以参考tracepath。 mtr mtr是常用的网络诊断工具(a network diagnostic tool),它把ping和traceroute并入一个程序的网络诊断工具中并实时刷新。 mtr -n int32bit.me 输出如图: image.pngmtr从图上可以看出从本地到int32bit.me经过的所有路由,每一个路由间的丢包率、响应时间等。 ss ss命令也是一个查看网络连接的工具(another utility to investigate sockets),用来显示处于活动状态的套接字信息。关于ss的描述,引用Linux命令大全-ss命令 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网络工具大全及使用指南和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
【Linux网络工具大全及使用指南】相关文章:
用户评论
终于找到一个总结Linux常用网络工具的帖子!学习linux网优真是太重要了
有9位网友表示赞同!
我一直在摸索Linux下的网络工具,这篇文章一定要认真看一遍!
有8位网友表示赞同!
哪些工具是必会的?分享一下你的宝贵经验吧!
有18位网友表示赞同!
最近在准备考网优证书,这种总结帖子很实用!
有15位网友表示赞同!
希望这篇文章能涵盖很多常用工具,比如ping、traceroute等
有16位网友表示赞同!
linux下调试网络问题真的很不容易,这些工具太需要了!
有11位网友表示赞同!
感觉学习linux的网络工具比windows用起来复杂多了,不过还是很有用的
有15位网友表示赞同!
分享一下你最常使用的Linux网络工具吧!
有5位网友表示赞同!
学习一下这些工具说不定以后帮上大忙呢!
有13位网友表示赞同!
这篇文章是不是比较适合入门Linux系统的人?
有18位网友表示赞同!
希望作者能把工具的使用方法和例子都写清楚,方便理解。
有5位网友表示赞同!
我感觉网络工具总是在更新换代,所以这个总结很有意义
有18位网友表示赞同!
学习新东西真是刺激啊!期待了解更多linux网络知识!
有18位网友表示赞同!
有没有哪些小技巧可以用到Linux网络工具中?
有9位网友表示赞同!
我想知道这些工具具体怎么用在实际的网络调试过程中?
有11位网友表示赞同!
看到这个标题,我就想起自己以前学习Linux的时候那些工具...
有11位网友表示赞同!
学习linux网优是一个循序渐进的过程,需要不断练习和总结!
有16位网友表示赞同!
期待作者能分享更多关于Linux系统管理的小知识!
有20位网友表示赞同!