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 / server / Perguntas / 1162604
Accepted
Oom_Ben
Oom_Ben
Asked: 2024-07-16 20:31:09 +0800 CST2024-07-16 20:31:09 +0800 CST 2024-07-16 20:31:09 +0800 CST

Linux: Não é possível executar ping na interface enquanto outra interface está ativa

  • 772
A recompensa expira amanhã . As respostas a esta pergunta são elegíveis para uma recompensa de +50 reputação. Oom_Ben quer chamar mais atenção para esta questão:
Qualquer solução que forneça uma solução permanente (ou seja, sobreviva a uma reinicialização) é muito apreciada, independentemente da fonte ou do método.

Portanto, tenho um servidor RHEL que pretendo usar para monitoramento de instalações. Possui 2 interfaces de rede em sub-redes diferentes. Por uma questão de brevidade, estes seriam o resultado de um 'ifconfig' e vou chamá-los:

  • eno2: 11.11.11.11/24 (DHCP, sub-rede da Internet)
  • eno3: 22.22.22.22/24 (STATIC, sub-rede de infraestrutura)

Agora meu problema é o seguinte: No próprio servidor eu posso fazer ping na internet (8.8.8.8) e posso fazer ping em dispositivos na sub-rede de infraestrutura (22.22.22.201) com a interface correta sendo usada para ambos (eno2 para 8.8.8.8 e eno3 para 22.22.22.201). por exemplo

$ip route get 8.8.8.8
> 8.8.8.8 via 11.11.11.0 dev eno2 src 11.11.11.11 uid 0

$ip route get 22.22.22.201
> 22.22.22.201 dev eno3 src 22.22.22.22 uid 0

Do meu computador do escritório (ou seja, remoto), também posso acessar dispositivos em ambas as sub-redes, mas não consigo acessar o servidor em seu próprio endereço IP (nem 11.11.11.11 nem 22.22.22.22), a menos que eu desligue uma ou outra interface.

Então, do meu controle remoto (PC do escritório), meu ping para o servidor é o seguinte:

# Both eno2 and eno3 active on server
ping 11.11.11.11 -t              ping 22.22.22.22 -t
Request timed out                Request timed out
Request timed out                Request timed out
Request timed out                Request timed out
...
# Turn off eno3
Reply from 11.11.11.11: bytes=32 Request timed out
Reply from 11.11.11.11: bytes=32 Request timed out  
Reply from 11.11.11.11: bytes=32 Request timed out  
Reply from 11.11.11.11: bytes=32 Request timed out  
Reply from 11.11.11.11: bytes=32 Request timed out
...
# Turn on eno3 (both on again)
Request timed out                Request timed out
Request timed out                Request timed out
Request timed out                Request timed out
Request timed out                Request timed out    
...
# Turn off eno2 
Request timed out                Reply from 22.22.22.22: bytes=32
Request timed out                Reply from 22.22.22.22: bytes=32
Request timed out                Reply from 22.22.22.22: bytes=32
Request timed out                Reply from 22.22.22.22: bytes=32
Request timed out                Reply from 22.22.22.22: bytes=32

Este NÃO é um problema de firewall, pois o mesmo acontece com meu firewall desativado:

$firewall-cmd --state
>not running

Os mesmos sintomas foram relatados aqui em um fórum RHEL Quando o RHEL tem vários IPs configurados, apenas um é acessível a partir de uma rede remota, então implementei a solução definindo rp_filter como 2 e as interfaces individuais como 0 (sem segurança) . O resultado do meu rp_filter para cada interface é o seguinte:

#sysctl -a 2>/dev/null | grep "\.rp_filter"
>
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eno2.rp_filter = 0
net.ipv4.conf.eno3.rp_filter = 0

A saída das minhas regras e tabela de interface é a seguinte:

# ip -4 -br a ls
>
lo               UNKNOWN        127.0.0.1/8 
eno3             UP             22.22.22.22/24 
eno2             UP             11.11.11.11/24 

Regras de IP

# ip ru ls
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

Tabela IP

