IPTABLES 实验2
实验大体结构图
相关概念及公式
源地址转换: SNAT POSTROUTING
目标地址转换:DNAT PREROUTING
每次重启网络后我们都得首先打开连接转发功能,echo 1> /proc/sys/net/ipv4/ip_forward
注意此实验 NODE1和NODE2的eh1位于同一个虚拟网络VMNET0中
NODE2的eth0和NODE3是桥接方式连接,
也就是可以认为NODE3是外网
NODE1是内网。
NODE1 : IP : 192.168.42.3
NODE2: 都是作为网关接口来设定的,这样看起来比较简便,实际中肯定不会这样了。
NODE3: 当然就是配置10.1.0.0网段的网址啦。
我们启动NODE1的HTTPD服务并编辑相应的网页文件即可。
继续启动外网NODE3的HTTPD 服务
以上环境搭好,让我们来测试下NODE1…NODE3之间能不能通过NODE2 相互联通。
NODE1 ———> NODE3
NODE3———->NODE1
好了能互相PING通说明设置成功,那我们的外网主机NODE3也能获取NODE1的网页文件
NOD1 能获取NODE3的网页文件
那么让我们接下来设置NODE2的转发防火墙。
1.首先打开连接转发功能,echo 1> /proc/sys/net/ipv4/ip_forward
2.设置放行所有状态为ESTABLISHED ,RALETED的TCP协议的链接。
NODE2首先开启FTP协议的连接追踪功能
modprobe nf_conntrack_ftp
添加转发的默认规则
iptables -A FORWARD -j DROP
这样我们的内外网的转发功能就被禁掉了,这里列出结果。
现在我们让内网服务器能访问外网
iptables -I FORWARD -s 192.168.42.0/24 -p tcp –dport 80 -j ACCEPT
当然我们这里是tcp协议,icmp协议当然还是不通了!!
内网还是不能出去,这是因为之开放了出去的,响应报文进不来也没用!!
那我们接下来开放响应报文
iptables -I FORWARD 2 -d 192.168.42.0/24 -p tcp –sport 80 -j ACCEPT
这里我们内网对外网的访问就没有问题了!
Iptables -vnL
这个就是我们当前的防火墙的总规则
接下来让我们删除第二条规则,根据状态来做追踪
iptables -D FOREWARD 2
我们加入根据状态来放行的转发规则,这样我们只要定义请求规则就可以了;
iptables -I FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT
现在我们内网的主机想用ssh连接到外网怎么办?
很简单我们把第二条规则改下就可以了,我们只放行内网链接状态为NEW的连接!
我们在NEW方向加了状态
iptables -R FORWARD 2 -s 192.168.42.0/24 -p tcp -m multiport –dports 80,21,22,23,139,445 -m state –state NEW -j ACCEPT
这就是改动后的规则
这里的内网对外网curl和ssh远程登陆都没有问题
这里的ssh可能会稍微时间长点因为每个包都得经过FORWARD 链进行过滤,所以速度当然就慢点了,台式机可能会快点。
这里我们启动NODE3的smb,vsftpd服务,telnet服务看看NODE1上面什么反应!
这里我们从NODE1上进行访问NODE3的samba服务
接下来我们测试下NODE1连接NODE3的ftp服务有没有问题
这里看出也是没有任何问题的!!!
注意:以后我们工作时在修改IPTABLES时定义一个自动20分钟运行的守护进程,让其清空防火墙,这样就能避免我们添加防火墙失败的问题,添加成功我们就删除这个自定义脚本;
原创文章,作者:sjfbjs,如若转载,请注明出处:http://www.178linux.com/53567