设为首页 收藏本站
查看: 833|回复: 0

[经验分享] Cisco与Linux的NAT

[复制链接]
YunVN网友  发表于 2018-7-15 07:06:01 |阅读模式
Linux一直以来都使用基于连接跟踪的有状态NAT,虽然xtables-addons里面实现了无状态的静态NAT,即RAWNAT,和Cisco的NAT实现相比还是不够灵活,本文给出一个全局意义的解释,虽然这种解释对于实际的配置没有什么帮助,但是可以帮助你更好地理解Linux和Cisco的系统构建。1.Cisco的方案
Cisco路由器显式的将inside和outside的概念邦定于物理接口,然后根据数据流的方向来定义NAT规则。使能NAT以后,系统中就会存在一张两个方向的NAT映射表,该表的表项如何填充取决于NAT是静态的还是动态的,如果是静态的,那么两个映射表在配置完成后填充,如果是动态的,那么表项在数据包第一次匹配到access-list的时候填充。Cisco的NAT配置如下:  内网出去时的源地址转换:
  ip nat inside source(dynamic,static)/ip nat inside destination(static)
  内网出去时的目标地址转换:
  ip nat inside destination(dynamic,static)/ip nat outside source(static)
  外网进内网的目标地址转换:
  ip nat outside destination
2.Linux的方案
Linux从内部规定了数据包必须经过的5个HOOK点,在这些HOOK上执行,Linux的接口仅仅是一个match,NAT完全根据逻辑意义的字段进行配置,和物理接口没有任何关系。Linux的系统中没有类似Cisco的全局的NAT双向映射表,Linux的NAT表仅仅是一个target,针对所有match都匹配的数据包起作用,协议栈不会针对每一个数据包来查询NAT表以获得是否需要NAT的信息。Linux的NAT配置如下:  内网出去的目标地址转换:
  iptables -t nat -A POSTROUTING $MATCHES -o $outside  -j SNAT --to-source
  内网出去的目标地址转换:
  iptables -t nat -A PREROUTING $MATCHES -i $inside  -j DNAT --to-destination
  外网进内网的目标地址转换:
  iptables -t nat -A PREROUTING $MATCHES -i $outside  -j DNAT --to-destination
3.对比
上述分析可见,Linux的NAT是针对matches在数据包的内核路径特定方向上做的一个动作,matches是必须的(即使它是空),而Cisco的NAT则是针对不同进出网络的方向的数据所做的动作,matches被独立抽出来作为一个access-list只针对动态NAT有效。  对于Linux的实现而言,由于IP本身就是一个match,所以没有办法直接使用一条iptables规则实现类似Cisco的static nat,iptables的nat的match和target都涉及到了地址本身,也就是说强制执行下面的逻辑:只要满足某些情况,就执行某个动作!对于nat而言,执行的动作只有转换到转换后的地址,此时必须需要一个明确的match,否则将针对所有的过路包进行相同的转换,目前的iptables无法支持变量,也不支持“与”和“或”,因此远没有Cisco的nat灵活。
  对于Cisco的实现而言,动态nat和Linux的iptables实现类似,只是把match剥离出来了,此处的match就是access-list,其动作就是一个pool,这个和iptables的target是一致的,至于inside和outside,只是Cisco为接口定义的角色,不是核心。Cisco的static nat可以理解为下面的逻辑:请将源地址A转换为源地址B,同时反向将目标地址从B转换为A!这是一个祈使句,而不是Linux iptables的条件句,因此Cisco的static nat是在两个方向有效的,如果是inside的source nat,由于映射是立即生效的,所以相当于outside的destination nat也添加了,而对于Cisco的动态nat,则必须限定数据的发起方向了。
  最后我们来看一下Cisco和Linux的NAT图示:
  a.Cisco NAT:

  
  b.Linux NAT:
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-537226-1-1.html 上篇帖子: After Interview of Cisco-rnmichelle 下篇帖子: 【资料整理】cisco [acl]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表