Diferenças entre /etc/dhcpcd.conf e / etc / network / interfaces?

63

Eu tenho essa configuração em / etc / network / interfaces :

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan0
#iface wlan0 inet dhcp
        iface wlan0 inet static
        address 192.168.0.110
        netmask 255.255.255.0
        network 192.168.0.1
        gateway 192.168.0.1
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp


iface eth0 inet static
    address 192.168.0.115
    netmask 255.255.255.0
    network 192.168.0.1
    gateway 192.168.0.1

O IP estático sem fio funcionou, mas o eth0 não.

Então, tentei fazer a configuração em /etc/dhcpcd.conf :

interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

E funcionou. Estou confuso e aqui estão várias perguntas:

  1. Quando usar qual arquivo?

  2. Por que o wifi funcionou com / etc / network / interfaces, mas o eth0 não?

  3. O dhcpcd tem alguma prioridade sobre / etc / network / interface ?

  4. Como verificar qual serviço tem prioridade ou algo assim? E qual serviço usa / etc / network / interface ?

CuriousGuy
fonte
4
Ótima pergunta e algo que eu estava prestes a perguntar #raspbian. Como administrador da Un * x de muitos anos, considero essa mudança fundamental desconcertante composta por uma escassez absoluta de documentação. Por acaso, encontrei essa pergunta depois de passar uma hora de tentativa e erro. Eu gostaria de ter encontrado raspberrypi.stackexchange.com/questions/37920/... anteriormente
Alastair McCormack
Eu acho que a pergunta deveria ter sido feita nos comentários de que exatamente o eth0 falhou? Qual é a ip addrsaída e systemctl status networkingsaída? Como se o OP tentasse fazer isso através do ssh e usando o eth0 ip no qual o ssh entra, o eth0 ip modificado será atribuído como ip secundário ao eth0 para manter a sessão ssh em andamento ininterrupta, tentei alterar o ip eth0 como o OP mencionado, mas sshing através do wlan0 e ele funciona e tem preferência sobre o dhcp; no meu caso, era dhclient no Stretch, mas sshing no eth0, o caso mencionado anteriormente ocorre.
Pavel Sayekat 25/01
E sim, o dhcpcd também foi testado, nenhum tem preferência sobre as /etc/network/interfacesconfigurações.
Pavel Sayekat 25/01

Respostas:

65

Há bons pontos em todas as respostas a essa pergunta, mas acho que há margem para abordar suas perguntas específicas diretamente.

  1. Quando usar qual arquivo?

Eu vou assumir que você está sofrendo de um grau geral de confusão que está ocorrendo no momento (na comunidade Raspberry Pi) com a introdução do Debian ' Jessie ' no lugar do Debian 'Wheezy'. Essa mudança tornou um grande número de tutoriais, na pior das hipóteses obsoletos e, na melhor das hipóteses, confusos.

A resposta para a pergunta é que, ao usar o Wheezy, era normal fazer alterações no /etc/network/interfacesarquivo para fins de configuração de interfaces de rede (veja a figura). Ao usar Jessie, será necessário fazer alterações no '/etc/dhcpcd.conf'. No entanto, ao fazer alterações em uma conexão sem fio ( wlan0), você também precisará fazer alterações nas /etc/wpa_supplicant/wpa_supplicant.confquais adiciona o ssid e a senha da rede.

  1. Por que o wifi funcionou com / etc / network / interfaces, mas o eth0 não?

Não tenho certeza de como a conexão wifi poderia ter funcionado, pois faltam algumas informações em seus arquivos (pelo menos ssid). Como janos apontou, a prioridade dos detalhes da conexão etho após os detalhes da wlan0 provavelmente os tornou operacionais (já que eles teriam sido vistos pela última vez pelo processo de leitura do arquivo).

  1. O dhcpcd tem alguma prioridade sobre / etc / network / interface?

Não, eles são diferentes e são projetados para atender a diferentes propósitos sob Jessie. Com o objetivo de usar Jessie de uma maneira bastante simples, você pode praticamente ignorar o interfacesarquivo e trabalhar com dhcpcd.confe wpa_supplicant.conf.

  1. Como verificar qual serviço tem prioridade ou algo assim? E qual serviço usa / etc / network / interface?

