2.0 iptables详解-1
netfilter(防火墙)-->iptables(工具)
table(表)-->chain(链)-->(规则)
iptables -t(+表名) filter(表) -nvL (用得比较多,定义允许或者不允许的)
iptables -t(+表名) nat(表) -nvL (定义地址转换的)
iptables -t(+表名) mangle(表) -nvL (修改报文原数据,这个表主要是对数据包做标记,针对标记去做操作)
主要是过滤的包的进出
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
对于filter来讲一般只能做在3个链上:INPUT ,FORWARD(作用于无关本机的包) ,OUTPUT
对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING (作用网络地址转换)
PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;
POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。
OUTPUT:定义对本地产生的数据包的目的NAT规则。
而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING (主要用于给数据包打标记)
iptables定义规则的方式比较复杂:
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3个filter nat mangle
COMMAND:定义如何对规则进行管理
chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
CRETIRIA:指定匹配标准
-j ACTION :指定如何进行处理
iptables -t filter -I(插入,是从最上面插入)/-D(删除)/-A(增加,是从最下面增加) INPUT(对INPUT表进行操作) -p(+协议) tcp --dport(+端口号) 80 -s(+源IP) 12.12.12.12 -j(动作,行为) DROP/REJECT/ACCEPT(丢掉/拒绝/允许)
iptables -t filter -I INPUT -p tcp --dport 80 -s 12.12.12.12 -j ACCEPT
iptables -t filter -D INPUT -p tcp --dport 80 -s 12.12.12.12 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -s 12.12.12.12 -j ACCEPT
iptables -nvL(查看规则,默认是filter表)
-I越往后添加的规则,就越先生效
-A越往后添加的规则,就越往后生效
ip138.com
--dport一定要加上-p选项才可以使用
2.1 iptables详解-2
iptables -Z 清空链,及链中默认规则的计数器的(有两个计数器,被匹配到多少个数据包,多少个字节)
iptables -F 清空filter表的所有链
service iptables restart(如果不保存规则,重启规则后,规则就没)
service iptables save(保存规则,以防重新后规则没了,规则会默认保存在/etc/sysconfig/iptables)
iptables-save > 1.ipt(指定保存规则到一个文件,也叫做防火墙规则的备份)
iptables-restore < 1.ipt(恢复防火墙的规则)
iptables -F
service iptables save(本身机器就带有规则,所以要清空规则后,保存下规则,为了防止重启后原来的规则恢复)
2.2 iptables详解-3
iptables -P(策略) INPUT ACCEPT/DORP(DORP不要轻易的使用,用了之后,你的远程就连不上了,主要是改这里,后面是一共过滤了多少包,多少字节)
2.3 iptables详解-4
做这样子一个例子,需要写一个脚本,避免被阻断在外面