iptables - 重定向除列表 MAC 地址之外的内容

iptables - 重定向除列表 MAC 地址之外的内容

我在路由器上使用 iptables 将所有网络流量重定向到我的页面。

但我不知道如何接受我的 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 (主机 A)
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 (主机 B)

但它只是对主机 A 执行命令。这意味着主机 A 可以正常访问网络,但主机 B 仍然被重定向。

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

答案1

您遇到此问题是因为您正在使用 !。假设,一个请求到来,如果到来主机的 MAC 地址不是主机 A 的 MAC 地址,它将被重定向。因此它也被重定向到主机 B。您的第二条规则将永远不会执行。

那么解决方案是,如何接受我的 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 链返回并重定向所有流量
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

相关内容