Bem-vindo: Sáb, 23 de Novembro 2024, 5:20 Pesquisa avançada

Routing on a stick com Linux

Escreveu alguma aplicação ou script que quer partilhar? Ou conhece algo que quer partilhar? Sabe alguma linguagem de programação e quer partilhar esse conhecimento com um tutorial? Tem alguma dúvida em alguma linguagem? Então este é o sítio certo.

Routing on a stick com Linux

Mensagempor nuno_nunes » Qui, 2 de Janeiro 2014, 7:01



Routing on a stick é a técnica usada para “rotear” tráfego inter VLAN’s usando um único roteador conectado com um único cabo a uma única porta de transporte (porta trunk ou VLAN tagged). Um roteador deve ter um pé em cada rede que ele encaminha tráfego, mas se ele tem apenas uma porta de rede podemos criar interfaces virtuais e atribuir cada uma à uma VLAN usando o encapsulamento 802.1q. Um roteador pode ser, é claro, um pc modesto com uma distro Linux qualquer instalada. Primeiro basta que a porta do switch esteja configurada como trunk, usando o encapsulamento 802.1q, marcando os frames com o ID da VLAN de origem. A interface do roteador recebe os frames e atribui a cada interface virtual segundo a respectiva VLAN. Veja a imagem abaixo:



Veja que existem 3 VLAN’s no switch, uma para cada porta. O roteador está conectado em uma única porta de onde tem acesso a todas as VLAN’s, o tráfego de uma e outra é diferenciado pelo protocolo 802.1q.

Se quiser entender mais sobre VLAN’s consulte este artigo: goo.gl/YWJOdS

Neste guia vou criar 2 VLAN interfaces sobre uma interface real. Com as interfaces criadas você pode referenciá-las para manipular qualquer configuração no sistema, como regras de firewall, roteamento, etc…
Sem mais para teoria vamos à prática.

Criando as interfaces




Antes de tudo instale o pacote “vlan”. No Debian e derivados seria:



apt-get install vlan


Em seguida carregue o módulo “8021q”, e coloque uma linha para ele no arquivo “/etc/modules”, para que seja carregado sempre:

# modprobe 8021q
# echo 8021q >> /etc/modules


Com o módulo carregado pelo kernel você pode exibir as configurações das VLAN interfaces no arquivo “/proc/net/vlan/config”. E o comando para manipular as interfaces é o “vconfig”:

cat /proc/net/vlan/config
vconfig –help


Existem algumas opões quanto à nomenclatura das interfaces, mas você pode alterar usando o “vconfig set_name_type”. Por exemplo, as interfaces da vlan 30 podem ser nomeadas como vlan0030 ou vlan30 ou eth0.30. Consulte o help e veja a nomenclatura atual no arquivo “/proc/net/vlan/config”.

Para adicionar uma VLAN interface com VLAN ID 45 na interface eth0 seria:

# vconfig add eth0 45


Veja se a interface foi criada verificando o arquivo “/proc/net/vlan/config”. Uma interface será criada com o nome eth0.45 ou vlan45, dependendo do “name-type” definido.
Para remover uma VLAN interface:

# vconfig rem eth0.45


Você deve declarar as configurações da interface no arquivo “/etc/network/interfaces” normalmente, exatamente como as interfaces reais, mas com apenas um parâmetro a mais, o que identifica a interface física da vlan:

auto eth0.45
iface eth0.45 inet static
address 192.168.45.1
netmask 255.255.255.0
network 192.168.45.0
broadcast 192.168.45.255
vlan_raw_device eth0

auto eth0.50
iface eth0.50 inet static
address 192.168.50.1
netmask 255.255.255.0
network 192.168.50.0
broadcast 192.168.50.255
vlan_raw_device eth0

Veja que no exemplo defini 2 VLANs na interface eth0, a 45 e a 50.
Agora você pode montar as configurações da máquina baseadas nas interfaces das VLANs. Por exemplo, impedir que o tráfego de uma VLAN seja encaminhado para outra:

# iptables -A FORWARD -i eth0.45 -o eth0.50 -j REJECT
# iptables -A FORWARD -i eth0.50 -o eth0.45 -j REJECT


Ou definir regras diferentes para uma VLAN no squid:

acl vlan45 src 192.168.45.0/24
acl vlan50 src 192.168.50.0/24
acl youtube dstdomain youtube.com
http_access deny vlan50 youtube


Configuração do Switch




Para que o tráfego chegue na interface da VLAN correta, os frames devem vir com a marcação 802.1q. Para isto a porta do switch deve estar configurada corretamente como trunk e permitindo as VLAN’s é claro.
Em um switch Cisco a configuração seria:

switch(config-if) switchport mode trunk
switch(config-if) switchport trunk allow vlan all


Ou em um switch HP/3com:

port link-type trunk
port trunk permit vlan all


Se você usa o RouterOS a coisa pode ser mais confusa, confira aqui: goo.gl/Lw4qMO

Fonte: Seja Livre


Editado pela última vez por nuno_nunes em Qui, 2 de Janeiro 2014, 23:44, em um total de 2 vezes.
Avatar do usuário
nuno_nunes
 
Mensagens: 3932
Registrado em: 28 Maio, 2012
Localização: Pampilhosa da Serra - Portugal

Re: Routing on a stick com Linux

Mensagempor Rafael Schonberg » Qui, 2 de Janeiro 2014, 14:26

Não percebi nada.
O homem não consegue descobrir novos oceanos se não tiver a coragem de perder de vista a costa. — André Gide
Avatar do usuário
Rafael Schonberg
 
Mensagens: 901
Registrado em: 19 Novembro, 2012


Voltar para Scripts, programação e aplicações em desenvolvimento

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes