Encontrei sua pergunta porque estava pesquisando um problema de transmissão da VLAN com o roteador específico que você mencionou (TL-SG108E). Deixando de lado essa questão por enquanto, o que você está pedindo deve ser possível com VLANs nesse dispositivo ou qualquer outro "switch inteligente" com capacidade de VLAN.
Você definiria a porta na qual o modem a cabo é conectado como 'não marcado' para uma determinada VLAN e configura o PVID para corresponder. Nesse modo, o switch inserirá e removerá automaticamente os cabeçalhos VLAN de todo o tráfego para a porta, de modo que o dispositivo não tenha ideia de que está em uma VLAN, mas outros dispositivos na rede (outros switches ou seu roteador, por exemplo) receberão as tags da VLAN. E, claro, como é seu propósito, dispositivos em diferentes VLANs não verão o tráfego de rede um do outro.
Você faria o mesmo para todos os outros dispositivos locais da LAN, definindo-os como não marcados em uma VLAN diferente.
Em seguida, para a porta que vai para o roteador Linux, defina-a como uma porta marcada com as duas VLANs, que informam ao switch para passar os pacotes marcados com VLAN diretamente para o dispositivo. O Linux é capaz de configurar interfaces de VLAN que processarão as tags de VLAN e entregarão os pacotes à interface apropriada.
Nesse ponto, você pode usar o iptables para rotear os pacotes entre eles, como você, por favor, usando as cadeias FORWARD, como se você tivesse duas interfaces físicas na caixa do Linux que você queria rotear entre elas.