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

shell之arp命令的更多相关文章

  1. OpenWrt arp 命令发布

    arp命令是用来查看mac与ip在消息路由器缓存表.这是一个基本的介绍了一下我就不说了. 但今天我的同事通过arp.可是在shell脚本就回显示没有此命令,我当时也感到非常费解. 于是乎.做了例如以下 ...

  2. BSA Network Shell系列-nexec命令

    # nexec ## 1 说明:nexec是远程命令接口引擎 ,用于在远程主机执行命令 nexec [-?] [-t term] [-o] [-i] [-l] [-nohup hostname &qu ...

  3. Bash Shell内建命令和保留字

    Bash Shell内建命令和保留字命令含义!保留字,逻辑非:不做任何事,只做参数展开.读取文件并在shell中执行它alias设置命令或命令行别名bg将作业置于后台运行bind将关键字序列与read ...

  4. arp命令

    地址解析协议ARP用于将IP地址解析成MAC地址.当把数据包从一个计算机发送到另一个计算机的时候,计算机或路由器使用ARP请求来确定下一跳的MAC地址. MAC地址用于按跳发送数据包,直到达到最终目的 ...

  5. 单行bash、shell、perl命令

    主题:单行经典bash.shell.perl命令 作者:luomg 摘要: 会陆陆续的写自己工作中的常用有意思的命令,争取你能看完后就能搞定常见操作, 且尽量自少提供基本shell.perl的实现方式 ...

  6. Shell 的source命令

    source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令. 注:该命令通常用命令“.”来替代. 如:source .bash_rc 与 . ...

  7. shell 后台执行命令

    shell 后台执行命令方法: 1. nohup cmd &          后台会生成 nohup.out 文件 2.cmd >/路径/xx.log &   后台生成 xx. ...

  8. arp命令(windows ),nmap查看局域网内所有主机IP和MAC

    ARP命令详解 ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址.实用arp命令,我们能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容.此外,使用arp命令,也可 ...

  9. shell中对于命令的搜寻顺序

    当你在shell命令行输入一条命令时,shell的搜寻顺序是如何的呢?当你的脚本名字和shell中的函数名字重名,shell是如何决定运行哪一个的? 在shell中,shell对于命令的搜寻优先级为: ...

随机推荐

  1. Python Flask高级编程

    第1章 课程导语介绍课程的内容1-1 开宗明义 试看1-2 课程维护与提问 第2章 Flask的基本原理与核心知识本章我们首先介绍Python官方推荐的最佳包与虚拟环境管理工具:Pipenv.接着我们 ...

  2. windows同时安装python2和python3

    系统之前安装了python2.7,现在准备装个python3.6 1:首先下载一个python3.6适合windows32位的包python-3.6.5.exe 然后直接默认双击安装,安装的时候勾选a ...

  3. Kafka设计解析(一)Kafka背景及架构介绍

    转载自 技术世界,原文链接 Kafka设计解析(一)- Kafka背景及架构介绍 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Pr ...

  4. SQLSERVER存储过程语法具体解释

    SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }   ...

  5. Gobelieve 架构(转载)

    Gobelieve 架构 Gobelieve github地址 im 客户连接服务器 (可分布式部署,暂无负载均衡模块) imr 路由查询服务器(主要解决im分布式部署的问题) ims 存储服务器 ( ...

  6. Linux基础入门 第二章 Linux终端和shell

    Linux终端 进入编辑IP地址命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0 按键“i”:进行编辑 按键“ESC”:退出编辑  按键“:”:输入wq, ...

  7. springboot快速入门(三)——Controller的使用

    一.概述 controller的分类: 相关的使用方式和springMVC的类似了,细节不再赘述 二.Controller使用 1.使用@controller注解 @Controller public ...

  8. Advanced Find and Replace(文件内容搜索替换工具)v7.8.1简体中文破解版

    Advanced Find and Replace是一款文件内容搜索工具,同时也是文件内容批量替换工具.支持通配符和正则表达式,方便快捷强大! 显示中文的方法:第二个菜单-Language-选 下载地 ...

  9. 【mysql】排序方操作50题练习及其答案

    1.创建数据库.相关表,并插入数据create database homework;use homework; create table class_grade(gid int primary key ...

  10. Flutter - 创建侧滑菜单

    侧滑菜单在安卓App里面非常常见,比如Gmail,Google Play,Twitter等.看下图 网上也有很多创建侧滑菜单的教程,我也来记录一下,自己学习创建Drawer的过程. 1. 创建一个空的 ...