Interfaces virtuais com rotas padrão

2

Meu servidor Ubuntu tem uma interface física eth0 . Eu quero atribuir 3 ip's (sub-redes diferentes) para o servidor. Não consigo usar as ferramentas de criação de interface virtual padrão como ifconfig ou ip addr add (por exemplo, eth0:0 ) porque para cada um desses 3 ips preciso especificar um gateway padrão. Assim, se é possível ter uma ponte à qual eu possa anexar eth0 (e várias interfaces de tap ou tun com ips que eu quero), mas cada um dos dispositivos virtuais pode se conectar a sub-redes accessbile acima de eth0 .

EDIT1:

Imagine que eu queira que 5 interfaces ethernet se conectem a 5 redes diferentes. Mas não posso me dar ao luxo de ter 5 interfaces. Então, eu compro um switch não gerenciado, e conecto cabos cat5 de todas as 5 redes a esse switch e uma porta desse switch está conectada a eth0 do servidor Ubuntu. Para lidar com todas as 5 redes no servidor Ubuntu, eu crio 5 interfaces virtuais que se comportam como interfaces físicas (eth1, eth2, etc.), que atravessam eth0 e acabam no switch. Eu não me importo se todas essas redes separadas atravessarem um switch não gerenciado. Mas eu quero que meu servidor Ubuntu trate essas redes como se elas estivessem conectadas a 5 interfaces físicas.

    
por nixnotwin 11.12.2011 / 07:15

5 respostas

1

Você só pode ter uma rota padrão em um sistema.

Você pode adicionar rotas estáticas para forçar o tráfego a passar por um roteador diferente:

    route add 172.16.1.0/24 172.26.1.250

ou

    ip route add 172.16.1.0/24 via 172.26.1.250 dev eth0:1

Estes comandos podem ser adicionados a / etc / network / interfaces.

    
por 11.12.2011 / 11:25
1

O que você quer é influenciar as decisões de roteamento no kernel. Isso geralmente é chamado de roteamento de políticas: no seu caso, suponho que você queira que uma política que atue no endereço de origem seja roteada de volta para essa interface. O tráfego de rede que chega em uma interface deve sair nessa interface e os pacotes em uma determinada interface devem usar regras especificadas para essa interface em vez da tabela padrão. O comando que você quer é ip rule .

Tendo dito isso, não há informações suficientes no OP para dizer com certeza que o roteamento de políticas é necessário.

    
por 12.12.2011 / 02:40
0

Depois de googlar por muitos meses, acho que encontrei a resposta. Isso pode ser feito com a ferramenta vde que é usada para criar interfaces para sistemas operacionais convidados no KVM. Aqui estão os passos:

Instale o software:

sudo apt-get install vde2

Crie um comutador virtual:

sudo vde_switch -s /tmp/switch1 -daemon

Crie um dispositivo de toque:

sudo vde_switch -tap tap0 -daemon

Crie outro dispositivo de toque (o novo arquivo de soquete precisa ser especificado):

sudo vde_switch -tap tap1 -sock /var/run/vde.ctl/ctl1 -daemon

Qualquer número de dispositivos tap pode ser criado desde que cada um receba um novo arquivo de soquete.

Conecte seu dispositivo písico ao vde switch:

sudo vde_pcapplug -d eth0

Atribua endereços IP a ambos os dispositivos de toque (meu eth0 está em 192.168.1.10/24 ):

sudo ifconfig tap0 192.168.1.80 netmask 255.255.255.0
sudo ifconfig tap1 192.168.1.90 netmask 255.255.255.0

Eu coloquei todas as interfaces na mesma rede para que eu possa pingar umas nas outras e testar se a configuração funciona bem.

Agora pingue os192.168.1.80 e 192.168.1.90 do ip de um host diferente que esteja na mesma rede (provavelmente com a máquina do Windows).

Do Ubuntu, outros hosts na rede podem receber ping dos novos dispositivos tap , como:

ping -I tap0 192.168.1.1

Agora, ifconfig pode ser usado para reatribuir endereços IP que pertencem a redes separadas para tocar em dispositivos.

É isso. Interfaces virtuais separadas que agem como interfaces separadas.

Eu não encontrei nenhum howto / tutorial que explique este procedimento. Pode ser que alguém possa testá-lo em várias situações para ver se é uma solução viável a ser implementada em um ambiente de produção.

    
por 11.12.2011 / 16:21
0

Você pode usar o formato eth0:x para adicionar os endereços IP adicionais. Apenas certifique-se de adicionar a máscara de rede apropriada a cada rede. Você pode rotear redes adicionais em cada interface, conforme mostrado.

iface eth0:1 inet static
    address 192.0.2.6
    netmask 255.255.255.0
    post-up route add -net 198.51.100.0/24 netmask 255.255.255.0 gw 192.0.2.1

Ao rotear redes adicionais, você precisa conhecer o endereço de gateway da rede à qual você se conectou. Este será o endereço do gateway de qualquer rede que você deseja rotear usando essa interface.

A menos que você esteja usando o roteamento de políticas ou o compartilhamento de carga de conexão semelhante, você deve ter apenas uma rota padrão.

    
por 11.12.2011 / 23:11
0

por que você não usa um utilitário tuctl simples no linux:

tunctl -u root -i eth5

Isso criará uma nova interface eth5, ajustando IP / MASK e voila, configure como qualquer outra interface, deve funcionar bem.

    
por 18.02.2013 / 17:13