Поскольку вы не упоминаете марку и модель своего маршрутизатора, вот основная идея: потребительский маршрутизатор обычно состоит из порта «WAN» и нескольких портов «LAN». Большинство дешевых маршрутизаторов SoC имеют два встроенных сетевых интерфейса: один для глобальной сети и один для локальной сети. Конечно, это не соответствует количеству портов LAN - есть встроенный коммутатор.
В большинстве маршрутизаторов эти коммутаторы фактически программируются. Они могут выполнять VLAN на основе портов и маркировку VLAN. Это означает, что вы можете создать «физически разделенный» сетевой интерфейс.
Обычно это так:
+-------------+ +--------------+
| CPU | | LAN1 |--
--| WAN LAN |--| Switch LAN2 |--
+-------------+ | LAN3 |--
+--------------+
Все, что подключено к LAN1 (к которому подключен маршрутизатор Y), имеет полный доступ к LAN2 и LAN3.
Однако мы можем перенастроить коммутатор и создать две VLAN:
+---------------+ +--------------+
| CPU | | Switch |
| LAN.1 |--| VLAN1 LAN1 |--
--| WAN | +--------------+
| LAN.2 |--| VLAN2 LAN2 |--
+---------------+ | LAN3 |--
+--------------+
После настройки все VLAN будут отображаться как отдельный сетевой интерфейс системы. Поскольку LAN1 больше не находится в одном широковещательном домене с LAN2/3, ОС получает трафик и может решить, следует ли пересылать пакеты из VLAN1 в VLAN2.
Чтобы избежать путаницы, вы обычно выбираете другую подсеть для разных VLAN, поэтому маршрутизатор действительно должен маршрутизировать. :)
Может ли томат сделать это, я не знаю. OpenWrt может, а IIRC так может DD-WRT. По сути, это проводная гостевая сеть.
Если вы не можете обеспечить такой уровень изоляции, вам нужно попробовать отфильтровать на маршрутизаторе Y, используя правила, примерно такие:
iptables -A FORWARD -d 192.168.0.0/16 -j DROP
iptables -A FORWARD -d 172.16.0.0/12 -j DROP
iptables -A FORWARD -d 10.0.0.0/8 -j DROP
Это, конечно, полагается на маршрутизатор Y для обеспечения желаемой политики.