Routing 4 Networks

1

Eu tenho tentado por quase uma semana para fazer isso funcionar, mas sem sucesso. Estou começando a me sentir sem esperança.

Eu tenho 4 adaptadores Ethernet:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 30:85:a9:ad:54:1e brd ff:ff:ff:ff:ff:ff
    inet 10.100.36.2/29 brd 10.100.36.7 scope global eth0
    inet6 fe80::3285:a9ff:fead:541e/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether a0:f3:c1:04:64:40 brd ff:ff:ff:ff:ff:ff
    inet 69.70.164.242/30 brd 69.70.164.243 scope global eth1
    inet6 fe80::a2f3:c1ff:fe04:6440/64 scope link
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether a0:f3:c1:04:a0:2f brd ff:ff:ff:ff:ff:ff
    inet 10.45.13.1/24 brd 10.45.13.255 scope global eth2
    inet6 fe80::a2f3:c1ff:fe04:a02f/64 scope link
       valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 28:10:7b:c9:58:76 brd ff:ff:ff:ff:ff:ff
    inet 10.45.15.1/24 brd 10.45.15.255 scope global eth3
    inet6 fe80::2a10:7bff:fec9:5876/64 scope link
       valid_lft forever preferred_lft forever

Esta é a rota padrão que meu servidor linux (Debian) me fornece na inicialização:

69.70.164.240/30 dev eth1  proto kernel  scope link  src 69.70.164.242
10.100.36.0/29 dev eth0  proto kernel  scope link  src 10.100.36.2
10.45.15.0/24 dev eth3  proto kernel  scope link  src 10.45.15.1
10.45.13.0/24 dev eth2  proto kernel  scope link  src 10.45.13.1
default via 10.45.15.254 dev eth3
default via 10.45.13.254 dev eth2
default via 69.70.164.241 dev eth1
default via 10.100.36.1 dev eth0

Aqui está o que eu quero fazer. eth0 é minha linha VDSL e eth1 é minha linha de cabo. Eu quero:

  • Encaminhar todo o tráfego de 10.45.13.0 (eth2) para o gateway 10.100.36.1 (eth0)
  • Encaminhar todo o tráfego de 10.45.15.0 (eth3) para o gateway 69.70.164.241 (eth1)

Se eu fizer isso funcionar, eu ficaria feliz o suficiente, mas também gostaria de tornar 10.45.13.0 invisível de 10.45.15.0 e vice-versa.

    
por David Bélanger 14.05.2013 / 14:28

1 resposta

2

Você só pode ter uma rota padrão ... por tabela de roteamento. Então, primeiro você precisa remover todas as rotas padrão, exceto uma. A única rota que você gostaria que seu servidor debian usasse.

Para suas outras coisas, o que você deseja é chamado de "roteamento de origem", o que significa que você executa um roteamento diferente, com base na origem (origem) do pacote atualmente manipulado.

Este é um exemplo para realmente o que você deseja fazer com o roteamento de origem. Sua pergunta é formulada um pouco vacilante, então eu assumirei que você quer que seu servidor debian também use sua linha VDSL.

Isso significa que você deseja remover todas as rotas padrão de sua tabela de roteamento, mas a via eth0. Seu RT principal / localizador deve ser assim:

69.70.164.240/30 dev eth1  proto kernel  scope link  src 69.70.164.242
10.100.36.0/29 dev eth0  proto kernel  scope link  src 10.100.36.2
10.45.15.0/24 dev eth3  proto kernel  scope link  src 10.45.15.1
10.45.13.0/24 dev eth2  proto kernel  scope link  src 10.45.13.1
default via 10.100.36.1 dev eth0

Em seguida, você cria outra tabela de roteamento seguindo o exemplo vinculado. Você provavelmente prefere chamar a tabela UseCable em vez de John . Então você poderia ir

echo 200 UseCable >> /etc/iproute2/rt_tables

E então você diz ao seu kernel para usar essa tabela quando o pacote se originar de 10.45.13.0 desta forma:

ip rule add from 10.45.15.0 table UseCable

Em seguida, você precisa preencher o UseCable. O seguinte é um começo:

ip route add 10.45.15.0/24 dev eth3 table UseCable
ip route add 69.70.164.240/30 dev eth1 table UseCable
ip route add default via 69.70.164.241 table UseCable #that's the default route via cable

Bem, então você está feito em termos de roteamento. Eu acho que você quer NAT também. Então você precisa de algo ao longo das linhas de

#for everything from eth3 leaving through eth1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 

#for everything from eth2 leaving through eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

Concluído. Não é a maneira mais simples, mas a comunicação entre 10.45.13.0/24 e 10.45.15.0/24 não é possível porque, quando originada de 10.45.15.0/24, a tabela de roteamento não contém uma entrada para 10.45.13.0/24. / p>

Deixo o refinamento como um exercício para você.

    
por 14.05.2013 / 14:46