Linux Router com Single NIC

1

Suponha que eu tenha uma rede pequena, com várias VLANs, como segue:

VLAN1 10.1.1.0/24

VLAN2 10.1.2.0/24

VLAN3 10.1.3.0/24

O roteamento de VLAN é cuidado pelo comutador central, o comutador não faz roteamento baseado em política (Dell PowerConnect 6224F), portanto, ele só terá uma rota padrão para todos os outros tráfegos fora das VLANs acima. (isto é, 0.0.0.0/0).

Agora, suponha que eu tenha duas conexões com a Internet, cada uma com um modem NAT DSL na VLAN1 (digamos 10.1.1.16 e 10.1.1.17), e quero que dispositivos na VLAN2 usem uma conexão com a Internet e dispositivos na VLAN3 usem a outra. Eu estava pensando em usar uma caixa Linux para conseguir isso.

Digamos que eu configure uma caixa Linux (10.1.1.8) e configure o gateway padrão no comutador central para apontar para 10.1.1.8, é possível configurar o IPTables na caixa Linux para fazer o que eu preciso?

A maioria dos guias de procedimentos para configurar um roteador baseado em Linux tem duas interfaces de rede como um requisito, mas não acho que isso seja necessário neste cenário, pois essa caixa do Linux simplesmente ficará na mesma VLAN que a DSL. modems. (mais eu não tenho atualmente nenhum NICs sobressalentes para colocar no servidor que tenho), então a minha pergunta é (supondo que seja possível) alguém pode me fornecer alguma orientação para criar algumas regras de tabelas IP para cuidar disso?

Eu também poderia, no futuro, como todas as conexões HTTP, ser transparentemente intermediadas por proxies, de preferência através de uma instância compartilhada do squid, mas ainda encaminhando solicitações para baixo na conexão DSL apropriada.

Editar:

Eu não preciso rotear entre VLANs, já que o switch principal já está funcionando bem. Talvez eu não esteja obtendo a terminologia correta, mas se eu configurar a rota padrão para 0.0.0.0/0 no comutador central como 10.1.1.8, posso configurar a caixa Linux para redirecionar os pacotes pelo gateway DSL correto, dependendo a fonte do pacote?

Um exemplo do que estou tentando alcançar ...

PC na VLAN3 (10.1.3.123) envia um pacote para 1.2.3.4. O gateway padrão no PC é 10.1.3.1 (ou seja, a interface de roteamento na VLAN3), o switch encaminha este pacote via 10.1.1.1 para 10.1.1.8 (o switch é configurado para usar esse IP como o próximo salto para 0.0.0.0 / 0). A caixa Linux, em seguida, encaminha / redireciona esse pacote através do modem DSL 10.1.1.17, porque o IP de origem estava dentro da VLAN 3 (10.1.3.0/24). Se o pacote tivesse se originado a partir de 10.1.2.0/24, a caixa do Linux seria roteada / redirecionada via 10.1.1.16

                      VLAN 1
                   (10.1.1.0/24)
  10.1.1.16 (DSL1) ------+
                         |
  10.1.1.17 (DSL2) ------+
                         |
  10.1.1.8 (Linux) ------+
                         |
                  +-------------+
   VLAN 2  -------| Core Switch |-------  VLAN 3
(10.1.2.0/24)     +-------------+      (10.1.2.0/24)

Edição adicional:

Eu acho que não expliquei muito bem o que estou tentando alcançar aqui, mas por favor, tenha comigo um pouco aqui, já que eu não sou um guru da rede (apenas no caso de você ainda não ter detectado isso! ).

Eu não quero criar múltiplas interfaces na caixa linux, já que eu não quero fazer nenhum roteamento entre VLANs, eu só quero que a caixa fique em uma das VLANs (interface única) e forward (ou rota?) pacotes via DSL1 ou DSL2, dependendo da origem do pacote. Se 10.1.1.8 é a rota padrão para 0.0.0.0/0 em nossa rede, certamente isso pode ser feito?

    
por Bryan 04.05.2011 / 15:14

3 respostas

1

O que você está propondo é certamente possível. De fato, é uma configuração de rede muito comum ter um switch de camada 3 fazendo a maior parte do seu roteamento interno e fornecendo alguns controles básicos de acesso e transferindo tráfego mais complicado para o edge / core.

Seu roteador de borda Linux precisará estar ciente de todas as sub-redes por trás do switch - você pode fazer isso com rotas estáticas, por exemplo:

route add -net 10.1.1.0/16 gw <switch IP>

Ou o switch Dell ( de um rápido google ) suporta RIP e OSPF, Assim, você pode conseguir que ele anuncie suas rotas para a caixa do Linux automaticamente se você usou Quagga ou similar para pegar os anúncios.

Seus clientes só precisarão ser configurados com seu gateway padrão (a interface do switch em sua VLAN) e terão as ACLs adequadas no switch para permitir que o tráfego saia do limite.

Infelizmente eu não fiz PBR no Linux, então não posso te dar nenhuma regra mágica e só posso realmente apontar para um http://lartc.org/howto/lartc.rpdb.multiple-links .html "> artigo encontrado pelo Google - parece relevante. Não fique muito preso na interface múltipla, é fácil fazer uma interface em múltiplos no Linux, criando aliases ( ifconfig eth0:25 <ipaddr> ) ou VLANs ( ifconfig eth0.25 <ipaddr> ).

    
por 05.05.2011 / 11:00
0

Acho que você poderia criar endereços de rede adicionais para sua placa de rede - um para cada VLAN e usar route para criar rotas estáticas.

    
por 04.05.2011 / 18:09
0

Para a maioria dos propósitos, cada interface vlan na caixa Linux funcionará como uma interface "real", então quando você ler os tutoriais, apenas substitua mentalmente "eth0" por "eth0.123" e "eth1" por "eth0.456 ".

Eu recomendo que você desabilite todas as coisas de roteamento no switch. Isso parece causar confusão e complexidade.

Como alguém comentou, eu concordo com a recomendação de não usar a VLAN 1 para "tráfego real". Usar outro ID de VLAN (existem muitos ...) torna mais claro que a porta foi explicita e deliberadamente configurada.

    
por 05.05.2011 / 01:18