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 / unix / Perguntas / 408802
Accepted
ricardomenzer
ricardomenzer
Asked: 2017-12-05 11:42:15 +0800 CST2017-12-05 11:42:15 +0800 CST 2017-12-05 11:42:15 +0800 CST

Como ter certeza de que /etc/network/interfaces abrirá a interface?

  • 772

Eu tenho uma caixa sem cabeça baseada no Debian. Destina-se a ser acessado por meio de sua interface de rede. A rede é configurada através do arquivo /etc/network/interfaces. Estou tentando validar se o arquivo é realmente válido. Minha ideia é verificar se o arquivo tem algum erro e, neste caso, voltar para um arquivo padrão.

Minha dúvida é sobre a primeira parte do problema: detectar um erro no interfacesarquivo.

Encontrei muitas dúvidas sobre o uso de ifup --no-actcomandos, mas o que vejo na prática é que esse método não é robusto o suficiente para o meu caso. Tome o seguinte exemplo:

root@arm:~# ifup --no-act --interfaces=/etc/network/interfaces eth0
run-parts  /etc/network/if-pre-up.d
ip addr add 1s23.123.123.123/255.255.255.192 broadcast +          dev eth0 label eth0
ip link set dev eth0   up
 ip route add default via 123.123.123.122  dev eth0
run-parts  /etc/network/if-up.d

Observe o endereço IP inválido definido (extra 's' no primeiro octeto). O comando não dá nenhum erro (que eu possa ver, de qualquer maneira) e se eu reiniciar a máquina com o arquivo neste estado, perderei a capacidade de rede. Um válido interfacesme dá um resultado muito semelhante (exceto para a broadcast +parte):

root@arm:~# ifup --no-act --interfaces=/etc/network/interfaces eth0
run-parts  /etc/network/if-pre-up.d
ip addr add 123.123.123.123/255.255.255.192 broadcast 123.123.123.127     dev eth0 label eth0
ip link set dev eth0   up
 ip route add default via 123.123.123.122  dev eth0
run-parts  /etc/network/if-up.d

Este é principalmente o problema que estou tentando evitar. Minha pergunta é como posso detectar uma configuração inválida no /etc/network/interfacesarquivo? O sinal de mais indica que há um erro? O que isso significa? Qual é a melhor abordagem para resolver isso?

networking configuration
  • 2 2 respostas
  • 1909 Views

2 respostas

  • Voted
  1. Best Answer
    Murphy
    2017-12-07T04:54:22+08:002017-12-07T04:54:22+08:00

    Resposta curta: Ligue ifup --no-actcom a configuração de rede para testar e verificar o código de retorno.

    Resposta longa: tenho feito algo muito semelhante para um dispositivo incorporado; aqui está a parte relevante do script init que criei para esse fim, que é executado antes networkingde ser iniciado, para garantir que o sistema tenha uma configuração ethernet funcional.

    ETH0_CUSTOM=/var/myproject/etc/interfaces.eth0 
    result=1
    
    if [ -f "${ETH0_CUSTOM}" ]; then
        ifup -n -i "${ETH0_CUSTOM}" eth0
        if [ $? -eq 0 ]; then
            ln -sf "${ETH0_CUSTOM}" /etc/network/interfaces.eth0
            result=0
        else
            echo "Validating ${ETH0_CUSTOM} failed"
        fi
    fi
    
    if [ ${result} -ne 0 ]; then
        ln -sf /etc/network/interfaces.eth0.default /etc/network/interfaces.eth0
    fi
    

    No original /etc/network/interfaces, as configurações válidas estão incluídas com

    source /etc/network/interfaces.eth0
    
    • 3
  2. ilkkachu
    2017-12-06T06:03:43+08:002017-12-06T06:03:43+08:00

    Acho que vejo dois problemas/abordagens aqui:

    • proteger os usuários de cometer erros; e
    • ter uma maneira de testar uma configuração modificada antes de torná-la permanente

    Para o primeiro, fazer toda a configuração por meio de alguma ferramenta inteligente que faça mais verificações de sanidade do que $EDITOR /etc/foobar. Nesse caso, ele pode verificar se o endereço IP é válido e se a rota padrão está na mesma rede etc. A ferramenta pode ser algum script ou uma interface de administração gráfica/baseada na Web (como você tem no OpenWRT etc. .)

    A outra coisa seria fazer com que o usuário verificasse a configuração de rede depois que ela estivesse em vigor, da mesma forma que muitos sistemas fazem com que o usuário verifique as configurações de exibição (resolução, etc.) e volte para a última configuração de trabalho se o usuário não fizer nada.

    Então, algo assim:

    • Tenha uma configuração de inicialização separada da nova configuração, permita que o usuário faça alterações apenas na nova configuração (não na configuração de inicialização!).
    • Quando o usuário quiser aplicar a nova configuração, programe uma reinicialização para ocorrer em aproximadamente 5 minutos ( shutdown -r +5) e, em seguida, carregue a nova configuração.

    • Agora, faça com que o usuário verifique se ainda acessa o sistema (incluindo a abertura de novas sessões SSH).

    • Se puderem, eles podem reconhecer a alteração, cancelando a reinicialização e copiando a nova configuração para a configuração de inicialização.

    • Se eles não puderem acessar o sistema depois que as modificações estiverem em vigor, eles não poderão verificar as alterações e a reinicialização permitirá que eles reiniciem (desde que a configuração de inicialização esteja correta, o que deveria ser, já que o sistema começou anteriormente usando isto.)

    A ideia deve ser aplicável a mudanças na configuração da interface de rede, configuração do firewall etc. continha alguma regra importante)

    (E, claro, não é absolutamente necessário reiniciar o sistema, apenas redefinir a configuração.)


    Nada disso impede que os usuários root dêem um tiro na própria perna, é claro, mas pelo menos você pode fornecer alguma ferramenta com um interruptor de segurança.

    Ter acesso de backup através do console/porta serial ou algo semelhante ainda seria melhor.


    Nesse caso específico, se seus usuários estiverem acostumados a editar /etc/network/interfacese executar ifup, você terá que ensiná-los a fazer isso, o que pode ser difícil. Ou você pode alterar o sistema para que a configuração real esteja realmente em outro lugar, para que eles não deixem que velhos hábitos causem problemas.

    • 1

relate perguntas

  • Excluindo usuários do Match Group no SSH

  • Pergunta sobre arquivos montados em rede

  • Um endereço IP pode terminar em 255 e não ser um endereço IP de transmissão?

  • Incapaz de identificar qual saída de endereço MAC do comando arp ou comando ip está correta

  • Roteador estranho funciona com centos 6 [fechado]

Sidebar

Stats

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

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk 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