10.15 iptables filter表案例
10.16/10.17/10.18 iptables nat表应用
iptables小案例
需求:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.188.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。
由于要把默认策略改为DROP,并且规则很多,所以最好写成脚本vim /usr/local/sbin/iptables.sh
,以下是脚本内容:
#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F #不加-t选项默认修改filter表
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
icmp示例:iptables -I INPUT -p icmp --icmp-type 8 -j DROP
。这条命令实现本机ping外机可以通,但其他机器不能ping通本机。
nat表应用
A机器两块网卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
需求1:可以让B机器连接外网
A机器上打开路由转发 echo “1”>/proc/sys/net/ipv4/ip_forward
A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
B上设置网关为192.168.100.1
需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口
A上打开路由转发echo “1”>/ proc/sys/net/ipv4/ip_forward
A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp –dport 1122 -j DNAT –to 192.168.100.100:22
A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT –to 192.168.133.130
B上设置网关为192.168.100.1
iptables其他重要事项
首先区分以下centos6和centos7两个版本的iptables。两个linux版本都有iptables工具,但是centos7默认没有安装iptables-services。这是因为centos7默认使用firewalld来管理netfilter。而firewalld兼容iptables,只是没有安装iptables-services组件。所以centos7上firewalld上想使用以前的iptables来管理防火墙可以关掉firewalld、取消开机启动,然后安装iptables-services、设置iptables开机启动(详细在上一篇中有)。
试验或者生产中操作防火墙要注意保存和备份iptables规则。iptables设置完不保存,重启服务就恢复之前了。设置完记得service iptables save
,这条命零会把规则保存到/etc/sysconfig/iptables。centos7的firewalld虽然兼容iptables,但是不能这条命令不能使用。不过可以使用iptables-save命令,默认标准输出到屏幕,配合重定向很容易备份防火墙规则:
iptables-save > my.ipt #把iptables规则备份到my.ipt文件中
iptables-restore < my.ipt #恢复刚才备份的规则