当前位置:   article > 正文

linux下ping命令使用,ARP协议与SNMP协议_/proc/net/arp

/proc/net/arp

目录

linux下ping命令的使用

ARP协议

ARP协议说明

MAC记录与端口扫描脚本

SNMP协议


linux下ping命令的使用

 Linux 下 ping 命令的主要功能是检测网络,那么它的具体使用方法是怎样呢?
 linux 的 ping 命令的使用
 PING ( Packet Internet Grope ),因特网包探索器
功能说明:
检测网络的连通性: ping 可以测试计算机名和计算机的 ip 地址,验证与远程计算机的连接,通过将 icmp 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接,该命令只有在安装了 tcp / ip 协议后才可以使用。
备注: TTL--生存时间
指定数据包被路由器丟弃之前允许通过的网段数量。
 TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。
语法:
 ping [- dfnqrRv ][- c <完成次数>][- i <间隔秒数> [- I<网络界面>][- p <范本样式>][- s く数据包大小>][- t <存活数值>][主机名称或 IP 地址]
补充说明:
执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
备注:
 ICMP 是( Internet Control Message Protocol ) Internet 控制报文协议。它是 TCP / IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
参数:
- a 将地址解析为计算机名。
- d 使用 Socket 的 SO _ DEBUG 功能。
- c <完成次数>设置完成要求回应的次数。
- f 极限检测。
- i <间隔秒数>指定收发信息的间隔时间。
- I <网络界面>使用指定的网络界面送出数据包。
- n 只输出数值。
- p <范本样式>设置填满数据包的范本样式。
- q 不显示指令执行过程,开头和结尾的相关信息除外。
- r 忽略普通的 Routing Table ,直接将数据包送到远端主机上。
- R 记录路由过程。
- s<数据包大小>设置数据包的大小。
- t<存活数值>设置生存时间 TTL 的大小。
- v 详细显示指令的执行过程。
 linux 中 ping 命令使用实例
1:将地址解析为计算机名
64 bytes :表示本次传送的 ICMP 包的大小,此值为预设值
icmp _ seq =0: ICMP 所侦测的次数,第一次为0,第二次为1,依次类推
ttl =52:生存时间
time :响应时间
2:测试网络的连通性, ping 10次,间隔1S
ping -c 10 -i 1 xxx.xxx.xxx.xxx
小解其意:其中﹣ c count 次数,也就是 ping 的次数,- i interval 间隔,每次 ping 之间的时间空格
3: ping 整个网络主机,
看是否有回应,一秒 ping 一台主机
由于公 ping 一次,而且只sleep1秒,所以 ping 的选项为:-c1 -w1,假设你的电脑所在的网络为:192.168.1.*,所以 shell 命令这样写( vi ping . sh ):
#!/ bin / bash
for siteip in $( seq 254) do 
site="192.168.1.${ siteip }"
ping -c1 -w1 ${ site } &>/ dev / null 
if["$?"=="0"]; then 
echo"$ site is UP "
else
echo"$ site is DOWN "
fi
done
小解其意:
1、 ping -c1 -w1中-c1是指 ping 的次数,-w是指执行的最后期限,也就是执行的时间,单位为秒
2、&>/ dev / null 是指标准输出和错误输出都输出到/ dev / null 上,而不在界面上显示;
后面的&&和||是与和或得意思,如 a&&b||c ,表示 a 为真,则执行 b ;否则执行 c 
 

ARP协议

ARP协议说明

我们先看一下linux下的arp命令(如果开始arp表中的内容为空的话,需要先对某台主机进行一个连接,例如ping一下目标主机来产生一个arp项

首先,做两个对比试验:

root@firewall root]# arp -a
? (192.168.100.83) at 00:15:58:A2:13: D0 [ether] on eth0
? (192.168.100.81) at 00:15:C5:E1:D1:58 [ether] on eth0

[root@firewall bin]# arp -s 192.168.100.81 00:15:C5:E1:D1:58
#############################################################################
示例:
添加静态项。这个很有用,特别是局域网中中了arp病毒以后
# arp -s 192.168.100.81 00:15:C5:E1:D1:58
# arp -a   .... 显示 ARP 表。
但是arp -s设置的静态项在用户登出之后或重起之后会失效,如果想要任何时候都不失效,可以将ip和mac的对应关系写入arp命令默认的配置文件/etc/ethers中 

例如:
root@ubuntu:/# vi /etc/ethers
192.168.100.81 00:15:C5:E1:D1:58
写入之后执行下面的命令就好了,引用:

arp -f /etc/ethers
为保证重起之后绑定仍然有效,需要把上述命令写入/etc/ethers
 
ARP(Address Resolution Protocol),或称地址解析协议。
本地机向"某个IP地址 -- 目标机IP地址"发送数据时,先查找本地的ARP表,如果在ARP表中找到"目标机IP地址"的ARP表项,(网络协议)将把"目标机IP地址"对应的"MAC地址"放到MAC包的"目的MAC地址字段"直接发送出去;
如果在ARP表没有找到"目标机IP地址"的ARP表项,则向局域网发送广播ARP包("目的MAC地址字段" == FF:FF:FF:FF:FF:FF),目标机将向本地机回复ARP包(包含目标机的MAC地址)
#############################################################################

[root@firewall bin]# arp -a
? (192.168.100.83) at 00:15:58:A2:13: D0 [ether] on eth0
? (192.168.100.81) at 00:15:C5:E1: D1:58 [ether] PERM on eth0

发现没有?多了一个PERM!

或者
[root@firewall bin]# cat /proc/net/arp
IP address  HWtype  Flags  HWaddress  Mask  Device
192.168.100.83  0x1  0x2  00:15:58:A2:13:D0  *  eth0
192.168.100.81  0x1  0x6  00:15:C5:E1:D1:58  *  eth0

[root@firewall bin]# arp -s 192.168.100.83 00:15:58:A2:13:D0

[root@firewall bin]# cat /proc/net/arp
IP address  HW type  Flags  HW address  Mask  Device
192.168.100.83  0x1  0x6  00:15:58:A2:13:D0  *  eth0
192.168.100.81  0x1  0x6  00:15:C5:E1: D1:58  *  eth0

发现没有?Flags改变了!

所以我们可以用两种方法找到arp的静态绑定地址:

#arp -a | grep PERM   或者

#cat /proc/net/arp | grep 0x6

但建议用后者比较快。

利用静态ARP表进行控制
我们知道,ARP(Address Resolution Protocol,地址转换协议)被当作底层协议,用于IP地址到物理地址的转换。在以太网中,所有对IP的访问最终都转化为对网卡MAC地址的访问。 

不妨设想一下,如果主机A的ARP列表中,到主机B的IP地址与MAC地址对应不正确,由A发往B数据包就会发向错误的MAC地址,当然无法顺利到达B,结 果是A与B根本不能进行通信。Linux可以通过arp命令控制ARP转换,即IP到MAC的转换。因此,也能利用这一功能对用户MAC地址进行匹配。下面我们就来看看arp命令的用法。 
输入arp将显示当前所有ARP转换记录,类似于这样: 

Address  HWtype  HWaddress  Flags  Mask  Iface 
www.baidu.com ether  00:06:29:57:16:F5  C  eth0 
218.200.80.177  ether  00:01:30:F4:32:40  C  eth1 
192.168.100.25  ether  00:02:1E:F1:92:C2  C  eth0 

由此可以看到,当前系统保留的IP地址与MAC地址一一对应,并指明了硬件类型(Hwtype)和通信所使用的接口(Iface)。不过这些都是动态生成的,无需手工干预。我们要做的恰恰是手工干预这一过程。 

我们需要用到arp命令的另一重要功能,就是手工更改这一对应关系。此外,该命令还可以读取文本文件中的ARP记录,其默认文件是/etc/ethers。也就是说,当输入ARP-f的时候,系统就会读取/etc/ethers这个文件,并以其中的项目取代系统当前的ARP记录。假设/etc/ethers 文件内容如下: 

192.168.100.25 00:02:01:50:BB:53

然后执行命令arp -f

这时,我们查看系统ARP表,会发现无论192.168.100.25原来对应的MAC地址是什么,都会被新的所取代: 

www.baidu.com ether  00:06:29:57:16:F5  C  eth0 
218.200.80.177  ether  00:01:30:F4:32:40  C  eth1 
192.168.100.25  ether  00:02:01:50:BB:53  C  eth0

此时,本机发往192.168.100.25的数据包目标MAC地址将由原来的00:02:1E:F1:92:C2改为00:02:01:50:BB:53 显然,如果192.168.100.25所在网卡的MAC地址并非00:02:01:50:BB:53,数据包就无法到达正确的目的地,那么它们也就无法通信了,这样也达到了识别非法用户的目的。 

当然,控制MAC地址的方法还不止这些,例如可以利用交换机的端口管理功能识别用户。根据交换机的原理,它是直接将数据发送到相应端口,那么就必须保有一个数据库,包含所有端口所连网卡的MAC地址,由此可见,控制每个端口使用的MAC地址理论上是完全可行的。大部分中高端交换机如3Com SuperStack系列等,都具有这种功能。具体操作与交换机型号有关,这里就不赘述。 

最后,提醒一下,MAC地址控制并非绝对保险。正如这个世界上没有绝对解不开的密码一样,所谓安全都是相对于特定的环境而言。现在,很多网卡都支持MAC地址的软件修改,Linux和Windows本身也都有办法修改这一物理地址。不过由于这种方式相对稳定,摒弃了繁琐的客户端设置,对用户完全透明,而且具备很强的可操作性,所以在某种程度上说是安全的。

MAC记录与端口扫描脚本

(1) 需求描述
● 编写名为system.sh的脚本,记录局域网中各主机的MAC地址,保存到/etc/ethers文件中;若此文件已存在,应先转移进行备份;每行一条记录,第1列为IP地址,第2列为对应的MAC地址。

● 检查有哪些主机开启了匿名FTP服务,扫描对象为/etc/ethers文件中的所有IP地址,扫描的端口为21.

(2) 实现步骤

  1. [root@localhost ~]#vim system.sh
  2.     #!/bin/bash
  3.     #定义网段地址、mac列表文件
  4.     NADD="192.168.4."
  5.     FILE="/etc/ethers"
  6.     #发送ARP请求,并记录反馈信息
  7.     [ -f $FILE ] && /bin/cp -f $FILE $FILE.old  #备份原有文件
  8.     HADD=1        #定义起始扫描地址
  9.     while [ $HADD -lt 254 ]
  10.     do
  11.         ping -c2 -w1 ${NADD}${HADD} &> /dev/null
  12.         if [ $? -eq 0 ];then
  13.             arp -n ${NADD}${HADD} | awk 'NR>1{print $1,$3}' >> $FILE
  14.         fi
  15.         let HADD++
  16.     done
  17.     TARGET=$(awk '{print $1}' /etc/ethers)
  18.     echo "以下主机已开放匿名FTP服务:"
  19.     for IP in $TARGET
  20.     do
  21.         wget [ftp://$IP/](ftp://$IP/) &> /dev/null
  22.         if [ $? -eq 0 ];then
  23.             echo $IP
  24.             rm -rf index.html  #事先在ftp服务器上准备下载文件,测试后删除                
  25.         fi
  26.     done
  27. # chmod +x system.sh
  28. #./system.sh        #执行检测程序
  29. #cat /etc/ethers  #确认记录结果
  30. ####/bin/cp相当于\cp,即使用原生cp命令,-f表示强制覆盖,不提示,不与用户交互

SNMP协议

简单网络管理协议(Simple Network Management Protocol--SNMP)由Internet 工程任务组定义,是组成Internet 协议的一部分。在关注某台网络设备的条件下,使用SNMP 通过网络管理系统来监控网络设备。SNMP协议由一系列标准网络管理、应用层协议、数据库、数据对象组成。SNMP 协议能够通过管理系统的窗体,显示管理数,如系统描述配置。这些配置描述可以通过一个支持SNMP的管理应用程序进行查询或设置。SNMP 协议基于TCP/IP 协议,SNMP 通常使用UDP 端口161(SNMP)和162(SNMP-Trap),SNMP 协议代理(SNMP Agent)存在于网络设备里,使用标准MIBs(information specific to the device)作为设备接口,通过代理,这些网络设备可以被监控或控制。当一个Trap 事件发生时,消息被SNMP Trap 传输,此时,一个可用的Trap 接收器可以收到这个Trap 消息。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/335907
推荐阅读
相关标签
  

闽ICP备14008679号