iptables: правило FORWARD не вступает в силу

471
Adriano_epifas

У меня есть 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  
1
-A - это APPEND, что делает его последним правилом в списке. Не зная, как выглядит ваша полная цепочка, мы не можем сказать вам, куда она должна идти. cybernard 6 лет назад 0
Я отредактировал вопрос с полными цепями. Спасибо Adriano_epifas 6 лет назад 0
измените -J ПРИНЯТЬ на -J LOG --log-prefix "test MAC match" и посмотреть, что отображается в dmesg cybernard 6 лет назад 0

0 ответов на вопрос

Похожие вопросы