理论内容需要画图比较麻烦,在此略过 ,主要是希望通过以下内容能够快速了解iptables 基本状况和使用,利用于面试或快速了解,请坚持看完,不要因为有很多参数英文就不看了
内核版本的不同iptables的名称也不尽相同 ,以下是各内核版本的iptables的名称,当然使用起来也大相庭径。
Linux/2.0: ipfw
Linux/2.2: ipchains
Linux/2.4: iptables
这里主要说下2.4以后的内版本中的iptables。
iptables 主要是为了书写规则,真正来完成执行操作的是netfilter,它是存在于内核的防火墙框架 ,在整个的网络过程中的不同位置放置了一些检测点(hook)。可以说规则就是定义到这些检测点上的。
iptables 有4个内置表,分别是filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。常用的是filter和nat,mangle偶尔会用到 raw则不常用。有五个内置链:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING。
简单的说下表中包含的链的对应
filter: INPUT, FORWARD, OUTPUT
nat: PREROUTING, POSTROUTING, OUTPUT
mangle: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
raw: PREROUTING, OUTPUT
iptable的主要规则属性主要是为了对以下网络传输内容进行过滤。
1、网络层协议属性:ip 2、传输层协议属性:tcp udp icmp
上面的你没有看懂没有关系通俗说就是 我在iptables的四个表中的其中某个链中设置些规则,它会去检查通过我这里的网络包,按照我写的内容去把这些网络报文包拒绝转发等等,这么说应该理解了吧,上面的英文只是为了让你知道表跟链的对应关系。
每个链都有其默认策略:policy(策略) ACCEPT(一般默认都是允许通过的),通常只需要修改filter表的默认策略。
仔细看下 filter中有三个链,就是是所谓的规则,一个是入口的,一个是出口的,还有个是转发的,上面说了他们的默认都是允许通过的。
大致的我们清楚了,就简单的看下 我们怎么使用这些命令来操作。
iptables
大写字母选项:子命令
小写字母选项:用来匹配标准及其它;
-t {filter|nat|mangle|raw} 指定使用那个表不写默认是filter
-L: list
-n: 数字格式显示IP和PORT;
-v: 详细信息, -vv, -vvv
--line-numbers: 显示链中规则的行号;
-x: 显示精确值,不要做单位换算;
我们简单的举个栗子:
#iptables -t filter -L -n ###查看filter 中链列表 ,我们上面说了他有三个规则链都会显示出里面设定的规则 另外注意的是要记得使用-n 否则会通过DNS解析成域名 或者转换成协议名称 ,如果你的DNS慢,那显示的就慢
上面的会使用了吧?一定看会了在往下面看
我们知道了怎么查看我的表中的规则了,下面
其它子命令:
管理链:
-F: 清空链
iptables -F
-P: 设定默认策略
iptables -t filter -P INPUT {DROP|ACCEPT}(下面有介绍)
-X: 删除自定义的空链;
-Z: 计算器清零(清楚的是链中的收发字节数);
iptables -Z
-E: 重命名自定义链
管理规则:
-A: append(增加)
-I [n]: 插入为第n条规则
-D [n]: 删除第n条规则
-R [n]: 替换第n条规则
上面的命令都是都是对表中的链里面的规则进行管理的,通俗说就是增删查改,多练习几次就会了
我们在看下iptables的语法命令 怎么组成的
编写规则语法:
iptables [-t 表] 大写选项子命令 [规则号] 链名 匹配标准 -j 目标
目标:
DROP: 丢弃
REJECT:
ACCEPT
RETURN
REDIRECT: 端口重定向
DNAT
SNAT
MASQUERADE
LOG
--log-prefix "STRING:"
不要因为一大堆英文就晕了,我们常用的只有两个 一是drop 二是 accept
有些人可能知道用REJECT 也是拒绝的意思 建议大家不要用,为什么呢?就好比别人跟你说他喜欢你,你不理他也就算了。。。如果你直接说你拒绝,可能明天你回家的小路上就白刀子进红刀子出了。。。做个低调的人吧。
我们学会了增删查改之后,下面就该对规矩进行设定了下面是规则匹配的命令:
匹配标准:
通用匹配
-s|--src|--source [!] IP/NETWORK
-d|--dst|--destination [!] IP/NETWORK
iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -j ACCEPT
-i incoming_interface: 指定数据报文流入接口; INPUT, PREROUTING, FORWARD
-o outing_interface: 指定数据报文流出接口;OUTPUT, POSTROUTING, FORWARD
-p {tcp|udp|icmp}
我知道了怎么委婉的拒绝,怎么删除查看规则链等,他们要匹配相应的网段等等。。。就使用上面的参数 从哪个网卡口出去进入
练习:放行对web服务的访问:
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -s 172.16.100.1 -p tcp --sport 80 -j ACCEPT
记住写完之后要对规则进行保存 service iptables save
或者使用iptable-save > /other/path/file 将配置文件保存到其他地方
/etc/sysconfig/iptables 默认你写好的规则是保存在这个地方,你如果认真看多联系下,我想你已经掌握了iptables的基本操作了。
编写的时候一定注意使用别把自己干掉了,自己上不去如果是虚拟机还好,如果是机房那就麻烦了,这里教大家一个小技巧 可以提前写好 at 任务 十分钟关闭防火墙,这样不至于在写错后无法登陆等问题。