Mais uma vez, assumirei que a pergunta é mais um ' Qual arquivo eu uso e se eu tiver que usar um que tenha prioridade? ' Pergunta, questão. A resposta é que, com a mudança de Wheezy para Jessie (e em um sentido mais amplo com a adoção do systemd ), a configuração de `dhcpcd.conf 'e' wpa_supplicant.conf 'será a norma e o arquivo' interfaces 'será deixado para seus próprios dispositivos.

O que isso significa para você?

Bem (novamente), supondo que você esteja tentando configurar conexões com fio (eth0) e sem fio (wlan0) com endereços IP estáticos, você deseja que seu interfacesarquivo seja o padrão como foi inicialmente instalado;

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Você deseja que seu dhcpcd.confarquivo inclua os detalhes da conexão no final do arquivo para ambas as interfaces e as entradas adicionais provavelmente se parecerão com isso;

# Custom static IP address for eth0.
interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

# Custom static IP address for wlan0.
interface wlan0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Por fim, você deseja editar seu wpa_supplicant.confarquivo para que ele inclua o ssid da rede wifi e a senha. Provavelmente deveria parecer um pouco com isso;

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="homenetwork"
    psk="h0mepassw0rd"
}

Espero que isso ocorra. Existe a possibilidade muito real de que minhas suposições estejam incorretas, mas desde que recentemente passei por uma curva de aprendizado semelhante, espero que os dados sejam úteis.

Na verdade, eu escrevi isso e você pode obter as informações no ebook gratuito Raspberry Pi suficiente do Leanpub.

d3noob
fonte
11
Não trabalhe. Se apresentarmos ambas as interfaces com.eg, ifconfig eth0 up ping para fora e ssh de fora não funcionará. Se colocarmos uma das interfaces no dhcp, tudo funcionará.
Giuseppe #
Espero que alguém seja capaz de ajudar com a sua pergunta
d3noob
Não funcionou para mim, por várias razões. A primeira é que a pergunta é geral, e se as respostas são para jessie, isso foi há muito tempo e passamos a nos alongar principalmente, e essa semana foi mais complicada. Meu arquivo de interfaces não tem nada do que você está mencionando.
Brian Bulkowski
6

A prioridade tem a ver com a sua configuração init ou systemd. Com relação ao dhcp: se você possui uma interface estática ou manual, e o dhcp começa a solicitar um endereço posteriormente, ele substituirá o que você já possui. No Debian, o dhcp é iniciado para interfaces para as quais você especifica o dhcp, e não apenas magicamente por si só. Se você tiver um comportamento inesperado, poderá ter um sistema diferente em execução em segundo plano, como o NetworkManager.

Por ponto:

  1. não use dhcpcd.conf, deixe como está.
  2. Você não possui uma linha de conexão direta eth0.
  3. Se o dhcpcd for iniciado após a rede e você tiver configurado para assumir o controle de uma interface, ele o fará.
  4. Verifique a ordem em que você inicia esses serviços.
John Keates
fonte
4

O IP estático sem fio funcionou, mas o eth0 não.

A eth0interface provavelmente não foi apresentada na inicialização do sistema porque não está listada na autolinha. De man interfaces:

Linhas começando com a palavra "auto" são usadas para identificar as interfaces físicas a serem ativadas quando ifup é executado com a opção -a. (Esta opção é usada pelos scripts de inicialização do sistema.) Os nomes das interfaces físicas devem seguir a palavra "auto" na mesma linha. Pode haver várias estrofes "automáticas". O ifup exibe as interfaces nomeadas na ordem listada.

Mude esta linha:

auto lo

Para isso:

auto lo eth0

E então deve funcionar.

As outras respostas abordaram suas outras perguntas. Eu espero que isso ajude.

janos
fonte
2
Esta é a resposta. O OP também tem outros problemas, mas para pessoas como eu, que seguiram outros guias aos quais foram adicionadas as informações estáticas /etc/network/interfaces, a peça que faltava era apenas auto eth0e reiniciar a rede ou reiniciar!
Adam Kaplan
2

Consulte Como configurar redes / WiFi / IP estático para obter detalhes sobre como configurar redes.

Você pode usar o /etc/network/interfacesmétodo mais antigo , se quiser. Infelizmente, o arquivo que você listou contém muitos erros. Você deve seguir uma das configurações padrão.

Se você realmente deseja usar /etc/network/interfaces (diferente do padrão), precisará desativar dhcpcd.

Uma explicação de dhcpcdé muito complexa para este fórum, mas o link https://wiki.archlinux.org/index.php/dhcpcd fornece um bom resumo.

Milliways
fonte
2

Primeiro, /etc/network/interfacesretorne o arquivo à sua versão original ...

# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult `/etc/dhcpcd.conf` and `man dhcpcd.conf`

# Include files from `/etc/network/interfaces.d`:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Depois, mantenha as alterações no /etc/dhcpcd.confarquivo simples e apenas para conexão sem fio ...

(na parte inferior do arquivo ...)

nohook lookup-hostname

interface wlan0
    static ip_address=192.168.0.53/24
    static routers=192.168.0.1
    static domain_name_servers=8.8.8.8

/etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
    ssid="The SSID of your Router"
    psk="daPassword"
    scan_ssid=1
    key_mgmt=WPA-PSK
}
Greg Oij
fonte
0

Esteja ciente de que a versão mais recente do Raspbian Jessie (30/12/2016) contém uma falha na segunda linha do arquivo de interfaces. A segunda linha está faltando o símbolo # inicial para designar a linha como um comentário. Esse problema faz com que o arquivo de interfaces fique ilegível pelo sistema. Passei muitas horas tentando fazer meu wifi funcionar antes de encontrar esse erro.

Para corrigi-lo, basta adicionar um símbolo # ao início da linha.

EVictory
fonte