[转帖]用讲故事的方法解释ARP、ARP欺骗、网关
一、基本概念
假设你叫小不点(本地主机),住在一个大院子(本地局域网)里,有很多邻居(网络邻居),门口传达室有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个伙伴玩,只要你在院子里大喊一声他的名字(ping他一下),他听到了就会回应你,并且跑出来跟你玩。
但是你不被允许走出大门,你与外界的一切联系,都必须李大爷(网关)用电话帮助你联系。假如你想找你 的同学小明聊天,小明家住在很远的另外一个院子里(小明和你不在一个局域网),他家的院子里也有一个看门的王大爷(小明的网关)。你不知道小明家的电话号码,不过你的班主任老师 有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS服务器。于是你在家里拨通了门口李大爷的电话,有了下面的对话:
小不点:李大爷,我想找班主任查一下小明的电话号码行吗?(DNS查询)
李大爷:好,你等着。(接着李大爷给你的班主任挂了一个电话,问清楚了小明的电话)问到了,他家的号码是211.99.99.99(小明家的IP地址)
小不点:太好了!李大爷,我想找小明,你再帮我联系一下小明吧。
李大爷:没问题。(接着李大爷向电话局发出了请求接通小明家电话的请求,最后一关当然是被转接到了小明家那个院子的王大爷那里,然后王大爷把电话给转到小明家)(路由)
就这样你和小明取得了联系。(建立连接)
至于DHCP服务器嘛,可以这样比喻:
你家院子里的居民越来越多了,传达室李大爷那里的电话交换机已经不能满足这么多居民的需求了(原来伙伴很少,用固定IP),太多了,管不过来,就用DHCP,居民们开机的时候随机得到一个电话号码,每一次得到的号码都可能会不同。每隔一段时间,你租用的这个号码会被收回,下次需要重新得到一个新的。(这就是DHCP的租约)
你家门口的李大爷:就是你的网关
你的班主任:就是你的DNS服务器
传达室的电话交换机:就是你的DHCP服务器
同上,李大爷和王大爷之间的对话就叫做路由。
另:如果还有个小朋友叫做小暗,他住的院子看门的是孙大爷,因为小暗的院子刚盖好,孙大爷刚来不久,他没有李大爷和王大爷办公室的电话(李大爷和王大爷当然也没有他的电话),这时会有两种情况:
1、居委会的赵大妈告诉了孙大爷关于李、王两位大爷的电话(同时赵大妈也告诉了李、王关于孙的电话),这就叫静态设定路由
2、赵大妈病了,孙大爷自己到处打电话,见人就说:“我是小暗他们院子管电话的”,结果被李、王二位听到了,就记在了他们的通讯录上,然后李、王就给孙大爷回了个电话说:“我是小明(小不点)他们院子管电话的”,这就叫动态设定路由
然后有一天小不点要找小暗,结果自然是小不点给李大爷打电话说:“大爷,我找小暗”(这里省略了李大爷去查小暗电话的过程,假设他知道小暗的电话),李大爷一找通讯录:“哦,小暗的院子的电话是孙大爷管着的,要找小暗自然先要通知孙大爷,我可以通知王大爷让他去找孙大爷,也可以自己直接找孙,那当然是自己直接找孙方便了”,于是李大爷给孙大爷打了电话,然后孙大爷又把电话转到了小暗家。
这里李大爷的通讯录叫做路由表。
李大爷选择是自己直接找孙大爷还是让王大爷帮忙转接叫做路由选择。
李大爷之所以选择直接找孙大爷是有依据的,因为他直接找孙大爷就能一步到位,如果要王大爷转接就需要两步才能完成,这里的“步”叫做“跳数”,李大爷的选择遵循的是最少步骤(跳数)原则(如果他不遵守这个原则,小不点可能就会多等些时间才能找到小暗,最终结果可能导致李大爷因工作不力被炒鱿鱼,这叫做“延时太长,选路原则不合理,换了一个路由器”)
互联网上的路由表总用这种方式在不停传递,如果哪天中心路由器坏了,那完了,与此关联的很多点会找不到目标,你就上不了网啦。
二、路由欺骗
当然,事情总是变化的,小不点和小明吵架了,这些天小不点老是给小暗打电话,小明心里想:“操,他是不是在说我坏话啊?”于是小明决定偷听小不点和小暗的通话,但是他又不能出院子,怎么办呢?小明做了这样一个决定:
首先他告诉自己院里管电话的王大爷说:“你给李大爷打个电话说小暗搬到咱们院子了,以后凡是打给他的电话我来接”, 王大爷没反映过来(毕竟年纪大了啊!)就给李大爷打了电话,说:“现在我来管理小暗的电话了,孙已经不管了”,结果李大爷就把他的通讯录改了,这叫做路由欺骗。
以后小不点再找小暗,李大爷就转给王大爷了(其实应该转给孙大爷的),王大爷收到了这个电话就转给了小明(因为他之前已经和小明说好了),小明收到这个电话就假装小暗和小不点通信。因为小明作贼心虚,害怕明天小不点和小暗见面后当面问他,于是通信断了之后,又自己以小不点的名义给小暗通了个电话复述了一遍刚才的话,有这就叫数据**。
三、DDOS攻击
再后来,小不点还是不断的和小暗联系,而冷落了小明,小明心里嘀咕啊:“我不能总是这样以小暗的身份和小不点通话啊,外一有一天露馅了怎么办!”于是他想了一个更阴险的招数:“干脆我也不偷听你们的电话了,你小不点不是不给我打电话吗!那我让你也给小暗打不了,哼哼!”,他怎么做的呢?我们来看:
他联系了一批狐朋狗友,和他们串通好,每天固定一个时间大家一起给小暗院子传达室打电话,内容什么都有,只要传达室的孙爷爷接电话,就会听到“打雷啦,下雨收衣服啊!”、“人是人他妈生的,妖是妖他妈生的”、“你妈贵姓”等等,听的脑袋都大了,不听又不行,电话不停的响啊!终于有一天,孙爷爷忍不住了,大喊一声:“我受不了拉!!!!”,于是上吊自杀了!
这就是最简单的DDoS攻击,孙爷爷心理承受能力弱的现象叫做“数据报处理模块有BUG”,孙爷爷的自杀叫做“路由器瘫痪”。如果是我,就会微笑着和他们拉家常,例如告诉他们“我早就听了天气预报,衣服10分钟前已经收好了”或者“那你妈是人还是妖”或者“和你奶奶一 个姓”等等,我这种健全的心理叫做“健壮的数据报处理,能够抵御任何攻击”,即使如此,小明找一堆狐朋狗友(肉鸡),一样能让孙大爷挂掉。
孙爷爷瘫了之后,小不点终于不再给小暗打电话了,因为无论他怎么打对方都是忙音,这种现象叫做“拒绝服务”,所以小明的做法还有一个名字叫做“拒绝服务攻击”(DoS攻击),狐朋狗友多了,就叫分布式拒绝服务攻击(DDoS)。
小明终于安静了几天,...
四、ARP和ARP表
几天后,小明的院子来了一个美丽的女孩,名字叫做小丽,小明很喜欢她(小小年纪玩什么早恋!)可是小丽有个很帅的男朋友,小明干瞪眼没办法。当然这里还是要遵循上面的原则:小丽是不能出院子的。那个男的想泡小丽自然只能打电话,于是小明又蠢蠢欲动了:
还记得王爷爷是院子的电话总管吗?他之所以能管理电话是因为他有一个通讯录,又因为同一个院子可能有2个孩子都叫小明,靠名字无法区分,所以通讯录上每一行只有两项:
门牌 电话
一号门 1234567 (这个是小明的)IP地址和MAC地址对应
二号门 7654321 (这个是小丽的)
......
王爷爷记性不好,但这总不会错了吧(同一个院子不会有2个“二号门”吧)?每次打电话人家都要说出要找的电话号码,然后通过通讯录去院子里面敲门,比如人家说我找“1234567”,于是王爷爷一比较,哦,是一号门的,他就去敲一号门“听电话”,如果是找 “7654321”,那他就找二号门“听电话”。
这里的电话号码就是传说中的“IP地址”。
这里的门牌号就是传说中的网卡的’MAC‘地址(每一块网卡的MAC地址都是不一样的,这是网卡的制造商写死在网卡的芯片中的,即是固定的)
所以,注意,ip地址类似于邮寄地址,mac地址类似于身份证。arp表用来做ip和mac映射。
小明心里想“奶奶的,老子泡不到你也别想泡”,于是他打起了王爷爷通讯录的主意,经过细心的观察,周密的准备,他终于发现王爷爷有尿频的毛病(毕竟是老人啊...),终于在一个月黑风高的白天,王爷爷去上厕所了,小明偷偷的摸进传达室,小心翼翼的改了王爷爷的通讯录......
过了几天,小丽的男朋友又给小丽打来了电话,对方报的电话是“7654321”,王爷爷一看通讯录,靠:
门牌 电话
一号门 1234567 (这个是小明的)
一号门 7654321 (注意:这个原来是小丽的,但是被小明改了)
......
王爷爷不知道改了啊,于是就去找一号门的小明了,小明心里这个美啊,他以小丽父亲的口吻严厉的教训了那个男的和小丽之间不正当的男女关系,结果那个男的恭恭敬敬的挂了电话。当然小丽并不知道整个事情的发生...
这里小明的行为叫做“ARP欺骗”(因为在实际的网络上是通过发送ARP数据包来实现的,所以叫做“ARP欺骗”),王爷爷的通讯录叫做“ARP表”
这里要注意:王爷爷现在有两个通讯录了,一个是记录每个院子传达室电话的本本,叫做“路由表”,一个是现在说的记录院子里面详细信息的本本,叫做“ARP表”。
王爷爷的制度中有一条是这么写的“每个月要重新检查一下门牌号和电话的对应本(也就是ARP表)”,这个动作叫做 “刷新ARP表”,每个月的时间限制叫做“刷新ARP表的周期”。这样小明为了让那个男的永远不能找到小丽,之后每个月都要偷偷改一次那个通讯录,不过这 样也是不得不做的事啊!
补充一点,小明是很聪明的,如果通讯录(ARP表)被改成了这样:
门牌(MAC) 电话(IP)
一号门 1234567 (这个是小明的)
二号门 1234567 (注意:这个被小明改了,但是他一时头晕改错了)就是两个MAC对应了一个相同的IP地址
......
就会是计算机就会弹出一个对话框提示“出现重复的IP地址”,最终会导致王爷爷不知所措,于是通知一号门和二号门,你们的电话重复了。这样小丽就知道有人在破坏她的好事,这个现象叫做“骗局被揭穿了”。
小不点知道了小明偷听他和小暗的电话,于是就和小暗约定好了密码。小不点在家里把要说的加密了之后告诉小暗。土豆-〉星期三,地瓜-〉请客,笨蛋-〉小不点家。
于是小不点告诉小暗:土豆笨蛋地瓜。小明听了???不懂。。。。郁闷了。。。这是加密。
除此之外,小丽也知道了小明改他家的电话号码。于是王爷爷就登门一个一个把电话和门牌号记下来。并且藏起来不允许外人修改,只能自己有钥匙(密码)。这是ip地址和MAC地址绑定。当有人改了电话号码的时候,就得找王爷爷改。
麻烦是麻烦了,但是安全了。不过小明偷偷 的把王爷爷的钥匙偷配了一把(盗窃密码成功),于是他还可以修改。
五、ARP欺骗
ARP欺骗的一种情况:
小王、小张都住在一个楼里(A、B计算机在一个网段),要想找到他们,必须通过门口看门的张大爷(网关),而张大爷记性不好,只是根据小张小王告诉他的:我是小王,我在A房来这个记录,告诉来访者,你去A房找小王去吧。正常的情况下,你要找小王,先找到张大爷,然后,张大爷告诉你小王在A房间(计算机A的地址)
假如小张总是跟张大爷说:其实我是小王,其实我才是小王…我在B房呢
于是你来找小王的时候,张大爷就告诉你了小王在B房……结果你把小张当成了小王,你上当了。
还有一种情况就是:
小王中了病毒,病毒不停发ARP包(ip和mac的映射),告诉小张,我是看门的张大爷,还告诉别人,我就是张大爷,你们要出门,得找我。
因为小王不是真正的张大爷,很多看门的活(网关)小王干不了,结果,很多人上不了网或者会去访问不应该去的网站下载病毒,这就是会话劫持。
这次有关瑞星ARP防火墙的风波,简单理解下,是这样的:
小王为防止ARP欺骗,每过一段时间就跟网关张大爷说一次:我是小王,我在A房,您别记错了阿…
一会儿,又来说一遍,张大爷说,哦,我知道了。(KAO,有事没事来问,你丫烦不烦啊。)
问题出现了:
小王不停的喊:“我是小王,我是小王”,喊啊喊,张大爷快被烦死了;如果楼里所有人都不停的找张大爷说这句话.......张大爷不停回应:“知道了知道了”。恐怕这位张大爷,一直不停说“知道了呢”。这人来人往的,个个都这么折腾这张大爷,传达室(网关)被堵得不行。
1、楼道里人来人往的,正常走路受影响(网速变慢,很多ARP数据包传来传去的)
2、这小张,小王,小XX…等等几十上百的人一起喊啊喊啊的,张大爷就得不停的回答:好,知道咧,还要记录下来,也就没时间做别的事情了阿。(使上联的路由器等网络设备的cpu负载满载)
解决办法是什么?
1.别让一堆人都对着张大爷喊,在小范围内广播一下。
2.别喊的太频繁,时间间隔放长些。
用上面那个方法防范ARP病毒和欺骗,某种情况下,是得不偿失的。
对付ARP病毒,最彻底的方法,是在交换机端口和本地端口之间进行双向的IP、MAC绑定,这实在是体力活。能把网管累个死,防毒很关键。