找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9089|回复: 17

[其它] (原创) 对nat的理解

[复制链接]
发表于 2008-6-14 11:30:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
学习ros两个月了,一直在潜水,看了关于nat回流的说法不太统一 下面我谈下我的看法。
    ROS防火墙进行过滤和转发是基于包的,关键就在这个包上,那么我们就先得了解下包的构造
因为这里讨论的是nat转换,所以重点就看下源地址和目标地址,其它的我统称为data,下面就是一个包了
看图:
包.JPG

现在我们来看下例子:
假设我们有个公网地址是:200.100.2.3
内网设为:192.168.0.0/24
现在来看下一台内网地址为192.168.0.6的电脑点了新浪网(218.30.66.101)的情况:
1.
从192.168.0.6发出发往新浪网(218.30.66.101)的数据包,那么包的源地址就是192.168.0.6咯,目标地址是218.30.66.101
2.
包到达ros,这里进行源地址转换(srcnat),把内网地址192.168.0.6转换为公网地址200.100.2.3,目标地址不变
这里大家可以想下,如果不进行srcnat,这个包到了新浪网,然后新浪返回的包的目标地址就是192.168.0.6,这个地址
是私有地址,公网上的路由设备是不认识的,不知道把它转发到那去,这条从内网192.168.0.6到新浪网的线路就不通咯
3.
从ros出来的包通过一些路由的转发,到达新浪网,然后从新浪发出返回的包,源地址是新浪的ip:218.30.66.101,目标地址是
ros所在的公网地址200.10.2.3
4.
从新浪返回的包通过路由到达我们的ros,在这里进行目标地址转换(dstnat),ros看了,哦,这个包是原来192.168.0.6申请连接
返回来的包,那就要把公网地址200.100.2.3转换为192.168.0.6咯
5.
包到达192.168.0.6,我们看到了新浪网的内容,唉,湖人又干败了,现在总比分是1比3落后咯
看图:
daoxinlan.JPG daoneiwang.JPG

所以在ros的nat里的规则就是:
/ ip firewall nat
  
add chain=srcnat src-address=192.168.0.0/24 action=src-nat \
    to-addresses=200.100.2.3 to-ports=0-65535 comment="" disabled=no


下面我们看下端口映射:
其它的同上,假设架设web服务的内网地址是192.168.0.254,端口是80
这样一个外网用户访问这个web页时发生的情况,看图:
duankou.JPG

在ros里的规则就是:
add chain=dstnat dst-address=200.100.2.3 protocol=tcp dst-port=80 \
    action=dst-nat to-addresses=192.168.0.254 to-ports=0-65535 comment="" \
    disabled=no
解释就是:ros只要看到协议是tcp且目标地址是200.100.2.3目标端口是80的包,就把它的目标地址转换为192.168.0.254
          这样外网的用户访问我们的web页就相当于访问了我们的内网192.168.0.254咯


再看下回流:
通过上面的理解我们可以知道,如过是ip为192.168.0.6的电脑用公网ip访问192.168.0.254这个服务器,那它发出的包就图:
huiliu.JPG

在ros里的规则就是:
add chain=srcnat src-address=192.168.0.0/24 action=src-nat \
    to-addresses=200.100.2.3 to-ports=0-65535 comment="" disabled=no
对于让ros自动转换的,也就是用masquerade这条规则的可以看下winxp2000大大的文章
http://bbs.router.net.cn/read.php?tid=8572
规则是:add chain=srcnat src-address=192.168.0.0/24 action=masquerade comment="" \
    disabled=no

现在大家在来看看http://bbs.router.net.cn/read.php?tid=239这篇文章,
我认为4楼njhhack的说法是正确的,我对nat的理解也是看了njhhack以前的文章才明白的先谢下
当然让大家看这两篇文章是为了大家有个比较,这样理解更深点
好了,就写到这,有错误的地方还请各位大大批评指证
routeros
发表于 2008-6-14 18:02:43 | 显示全部楼层
哈哈,不错收藏了
routeros
回复

使用道具 举报

发表于 2008-6-14 18:48:43 | 显示全部楼层
支持原创
routeros
回复

使用道具 举报

发表于 2008-6-15 02:04:09 | 显示全部楼层
呵呵,找了好久,还算明白,谢谢!!!
routeros
回复

使用道具 举报

