【Linux学习】CentOS7.6环境中源码编译安装fping服务并实现统计网络中主机的网络连通情况
实验要求
fping软件官网:http://www.fping.org/
可能涉及知识:
1、虚拟机的网络模式
2、linux系统网络的配置
3、linux下源码软件的编译安装
4、linux系统对输出流的处理
5、bash配置文件,及环境变量
环境及要求:
1、所有人使用linux虚拟机
2、每个人的linux虚拟主机(一个网卡)配置3个ip地址,192.168.180.x 192.168.180.50+x 172.16.31.x 这里的x小于20,6个人的不重复就可以了,配置后重启系统后依然有效
要求6个人都能在自己linux虚拟机中ping通其他任意一个人的3个ip地址(如果ping不通,思考是自己的问题、还是对方的问题,一起讨论分析解决)
3、源码安装fping软件包,安装到/opt/fping目录
4、安装完成后,能在命令行,直接使用fping x.x.x.x 判断主机是否存活(原理同ping命令类似,能fping通的会显示x.x.x.x is alive,不通的会显示 x.x.x.x is unreachable)
5、通过fping命令检测172.16.31.1~172.16.31.20 这个段的主机在线情况,要能直观的看出结果,不要输出ICMP Host Unreachable .... 等调试提示信息
6、通过fping命令检测出192.168.180.0-255 整个网段的主机在线情况,将alive的信息保存到/tmp/net_192.168.180.0_alive.txt 文件中
将unreachable的信息保存到/tmp/net_192.168.180.0_unreachable.txt中,将命令过程中出现在屏幕上的其他会输出信息写到/tmp/net_192.168.180.0_debug.txt 文件中。
实验步骤
首先准备linux虚拟机,这里我使用的是CentOS7.6-1810版本最小化安装。
网卡配置
BOOTPROTO=static
ONBOOT=yes
IPADDR1=172.16.31.14
NETMASK1=255.255.255.0
IPADDR2=192.168.180.19
NETMASK2=255.255.255.0
IPADDR3=192.168.180.69
NETMASK3=255.255.255.0
//这里只贴出来了要修改和增加的地方,配置文件没有的增加即可
编辑好网卡文件之后重启,我是这样的:
172.16.31.14、192.168.180.19、192.168.180.69
----------------------------------以下内容可跳过
在这里添加IP地址是为了使物理机和虚拟机互通,他们IP地址都是不同网段的,所以就需要添加一个同网段IP,最后才能和其他几个同学的虚拟机互通。其他同学的物理机也需要配置物理网卡的IP地址。注:配置的IP地址都不能重复,避免冲突。
-----------------------------------以上内容可跳过
现在虚拟机就可以和其他同学互通了。
安装fping
fping软件官网:http://www.fping.org/ ,打开之后全英文,找到download下载字样,Latest source: fping 4.2 ,然后点击即可下载,还有另外一种下载方式,在linux中可以使用wget进行下载,命令如下:
wget http://www.fping.org/dist/fping-4.2.tar.gz //虚拟机需要正常上网
下载好了之后,我使用xshell连接虚拟机,安装文件传输服务,yum install lrzsz,在opt目录里创建fping目录,将fping源码包放进这个目录:
mkdir /opt/fping //新建fping目录
cd /opt/fping //进入目录
rz -E //选择fping源码包上传放入
tar -xvf fping-4.2.tar.gz
cd fping-4.2
ls
现在开始配置检测,看看有没有什么组件没有安装的,如果提示有错误,根据提示安装即可。
./configure
会发现多了一些文件,这是正常的。
现在开始编译和安装
make //编译
make install //安装
安装完成之后可以输入【fping -v】看一下版本情况,【whereis fping】可以看安装的位置,位置默认在:fping: /usr/local/sbin/fping。
[root@localhost fping-4.2]# fping -v
fping: Version 4.2
fping: comments to david@schweikert.ch
[root@localhost fping-4.2]# whereis fping
fping: /usr/local/sbin/fping
如果没有消息,那就需要添加一下环境变量:
> vim /etc/profile
#在最后面添加
export PATH=$PATH:/usr/local/fping/sbin
> source /etc/profile
> fping -v
通过fping x.x.x.x来看看主机是否存活,原理同ping命令类似,能fping通的会显示x.x.x.x is alive,不通的会显示 x.x.x.x is unreachable:
[root@localhost ~]# fping 127.0.0.1
127.0.0.1 is alive
[root@localhost ~]# fping 128.0.0.1
128.0.0.1: error while sending ping: Network is unreachable
现在通过fping -agq命令来检测172.16.31.1~172.16.31.20这个段的主机在线情况:
[root@localhost ~]# fping -agq 172.16.31.1 172.16.31.20
172.16.31.8
172.16.31.10
172.16.31.14
172.16.31.16
172.16.31.18
172.16.31.19
fping的主要参数有以下两个:
-a:只显示存活主机;
-u:只显示不存活主机;
现在通过fping命令来检测192.168.180.0-192.168.180.255 整个网段的主机在线情况,将alive的信息保存到/tmp/net_192.168.180.0_alive.txt 文件中,将unreachable的信息保存到/tmp/net_192.168.180.0_unreachable.txt中,将命令过程中出现在屏幕上的其他会输出信息写到/tmp/net_192.168.180.0_debug.txt 文件中:
以下命令是将alive的信息存到指定txt文本中:
fping -a -g 192.168.180.0/24 -s > /tmp/net_192.168.180.0_alive.txt
以下命令是将unreachable的信息存到指定txt文本中:
fping -u -g 192.168.180.0/24 -s > /tmp/net_192.168.180.0_unreachable.txt
以下命令是将过程中出现在屏幕上的其他会输出信息写到txt文本中:
fping -g 192.168.180.0/24 -s > /tmp/net_192.168.180.0_debug.txt
其他命令及注释:
-a 显示可ping通的目标
-A 将目标以ip地址的形式显示
-b <num> ping 数据包的大小。(默认为56)
-B <f> 设置指数反馈因子到f,默认为1.5
-c <num> ping每个目标的次数 (默认为1)
-C <num> 同-c,返回的结果为冗长格式
-e 显示返回数据包所费时间
-f <file> 从文件获取目标列表( - 表示从标准输入)(不能与 -g 同时使用)
-g 通过指定开始和结束地址来生成目标列表(例如:./fping –g 192.168.1.0 192.168.1.255)或者一个IP/掩码形式(例如:./fping –g 192.168.1.0/24)
-i <num> 设置ip的TTL值 (生存时间)
-l 循环发送ping
-m ping目标主机的多个网口
-n 将目标以主机名或域名显示(等价于 -d )
-p <num> 对同一个目标的ping包间隔(毫秒) (在循环和统计模式中,默认为1000)
-q 安静模式(不显示每个目标或每个ping的结果)
-Q <num> 同-q, 但是每n秒显示信息概要
-r <num 当ping失败时,最大重试次数(默认为3次)
-s 打印最后的统计数据
-t <num> 单个目标的超时时间(毫秒)(默认500)
-u 显示不可到达的目标
-v 显示版本号