ebtables学习
EBTABLES是以太网桥防火墙,以太网工作在数据链路层,EBTABLES来过滤数据链路层数据包。
EBTABLES使用规则如下:
ebtables [-t table] -[ADI] chain rule-specification [match-extensions] [watcher-extensions]
-t table:一般为FORWARD链
-ADI: A添加倒现有链的末尾;D删除规则链(必须指明规则链号);I插入新的规则链(必须指明规则链号)。
-F:对所有的规则表的规则链清空;
-p:指明使用的协议类型,ipv4,arp等可选(使用时必选)
–ip-proto:IP包类型,1为ICMP包,6为TCP包,17为UDP包
–ip-src:IP包的源地址
–ip-dst:IP包的目的地址
–ip-sport:IP包的源端口
–ip-dport:IP包的目的端口
-i:指明从那片网卡进入
-o:指明从那片网卡出去
Targets:
(1)ACCEPT : 让帧通过
(2)DROP: 丢弃帧。
(3)CONTINUE:让帧继续走下面的规则(rule)
(4)RETURN: 停止当前链的过滤规则,进而去走前面链的下一条规则
TABLES:
内置三个表(tables):
(1)filter : 默认使用此表,并且无需使用 -t 或 -table参数
(2)nat
(3)broute
filter内置三个链(chain),分别为 INPUT 、OUTPUT、 FORWARD.
(1)INPUT: 帧的目的地址为设备
(2)OUTPUT: 从设备为源地址的帧
(3)FORWARD: 由设备进行转发的帧
nat:用来更改mac地址,包含三个内置链,分别为 PREROUTING 、OUTPUT、 POSTROUTING
(1)PREROUTING: for altering frames as soon as they come in
(2)OUTPUT: for altering locally generated or (b)routed frames before they are bridged
(3)POSTROUTING: for altering frames as they are about to go out
broute:is used to make a brouter, 只有一个内置链(chain) BROUTING
(1)BROUTING: 此处的target (DROP /ACCEPT)有不同的含义。
DROP actually means the frame has to be routed, while ACCEPT means the frame has to be bridged.
参数简介:
(1) -A
在选定的链后面加一条规则
eg: ebtables -A INPUT (在filter表中添加INPUT链)
(2)-D
从选定的链中删除一条或多条规则。
eg: ebtables -D INPUT 1:2 (将filter表中INPUT链的第1到第2条规则删除掉)
ebtables -D OUTPUT 1
(3)-I
从选定的链中插入规则,默认插入到头部。如果指定
eg: ebtables -I INPUT 1 -p ipv4 --ip-src 192.168.1.1 -j DROP
(4)-P, --policy
指定策略,可以为ACCEPT、DROP或 RETURN
eg: ebtables -t filter -A ebmacfilter_chain -P RETURN
(5)-F, --flush
删掉所有的链
eg: ebtables -t filter -F ebmacfilter_chain
(6)-Z, --zero
设置选定的链的计数为0
eg: ebtables -t filter -Z abmacfilter_chain
(7)-L, --list
列出所有的规则
eg: ebtables -L
列出某一表下的规则
eg: ebtables -t filter -L
-Ln 列出所有规则,并且前面有规则的编码
-Lc 列出所有规则,并且有匹配的统计。其中pcnt为帧数统计,bcnt为字节统计
(8)-N, --new-chain
创建新的链路,默认的位ACCEPT,可以通过命令-P来进行更改。
eg: ebtables -t broute -N ebmacfilter_chain
( 9 )将自定义链jump到标准链下
eg: ebtables -t broute -A ebmacfilter_chain -j BROUTING
( 10)-X 删除自定义链
eg: ebtables -t broute -X ebmacfilter_chain
ain
( 9 )将自定义链jump到标准链下
eg: ebtables -t broute -A ebmacfilter_chain -j BROUTING
( 10)-X 删除自定义链
eg: ebtables -t broute -X ebmacfilter_chain