防火墙的目标地址转换和源地址转换
来源:互联网 发布:淘宝新店铺开业宣传语 编辑:程序博客网 时间:2024/06/05 22:35
本文转自:http://blog.csdn.net/worldoom2012/article/details/50681202
网络结构非常简单:外网-防火墙-内网。内网中架有网站,在外网使用域名访问。内网中机器需要上外网,也需要用域名互访。 在这种情况下,地址转换规则应当这样配:
外网访问内网,只需要做目标地址转换,不需要做源地址转换。
内网通过域名访问内网,除了做目标地址转换,还必须做源地址转换。
上面第一条有一种“例外”情况,就是网关配置错误的情况,比如我们遇到的:内网a有 2 块网卡,都配置了同一网段的内网地址,并且每块网卡都配置了网关。由于是同一网段,所以两个网关是一样的。 在这种情况下,外网访问也必须做源地址转换, 否则内网能收到请求,但处理结果无法返回外网,外网看到的结果是没有回应。
防火墙数据包转换发送原理:
外网访问内网,正常处理过程应该是这样的:
1、防火墙收到外网访问请求数据包,格式中包含【防火墙外网IP 外网用户IP】
2、防火墙进行目标地址转换(外网访问内网的必须条件add),数据包变成【内网IP 外网用户IP】
3、内网服务器收到请求,进行处理,返回结果数据包【外网用户IP 内网IP】, 由于目标地址是外网IP,所有经过路由,此数据包被发向网关(防火墙)
4、针对返回数据包,防火墙做目标地址转换的反操作(2步骤中,防火墙维护表->记录目的地址转换信息add), 数据包变成【外网用户IP 防火墙外网IP】
5、数据包发回请求用户。
刚才说到的“例外”情况,问题就出在步骤 3,内网服务器返回结果数据包中, 内网IP 不是防火墙指向的那个 IP,而是这台内网服务器的另一个 IP 地址, 也就是说内网服务器通过网卡1接受了请求,却从网卡2发送返回数据。 这样的数据包到了防火墙之后,目标地址转换的反操作会失败(内网IP 不一致), 所以数据依然会通过防火墙发给用户,但却是一个新的 TCP 会话/连接, 无法和原先的用户请求包对应。 结果就是新的数据包到了用户那里,不知道是给谁的,而用户原先发送的请求,也一直“收不到”回应数据包。 外在表现就是用户看到请求发送成功,却没有回应。
在这种情况下,如果同时做了源地址转换是能够通的,处理过程如下:
1、防火墙收到外网访问请求数据包,格式中包含【防火墙外网IP 外网用户IP】
2、防火墙进行目标地址转换,数据包变成【内网IP 外网用户IP】,进行源地址转换,数据包变成【内网IP 防火墙/网关IP】
3、内网服务器收到请求,进行处理,返回结果数据包【防火墙/网关IP 内网IP】, 由于目标地址仍然是防火墙/网关IP,所以防火墙能够找到相应的连接, 会接受数据包并进行处理。
4、针对返回数据包,防火墙做源地址转换的反操作,数据包变成【外网用户IP 内网IP】, 做目标地址转换的反操作, 数据包变成【外网用户IP 防火墙外网IP】(R)
5、数据包发回请求用户。
可以看到,即使(R)操作失败,由于防火墙已经将内网服务器返回数据包和防火墙接收的外网用户请求连接成功对应,结果数据包的目标地址也成功转换成了外网用户IP, 所以数据能够成功发回请求用户,并和用户请求会话/连接相对应。
从另外一个角度看,外网访问做双向地址转换虽然可行,但有一个缺点, 就是数据包到达内网服务器时,外网用户IP 被转换成了防火墙/网关IP, 这样内网中的应用程序就无法获取外网用户的真实IP了, 只能看到请求来自防火墙/网关IP。
内网通过域名访问内网:
上面的都理解之后,内网通过域名访问内网为什么必须要做双向转换就清楚了。问题同样出在接受请求的服务器处理完,发送返回数据包时。
内网b通过域名访问内网a,在没有做源地址转换时的情形:
由于是通过域名访问,所以请求数据通过防火墙转发给内网a,用户IP是内网b地址(这是关键)
内网a处理完毕发送结果数据包,返回数据包的目标地址就是内网b的地址由于同在一个子网内,数据包会通过交换机直接发向内网1,不过防火墙
问题产生了,在内网b上,请求数据直接发向防火墙,返回数据直接来自内网a,不对应,又是没有回应数据包的情形。
如果同时做了源地址转换,问题就能够解决。因为内网b的请求数据在通过防火墙时, 用户地址(内网b IP)会被转换成防火墙/网关IP, 返回数据包也就会发往防火墙/网关IP,再被防火墙转换发回内网b,不存在内网b和内网a的直接对话,TCP 数据包也能对应上,访问就没有问题了。
- 防火墙的目标地址转换和源地址转换
- 防火墙的目标地址转换和源地址转换
- 防火墙的目标地址转换和源地址转换
- 防火墙的目标地址转换和源地址转换
- 华为防火墙地址转换配置
- 名字和地址的转换
- iptables实现网络防火墙及地址转换
- 防火墙之地址转换SNAT DNAT
- 目的地址和ARP地址应答中的源地址
- 域名和地址转换
- 名字和地址转换
- C# IP地址和整数之间的转换,IP地址和数字ip地址的转换
- 理解Cisco PIX 防火墙的转换和连接
- Mac地址和字符串之间的转换
- IP地址和数字的转换
- Mac地址和字符串之间的转换
- 强制类型转换和地址的输出
- 防火墙网络组建 源地址通配符
- 早期递归神经网络初探
- 【解题报告】Codeforces Round #383 (Div. 2)
- github项目之下拉刷新(一)
- 在BootStrap的modal中使用Select2搜索框无法输入
- tail -f :无法监视"20161211.log":设备上没有空间
- 防火墙的目标地址转换和源地址转换
- github项目之下拉刷新(二)
- 测试打包步骤
- 关于计算机中如何强制删除一些文件
- AJAX 跨域请求 - JSONP获取JSON数据
- 利用udev为Linux 设备文件创建符号链接
- 前端安全之XSS攻击
- 使用putty连接VirtualBox上的CentOS 7
- pip win10 升级问题