roteamento através de múltiplas subinterfaces no debian

1

minha pergunta é tão simples quanto o título, eu tenho um debian 6, 2 NICs, 3 sub-redes diferentes em uma única interface, assim:

auto eth0
iface eth0 inet static
    address 192.168.106.254
    netmask 255.255.255.0

auto eth0:0
iface eth0:0 inet static
    address 172.19.221.81
    netmask 255.255.255.248

auto eth0:1
iface eth0:1 inet static
    address 192.168.254.1
    netmask 255.255.255.248

auto eth1
iface eth1 inet static
    address 172.19.216.3
    netmask 255.255.255.0
    gateway 172.19.216.13

eth0 é conectado a um swith com 3 vlans diferentes, eth1 é conectado a um roteador. Nenhum iptables DROP, então, todo o tráfego é permitido. Agora, passando o tráfego através de eth0 está OK, passando o tráfego através de eth0:0 está OK, mas, passando o tráfego através de eth0:1 não está funcionando, posso pingar o endereço IP dessa subinterface de um pc onde esta ip é o gateway padrão, mas não pode chegar a servidores na sub-rede da interface eth1 , o tráfego não está passando, mesmo quando eu definir o iptables para registrar todo o tráfego na cadeia FORWARD e eu posso ver o tráfego lá, mas o tráfego não está realmente passando. E o engraçado é que eu posso fazer o inverso, quero dizer, passando de eth1 para eth0:1 , RDP, telnet, ping, etc,

fazendo algum trabalho com o iptable, eu consigo passar algum tráfego de eth0:1 para eth1 , o iptables se parece com isso:

iptables -t nat PREROUTING -d 192.168.254.1/32 -p tcp -m multiport --dports 25,110,5269 -j DNAT --to-destination 172.19.216.1
iptables -t nat PREROUTING -d 192.168.254.1/32 -p udp -m udp --dport 53 -j DNAT --to-destination 172.19.216.9
iptables -t nat PREROUTING -d 192.168.254.1/32 -p tcp -m tcp --dport 21 -j DNAT --to-destination 172.19.216.11

iptables -t nat POSTROUTING -s 172.19.216.0/24 -d 172.19.221.80/29 -j SNAT --to-source 172.19.221.81
iptables -t nat POSTROUTING -s 172.19.216.0/24 -d 192.168.254.0/29 -j SNAT --to-source 192.168.254.1
iptables -t nat POSTROUTING -s 172.19.216.0/24 -o eth0 -j SNAT --to-source 192.168.106.254

dong isso está funcionando, mas, é realmente uma dor de cabeça tem que mapear cada porta com o servidor, imagine se eu mover o serviço do servidor, então, agora eu tenho dúvidas:
pode rota debian através de múltiplas subinterfaces ?? existe um limite para isso? se não, o que estou fazendo errado quando eu tenho a mesma configuração com outras sub-redes e está funcionando ok? sem as regras do iptables no nat, não funciona

obrigado e espero bons comentários / respostas

ROTAS em 172.19.216.3

root@dbf1:~# ip route
192.168.254.0/29 dev eth0  proto kernel  scope link  src 192.168.254.1
172.19.221.80/29 dev eth0  proto kernel  scope link  src 172.19.221.81
172.19.216.0/24 dev eth1  proto kernel  scope link  src 172.19.216.3
192.168.106.0/24 dev eth0  proto kernel  scope link  src 192.168.106.254
default via 172.19.216.13 dev eth1
    
por Castro Roy 30.11.2012 / 22:53

1 resposta

1

Quando uma máquina deseja enviar um pacote para um destino para o qual não tem rota, ele o encaminha para seu gateway padrão. As máquinas que você está tentando acessar estão fazendo isso com os pacotes de resposta que estão gerando. Se a máquina do gateway padrão que eles estão usando não souber como chegar a essa máquina, ela aparecerá como se essa máquina não estivesse enviando o tráfego corretamente. Mas isso é. O problema está nas respostas que não voltam.

Esta é a sequência:

  1. Esta máquina envia o pacote para a máquina correta.

  2. A máquina de destino recebe o pacote e forma uma resposta. O destino IP da resposta é a origem do pacote recebido.

  3. A máquina de destino não tem rota para o destino deste pacote, uma vez que não está na sub-rede local. Então, ele encaminha para o roteador de gateway padrão.

  4. Esse roteador não tem ideia de como chegar a esse destino, pois também não está em sua sub-rede. Por isso, ele é enviado pelo seu gateway padrão, provavelmente pela Internet.

Para que uma rede funcione corretamente, qualquer dispositivo que seja o gateway padrão de qualquer máquina precisa saber como alcançar cada sub-rede local que qualquer um de seus clientes deseja alcançar ou cada um desses clientes deve ter método para alcançar essa sub-rede.

    
por 01.12.2012 / 00:46