我写了一些规则,以防止除了我的路由器,在我的私人networking中的其他计算机的所有包信息。 这就是为什么我仍然希望我的电脑访问互联网。
这是我的规则:
iptables -F iptables -P INPUT DROP iptables -A INPUT -m mac --mac-source xx:xx:Xx:xx:xx:xx -j ACCEPT
这是一个简单的规则。 xx:xx:xx:xx:xx:xx是路由器的mac地址。 我读的文件,所以我知道iptables -P INPUT DROP将丢弃所有数据包不符合下面的规则。 事实上,规则不起作用。 我只是访问我的路由器,但我无法访问互联网。 这是很难知道的,因为我确保所有来自Internet的包都通过我的路由器的mac地址来到我的电脑。
我写了规则来解决它:
iptables -F iptables -P INPUT ACCEPT iptables -A INPUT -m mac ! --mac-source xx:xx:xx:xx:Xx:xx -j DROP
它的作品,但我想这个想法“拒绝所有,允许select”。 它在configuration和devise上更简单。
我希望有人让我明白为什么第一条规则不起作用。
谢谢你的好build议。 我发现问题的原因。 这是我的一切规则:
-P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j LOG --log-prefix my_rule --log-level 6 -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT -A INPUT -i lo -j ACCEPT
基本上,规则是正确的,除了我忘记了回送接口的最后一个规则。 当我上网的时候,一些dns请求需要通过回送接口发送到我的电脑上的dns服务。 如果我忘记了,我无法parsing任何域名。
起初,我的解决scheme是添加一个规则,接受任何包含MAC地址为00:00:00:00:00:00的input请求,因为我看到这是通过回送接口发送的所有请求的MAC地址,但iptables似乎不知道。 不接受00:00:00:00:00:00的数据包。 我读了iptables手册,但是我仍然没有看到mac地址为00:00:00:00:00:00的iptables行为的描述。 我想iptables认为00:00:00:00:00的意思是“没有mac地址”
P / S:我在学英语。 对不起我的语法错误。