X
X
X
X

Base de conhecimento

Pagina inicialBase de conhecimentoLinux - MultiVPS IPv6+IPv4My application needs an IPv4-format...

My application needs an IPv4-formatted IP on Linux, but ip addr shows IPv6s only. How can I communicate to/from it?

Aviso: este guia foi traduzido por um sistema automático. Em todo e qualquer momento, caso haja dúvidas, deve consultar a versão em Inglês, mudando o idioma para "EN" e abrindo uma nova janela.

Problemas comuns às vezes exigem soluções incomuns

Ocasionalmente, um ou outro aplicativo (não atualizado/preguiçoso) pode não suportar o uso direto quando o ponto de partida é um endereço IPv6, porque foi projetado para usar um endereço formatado em IPv4. Apesar disso, eles geralmente são tolerantes com o intervalo de IPv4 que você está usando, permitindo que você especifique IPv4s internos (que estão no intervalo 10.x.x.x/8, 172.16.x.x/12 - 172.32.x.x/12 ou 192.168.x.x/16), como você já teria em qualquer outro VPS NAT comprado, pois eles não fazem distinção entre endereços.

A única diferença entre a C-Servers e outros provedores de VPS NAT é que, enquanto outros fornecem um endereço IPv4 NAT interno por padrão (que não é público, apenas privado), nós preferimos fornecer um endereço IPv6 público com função dupla (também envia/recebe solicitações IPv4) e, em seguida, traduzimos + roteamos internamente sua solicitação de/para o IPv4 do servidor principal.

Como os modelos do SolusVM 2 e as imagens de inicialização na nuvem não preveem um endereço IPv4 interno alternativo e a posição da C-Servers como uma empresa que prioriza o IPv6, não fornecemos esses endereços por padrão. No entanto, neste guia, mostraremos como ter conectividade IPv4 em aplicativos que exigem um endereço somente IPv4. Isso é feito por meio de um processo simples de três etapas:

- Desativar o cloud-init em seu VPS;
- adicionar o endereço IPv4 interno ao sistema;
- criar um socat interno entre esse IPv4 e o IPv6 para obter conectividade total.

Os pacotes que chegam em seu VPS a partir do IPv6 já estão completos, o redirecionamento é totalmente interno no nível do soquete TCP/IP, e essa tem sido uma solução usada há bastante tempo.

Como ter conectividade IPv4 interna nativa no MultiVPS

Primeiro, vamos desativar as alterações de inicialização na nuvem para seu VPS. Este é apenas um exemplo; talvez você queira editar manualmente uma área diferente para desativar a inicialização na nuvem ou até mesmo editar diretamente a seção de rede da sua distribuição Linux.

1. Entre por SSH ou VNC em seu servidor e crie um arquivo para impedir que o cloud-init seja executado em inicializações subsequentes:

sudo touch /etc/cloud/cloud-init.disabled

Se isso não funcionar, talvez você queira editar diretamente o arquivo para evitar qualquer recriação de interface que apague o que estamos prestes a fazer. Como o cloudinit (às vezes formatado como cloud-init) é apenas um script executado pelo SolusVM 2 no final de cada reinicialização, você pode simplesmente fazer

which cloudinit

ou

which cloud-init

para ver onde o seu script está no disco - às vezes ele é carregado da seção do arquivo de configuração de rede, às vezes é um script completo por si só. Outra alternativa é verificar diretamente o registro do sistema Linux. Basta escrever, em sua linha de comando:

journalctl

e use a tecla PgDn / Page Down do teclado para rolar para baixo até o último registro de inicialização feito no seu VPS, que é exatamente a tela que você vê durante cada inicialização do Linux. Preste atenção à hora/dia indicada no lado esquerdo de cada registro para rastrear as ações e os locais de inicialização na nuvem.

Para obter mais suporte, você sempre pode usar o Google ou uma IA ao configurar isso.

2. Adicione um endereço IPv4 estático à sua interface de rede. Este é apenas um exemplo para distros baseadas no Enterprise Linux e no Debian. Por favor, verifique o processo específico necessário para o sistema operacional e a versão escolhidos Edite o arquivo de configuração de rede (o local depende da sua distro):

Para o Ubuntu 22.04/24.04 (usando o Netplan):

sudo nano /etc/netplan/01-netcfg.yaml

Nesse arquivo, não exclua mais nada e adicione (novamente, apenas um exemplo, verifique o processo para o seu sistema operacional):

network:
version: 2
ethernets:
eth0: # O nome da sua interface pode ser diferente
endereços:
- 10.0.0.10/24 # Adicione a entrada e, eventualmente, substitua pelo intervalo e sub-rede IPv4 internos desejados (blocos 172.16.x.x/12, 192.168.x.x/16)

Ctrl+O para salvar, Enter para confirmar, Ctrl+X para sair do editor Nano.

