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 / 745706
Accepted
Crash Override
Crash Override
Asked: 2015-12-30 00:48:07 +0800 CST2015-12-30 00:48:07 +0800 CST 2015-12-30 00:48:07 +0800 CST

Não é possível vincular a um endereço IPv4 específico ao fazer conexões TCP de saída, para nomes de host que resolvem endereços IPv4 e IPv6

  • 772

Passei cerca de 6 horas tentando descobrir isso e agora acredito que o CentOS/Linux não consegue se vincular a um endereço IPv4 virtual específico ao conectar-se a um nome de host que possui um endereço IPv6. Este é um problema em servidores que possuem vários endereços IP.

Estou usando Centos 6 (kernel Linux 2.6.32-573.12.1.el6.x86_64)

Para reproduzir este grande:

  1. Encontre uma máquina Linux com pelo menos um espaço de endereço público IPv4 /29 e um IP público IPv6.
  2. Alias ​​pelo menos um IPv4 adicional para a interface principal (eth0 ou outro). Para este exemplo, direi 30.0.0.1 como o endereço IPv4 eth0 primário da máquina e 30.0.0.2 é um alias vinculado a eth0:2 em uma rede de 30.0.0.0/29.
  3. Encontre um nome de host que tenha endereços IPv4 e IPv6. Por exemplo, www.microsoft.com.
  4. telnet -b 30.0.0.2 www.microsoft.com 80(Isso testa a conexão de saída usando um endereço ipv4 específico)
  5. A solicitação IPv4 se conecta com sucesso depois de tentar sem sucesso os endereços IPv6 do nome do host, mas a conexão TCP realmente inicia a partir do IP principal da máquina (30.0.0.1), não do IP que você deseja (30.0.0.2). Netstat diz o contrário, mas está ERRADO. Se você se conectar a um nome de host que você possui e puder visualizar seus logs, a conexão vem do IP principal (30.0.0.1) e não do IP que você deseja (30.0.0.2).
  6. Tente outro domínio que não tenha um endereço IPv6, como: telnet -b 30.0.0.2 serverfault.com. Funciona. Ele faz a conexão a partir do IP que você quiser.

Isso é um problema, porque certos programas, como o mail (exim), precisam usar certos IPs ao fazer solicitações TCP de saída, que não são necessariamente o IP da máquina principal. Certos clientes/programas na máquina dependem de ACLs ou DNS reverso para corresponder corretamente ao fazer conexões TCP de saída.

Portanto, se mais alguém estiver percebendo o mesmo problema estranho em que seu programa não pode se conectar à interface correta ao fazer conexões de saída, provavelmente é por isso.

Esse problema afeta apenas as conexões IPv4. As conexões IPv6 se ligam corretamente a qualquer IP de saída que você tenha na máquina.

Este não é um problema com o telnet. Também testei esse problema usando meu servidor de correio (exim) e obtive resultados semelhantes. Ele faz conexões IPv4 do IP errado se o nome do host de destino tiver um endereço IPv6.

Talvez alguém tenha uma solução para esse problema estranho, mas, no momento, acho que pode ser um bug de rede do Linux.

Ps- Se alguém se perguntar por que não apenas fazer uma conexão IPv6 se o nome do host resolver para um endereço IPv6 ... às vezes o endereço IPv6 está inativo ou a conexão não pode ser estabelecida, então ele reverte para seu endereço IPv4.

linux
  • 1 1 respostas
  • 1065 Views

1 respostas

  • Voted
  1. Best Answer
    kasperd
    2015-12-30T09:40:50+08:002015-12-30T09:40:50+08:00

    Você pode confiar netstatem fornecer informações corretas sobre os endereços IP (pelo menos enquanto -nfor usado).

    Se os pontos de extremidade de uma conexão TCP discordarem sobre quais endereços IP estão em uso, isso significa que há um NAT em algum lugar entre os dois.

    A partir das informações adicionais fornecidas nos comentários, descobrimos que, neste caso específico, uma regra supérflua do iptables -A POSTROUTING -j MASQUERADEera a causa do problema.

    • 3

relate perguntas

  • Como descobrir detalhes sobre hardware na máquina Linux?

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