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 / user-548811

hunmonk's questions

Martin Hope
hunmonk
Asked: 2020-03-23 16:21:34 +0800 CST

Impedir que a instância do Google Compute configure a segunda interface de rede

  • 2

Estou criando uma VM no Google Compute Engine executando o Debian Buster e configurando-a com duas interfaces de rede.

O primeiro usa uma configuração de IP efêmera e é atribuído a uma rede roteável publicamente, configurada via DHCP. Eu gostaria de manter isso como está.

A segunda interface usa uma configuração de IP estático e é atribuída a uma rede privada. Gostaria de impedir o GCE de usar o DHCP para configurar essa interface e, em vez disso, usar o systemd-networkd para configurá-lo sozinho, com o objetivo de adicionar facilmente algumas rotas personalizadas.

Embora a configuração do systemd-networkd funcione com sucesso, o problema é que, quando a máquina é reinicializada, a configuração do DHCP do GCE está sendo executada após a configuração do systemd-networkd e substituindo minha configuração personalizada.

Eu tentei várias coisas para resolver esse problema até agora, incluindo:

  • Desabilite a entrada para /var/run/interfaces.d em /etc/network/interfaces
  • Adicione um serviço systemd personalizado para ser executado após os serviços de rede do GCE

A única coisa que funcionou até agora é um hack de script hediondo para esperar 30 segundos após a inicialização e, em seguida, iniciar o systemd-networkd novamente para substituir a configuração do GCE.

Existe alguma alteração de configuração mais limpa que eu possa fazer no nível do sistema operacional ou uma configuração durante a configuração da rede/servidor que impedirá o GCE de configurar automaticamente essa segunda interface de rede?

EDIÇÃO #1:

Este é um exemplo da configuração systemd-networkd que eu prefiro usar:

[Match]
Name=ens5

[Network]
Address=10.1.3.30/32
LinkLocalAddressing=no


[Route]
Destination=10.1.3.1/32
Scope=link

[Route]
Gateway=10.1.3.1
Destination=10.1.3.0/24
GatewayOnlink=yes

[Route]
Gateway=10.1.3.1
Destination=10.1.1.0/24
GatewayOnlink=yes

[Route]
Gateway=10.1.3.1
Destination=10.1.2.0/24
GatewayOnlink=yes

[Route]
Gateway=10.1.3.1
Destination=10.10.0.0/24
GatewayOnlink=yes

Usar essa configuração me permite definir rotas adicionais na interface para outras sub-redes. Observe que essas outras sub-redes podem ou não estar no GCP.

A configuração acima funciona, mesmo que eu tenha que declarar o endereço IP estático 10.1.3.30 como parte da configuração do meu servidor GCE. O problema é que não consigo fazer com que o GCE pare de fazer sua própria configuração da interface, que substitui a acima. No Azure, posso simplesmente comentar a sourcereferência /var/run/network/interfaces.dem /etc/network/interfaces.

Quanto ao motivo pelo qual eu prefiro essa configuração, é um método elegante para configurar minha rede interna por meio do software de gerenciamento de configuração do servidor - eu apenas coloco a configuração acima /etc/systemd/network/e emito systemctl enable systemd-networkd && systemctl restart systemd-networkd, e ele lida com a configuração da interface e a configuração para também acontecer na inicialização.

ATUALIZAÇÃO #1:

Eu arquivei https://issuetracker.google.com/issues/153513472 no rastreador de problemas do GCP, espero que eles resolvam. Vou atualizar o problema de acordo quando eles o fizerem.

ATUALIZAÇÃO #2:

Após uma rodada com suporte pago do GCP, eles me apontaram para outro problema em andamento: https://issuetracker.google.com/issues/167371074

O agente de suporte também sugeriu que outros usuários simplesmente colocassem scripts cron para reiniciar a rede periodicamente.

Adaptei esta sugestão para minhas necessidades específicas de rede, com a seguinte entrada crontab:

* * * * * /usr/bin/test -z "$(/sbin/ip route | /bin/grep "10.1.1.0/24")" && /bin/systemctl restart systemd-networkd

Onde '10.1.1.0/24' é uma sub-rede que eu sei que na minha configuração de roteamento não deve faltar.

ATUALIZAÇÃO #3:

Finalmente, uma resposta limpa e satisfatória! Os engenheiros do Google me informaram que o google-guest-agent.serviceque é executado como parte de seu ambiente convidado em sistemas Debian tem um daemon de rede, que, quando reconfigura qualquer interface, chama dhclientdiretamente. Parece que o dhclientchamado desta forma elimina as rotas existentes. Dado isso, uma solução fácil é criar um gancho de saída dhclient adicionando um script de shell no arquivo /etc/dhcp/dhclient-exit-hooks.d/.

No meu caso, adicionei o seguinte script em /etc/dhcp/dhclient-exit-hooks.d/systemd-networkd:

case $reason in
    BOUND|RENEW|REBIND|REBOOT)
        systemctl restart systemd-networkd.service
        ;;
esac

Isso parece resolver o problema, inclusive nas reinicializações.

dhcp google-compute-engine systemd-networkd
  • 1 respostas
  • 417 Views
Martin Hope
hunmonk
Asked: 2020-03-03 21:47:48 +0800 CST

Falha ao configurar o dispositivo Wireguard via systemd-networkd na VM do Google Compute Engine

  • 2

Imagem do Debian Buster em uma VM do Google Compute Engine, e eu tenho esta configuração systemd-networkd colocada em /etc/systemd/network/wg0.netdev para configurar um dispositivo Wireguard:

[NetDev]
Name=wg0
Kind=wireguard

[WireGuard]
PrivateKey = XXXXX
ListenPort = 51820

[WireGuardPeer]
Endpoint = XXXXX:51820
PublicKey = XXXXX
AllowedIPs = XXXXX/32
AllowedIPs = XXXXX/24

Ao iniciar o serviço systemd-networkd, recebo este erro:

Starting Network Service...
Failed to generate predictable MAC address for wg0: No such file or directory
Could not load configuration files: No such file or directory
systemd-networkd.service: Main process exited, code=exited, status=1/FAILURE

O que é estranho é:

  1. Posso abrir a interface wg0 com sucesso no servidor GCP configurando-a manualmente em vez de via systemd
  2. Posso usar a configuração systemd-networkd acima em outras VMs de provedor (testado Vultr e Vagrant local) com sucesso

Portanto, o erro ocorre apenas com a combinação específica de usar a configuração systemd-networkd em um servidor GCP.

Estou usando exatamente as mesmas versões do kernel Linux e do Wireguard em todos os servidores. Se for uma configuração específica do GCP, não consigo encontrar nenhuma documentação relacionada a ela.

google-compute-engine wireguard systemd-networkd
  • 2 respostas
  • 1130 Views

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