Como rotear as conexões de entrada através de uma interface específica?

2

Eu tenho várias placas ethernet com dois conjuntos diferentes de redes configuradas nelas.

A saída de route -n é dada aqui ::

     Kernel IP routing table 
      Destination  Gateway        Genmask        Flags Metric Ref Use Iface
   0.0.0.0         192.168.3.1     0.0.0.0         UG    0      0        0 eth0
   169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
   192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth1
   192.168.3.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0

As conexões de saída estão bem. O problema é com conexões de entrada: como posso rotear o tráfego de entrada para passar por 192.168.1.X?

Outra coisa que gostaria de acrescentar é que preciso das conexões de saída para passar pelo 192.168.3.1.

    
por rahul 27.11.2012 / 08:39

2 respostas

2

Eu mesmo encontrei a solução para isso: Roteamento para vários uplinks / provedores

Uma configuração comum é a seguinte, na qual existem dois provedores que conectam uma rede local (ou até mesmo uma única máquina) à grande Internet.

                                                               ________
                                          +------------+        /
                                          |            |       |
                            +-------------+ Provider 1 +-------
        __                  |             |            |     /
    ___/  \_         +------+-------+     +------------+    |
  _/        \__      |     if1      |                      /
 /             \     |              |                      |
| Local network -----+ Linux router |                      |     Internet
 \_           __/    |              |                      |
   \__     __/       |     if2      |                      \
      \___/          +------+-------+     +------------+    |
                            |             |            |     \
                            +-------------+ Provider 2 +-------
                                          |            |       |
                                          +------------+        \________

como direcionar as respostas para os pacotes que chegam em um determinado provedor, por exemplo, Provedor 1, retorne novamente pelo mesmo provedor.

Vamos primeiro definir alguns nomes simbólicos. Seja $ IF1 o nome da primeira interface (if1 na imagem acima) e $ IF2 o nome da segunda interface. Então deixe $ IP1 ser o endereço IP associado a $ IF1 e $ IP2 ao endereço IP associado a $ IF2. Em seguida, deixe $ P1 ser o endereço IP do gateway no Provedor 1 e $ P2 o endereço IP do gateway no provedor 2. Finalmente, deixe $ P1_NET ser a rede IP $ P1, e $ P2_NET a rede IP $ P2 está em.

Um cria duas tabelas de roteamento adicionais, digamos T1 e T2. Estes são adicionados em / etc / iproute2 / rt_tables. Em seguida, você configura o roteamento nessas tabelas da seguinte maneira:

  ip route add $P1_NET dev $IF1 src $IP1 table T1
  ip route add default via $P1 table T1
  ip route add $P2_NET dev $IF2 src $IP2 table T2
  ip route add default via $P2 table T2

Nada espetacular, apenas crie uma rota para o gateway e construa uma rota padrão através desse gateway, como faria no caso de um único provedor de upstream, mas coloque as rotas em uma tabela separada por provedor. Observe que a rota da rede é suficiente, pois informa como localizar qualquer host nessa rede, o que inclui o gateway, conforme especificado acima. Em seguida, você configura a tabela de roteamento principal. É uma boa ideia direcionar as coisas para o vizinho direto através da interface conectada ao vizinho. Observe os argumentos 'src', eles garantem que o endereço IP de saída correto seja escolhido.

    ip route add $P1_NET dev $IF1 src $IP1
    ip route add $P2_NET dev $IF2 src $IP2

Em seguida, sua preferência pela rota padrão:         ip route add default via $ P1

Em seguida, você configura as regras de roteamento. Eles realmente escolhem com qual tabela de roteamento será roteada. Você deseja certificar-se de que você direciona uma determinada interface se você já tiver o endereço de origem correspondente:         ip rule add from $ IP1 tabela T1         ip rule add from $ IP2 tabela T2

    
por 29.11.2012 / 06:59
1

Você não direciona a entrada para um determinado - você direciona a saída ...

o último salto (roteador ou qualquer outro) que tenha como alvo você decidirá qual interface será contatada ... por exemplo, se uma conexão for estabelecida a partir de 192.168.1.x, ela não será roteada para o nic conectado a 192.168.3.x.

talvez eu esteja sentindo falta de algo aqui ... se não for isso que você quer ouvir, acho que você precisa desenhar sua topologia de rede ou nos fornecer mais algumas informações.

    
por 27.11.2012 / 09:05