扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
2.2 NAT原理
2.2.1在进入NAT设置之前,我们要先讨论一下NAT的工作原理。在引言部分,我们已经提到了一个NAT应用实例,从这个实例中可以看出NAT和防火墙是一体的,换句话说,NAT就是防火墙。NAT对防火墙来说是子集的关系。在本节,我们会深入讨论NAT的原理部分,为了更清晰的认识NAT,我们借用INTERNET标准化组织发布的RFC3022文档的部分内容。
NAT有三种类型:静态NAT(Static NAT)、网络地址端口转换DNAT(destination- NAT)、动态地址NAT(Pooled NAT)。我们主要讨论前面2种nat.
静态nat解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址在Internet上使用,其具体的做法是把IP包内的地址域用合法的IP地址来替换。NAT设备维护一个状态表(路由表,所以也称NAT为软路由),用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址,发往下一级,这意味着给处理器带来了一定的负担。但对于一般的网络来说,这种负担是微不足道的。
网络地址端口转换NAT,也叫做反向NAT,他解决问题的方法是:在内部网络中,使用内部地址的计算机开设了网络服务(80,21等),当外部ip想访问这些服务时,NAT网关把外部访问ip翻译成内部ip,也就是说,把内部开设的服务,映射到一个合法的ip和端口上,已供外部访问。
假如想进一步了解他的工作原理,NAT其实就是一种IP包欺诈,也可以说是对IP报头的修改。NAT网关(外202.204.208.5;内192.168.0.1)收到本地局域网内的客户机(192.168.0.2),发来的ip数据,先判断是否是本地子网中发来的,假如通过,则按照她的目的ip地址查找本地路由表进行转发,NAT在包被继续向前送出之前转换32位源地址 192.168.0.1成202.204.208.5。相应的,IP包往回传时依据相同的地址进行转换。
2.2.2 NAT设置
我们知道了NAT的原理,就可以进行NAT的配置了,我们前面说过了NAT就是防火墙,在RED HAT9.0下自带防火墙 IPTABLS。我们在做好网络设置后,假如要实现客户端(win98)通过服务端上网(静态NAT),可以在命令行下直接打入:
|
说明:
-t nat : 调用nat表,调用这个表说明遇到了产生新的连接的包。
-A :该命令将一条规则附加到链的末尾。
POSTROUTING:指定正当信息包打算离开防火墙时改变它们的规则。
-o eth1:输出接口为ETH1
-j SNAT:跳转,也叫触发条件,当满足Snat规则是便发生跳转。
整条语句的意思为: 当防火墙遇到产生新的连接的包,则在他要离开防火墙时改变他的源ip为202.204.208.5并且从ETH1出口送出。
nat的规则指定完成后,还要打开IP转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
这样,客户端就可以通过208.5上网了。假如208.5的客户端192.168.0.2开设了80端口的web服务,如何让外部访问到这个局域网内部的服务呢?这就用到了Dnat(也叫反向nat,端口跳转),在命令行下打入:
|
语句说明:当有通过eth1接口的tcp协议访问202.204.208.5的80端口的时候,则触发跳转,跳转至局域网的192.168.0.2的80端口。但是这同时也出现一个问题,在同一局域网内的机器,无法访问202.204.208.5的80端口。以下是原因:假设192.168.0.3不通过http://192.168.0.2:80这种方式进行浏览。在命令行下打入:
|
语句解释:当192.168.0.1-255这个范围的ip访问192.168.0.2这个ip的时候,当数据包离开的时候修改源ip地址为 192.168.0.1,这相当于在局域网内部,又作了一次NAT转换。局域网内部通过192.168.0.1作为转发,而不是直接进行通信,这就避免了无法访问局域网内部ip的情况。目前,nat的功能就已经实现,但是并没有对包进行过滤。
濠碘€冲€归悘澶愬箖閵娾晜濮滈悽顖涚摃閹烩晠宕氶崶鈺傜暠闁诡垰鍘栫花锛勬喆椤ゅ弧濡澘妫楅悡娆撳嫉閳ь剟寮0渚€鐛撻柛婵呮缁楀矂骞庨埀顒勫嫉椤栨瑤绻嗛柟顓у灲缁辨繈鏌囬敐鍕杽閻犱降鍨藉Σ鍕嚊閹跺鈧﹦绱旈幋鐐参楅柡鍫灦閸嬫牗绂掔捄铏规闁哄嫷鍨遍崑宥夋儍閸曨剚浠樺ù锝嗗▕閳ь剚鏌ㄧ欢鐐寸▕鐎b晝顏遍柕鍡嫹
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者