iptables – redirect除了列表MAC地址

我在路由器上使用iptables将所有networkingstream量redirect到我的页面。

但我不知道如何除了我的MAC地址列表。

我做了这样的命令

  iptables -t nat -A PREROUTING -m mac!  --mac-source xx-xx-xx-xx-xx-xx -p tcp --dport 80 -j DNAT  -  to 127.0.0.1:8080(Host A)
 iptables -t nat -A PREROUTING -m mac!  --mac-source xx-xx-xx-xx-xx-xx -p tcp --dport 80 -j DNAT  - 到127.0.0.1:8080(主机B) 

但是它只是执行主机A的命令。这意味着主机A可以正常访问网页,但主机B仍然有redirect。

我怎样才能正常访问两个mac地址?

你正在使用这个问题! 假设有一个请求来,如果主机A的MAC地址不是主机的MAC地址,它将被redirect。 因此它也被redirect到主机B.而你的第二条规则永远不会被执行。

所以解决scheme,如何除了我的MAC地址列表?

  1. 跳转到一个自定义链
iptables -t nat -N accept_my_mac_set iptables -t nat -A PREROUTING -j accept_my_mac_set iptables -t nat -A PREROUTING -j DNAT --to 127.0.0.1:8080 
  1. 在accept_my mac_set中接受您的mac集合,否则从accept_my_mac_set链中返回并redirect所有stream量
 iptables -A accept_my_mac_set -m mac --mac-source xx-xx-xx-xx-xx-xx, xx-xx-xx-xx-xx-xx -p tcp --dport 80 -j ACCEPT iptables -A accept_my_mac_set -j RETURN