iptables做MAC地址过滤的问题

daviddb7 2012-02-06 03:20:00
想用iptables实现MAC地址过滤,
有两种情况,一个是黑名单,禁止某些MAC地址路由,其它地址可以通过。
另一个是白名单,只允许某些MAC地址路由,其它地址不能通过。

自己定义了一个chain,所有MAC地址加在自定义chain里。

黑名单的时候,用的是iptables -A mychain -j RETURN
然后mychain里的规则是 -j DROP

做白名单时,iptalbes -A mychain -j DROP
mychain里面的规则时 -j ACCEPT

发现当黑名单的时候是能用的,但是当白名单的时候貌似chain中的MAC也被过滤掉了,好像ACCEPT没有生效。
应iptalbes -L看mychain是

ACCEPT all -- anywhere anywhere MAC xx:xx:xx:xx:xx:xx
DROP all -- anywhere anywhere

请问这样设置是否正确?
...全文
793 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
daviddb7 2012-02-13
  • 打赏
  • 举报
回复
嵌入式设备,不方便验证,先结贴。
Liv2005 2012-02-06
  • 打赏
  • 举报
回复

从描述来看貌似没啥问题

将iptables的日志重定向到新文件中,对你的DROP规则增加日志,然后排查日志

[Quote]
打开你的/etc/syslog.conf文件:
# vi /etc/syslog.conf

在文件末尾加入下面一行信息
kern.warning /var/log/iptables.log

保存和关闭文件.

重新启动syslogd(如果你使用Debian/Ubuntu Linux):
# /etc/init.d/sysklogd restart

另外, 使用下面命令重新启动syslogd(如果你使用Red Hat/Cent OS/Fedora Core Linux):
# /etc/init.d/syslog restart

现在确认你的iptables使用了log-level 4参数(前面有一个log-prefix标志). 例如:
# DROP everything and Log it
iptables -A INPUT -j LOG –log-level 4
iptables -A INPUT -j DROP

举一个例子, 丢弃和记录所有来自IP地址65.55.11.2的连接信息到/var/log/iptables.log文件.
iptables -A INPUT -s 64.55.11.2 -m limit --limit 5/m --limit-burst 7 -j LOG –log-prefix ‘** HACKERS **’ --log-level 4
iptables -A INPUT -s 64.55.11.2 -j DROP

命令解释:

. - log-level 4: 记录的级别. 级别4为警告(warning).
. - log-prefix ‘*** TEXT ***’: 这里定义了在日志输出信息前加上TEXT前缀. TEXT信息最长可以是29个字符, 这样你就可以在记录文件中方便找到相关的信息.

现在你可以通过/var/log/iptables.log文件参考iptables的所有信息:
# tail -f /var/log/iptables.log
[/Quote]

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