Назад | Перейти на главную страницу

iptables и управление трафиком между хостами в подсети

Недавно я установил OpenWrt на роутер TP-LINK. Теперь я хотел бы контролировать трафик между определенными хостами в одной подсети. Поскольку iptables доступен на маршрутизаторах на базе OpenWrt, я подумал, что это должна быть тривиальная задача. Я использую OpenWrt Chaos Calmer 15.05.1.

В своей первой попытке я просто хотел добавить новое правило в Сеть / Брандмауэр / Правила трафика. Например, я хочу запретить хосту A разговаривать с хостом B на основе MAC-адреса хоста A и IP-адреса хоста B:

Any traffic
From any host in lan with source MAC AA:AA:AA:AA:AA:AA (host A)
To IP W.X.Y.Z in lan (host B)
Discard forward

Это правило было настроено с помощью встроенного мастера OpenWrts. Из-за того, что этот раздел называется «правила трафика», я подумал, что OpenWrts позаботится о правильном добавлении / вставке правила. Однако хост A все еще может разговаривать с хостом B.

В следующей попытке я вручную добавил правило iptables в раздел «custom rules», которое загружается сразу после правил по умолчанию:

iptables -A FORWARD -p ALL -m mac --mac-source AA:AA:AA:AA:AA:AA -d W.X.Y.Z -j DROP

Пока мне не удалось заставить это работать. Есть мысли по этому поводу? Кроме того, может ли кто-нибудь указать мне решение, при котором хост B по-прежнему сможет разговаривать с хостом A? Мой подход (если он работает) прервал бы любое общение.

Спасибо

Вам нужно будет разместить хосты A и B в разных подсетях с маршрутизатором между ними. Если они находятся в одной подсети, они общаются друг с другом напрямую, и маршрутизатор даже не видит IP-пакеты, которыми они обмениваются. Чтобы быть более точным, когда я говорю «напрямую», я имею в виду, что они разговаривают друг с другом на уровне 2 (канал передачи данных), и кадры Ethernet могут проходить или не проходить через TP-LINK, но он действует как коммутатор уровня 2. .