AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 418765
Accepted
wener
wener
Asked: 2018-01-22 22:39:59 +0800 CST2018-01-22 22:39:59 +0800 CST 2018-01-22 22:39:59 +0800 CST

Por que o tráfego de rede Linux passa apenas pela eth0?

  • 772

Eu tenho dois NICs no lado do servidor, eth0? 192.168.8.140 e eth1 ? 192.168.8.142. O cliente envia dados para 192.168.8.142, e espero iftopmostrar o tráfego para eth1, mas isso não acontece. Todas as redes passam por eth0, então como posso testar as duas NICs?

Por que todo o tráfego passa por eth0 em vez de eth1? Eu esperava conseguir 1 Gbit/s por interface. O que há de errado com minha instalação ou configuração?

Servidor

ifconfig

eth0    Link encap:Ethernet  HWaddr 00:00:00:19:26:B0
        inet addr:192.168.8.140  Bcast:0.0.0.0  Mask:255.255.252.0
        inet6 addr: 0000::0000:0000:fe19:26b0/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:45287446 errors:0 dropped:123343 overruns:2989 frame:0
        TX packets:3907747 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:66881007720 (62.2 GiB)  TX bytes:261053436 (248.9 MiB)
        Memory:f7e00000-f7efffff

eth1    Link encap:Ethernet  HWaddr 00:00:00:19:26:B1
        inet addr:192.168.8.142  Bcast:0.0.0.0  Mask:255.255.255.255
        inet6 addr: 0000::0000:0000:fe19:26b1/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:19358 errors:0 dropped:511 overruns:0 frame:0
        TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:1772275 (1.6 MiB)  TX bytes:1068 (1.0 KiB)
        Memory:f7c00000-f7cfffff

Lado do servidor

# Listen for incomming from 192.168.8.142
nc -v -v -n -k -l 192.168.8.142 8000 | pv > /dev/null
Listening on [192.168.8.142] (family 0, port 8000)
Connection from 192.168.8.135 58785 received!

Cliente

# Send to 192.168.8.142
time yes | pv |nc -s 192.168.8.135 -4 -v -v -n 192.168.8.142 8000 >/dev/null
Connection to 192.168.8.142 8000 port [tcp/*] succeeded!

Lado do servidor

$ iftop -i eth0
interface: eth0
IP address is: 192.168.8.140

TX:             cumm:  6.34MB   peak: 2.31Mb   rates: 2.15Mb  2.18Mb  2.11Mb
RX:                    2.55GB          955Mb           874Mb   892Mb   872Mb
TOTAL:                 2.56GB          958Mb           877Mb   895Mb   874Mb

$ iftop -i eth1
interface: eth1
IP address is: 192.168.8.142

TX:             cumm:      0B   peak:     0b   rates:     0b      0b      0b
RX:                    4.51KB         3.49Kb          3.49Kb  2.93Kb  2.25Kb
TOTAL:                 4.51KB         3.49Kb          3.49Kb  2.93Kb  2.25Kb

$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:19:26:b0 brd ff:ff:ff:ff:ff:ff
$ ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:19:26:b1 brd ff:ff:ff:ff:ff:ff
linux networking
  • 3 3 respostas
  • 7219 Views

3 respostas

  • Voted
  1. Best Answer
    telcoM
    2018-01-22T23:13:02+08:002018-01-22T23:13:02+08:00

    Existem dois modelos de design possíveis para uma pilha de rede TCP/IP: um modelo de host forte e um modelo de host fraco. Você está esperando um comportamento que corresponda ao modelo de host forte. O Linux foi projetado para usar o modelo de host fraco. Em geral, o modelo de host fraco é mais comum, pois reduz a complexidade do código de roteamento e, portanto, pode oferecer melhor desempenho. Caso contrário, os dois modelos de host são apenas princípios de design diferentes: nenhum é inerentemente melhor que o outro.

    Basicamente, o modelo de host fraco significa que o tráfego de saída será enviado pela primeira interface listada na tabela de roteamento que corresponda ao endereço IP do destino (ou gateway selecionado, se o destino não puder ser acessado diretamente), sem considerar o IP de origem endereço .

    É basicamente por isso que geralmente não é aconselhável usar duas interfaces físicas separadas se você precisar de dois endereços IP no mesmo segmento de rede. Em vez disso, atribua dois endereços IP para uma interface (aliases de IP: por exemplo, eth1 = 192.168.8.142 e eth1:0 = 192.168.8.140). Se você precisar de mais largura de banda do que uma única interface pode fornecer, una (ou equipe, se aplicável) duas ou mais interfaces e, em seguida, execute ambos os IPs no vínculo/equipe.

    Ajustando várias configurações do sysctl e usando a funcionalidade de "roteamento avançado" para configurar tabelas de roteamento independentes para cada NIC, é possível fazer o Linux se comportar como um sistema de modelo de host forte. Mas essa é uma configuração muito especial e eu recomendaria pensar duas vezes antes de implementá-la.

    Veja as respostas em Linux Source Routing, Strong End System Model / Strong Host Model? se você realmente precisa.

    • 33
  2. Mike
    2018-01-23T04:32:15+08:002018-01-23T04:32:15+08:00

    Um ponto adicional a considerar é que a interface eth1 está configurada com uma máscara de sub-rede de 255.255.255.255.

    Isso significa que a interface eth1 está configurada para não esperar nenhum outro dispositivo (hosts) em sua interface de rede. Isso significa que ele não poderá se comunicar com seu cliente 192.168.8.142.

    • 11
  3. wener
    2018-01-22T23:45:43+08:002018-01-22T23:45:43+08:00

    Depois de muita pesquisa, descobri Por que o netcat não usa a interface correta associada ao IP? , e este é o mesmo problema. Como o @telcoM disse, o tráfego de saída será enviado para a primeira interface, e esse é o problema, então a maneira mais fácil de resolver isso é:

    ip route add default via 192.168.8.142 dev eth1 table 142
    ip rule add from 192.168.8.142 table 142
    

    Esta rota fará ip route get 192.168.8.135 from 192.168.8.142retornar eth1 ao invés de eth0. Então tudo funciona como esperado.

    • 2

relate perguntas

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Roteador estranho funciona com centos 6 [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve