Я буду использовать текст в качестве ссылки, так как имена ваших интерфейсов не совпадают между изображением и текстом.
Маршрутизатор выполняет маршрутизацию между всеми своими интерфейсами, где у него есть IP, поэтомуbrd0
(домашний ),brd1
(гостевой )и wan0
(, которые вы забыли добавить в картинка ), как и ожидалось от роутера.
Поскольку позже вам придется маршрутизировать между brd0
и wan0
, а также между brd1
и wan0
, вы не можете просто отключить маршрутизацию. Вы можете использовать два правила iptables FORWARD
, чтобы запретить эту маршрутизацию, по одному для каждого направления :
iptables -A FORWARD -i brd0 -o brd1 -j DROP
iptables -A FORWARD -i brd1 -o brd0 -j DROP
Если вы хотите, чтобы домашняя сеть имела доступ к гостевой сети, но не наоборот, это можно сделать с помощью правил с отслеживанием состояния, используя вместо этого:
iptables -A FORWARD -i brd1 -o brd0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i brd1 -o brd0 -j DROP
Первое правило, вероятно, можно «факторизовать» с будущими аналогичными правилами, удалив имена интерфейсов:
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Примечание :Системы из одной сети все еще могут пинговать IP-адрес маршрутизатора, принадлежащий другой сети (, например, из 192.168.20.2
, ping 192.168.10.1
будет успешно ), так как он не маршрутизируется, поэтому не пересекая эти FORWARD
правил, но было бы слишком сложно обращаться к (с правильными правилами в цепочке INPUT
). Я просто оставлю это как замечание.
Примечание2 :ничего в этом ответе не должно касаться того факта, что brd0
и brd1
являются мостами :все дело в маршрутизации.