Divisão de tráfego de porta / IP entre interfaces

0

Semelhante a this request (eu acho Gostaria de ver o limite de tráfego de um determinado número de porta roteado por uma interface específica, enquanto o tráfego de um IP específico é roteado por outro. O servidor que estou tentando fazer isso tem uma nova instalação do Ubuntu 14.04.2, então eu tenho uma grande variedade de ferramentas para realizar a tarefa. No entanto, a rede não é algo com o qual tenho muita experiência, por isso não sei por onde começar. =)

Obrigado antecipadamente!

EDITAR:

Alguns detalhes, porque são importantes.

me@server:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 54:9f:35:0a:6a:20 brd ff:ff:ff:ff:ff:ff
    inet 10.22.89.50/24 brd 10.22.89.255 scope global em1
       valid_lft forever preferred_lft forever
    inet6 fe80::569f:35ff:fe0a:6a20/64 scope link 
       valid_lft forever preferred_lft forever
(...)
6: p1p1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:0f:53:2d:4b:80 brd ff:ff:ff:ff:ff:ff
    inet 10.22.52.199/26 brd 10.22.52.192 scope global p1p1
       valid_lft forever preferred_lft forever
7: p1p2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:0f:53:2d:4b:81 brd ff:ff:ff:ff:ff:ff
    inet 10.22.52.200/26 brd 10.22.52.192 scope global p1p2
       valid_lft forever preferred_lft forever

Gostaria de rotear todo o tráfego vinculado para 74.120.50.7 a p1p2 e todo o tráfego vinculado a qualquer IP na porta 7047 a p1p1 .

    
por musasabi 07.05.2015 / 20:07

1 resposta

2

Ok: Primeiro, você tem duas interfaces com endereços IP sequenciais na mesma sub-rede - se estiver tentando distribuir a carga entre elas para obter uma taxa de transferência maior (digamos, você deseja transformar duas NICs gigabit em uma NIC de 2 gigabits) Há maneiras muito melhores de fazer isso! O termo geral seria "ligação". Pesquise por "ligação de rede" ou "NIC bonding" para encontrar algumas informações.

Supondo que não é isso que você está fazendo, a próxima coisa a tomar cuidado é que o padrão no Linux é considerar os endereços IP como ligados a um host, não para uma interface. Há uma entrada /proc para alterar isso: /proc/sys/net/ipv4/conf/«INTERFACE»/arp_filter ; defina como 1 para desabilitar esse comportamento. Você provavelmente precisará.

Por fim, é possível que você tenha criado alguns endereços IP privados sequenciais e os tenha usado em sua pergunta para redigir seus IPs reais, e as duas interfaces não estão na mesma sub-rede. Nesse caso, ignore o acima, mas, no futuro, use no futuro sub-redes privadas diferentes para evitar confusão.

De qualquer forma, há algumas coisas que parecem diferentes em sua situação, em comparação com a pergunta à qual você se vinculou - as outras coisas dessas respostas devem ser aplicadas.

  1. Se essas duas portas estiverem na mesma rede Ethernet (por exemplo, conecte-se ao mesmo switch), o (s) switch (es) realmente decidirá para qual porta enviar o tráfego. A menos que você tenha switches caros, eles fazem isso somente com base no endereço MAC de destino. Tenho certeza que alguém faz um switch que pode olhar para o número da porta TCP, mas eu aposto que não é barato.

  2. Por padrão, o roteador enviando dados para seu servidor só vai se importar com o endereço IP de destino. Para obter tráfego "all incoming para 10.22.52.199 ou 10.22.52.200 na porta 7047 vai para 10.22.52.199" você terá que convencer seu roteador a fazer isso ... E isso pode não seja fácil.

  3. O tráfego de saída para 74.120.50.7 deve ser bastante fácil: ip route add 74.120.50.7/32 via «ROUTER» dev p1p2 src 10.22.52.200 . Isso especifica o dispositivo para enviá-lo e o IP de origem; Tenho certeza que isso vai sair dessa interface. (/ 32 é uma máscara de rede 255.255.255.255, ou seja, apenas um endereço). Você precisa preencher o roteador do próximo salto para "ROUTER". (Provavelmente chamado de "gateway padrão" em algum lugar).

  4. Da mesma forma, para o número da porta: na tabela de roteamento extra (da resposta da pergunta vinculada), inclua em dev p1p1 src 10.22.52.199 . Se o acima funcionar, isso também deve acontecer.

Você pode confirmar que o tráfego está fluindo pelas interfaces corretas, por exemplo, tcpdump -p -i INTERFACE

    
por 08.05.2015 / 01:25