linuxlearning4R 发表于 2016-09-02 16:22

iptables实现对目的mac的限制

iptables里面有一个mac模块可以对源mac进行限制,但是没有对目的mac进行限制。有其他拓展模块可以对目的mac进行限制吗?


mac match options:
[!] --mac-source XX:XX:XX:XX:XX:XX
                                Match source MAC address

Godbach 发表于 2016-09-02 21:51

本帖最后由 Godbach 于 2016-09-02 21:53 编辑

回复 1# linuxlearning4R
这个 mac 匹配的就是 源 IP,应该是匹配 dst mac 没有太大意义吧。

kernel 中的 xt_mac.c 的核心代码如下,也说明是 source mac
28 static bool mac_mt(const struct sk_buff *skb, struct xt_action_param *par)
29 {
30   const struct xt_mac_info *info = par->matchinfo;
31   bool ret;
32
33   if (skb->dev == NULL || skb->dev->type != ARPHRD_ETHER)
34         return false;
35   if (skb_mac_header(skb) < skb->head)
36         return false;
37   if (skb_mac_header(skb) + ETH_HLEN > skb->data)
38         return false;
39   ret= ether_addr_equal(eth_hdr(skb)->h_source, info->srcaddr);
40   ret ^= info->invert;
41   return ret;
42 }

Godbach 发表于 2016-09-02 21:54

回复 1# linuxlearning4R

LZ 对匹配 dest mac 的需求是什么。

linuxlearning4R 发表于 2016-09-02 23:00

Godbach 发表于 2016-09-02 21:54
回复 1# linuxlearning4R

LZ 对匹配 dest mac 的需求是什么。


我也大概看了一下netfilter里面的xt_mac.c文件,按理来说说,nf是在三层的,mac地址是在二层的。
但是包由二层进入三层的时候,skb里面带有源mac信息,所以nf就实现了基于源mac的匹配。
到包要往外发的时候,目的mac是在二层填上,让后由网口发走的。所以nf完全时候是不知道目的mac是什么的。
所以,按理来说,nf(iptables)是没办法做基于目的mac的匹配的,这样理解对吗?

我后来查了一下,有一个ebtables是可以实现对源/目的mac进行匹配限制,但是ebtables只能是用在网桥模式上,对路由模式是不生效的。

Godbach 发表于 2016-09-03 00:49

回复 4# linuxlearning4R

是的,ebtables 应该是支持的。
只是要搞清楚你什么场景,需要过滤目的 mac

linuxlearning4R 发表于 2016-09-05 18:08

回复 5# Godbach

应用场景,就是常见的防火墙部署。客户说为什么会有源mac限制,但是没有目的mac限制。
所以非得要弄一个目的mac限制出来。并且只要路由模式的。


那么ebtables只是用在以太二层,走的是桥模式,不是路由模式,有不满足客户需求,无语了

Godbach 发表于 2016-09-05 21:59

回复 6# linuxlearning4R

哈哈,果然是客户的不假思索需求啊。

页: [1]
查看完整版本: iptables实现对目的mac的限制