最近两周都在搞写iptables设置的脚本,就总结一下,适合初学者看看。有大牛经过的话欢迎指正,毕竟偶还是菜鸟一只。。。这里只总结了常用的一些内容,如果想查看完整的,请访问:鸟哥的私房菜 或 http://www.linuxdw.com/netweb/iptables.htm#iptablessyntax
linux在2.4以后的内核中防火墙用的都是netfilter/iptables,可以实现防火墙,NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部(目前没去了解啥东东),iptables则是用户定义规则集的表结构,就是一条条规则来进行限制。
iptables的表有三个:filter、nat、mangle,最常用的是filter(另外两个还没用过,据很多教程都说mangle几乎不会用到),一般的防火墙设置,貌似filter就够了。
一、启动与停止
服务启动命令:service iptables start
服务启动命令:service iptables stop
服务状态查看命令:service iptables status(下面还有另外一种查看方式)
table——表名
chain——列名
下面即为规则,num——规则号;target——处理动作;prot——协议名(如tcp、udp、icmp)opt——选项;source——源地址;destination——目标地址
二、设置
iptables一般设置步骤:
1.清除原先设置:
iptables -F 清除filter表中所有规则
iptables -X 清除filter表中所有用户自定义的规则
iptables -Z 清零所有规则的计数和流量统计
2.添加自己的规则:
(1)设定默认规则,即默认的处理方式ACCEPT,DROP,REJECT
一般比较安全的话如下设置(如果有特殊要求,按自己的要求设置呗^_^):
iptables -P INPUT DROP 对进入的封包设置默认动作——忽略
iptables -P FORWARD DROP 对转发的封包设置默认动作——忽略
iptables -P OUTPUT ACCEPT 对本机发出去的包设置默认动作——允许
(2)添加自己的规则
iptables [-t table] command [match] [-j target/jump]
[table] 即所用的表filter/nat/mangle
[command](只列出常用的):
-L 查看当前规则链的所有规则,可加-n选项,省去hostname与IP的翻译,速度较快
例: iptables -L -n
-A 添加一条新的链,将会添加到所有规则链的最后
例: iptables -A INPUT -p tcp
-D 删除一条规则
例:可以列出规则的全部内容,如 iptables -D INPUT -p tcp
也可以只列出规则号,如 iptables -D INPUT 1 即删除filter表中的编号为1的规则
注:规则的编号,可以用service iptables status查看,其中的项num即为规则编号。
[match] 匹配规则(:-(这个好长的说。。。。俺在此偷懒,只写俺用过的吧= -)
-p 协议名
-s 源地址
-d 目标地址
--sport 源端口
--dport 目标端口
[此处省略N个字]……
[-j target] 处理动作
ACCEPT 对封包放行,进行完此处理动作后,将不再匹配其它规则,直接跳往下一个规则链
DROP 对封包忽略,不采取任何动作,匹配该规则之后直接停止过滤程序
REJECT 对封包拒绝,并通知对方,可用选项有ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(这个封包会要求对方关闭 连接),进行完此处理动作后,将不再匹配其它规则,直接中断过滤程序。
三、保存与恢复
1.如果你只输入命令不保存的话,下次启动iptables又会恢复原来的设置(这与配置文件iptables-config有关)。因此,如果想之后都用自己的设置,就要对设置进行保存。
iptables规则可以保存至自己任意指定的文件:iptables-save > /your/iptables/file
恢复的时候用命令:iptables-restore < /your/iptables/file
2.不过,默认是保存在文件/etc/sysconfig/iptables中的,可以查看该文件cat /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Sun Jul 31 08:21:53 2011
*filter ——*开头的是表名
:INPUT ACCEPT [211:14330] ——:开头的是链
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [341:30516]
COMMIT
# Completed on Sun Jul 31 08:21:53 2011
四、碰到的问题,或者叫【说明】
1.偶用的系统是centos5.5,精简版的哦,亲!
地址:http://dl.wdlinux.cn/taxonomy/term/3
2.安装过程中,偶选的是不开启防火墙。如果这样的话,未开启防火墙的时候是不能查看iptables的status的
3.与iptables有关的几个文件(查看/etc/init.d/iptables可查看iptables的代码)
/proc/net/ip_tables_names 里面放的是iptables的表名,stop的时候会检查该文件
/etc/sysconfig/iptables 保存iptables的规则的文件,没有该文件,iptables无法启动
/etc/sysconfig/iptables-config iptables的配置文件,里面配置项比较关心的IPTABLES_SAVE_ON_STOP="no",即iptables关闭的时候不保存当前设置,同理IPTABLES_SAVE_ON_RESTART="no",可以自己更改这些配置项。
/var/lock/subsys/iptables iptables的日志记录文件,start过程创建,stop的时候会删除。
这里再奉上一个大牛的总结—— http://blog.csdn.net/tianlesoftware/article/details/6208985