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 / 1007936
Accepted
hunmonk
hunmonk
Asked: 2020-03-23 16:21:34 +0800 CST2020-03-23 16:21:34 +0800 CST 2020-03-23 16:21:34 +0800 CST

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

  • 772

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 1 respostas
  • 417 Views

1 respostas

  • Voted
  1. Best Answer
    Serhii Rohoza
    2020-03-31T09:36:00+08:002020-03-31T09:36:00+08:00

    Infelizmente, você não pode imaginar esse cenário no GCP no momento. Você pode usar as formas descritas para gerenciar IPs internos seguindo a documentação como Usar um endereço IP interno estático para uma interface de rede secundária .

    Como uma possível solução alternativa, você pode registrar uma solicitação de recurso no Google Issue Tracker sob este componente .

    • 1

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