zoukankan      html  css  js  c++  java
  • shell之arp命令

    arp: 显示所有的表项。
    arp -d address: 删除一个arp表项。
    arp -s address hw_addr: 设置一个arp表项。
     
    常用参数:
    -a 使用bsd形式输出。(没有固定的列)
    -n 使用数字形式显示ip地址,而不是默认的主机名形式。
    -D 不是指定硬件地址而是指定一个网络接口的名称,表项将使用相应接口的MAC地址。一般用来设置ARP代理。
    -H type, --hw-type type: 指定检查特定类型的表项,默认type为ether,还有其他类型。
    -i If, --device If: 指定设置哪个网络接口上面的arp表项。
    -f filename: 作用同'-s',不过它通过文件来指定IP地址和MAC地址的绑定。文件中每行分别是主机和MAC,中间以空格分割。如果没有指定文件名称,则使用/etc/ethers文件。

     

    开启arp代理
    echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
    代理ARP的应用环境?
    A:Proxy ARP应该使用主机没有配置默认网关或没有任何路由策略的网络上。
    举个例子:主机A,IP地址是192.168.0.11/24。主机B,IP地址是192.168.1.22/24。主机A和主机B通过路由器R相连接,并且路由器R启用了Proxy ARP,并配置有路由。网络拓扑如下:
     
    eth0 eth0 eth1 eth0
    A------------------Router R------------------B
    192.168.0.11/24 192.168.0.0/24 eth0 192.168.1.22/24
    192.168.1.0/24 eth1
     
    在主机A上执行:ping 192.168.1.22,主机A不知道主机B的MAC地址是多少,首先要发送ARP查询报文,路由器R接收到主机A发出的ARP查询报文,并代替主机B作出应答,应答ARP报文中填入的就是路由器R的MAC地址。这样,主机A就会认为路由器R的地址是192.168.1.22。以后所有发往192.168.1.22的报文都发到路由器R,路由器R再根据已配置好的路由表将报文转发给主机B。
    这样做的好处就是,主机A上不需要设置任何默认网关或路由策略,不管路由器R的IP地址怎么变化,主机A都能通过路由器B到达主机B,也就是实现了所谓的透明代理。相反,若主机A上设置有默认网关或路由策略时,当主机A向192.168.1.22发送报文,首先要查找路由表,而主机A所在的网段是192.168.0.0/24,主机B所在网段是192.168.1.0/24,主机A只能通过默认网关将报文发送出去,这样代理ARP也就失去了作用。
     
    防止ARP攻击的shell代码
    #!/bin/bash
    declare gw=`route -n | grep -e '^0.0.0.0'`
    declare gwname=`echo $gw | grep -oe 'w*$'`
    declare gwip=`echo $gw | grep -oe '[0-9]{2,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'`
    declare gwmac=`arp -n | grep -e $gwip | grep -oe '[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-
    F]{2}:[0-9A-F]{2}:[0-9A-F]{2}'`
    echo "switch $gwname arp: $gwip - $gwmac to static"
    arp -s $gwip $gwmac
    echo "done, off arp reuqest .."
    ifconfig $gwname -arp
    echo "all done."

     

    arping命令
    arping -U -I 发送包的网卡接口 -s 源ip 目的ip
    假设你的eth0接口对应的ip为192.168.1.1,网关为192.168.1.255你就可以使用
    arping -U -I eth0 -s 192.168.1.1 192.168.1.255
     
    参数
    -0:指定源地址为0.0.0.0,这个一般是在我们刚刚安装好系统,电脑还没配置好IP的时候
    -a:Audible ping.这个当有reply回来的时候,你的电脑有喇叭的话,就会滴滴的叫
    -A:Only count addresses matching requested address
    -b:类似-0,指定源broadcast为255.255.255.255
    -B:指定这个就相当于 arping 255.255.255.255
    -c count:发送指定数量的arp包后,即停止退出
    -d:这个比较重要,当局域网有IP占用的时候,可以指定这个参数,当有相同的IP的不同MAC地址reply的时候,arping会退出,退出码为1
    -D:这个检测是否丢包的,当丢包的时候打印感叹号,正常的时候打印逗号
    -e:和-a相反,当没有reply的时候,会滴滴滴
    -p:打开混杂模式,当前用户对mac无权限时,可以加上这个选
    -r:输出的时候只打印MAC,写脚本的时候用得到,不用自己对结果awk了
    -R:输出的时候只打印IP,和上面一样
    -s MAC:指定源MAC地址
    -S IP:指定源IP,设置了源IP,如果目标主机没有到源IP的route,则有可能收不到answer
    -t MAC:指定目的MAC
    -T IP:指定目的IP,
    -i interface:指定发送arp包的设备。不指定的话,默认为系统的第一块网卡
    -q:表示不打印输出,写脚本不想打印输出的时候,应该用的到
    -u:没啥大用,结果显示的时候,加这个参数和不加,index的显示形式不同
    -v:打印详细的输出,默认打印的好像就是verbose
    -w deadline:指定两个ping直接的时间间隔,单位为毫秒,默认为1秒

     

    用法
    用法1:查看某个IP的MAC地址
    arping 192.168.131.155
    用法2:查看某个IP的MAC地址,并指定count数量
    arping -c 1 192.168.131.155
    用法3:当有多块网卡的时候,指定特定的设备来发送请求包
    arping -i eth1 -c 1 192.168.131.155
    用法4:查看某个IP是否被不同的MAC占用
    arping -d 192.168.131.155
    用法5:查看某个MAC地址的IP,要在同一子网才查得到
    arping -c 1 52:54:00:a1:31:89
    用法6:确定MAC和IP的对应,确定指定的网卡绑定了指定的IP
    arping -c 1 -T 192.168.131.156 00:13:72:f9:ca:60
    用法7:确定IP和MAC对应,确定指定IP绑在了指定的网卡上
    arping -c 1 -t 00:13:72:f9:ca:60 192.168.131.156
    用法8:有时候,本地查不到某主机,可以通过让网关或别的机器去查。以下几种形式测了下都可以
    arping -c 1 -S 10.240.160.1 -s 88:5a:92:12:c1:c1 10.240.162.115
    arping -c 1 -S 10.240.160.1 10.240.162.115
    arping -c 1 -s 88:5a:92:12:c1:c1 10.240.162.115
  • 相关阅读:
    0309. Best Time to Buy and Sell Stock with Cooldown (M)
    0621. Task Scheduler (M)
    0106. Construct Binary Tree from Inorder and Postorder Traversal (M)
    0258. Add Digits (E)
    0154. Find Minimum in Rotated Sorted Array II (H)
    0797. All Paths From Source to Target (M)
    0260. Single Number III (M)
    0072. Edit Distance (H)
    0103. Binary Tree Zigzag Level Order Traversal (M)
    0312. Burst Balloons (H)
  • 原文地址:https://www.cnblogs.com/tla001/p/6436186.html
Copyright © 2011-2022 走看看