Я использую 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 (Host 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 (Host B)
Но он просто выполняет команду для хоста A. Это означает, что хост A может получить доступ к сети в обычном режиме, но хост B все еще получил перенаправление.
Как я могу получить нормальный доступ для обоих MAC-адресов?
У вас возникла эта проблема, поскольку вы используете!. Скажем, приходит один запрос, и если Mac-адрес следующего хоста отличается от MAC-адреса хоста A, он будет перенаправлен. И, следовательно, он также перенаправляется на хост 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
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