相信看了前面的还是不懂怎么写,其实前面的只是以讲故事的方式了解了一下表和链,以及简单的添加和删除
man page中规则的写法已经写的很详细了
这里总结一下:
iptables -t 使用什么表 -增加/删除/修改 那条链 (数字) -p 协议 -s 目标地址 -j 丢弃/接收
当然了,也不是每条规则都需要写这么多参数的.只要能达到目标即可,比如说:我想阻止所有的tcp请求(默认是filter表可以不写,-I
默认写入到规则列表最上面,后面数字也不必写,已经阻止所有tcp请求了,ip地址也不需要写)
sudo iptables -I INPUT -p tcp -j DROP
上面这条规则写完后,你会惊喜的发现你已经打不开百度网页了.为什么呢?我只阻止了tcp请求啊,跟服务器给我发消息有什么关系呢?tcp协议是有三次握手的,网页传输正好使用了tcp协议,我们给服务器发送一个请求后,服务器会给我们回一个请求,可是我们阻止了所有的tcp请求,自然无法完成握手,也就无法打开网页了.打不开网页多可怕,所以把上面的规则删掉
sudo iptables -D INPUT 1
下面正式写语法:
-
新增规则
iptables [-t table] -A chain rule-specification iptables [-t table] -I chain rulenum rule-specification iptables [-t table] -N chain
- rule-specification表示指定规则,比如说指定ip,指定协议,指定动作这些
rule-specification =[matches...] [target]
- match =
-m matchname [per-match-options]
举个例子:match为-p tcp 或者 -s 192.168.0.12 - target =
-j targetname [per-target-options]
举个例子:target为-j DROP 或者 -j ACCEPT
- match =
-
[-t table]
表示可选,可以写,可以不写(如果是filter表就不需要写,其它表是必须写的) -
-A
参数与-I
参数区别:A
表示append/add,新增或在已有规则后面添加.I
表示insert,插入到指定位置,可以将规则写入到表中的任意位置,这个位置就是后面的rulenum决定的. -
-N
表示添加用户自定义的链 - targetname表示对规则的处理,有accept接收/drop丢弃/return暂存
- rule-specification表示指定规则,比如说指定ip,指定协议,指定动作这些
-
删除规则
iptables [-t table] -D chain rulenum iptables [-t table] -F iptables [-t table] -X
-
-D
删除rulenum所指的规则 -
-F
删除指定的整个表的规则 -
-X
删除用户自定义的表
-
-
查看规则
iptables [-t table] -C chain rule-specification iptables [-t table] -L [chain [rulenum]] iptables [-t table] -S [chain [rulenum]]
-C
check检查是否存在规则,存在不给提示,不存在给出提示
-L
与-S
区别:L显示的信息全面,S显示简略信息
常用的查看规则(显示排序数字):sudo iptables -nvL --line-numbers
-
修改规则
iptables [-t table] -R chain rulenum rule-specification iptables [-t table] -E old-chain-name new-chain-name iptables [-t table] -P chain target
-
-R
replace替代rulenum指定的规则 -
-E
rename修改用户自定义链的名字 -
-P
policy修改iptables默认链的规则,target只有drop和accept这两种情况
举个例子:
我们的个人电脑一般是不会用来做路由的吧,路由转发这种事是服务器和路由器做的,所以forward这条链对我们的作用几乎为零,那我们就可以将链的规则修改为丢弃sudo iptables -P FORWARD -j DROP
-
-
清除所有链/指定链/指定规则的数据包统计
iptables [-t table] -Z [chain [rulenum]]
over over语法已经完了
想想和mysql的增删改查好像没多大区别吧,其实语法写起来简单,难的是rule-specification的写法,就比如说可以ping别的主机且不允许被ping,就需要了解icmp-type的相关知识了.
网友评论