一、基于NAT的防火墙策略
原理:通过配置防火墙策略,实现内网可以通过防火墙访问外网,外网不能主动访问内网,保证了局域网的安全性。
上图为本次实验的简略图。
准备工作:外网设为桥接模式,内网设为仅主机模式,防火墙两个模式都有。
步骤:
- 首先把所有的不必要的防火墙策略关闭,以防止实验出现失误。
Centos6版本关闭防火墙:iptables –F
Centos7版本关闭防火墙:systemctl stop firewalld,iptables –F
- 配置网关
外网要想访问内网,必须经过路由,所以要配置网关,这里防火墙担当路由的功能。相同的,内网也要配置网关。
在这里internet配置网关:route add default gw 172.17.0.102
内网配置网关:route add default gw 192.168.58.161
- 配置防火墙策略
iptables -A FORWARD -s 192.168.58.170/24 -d 172.17.0.200/16 -m state --state NEW -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -j REJECT
以上要配置三条防火墙策略,原因是:第一条配置的是允许内网先发起第一次请求访问外网,第二条配置的是允许已建立的连接返回,第三条配置的是拒绝所有的连接,这三条的顺序是2、1、3,这样的顺序是遵照防火墙的规则,范围小的排在上面。
- 测验
用内网去访问外网,可以
用外网访问内网,不可以
二、基于SNAT的防火墙策略
- 原理:基于源ip地址的网络地址转发。局域网通过防火墙访问外网的时候,会通过地址转发,把局域网的Ip转换成和外网同样的网段,这样外网和局域网在一个网段了,就不需要设置网关了。
- 上图为内网访问外网的转发路径,当内网为192.168.58.170要访问172.17.0.200时,防火墙会把192.168.58.170转换成172.17.0.102,再去访问外网。这就是SNAT。
- 具体实现:
- 检查外网是否设置网关,若有,删除,因为不需要网关,由图看出172.17.0.102和172.17.0.200是在一个网段。关闭之前的防火墙策略,防止实验失败。
- 删除网关:route del default gw 172.17.0.102
- 关闭之前的防火墙:iptables –F FORWARD
- 配置防火墙策略
- iptables -t nat -A POSTROUTING -s 192.168.58.170/24 -j SNAT --to-source 172.17.0.200
- 测试
- 使用内网直接去连接外网
- ping 172.17.0.200
三、基于DNAT的防火墙策略
- 原理:基于目的ip的网络地址转发。和SNAT正好相反,外网通过防火墙的ip转发,能够访问内网。
- 步骤:
- 打开httpd服务,外网,防火墙,和内网的httpd服务。
- 删除之前的防火墙策略
- iptables –t nat –F POSTROUTING
- 配置防火墙策略
- iptables -t nat -A PREROUTING -d 172.17.0.102 -p tcp --dport 80 -j DNAT --to-destination 192.168.58.170:80
- 测试
- 使用外网访问防火墙ip,防火墙会转至内网Ip.下图为内网的html界面,是通过防火墙转到得。
四、基于REDIRECT的端口转发
- 原理:假设本机没有80端口,当外来主机要访问本机的80端口时,默认使其访问8080端口,就是默认转至本机的8080端口。
- 步骤:
- 准备工作:查看有无80端口,若有,则改为8080,为实验的需要。
- vim /etc/httpd/conf/httpd.conf
- listen 8080
- 之后重启httpd服务即可。
- 查看8080端口:
- 配置防火墙策略
- 清空之前的策略:
- iptables -t nat -F PREROUTING
- 配置新的策略:
- iptables -t nat -A PREROUTING -d 172.17.0.102 -p tcp --dport 80 -j REDIRECT --to-ports 8080
- 测试
- 在另外一台主机测试访问本主机的80端口,看是否会转至8080端口
时间: 2024-10-06 15:54:45