Para o Enterprise Linux (RHEL/CentOS/Tencent/AlmaLinux/Rocky Linux, exemplo para RHEL 9/AlmaLinux 9), em uma linha de comando normal via SSH ou VNC, escreva

nmcli con mod eno1 ipv4.addresses 192.168.1.100/24 [você pode inserir qualquer outro intervalo de IPv4 privado, certifique-se de que a sub-rede e o IP estejam OK]
nmcli con mod eno1 ipv4.gateway 192.168.1.1 [de dentro do mesmo intervalo IPv4 privado escolhido, sempre o primeiro endereço dele]
nmcli con mod eno1 ipv4.dns 8.8.8.8 [use qualquer DNS IPv4 regular]
nmcli con mod eno1 ipv4.method manual [NÃO insira auto, pois esse é um endereço não DHCP]

Para estabelecer a conexão, basta inserir:

nmcli con up eno1

3. Instale o socat se ele ainda não estiver instalado:

sudo apt update && sudo apt install socat -y # Para Debian/Ubuntu, OU
sudo dnf install socat # Para distribuições baseadas em RHEL (o exemplo funciona para distribuições baseadas em RHEL8/RHEL9)

E ative o suporte a encaminhamento de IPv4 e IPv6 no sysctl:

echo “net.ipv4.ip_forward=1” | sudo tee -a /etc/sysctl.conf
echo “net.ipv6.conf.all.forwarding=1” | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Crie um serviço systemd para executar o socat e encaminhar o tráfego do seu IPv4 interno para o IPv6:

sudo nano /etc/systemd/system/ipv4-to-ipv6-routing.service

Adicione o seguinte conteúdo:

[Unit]
Descrição=IPv4 para Socat IPv6 - Roteamento
After=network.target

[Serviço]
Type=simple
ExecStart=/usr/bin/socat TCP4-LISTEN:PORT,bind=10.0.0.10,reuseaddr,su=nobody,fork TCP6:[YOUR_IPV6_ADDRESS]:PORT
Restart=always
RestartSec=5

[Instalar]
WantedBy=multi-user.target

Substituir:

10.0.0.10 pelo endereço IPv4 interno desejado
[YOUR_IPV6_ADDRESS] com o endereço IPv6 fornecido publicamente para seu VPS
PORT com um número de porta que você deseja encaminhar

Habilite e inicie o serviço:

sudo systemctl enable ipv4-to-ipv6-proxy.service
sudo systemctl start ipv4-to-ipv6-proxy.service

E agora esse serviço será iniciado automaticamente a cada inicialização.

Se precisar de várias portas encaminhadas, você poderá criar vários arquivos de serviço ou modificar o comando socat para lidar com várias portas.

O Socat trabalha com TCP/UDP, de IPv4 para IPv6 e de IPv6 para IPv4. Exemplos de comandos são:

socat UDP4-LISTEN:10683,bind=10.0.0.10,reuseaddr,su=nobody,fork UDP6:[2a00::212:4b00:615:a1f7]:10683 “ diz para escutar UDP na porta 10683 na conexão IPv4 interna, roteia para um endereço IPv6 público no endereço fornecido e na mesma porta.

socat TCP6-LISTEN:10022,bind=[2a00::212:4b00:615:a1f7],reuseaddr,su=nobody,fork TCP4:10.0.0.10:10022 “ diz para escutar TCP sob IPv6 na porta 10022 no endereço IPv6 público fornecido, roteia para a pilha de IP interna do VPS IPv4 na mesma porta.

Aviso justo

Essa solução é persistente e permanecerá em todas as reinicializações.

No entanto, se ela falhar por algum motivo (por exemplo, atualizações que alterem o systemd, o socat ou as funções de rede), talvez seja necessário criar um script para ser executado em cada inicialização - o crontab ou ferramentas de script semelhantes podem ser interessantes para isso - de modo que o IPv4 seja reinserido em cada inicialização do seu VPS. Se isso for necessário, também pode ser uma boa ideia fazer o mesmo com o socat.

A Solus VM 2 tem o cloud-init, que normalmente fornece as informações de rede a cada inicialização, apagando as informações anteriores - a menos que um usuário o desative e automatize o processo de inclusão de um IP na inicialização do VPS (que, como se origina do espaço do usuário, nunca colide com o cloud-init).

Se tudo der errado, basta usar nosso serviço de backup GoBack da C-Servers para restaurar seu VPS para um ponto anterior no tempo ou simplesmente reinstalar o VPS usando um de nossos modelos de sistema operacional, a partir do zero.

Uma coisa é certa

Essa solução resolverá a maioria dos problemas com aplicativos somente IPv4.

Não consegue encontrar as informações que procura?

Criar um Ticket de Suporte
Você achou útil?
(534 vezes visualizadas /1 pessoas acharam útil)

Powered by WISECP
Top