# ip -4 r ls table all
default via 11.11.11.1 dev eno2 proto dhcp src 11.11.11.11 metric 100 
default via 22.22.22.1 dev eno3 proto static metric 101 
22.22.22.0/24 dev eno3 proto kernel scope link src 22.22.22.22 metric 101 
11.11.11.0/24 dev eno2 proto kernel scope link src 11.11.11.11 metric 100 
169.254.0.0/16 dev eno3 scope link metric 1000 
local 22.22.22.22 dev eno3 table local proto kernel scope host src 22.22.22.22 
broadcast 22.22.22.255 dev eno3 table local proto kernel scope link src 22.22.22.22 
local 11.11.11.11 dev eno2 table local proto kernel scope host src 11.11.11.11 
broadcast 11.11.11.255 dev eno2 table local proto kernel scope link src 11.11.11.11 
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1 
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1 
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1

E route -n para um resumo da saída acima:

root@APPSVR:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         11.11.11.1      0.0.0.0         UG    100    0        0 eno2
0.0.0.0         22.22.22.1      0.0.0.0         UG    101    0        0 eno3
22.22.22.0      0.0.0.0         255.255.255.0   U     101    0        0 eno3
11.11.11.0      0.0.0.0         255.255.255.0   U     100    0        0 eno2
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno3

No entanto, o mesmo problema persiste e não consigo acessar nenhuma das interfaces se ambas estiverem ativas.

Também tornei essas alterações persistentes, gravando-as nos arquivos de configuração relevantes (não me lembro exatamente onde) e sim, reiniciei o servidor.

Qualquer ajuda ou sugestão alternativa seria muito apreciada. Passei cerca de 3 dias preso neste problema agora. Desde já, obrigado!

routing
  • 2 2 respostas
  • 43 Views

2 respostas

  • Voted
  1. Mark Knudson
    2024-07-18T23:18:05+08:002024-07-18T23:18:05+08:00

    Eu tive um problema semelhante a este com duas interfaces de rede. O problema foi causado pela configuração de gateways em ambas as interfaces. Depois de removermos o gateway de rede interno (estático), ele funcionou conforme o esperado.

    • 0
  2. Best Answer
    Oom_Ben
    2024-07-19T19:41:55+08:002024-07-19T19:41:55+08:00

    Ok, então encontrei a solução depois de algumas dicas do @TomYan.

    Mesmo com o roteamento de política, o gateway não será realmente o que é relevante (você pode aproveitar a marcação de conexão com base na interface pela qual o pacote de inicialização da conexão entra no host).-TomYan

    Todo o meu tráfego de saída estava passando pelas interfaces corretas (como visto na saída ip route get <IP>e route -n) e foi isso que me confundiu, pois ainda se espera que o tráfego de entrada passe pelo gateway padrão (eno3), apesar do tráfego de saída poder sair por qualquer um .

    Para que o gateway correto seja usado no tráfego de entrada, adicionei uma tabela IP adicional e configurei uma regra e uma rota estática para a segunda sub-rede não padrão (22.22.22.1).

    Isso foi feito da seguinte forma: Adicionada uma tabela de roteamento chamada isp2 com ID 200

    echo 200 isp2 >> /etc/iproute2/rt_tables
    

    Adicionada a essa tabela a regra ip e a rota estática para especificar o comportamento da sub-rede 22.22.22.0/24:

    ip rule add from 22.22.22.22 table isp2 prio 1
    ip route add default via 22.22.22.1 dev eno3 table isp2
    

    Isso me permitiu acessar ambas as interfaces de fora, mas após a reinicialização ainda tive o mesmo problema. Então, para tornar essas alterações persistentes, fiz o seguinte:

    Crie um arquivo de script /etc/network/if-up.d/static-routes com o seguinte conteúdo:

    #!/bin/sh
    
    ip rule add from 22.22.22.22 table isp2 prio 1
    ip route add default via 22.22.22.1 dev eno3 table isp2
    

    Torne-o executável de forma que seja executado sempre que a interface for ativada:

    chmod +x /etc/network/if-up.d/static-routes
    

    Agora tudo está funcionando conforme o esperado e posso executar ping em ambas as interfaces externas e em dispositivos em ambas as sub-redes do servidor.

    Espero que isto ajude!

    • 0

relate perguntas

Sidebar

Stats

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

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 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