惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LINUX DO - 热门话题
Stack Overflow Blog
Stack Overflow Blog
B
Blog
WordPress大学
WordPress大学
Project Zero
Project Zero
P
Palo Alto Networks Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 司徒正美
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
T
Tailwind CSS Blog
Forbes - Security
Forbes - Security
F
Full Disclosure
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hacker News: Ask HN
Hacker News: Ask HN
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
F
Fortinet All Blogs
Cisco Talos Blog
Cisco Talos Blog
G
Google Developers Blog
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
O
OpenAI News
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
S
Securelist
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
IT之家
IT之家
U
Unit 42
腾讯CDC
S
Security Affairs
C
Cisco Blogs
Schneier on Security
Schneier on Security
The Last Watchdog
The Last Watchdog
B
Blog RSS Feed
宝玉的分享
宝玉的分享
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone
T
The Blog of Author Tim Ferriss

博客园 - ant520

GNS3的使用2 SecureCRT 应用 sql 2000 修复问题 GNS3的使用 虚拟机-文件 无法显示隐藏文件的解决方法 看QQ是否在线 百度地图指南 sql 知识摘录 如何计算冲突域和广播域-图解分析 240多个jQuery插件 C#中使用SQLite数据库 Visual studio 配置文件下载 SQL2000 安装,挂起 委托/事件 在口上打对钩√ DataTab转换XML XML转换DataTable 的类[转] excel 2003系列 全角转半角与半角转全角
配置静态路由使用出站接口和下一跳IP的差别
ant520 · 2011-09-27 · via 博客园 - ant520

在配置静态路由时,下一跳可以使用下一路由器的IP地址,也可以使用本路由器的出站接口。在点对点的网络中,两者可能没有什么差别,但在以太网中,两者有很大差别。

        在以太网中,两个相邻接口之间的通信是依靠MAC地址。相邻接口通信时,需要知道对方的MAC地址,根据MAC地址,将通信数据转换成数据帧后交付给网络,进而到对方。而对方MAC地址的获得,是通过第二层数据帧广播,由ARP协议完成的。

        当静态路由中使用出站接口做为下一跳时,路由器会认为目标网络和接口处在直连网络中。看下图的拓扑:

        在路由器R1中的静态路由为 ip route 192.168.2.0 255.255.255.0 fastethernet0/1 时,R1就认为192.168.2.0/24网络和自己直连。可以在R1中使用 show ip route 命令看出,如下图示:

        在以太网中,直连网络中主机间的通信是通过ARP协议广播来获取到要交付的目标主机的MAC地址的。也就是说,当R1左侧网络中的PC1要和R2右侧网络的PC2PC3通信时,数据传递到R1时,R1看到目标网络是自己的直连网络(由于静态路由中指定下一跳为自身接口所致),于是R1就要在F0/1所处网络发出ARP请求广播,来寻找192.168.2.11/12对应的MAC地址。

        这时,如果R2启用了ARP代理,那么R2将代替PC2PC3应答此ARP请求,也就是说返回给R1192.168.2.1112对应的MAC地址是R2F0/1接口MAC。这样,R1中将产生两条ARP缓存记录,分别为:

        192.168.2.11 R2F0/1MAC

        192.168.2.12 R2F0/1MAC

PC1上分别PING 192.168.1112,然后在R1上使用show arp命令查看到的结果如下图示:

c803.0f8c.0001正是R2F0/1接口的MAC

        R2中没有启用ARP代理时,PC1PC2PC3将不能正常通信。

        从上述实验中我们知道,当R1中使用F0/1接口做为到达目标网络192.168.2.0/24的下一跳时,R1左侧网络中的PC,如果要和R2右侧的192.168.2.0/24网络中的所有PC通信,那么在R1上均会产生ARP缓存记录。可以想象:当双方通信的PC很多时,R1中势必会产生大量的ARP缓存,从而可能会导致R1的内存被耗尽。

        如果R1中到192.168.2.0/24网络的静态路由设置为 ip route 192.168.2.0 255.255.255.0 10.0.0.2,这样的话,R1中到192.168.2.0/24网络的数据包,都只会交付给10.0.0.2R1通过ARP协议来获取10.0.0.2对应的MAC地址,然后将数据包以第二层数据帧方式交付出去。也就是说,R1上只会保留一条ARP缓存信息,即:10.0.0.2    R2F0/1MAC。这样可以避免R1中产生大量ARP缓存而导致内存耗尽。

总结:在配置静态路由时,既可指定发送接口,也可指定下一跳地址,到底采用哪种方法,需要根据实际情况而定:对于支持网络地址到链路层地址解析的接口(直接连到主机)或点到点接口(ppp),指定发送接口即可;对于nbma接口,如以太网接口、VLAN接口、封装x.25或帧中继的接口、拨号口等,支持点到多点,这时除了配置ip路由外,还需在链路层建立二次路由,即ip地址到链路层地址的映射(如dialer map ip、x.25 map ip或frame-relay map ip等),这种情况配置静态路由不能指定发送接口,应配置下一跳ip地址。

如果在点到点网络环境下,无论是指定下一跳地址还是出接口,其效果都是一样的。但是在广播网络环境下,指定下一跳地址和指定出接口将会达到不同的效果。如果指定为出接口的话,那么不管数据包的目标地址是否有效,每次当数据包到达时都会触发一个ARP请求和相应,又因为ARP代理功能在IOS环境下默认是打开的,这就意味着路由器需要配备大量的ARP高速缓存。而如果是指定为下一跳地址的话,仅当第一个去往目标网络的数据包到达时,才会触发ARP请求。

    所以为了便于路由的查找和减少ARP缓存条目过多的办法就是同时指定出接口和下一跳地址。这样做的话,路由条目在路由表中表现为非直连网络,其管理距离值为1。

    EX:ip route 目标网络 掩码 接口 下一跳地址