CentOS上默认是设有iptables规则的,建议你先清除规则,然后把清除后的规则保存:
# iptables -nvL 查看规则
# iptables -F 清除当前规则(临时的,重启系统或者重启iptalbes后还会加载已经保存的规则)
# /etc/init.d/iptables save 保存规则(保存在了/etc/sysconfig/iptables)
1)iptalbes的三个表
filter 表用于过滤包,是系统预设的表,用的最多,内建三个链。
INPUT作用于进入本机的包。
OUTPUT作用于本机送出的包。
FORWARD作用于跟本机无关的包。
nat 表用于网络地址转换,有三个链。
PREROUTING 链在包刚刚到达防火墙时改变它的目的地址。
OUTPUT 链改变本地产生的包的目的地址。
POSTROUTING 链在包就要离开防火墙之前改变其源地址。
mangle 表主要是用于给数据包打标记,然后根据标记去操作哪些包。
2)iptables 基本语法
A. 查看规则:
# iptables -t nat -nvL
-nvL 即查看该表的规则,-n表示不针对IP反解析主机名;-L表示列出的意思;-v表示列出的信息更加详细。-t 后面跟表名,不加-t ,则打印filter表的相关信息。
B. 增加规则
# iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP
增加一条规则,省略-t所以针对的是filter表。
-A 增加一条规则,另外还有-I 插入一条规则(和A一样),-D删除一条规则;
INPUT即链名称,还可以是OUTPUT或者FORWORD;-s 指定源地址(可以是一个ip段),还有-d :指定目的IP(可以是一个ip段);-p 协议(tcp, udp, icmp);--sport/--dport 后跟源端口/目标端口(跟-p一起使用);-d 后跟目的IP(主要针对内网或者外网);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)-i :指定网卡;
C. 删除规则:
# iptables -F 把所有规则全部删除
# iptables -Z 把包以及流量计数器置零
不加-t默认是针对表filter来操作的
有时候iptables过多了,想删除某一条规则时,一种比较简单的方法:
# iptables -nvL --line-numbers #列出规则标号
# iptables -D INPUT 1 #删除链名为INPUT,规则号为1的规则
-D 后跟链名,然后是规则num,num就是查看iptables规则时第一列的值。
D. nat表的应用
假设你的机器上有两块网卡eth0和eth1,其中eth0的IP为10.0.2.68,eth1的IP为192.168.1.1 。eth0连接了intnet 但eth1没有连接,现在有另一台机器(192.168.1.2)和eth1是互通的,那么如何设置也能够让连接eth1的这台机器能够连接intnet(即能和10.0.2.68互通)?
# echo "1" > /proc/sys/net/ipv4/ip_forward
打开路由转发功能
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables对nat表做了一个IP转发的操作
-o 选项后跟设备名,表示出口的网卡,MASQUERADE表示伪装的意思。
D. 保存以及备份iptalbes规则
设定的防火墙规则只是保存在内存中,并没有保存到某一个文件中,当系统重启后以前设定的规则就没有了,所以设定好规则后要先保存一下。
# service iptables save 将防火墙规则保存到 /etc/sysconfig/iptables
需要把防火墙所有规则都清除,使用 iptables-F 命令。但是最好的办法是把防火墙服务停止:
# service iptables stop
这样防火墙就失效了,但是一旦重新设定规则后(哪怕只有一条),防火墙服务会自动开启。
如果你遇到备份防火墙规则的任务,其实就是要拷贝一份这个文件的副本。
#################################
# iptables -I INPUT -s 1.1.1.1 -j DROP
插入一条规则,把来自1.1.1.1的所有数据包丢掉。
# iptables -D INPUT -s 1.1.1.1 -j DROP
删除刚刚插入的规则。
# iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 -j DROP
插入一条规则,把来自2.2.2.2的tcp协议到本机80端口的数据包丢掉。--dport/--sport 必须和-p一起使用,否则会出错。
# iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP
插入一条规则,把发送到10.0.2.34的22端口的数据包丢掉。
# iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
新建一条规则,把来自192.168.1.0/24网段的作用在eth0上的包放行。
# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
--icmp-type 这个选项是要跟-p icmp 一起使用的,后面指定类型编号。这个8指的是能在本机ping通其他机器,而其他机器不能ping通本机。
2015-11-05 10:14