iptables实现网络中的防火墙

iptables实现网络防火墙的功能

准备:三台虚拟机

Centos7 2 号 ip 192.168.0.105 外网机

Centos5.5    ip 192.168.0.103  192.168.18.131 中间机

Centos7 1号 ip 192.168.18.132 内网机

实验设定:

Centos7 2号是一台外网的服务器。Centos7 1号是内网的一台主机。而Centos5.5是Centos1号所处的内网中的与外网相连的主机(即防火墙)。192.168.0.*是外网。192.168.18.*是内网。

首先。我们把的网络设置成VMnet0桥接模式。内网机设置成VMnet1仅主机模式。中间机要配两个网卡。点击添加加多一个网络适配器即可。

这时候在中间机ifconfig一下就能看到有两个ip地址(127.0.0.1不算。。)

其中192.168.0.103是向着外网的。192.168.18.131是向着内网的

这时候在外网机中要设置一下路由,让在网段192.168.18.0/24的报文转给网关192.168.0.103。就是中间机的外网ip

注:

route –n 列出路由规则

当然内网机也要设置一下路由,让在网段192.168.88.0/24的报文转给网关192.168.18.131,就是中间机的内网Ip

设置好后,我们要在中间机中设置流量转发。

接着我们用外网机ping一下内网机。发现可以Ping通的

内网机中Ping外网机,也可以Ping通

这时,中间机就起到了流量转发的作用。像一个桥梁让内网机和外网机能够正常通讯。接着我们在中间机中设置iptables。让它真正起到防火墙的作用。因为是流量转发,所以要操作的链是FORWARD链。我们先开启外网机的nginx。

为了安全,我们在规则中添加一个拒绝所有请求的规则。

这时候外网机就不能ping通内网机了。因为中间机设置了规则拒绝所有请求。

假设想让内网机能访问外网机的80端口。那我们就要在FORWARD链中允许通过80端口的进和出。只需要设置发送请求方是内网机时,要发送的目标端口是80,接受回应方是内网机时,要发送回应的端口是80即可。

图解

此时内网机呵外网机互ping也是ping不通的,但内网机可以请求外网机的80端口。用curl测试。

我们再让内网机能ping通外网机,但外网机不能ping通内网机。Ping命令是使用icmp协议的,那我们让

可以发现。一般配置iptables都是双向的。即要让内网机的请求能通过,也要让外网机的回应能通过。

可以看到,内网机已经可以Ping通外网机了。

而外网机Ping内网机是不行的

这时iptables已经发挥了它防火墙的作用了。

扩展:

这样子双向性的写两遍规则有些麻烦,也不易阅读。不过所有返回的报文我们可以用一条规则来全部承包,就是我们之前用的state模块。

我们先把之前的回应的规则给删了。

接着我们增加一个规则。

再在内网机中请求外网机80端口和ping外网机。也是可以的。

 

猜你喜欢

转载自blog.csdn.net/xiaopan233/article/details/82956062