![iptables - 重定向除列表 MAC 地址之外的内容](https://linux22.com/image/652301/iptables%20-%20%E9%87%8D%E5%AE%9A%E5%90%91%E9%99%A4%E5%88%97%E8%A1%A8%20MAC%20%E5%9C%B0%E5%9D%80%E4%B9%8B%E5%A4%96%E7%9A%84%E5%86%85%E5%AE%B9.png)
我在路由器上使用 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 地址列表?
- 跳转到一个自定义链
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
- 在 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