发表于 2008-6-15 18:35:23 | 显示全部楼层
好文章,就是无法解决内网访问内网WEB后显示真实IP的问题
routeros
回复

使用道具 举报

 楼主| 发表于 2008-6-16 16:03:54 | 显示全部楼层
这个就要用到回流了
ros不同版本的回流设置可能不同
你的ros版本是那个?
srcnat那里是如何设置的?
routeros
回复

使用道具 举报

发表于 2008-6-16 19:44:41 | 显示全部楼层
对楼主的研究加上2条,根据我的研究,防火墙的策略一定要有顺序,要有先来后到极其指定,这样少费很多弯路,特别要指定inteface口,这样的话策略才显的专业,比如限速,上传和下载的网卡指定很关键的!所以要专业哦,现在啃FREEBSD,一个道理,明白了防火墙他就是一张纸,关键在于自己的思维和理解力!
routeros
回复

使用道具 举报

发表于 2008-6-16 21:55:43 | 显示全部楼层
我的ROS是2.9.27的.图:这是回流设置.就是内网访问内网WEB后无法显示真实IP

[ 本帖最后由 ypw 于 2008-6-16 21:57 编辑 ]
1.jpg
2.jpg
routeros
回复

使用道具 举报

 楼主| 发表于 2008-6-17 22:01:49 | 显示全部楼层
端口映射:
add chain=dstnat  dst-address=外网ip protocol=tcp dst-port=80 \
    action=dst-nat to-addresses=192.168.0.254 to-ports=0-65535 comment="" \
    disabled=no
回流:
add chain=srcnat   src-address=192.168.0.0/24 action=src-nat \
    to-addresses=外网ip to-ports=0-65535 comment="" disabled=no
这样就可以了

另外你内网有几台电脑?
咋srcnat的src.address 172.16.0.0后面的掩码位数是16
你把你nat表里的规则都发上来看下(包括dstnat  srcnat)
routeros
回复

使用道具 举报

发表于 2008-6-20 08:54:02 | 显示全部楼层
add chain=dstnat dst-address=外网IP   protocol=tcp dst-port=80 \
    action=dst-nat to-addresses=172.16.0.101 to-ports=80 comment="映射" \
    disabled=no
add chain=srcnat out-interface=lan src-address=172.16.0.0/16 \
    dst-address=172.16.0.101 protocol=tcp dst-port=80 action=src-nat \
    to-addresses=外网IP     to-ports=0-65500 comment="回流" disabled=no
就是这样的
内网有一百多台机子,这是公司做的时候就有的172.16.0.0/16的IP,后来也懒得改。
routeros
回复

使用道具 举报

发表于 2008-6-20 19:00:45 | 显示全部楼层
佩服楼猪的精神
routeros
回复

使用道具 举报

 楼主| 发表于 2008-6-20 20:51:44 | 显示全部楼层
ypw兄,你的做法内网电脑用公网ip或公网域名
来访问内网web服务器时可以正确回流了

如果内网电脑访问内网web页用的是web服务器的内网ip也就是http://172.16.0.101
这样只会显示内网ip,因为这样的包根本没经过ros,只经过交换机,不知道我这样理解对不对.

还有你的nat表应该还有其它规则吧,就这两条的话你的内网电脑是上不了internet的

[ 本帖最后由 xsjzjd88 于 2008-6-20 21:03 编辑 ]
routeros
回复

使用道具 举报

发表于 2008-6-21 20:28:38 | 显示全部楼层
谢谢xsjzjd88老兄,我的回流是可以的, 我说的是当内网访问我的内网WEB服务器时,WEB服务器无法正确显示内网IP,显示的都是我的外网IP.
routeros
回复

使用道具 举报

发表于 2009-3-20 15:25:59 | 显示全部楼层
好文章,原来一直不明白nat转换是什么意思。总算明白了。现在网上一些高手讲的都是术语,作为差生的我,只能把名词记下来,一个一个去理解。难道碰到这样深入又易懂的文章。真是感谢啊
routeros
回复

使用道具 举报

发表于 2009-4-16 10:47:12 | 显示全部楼层
非常感谢楼主!
包到达ros,这里进行源地址转换(srcnat),把内网地址192.168.0.6转换为公网地址200.100.2.3,目标地址不变
这句话给我很大启示!在此表示感谢
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-6 05:03 , Processed in 0.096836 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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