实验目的:三台虚拟机,win7客户机作为内部局域网的终端设备;中间的Linux-2作为内部局域网的网关以及连接外网的设备;Linux-1作为外网的web服务器设备。最后在Linux-2或者Linux-1上面做iptables防火墙条目来限制禁止win7客户端的访问。
首先给外网服务器Linux-1配置作为外网的IP地址,别忘了网关地址,还有子网掩码不能错。
使用命令ifconfig查看网卡配置,然后启用httpd网站服务。
在这里简单介绍一下IPtables防火墙,它由四张表格组成其中主要的控制表格有nat表格和filter表格,还有SNAT(源)和DNAT(目标)网络地址转换条目。
在表格的下一级是规则链在nat和filter中包含的规则链有,INPUT进站规则链;OUTPUT出站规则链;FORWARD转发规则链;PREROUTING路由转发前规则链;POSTROUTING路由 转发后规则链。
在上述的五种规则链中添加相应的规则条目,相当于ACL语句。
使用iptables -L不加参数,默认查本机的filter表格内容,然后加-t选项可以查看nat表格的内容。
使用iptables -F不加参数,默认清空iptables的filter表格内容。
使用命令netstat -ntap查看本机所有开启的TCP协议,“-nuap”选项是查看本机所有UDP协议的开启状态。
Linux-2查看一下网卡参数,作为两边的网关需要先添加一块网卡。
右击虚拟机的名称选择下面的设置。
在打开的新页面中点击“添加”,选择“网络适配器”最后添加就行。
可以看到此时有了两块网卡,点击确定之后PC机需要加载一下。
使用命令ifconfig查看网卡参数,现在已经有三块网卡,在这里首先复制一下eth1新添网卡的MAC地址。
使用cd切换到eth0网卡所在的位置,ls查看此时的目录下是没有eth1网卡的。
在本目录下,使用cp复制命令把eth0复制一份出来为eth1。然后编辑网卡eth1的IP地址等属性。
需要修改的有网卡名称、HWADDR的MAC地址(也就是刚才复制的)、IP地址和子网掩码。
现在来配置eth0作为外网网关的IP地址。
这里只是修改一下作为外网的IP地址就行了,切换到末行模式:wq保存并退出。
网卡配置完最好是重启或者重新加载一下网卡配置,双网卡配置完成。
此时来看一下win7客户机的IP地址配置情况,注意网关地址要指向中间Linux-2的内网网卡地址。
网卡配置完成之后使用Linux-2测试一下跟另外两台虚拟机是否互联互通,这是最基本的前提条件。
此时来查看Linux-2虚拟机的iptables防火墙内容,并清空。
首先证明一下在现在这种状态下使用win7客户机是不能访问Linux-1搭建的web服务的。
然后在中间的Linux-2的虚拟机上开启路由功能。
方法一、使用vi编辑器进行修改。
进入vi编辑器之后只需要修改nat.ipv4.ip_forward=1这条就行。
方法二、临时性的开启路由功能,就是使用echo命令指定文件内容。
下面再次使用win7客户端访问Linux-1搭建的web网站,此时应该是可以正常访问的了。
前面已经把Linux-1和Linux-2上面的iptables表格规则清空,此时进行创建iptables规则。
Iptables是命令关键字。选项“-I”是在所有条目的最上面添加。选项“-A”是在规则条目的最末行添加规则语句。选项“-P”默认规则,当所有都匹配不到,默认的操作。接着在选项后面输入要添加的规则链(往哪个规则链里面添加)注意这里需要使用大写。
后面选项“-s”表示源地址,后面可以跟一个地址也可以是一个网段。选项“-j”后面跟执行的操作,注意后面是大写DROP表示丢弃;REJECT表示拒绝;ACCEPT表示允许。
规则条目创建完成之后,使用iptables -L进行查看,此时的INPUT规则链中多了一条规则条目。
现在使用win7客户机进行第三次访问,表示访问失败。
清除iptables防火墙的表格内容。
进行第四次的友好访问,表示又能够正常访问了。
刚才是在Linux-1上面添加的iptables规则条目。现在在Linux-2上面也做一下相应的实验。如图的命令解读为:
使用iptables命令创建防火墙规则条目,在filter表格的FORWARD规则链的最末行添加,源地址为192.168.100.120的PC机,-j拒绝通过。
再次使用win7客户机进行访问Linux-1搭建的web网站,访问失败。
经验总结:iptables防火墙是有特性的,它跟ACL访问控制列表非常相似,也是从上到下一条一条进行匹配的,如果全部匹配不到就执行-P的默认设置。另外需要注意网关地址不能指错,各个网卡的IP地址配置。总而言之细心总是没错。谢谢!!!