最新消息:

变态NAT之技术挑战

Cisco admin 3162浏览 0评论

变态NAT之技术挑战     原创:wildlee

这个技术问题是红盟技术QQ群里一位朋友提到的,我感觉没有什么实际意义。不过,这个题到时可以让我们发挥思考,对自己一种基础知识考核,如果你喜欢,欢迎尝试。

如图所示,主机wildlee访问互联网要经过路由B,然后在从路由器A上将IP分组发送到Internet。A与B路由都位于网络内部,且ISP只分配了一个公网IP地址到这个网络,现在要让B路由连接的这个wildlee内部网络访问Internet.我说下BT的限制,A不能做NAT转换,B要做NAT转换,也就是说A与B只能进行一次NAT转换,这个动作要发生在B身上,不能在A路由上发生,最后还有那个A与B之间要用三层路由技术通信。现在大家可以发挥你的想象力,试解决一下,想不出来继续往下看[这个问题在你思考之后不能解决在看,如果直接去看答案,这个东西对你来说没有意义,不能让你学习到知识]。

有了问题以后,我们聊下解决思路吧!以下方法都经过了实际的验证,确实可行。

1.我的方法是将公网IP地址配置到A路由器接口S0/0,以实现对外通信。这里有两个条件要考虑下,如果对外是以太网连接,ISP与A有同网段IP,可以让ARP成功请求对方的MAC.当然,如果是串行的话,这样就不重要了[以太连接或串行连接,对目标地址的需求情况还有IP网段通信问题]

2.然后配置路由器B,分别配置AB之间的IP地址在接口F1/0,B的内部接口地址F0/1,这个地址是哪个网段的不重要,重要的是让它们通信就好。接着我们在B路由器上配置NAT,将wildlee内部网络地址转换成公网IP地址,也就是被配置到A路由器接口S0/0上面的IP地址。[用来做NAT转换的地址,不一定要配置到这个路由器上]

3.这个应该是最难的一步,这个要充分考虑到内部路由通信问题。先看路由器A,一个公网地址被配置于S0/0接口,那么路由器A通过此地址将安装一条网络S0/0路由表条目路由表中。试想,我们这个通信的过程,如果主机wildlee发送一个IP分组到ISP的情况,它在经过路由器B的时候,源地址被NAT转换,目标地址不变,B查路由表转发,这个时候要注意,我们要给B配置一条对外的默认路由。当IP分组达到A之时,A毫无问题的将这个分组转发出去,它也不会检测源地址是什么,当然A路由器也要有对外的路由条目。在此我们看到现在单向通信成功,但是返回是否成功呢?[通信细节分析]

4.当ISP将IP分组传送到路由器A,路由器A这里可就问题了,因为路由表目标地址指向接口S0/0,说明这个分组已经到站了,将不在转发。怎么办?这里我们可以利用最长路由匹配原则,我们在路由器A加入一条路由,掩码长度要比配置到接口S0/0的长,下一跳指向B路由器接口,这样会成路由器A中安装一条更明细的路由条目指向B,当路由A收到IP分组时按最长匹配查路由表转发,最终B得到了回复数据包。[路由技术中查表与匹配原则]

5.这里我们有一点要特别注意,就是在A添加子网路由的时候,一定要指B的IP地址,不能指自己的接口地址,因为以太连接,下一跳指接口地址,认为是直连,会造成什么后果?这样在转发IP分组的时候,会直接请求目标IP的MAC地址,因为B根本没有此地址,所以最终通信失败,A无法转发分组。[路由技术中以太连接指接口与下一跳区别]

6.最后我说一个要注意的点,在路由A中加入了被最长匹配的路由,可以说访问internet没有问题了,但是如果你访问与你公网地址在同一个网络中的IP,ip分组将无法发送到目标了,嘿嘿!因为最长匹配被指向了内部接口,所以我们要为访问的IP在A中加入主机路由,下一跳要指接口,不能指目标IP。我做实验的时候没有指也通信了,因为我这前与这个目标IP通信过,路由A有目标的MAC 地址,然后CEF根据MAC与ARP表生成了主机路由,串行的情况下可不行哦。[CEF对直接设备的路由影响]

这个是午夜兄的方法,其大意相同,环境是ISP与A路由用以太连接。原理用的是代理ARP技术,这个公网IP地址不用配置在路由A上。在A路由对外的接口上开起ARP代理,以使ISP路由能够获取到A路由的MAC,其次在A路由中,还得为ISP的IP地址指定一个静态的路由,让A知道对于回复的ARP请求发向哪个接口,当然这里也不能少了指向路由B的公网IP地址路由条目。[来源于午夜“在H3C路由器中,配置到路由器接口上的ip地址,会在路由表中生成一条主机路由”,所以最长匹配方法可能不可行,但是用代理ARP可以。]

今天先聊到这里,午夜兄还提到一个方法不过还没有测试,欢迎大家交流探讨学习。

wildlee博客

转载请注明:爱开源 » 变态NAT之技术挑战

您必须 登录 才能发表评论!