У меня есть linux box с iptables. Через него проходит трафик, входящий в wlan0 и выходящий из wlan1. Я хочу разрешить проходить только определенным машинам. Я попробовал по MAC, это не удалось, затем я попытался по IP, и, к моему удивлению, это тоже не удалось.
Для обоих случаев я поставил политику FORWARD как DROP
$ iptables -P FORWARD DROP
Тогда я сделал
$ iptables -A FORWARD -i wlan0 -m mac --mac-source 76:AB:BF:80:4E:B3 -j ACCEPT
Когда это не сработало, я активировал лог с:
$ iptables -I FORWARD -i wlan0 -j LOG
kern.log показал, что мой MAC-адрес источника был MAC-адресом linux wlan0. Тогда я попробовал по IP адресу:
$ iptables -A FORWARD -s 192.168.1.10 -j ACCEPT
Это также не удалось. Затем я попытался оставить политику как принять и поставить следующее, чтобы отбросить все, после моего вышеупомянутого правила:
$ iptables -A FORWARD -j DROP
Но это все еще не работало, поскольку мой клиент уронил свой пакет. Это работает только тогда, когда политика ACCEPT (но тогда нет фильтрации). Это заставляет меня поверить, что правило не соответствует трафику. Что я делаю неправильно?
РЕДАКТИРОВАТЬ:
Мои полные цепочки iptables:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere MAC 76:AB:BF:80:4E:B3
ACCEPT all -- 192.168.1.10 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination