博客 > 术业专攻> Linux基础> 防火墙> 防火墙基础知识之DNAT详解 2019年08月29日 11:26:23
一般情况下,企业当中的服务器都是局域网中的,那么一个外网IP的客户端来访问服务器,是怎么做到的呢?
如下图解析:
当外网客户端访问内网主机,当然只能访问到网关服务器的IP(目标地址),此时经过网关服务器里边防火墙规则的设定,会将客户端请求的目的地址转换成内网服务器的IP,请求到达内网服务器,处理完之后,再返回给网关服务器,网关服务器再发给外网客户端。
现在让我们来通过实验来验证:
主机A:模拟内网服务器 | eth0 192.168.66.10 | |
主机B:模拟网关服务器 | eth0 192.168.66.20 | eth1 200.200.200.10 |
主机C:模拟外网主机 | eth0 200.200.200.20 |
条件
:
1, 内网服务器(也就是主机A)
。
a)安装httpd
,并写入测试网页。
yum -y install httpd echo “11111” > /var/www/html/index.html service httpd start
b) 内网服务器指定默认网关为网关服务器的内网IP(如果不指定,则数据包回不去)
route add default gw 192.168.66.20
2, 网关服务器(也就是主机B)
支持IP路由转发,并编写DNAT转换规则。
a) vim /etc/sysctl.conf
其中的net.ipv4.ip_forward = 1 #开启转发 sysctl -p #加载一下
b) 添加防火墙规则。
iptables -t nat -A PREROUTING -i eth1 -d 200.200.200.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.66.10
解释这条规则如下:
在防火墙的nat
表当中的PRETROUTING
链上添加(-A)一条规则,规则是一个请求进来时(-i INPUT
),请求我eth1
(即目标地址是200.200.200.10
)的,而且访问请求的端口是80
的,那么我做的动作
(-j)是将他的目标地址修改(DNAT
)为192.168.66.10
查看一下刚刚添加的防火墙规则:
测试
:
在刚才设置防火墙规则时,看到有别人访问的端口,这个时候也可以加上转到内网服务器的哪个端口,以“IP:Port”的形式指定。
iptables -t nat -A PREROUTING -i eth1 -d 200.200.200.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.66.10:8000
这个时候就实现了,如果客户访问的是正常的apache服务,那么到达我内网服务器时实际访问的是一个叫8000的端口的东东。
事实上在企业当中,常规情况来说,很少有使用一个服务器的这种系统性的防火墙了,而都是采用实体的防火墙放在前边,然后把服务器都藏在后边,而诸如上边的那些防火墙规则,以及端口映射之类的操作,一般也都通过web端进行操作了。不过,尽管如此,我们详细的理解这些操作背后的原理对以后排查故障之类的,都是非常有帮助的。
© 2018 www.qingketang.net 鄂ICP备18027844号-1
武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号
扫码关注,全站教程免费播放
订单金额:
支付金额:
支付方式: