Boa explicação detalhada da sintaxe do / etc / network / interfaces?

139

Entendi o conceito muito básico de como usar /etc/network/interfaces, mas tudo o que encontro online são exemplos, exemplo após exemplo, dos quais posso copiar e colar. O que sinto falta é uma explicação da sintaxe, uma explicação do significado dos comandos e a ordem em que os comandos exigem. Quero entender, porque na maioria das vezes copiar e colar não é suficiente, porque não estou trabalhando em uma máquina nova, então não posso simplesmente sobrescrever as configurações existentes, pois isso quebraria muitas coisas. man interfacesnão foi muito útil, pois está escrito muito complicado.

Exemplos de perguntas que tenho: o que significa inetem uma ifacelinha exatamente (eu não conseguia encontrá-lo na página de manual), o que significa manualem uma ifacelinha exatamente (muitos exemplos o usam, mas, de acordo com o manual, ele precisa de um arquivo de configuração extra, que os exemplos não aparecem), quando os uso ou preciso deles? Quando não? Quando crio uma ponte, o que exatamente acontece com as interfaces?

Foo Bar
fonte
4
A página de manual diz que o que vem depois do nome da interface é a família de endereços que a interface usa. "inet" é o nome para IPv4, inet6 para ipv6. Há também ipx, x25, appletalk ..., embora o ifupdown lide apenas com inet / inet6 / ipx, como a página de manual explica. manualsignifica que, se o down-up não faz nada a respeito, você deve fazer manualmente.
Stéphane Chazelas

Respostas:

169

Bem, vamos separá-lo em pedaços, para facilitar a compreensão /etc/network/interfaces:

Camada de link + opções de tipo de interface (geralmente a primeira de cada sub-rotina da interface e denominada família de endereços + método por interfaces(5)manpages):

auto interface- Inicie a interface (s) na inicialização. É por isso que a lointerface usa esse tipo de configuração de vinculação.

allow-auto interface - Igual a auto

allow-hotplug interface- Inicie a interface quando um evento "hotplug" for detectado. No mundo real, isso é usado nas mesmas situações, automas a diferença é que ele aguardará um evento como "sendo detectado pelo udev hotplug api" ou "cable linked". Consulte " Coisas relacionadas (hotplug) " para informações adicionais.

Essas opções são basicamente opções da "camada 2", configurando estados de link nas interfaces e não estão relacionadas à "camada 3" (roteamento e endereçamento). Como exemplo, você pode ter uma agregação de link em que a interface bond0 precisa estar ativa, independentemente do estado do link, e seus membros podem estar ativos após um evento de estado do link:

auto bond0
iface bond0 inet manual
        down ip link set $IFACE down
        post-down rmmod bonding
        pre-up modprobe bonding mode=4 miimon=200
        up ip link set $IFACE up mtu 9000
        up udevadm trigger

allow-hotplug eth0
iface eth0 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

allow-hotplug eth1
iface eth1 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

Portanto, dessa maneira, crio uma agregação de link e as interfaces serão adicionadas a ele e removidas nos estados de link de cabo.

Tipos de interface mais comuns:

Todas as opções abaixo são um sufixo para uma interface definida ( iface <Interface_family>). Basicamente, ele iface eth0cria uma estrofe chamada eth0em um dispositivo Ethernet. iface ppp0deve criar uma interface ponto a ponto e pode ter diferentes maneiras de adquirir endereços como inet wvdialesse, encaminhando a configuração dessa interface para o wvdialconfscript. A tupla inet/ inet6+ optionvai definir a versão do protocolo IP que vai ser utilizado e o modo como este endereço será configurado ( static, dhcp, scripts...). Os manuais online do Debian fornecerão mais detalhes sobre isso.

Opções nas interfaces Ethernet:

inet static - Define um endereço IP estático.

inet manual- Não define um endereço IP para uma interface. Geralmente usado por interfaces que são membros de ponte ou agregação, interfaces que precisam operar em modo promíscuo ( por exemplo, espelhamento de porta ou TAPs de rede ) ou possuem um dispositivo VLAN configurado neles. É uma maneira de manter a interface ativa sem um endereço IP.

inet dhcp - Adquira o endereço IP através do protocolo DHCP.

inet6 static - Define um endereço IPv6 estático.

Exemplo:

# Eth0
auto eth0
iface eth0 inet manual
    pre-up modprobe 8021q
    pre-up ifconfig eth0 up
    post-down ifconfig eth0 down

# Vlan Interface
auto vlan10
iface vlan10 inet static
        address 10.0.0.1
        netmask 255.255.255.0
        gateway 10.0.0.254
        vlan-raw-device eth0
        ip_rp_filter 0

Este exemplo abrirá eth0e criará uma interface VLAN chamada vlan10que processará o número de tag 10 em um quadro Ethernet.

Opções comuns dentro de uma sub-rotina de interface (camadas 2 e 3):

address - Endereço IP para uma interface configurada IP estática

netmask- máscara de rede. Pode ser omitido se você usar o endereço cidr. Exemplo:

iface eth1 inet static
    address 192.168.1.2/24
    gateway 192.168.1.1

gateway- O gateway padrão de um servidor. Cuidado para usar apenas um desse cara.

vlan-raw-device - Em uma interface VLAN, define seu "pai".

bridge_ports - Em uma interface de ponte, defina seus membros.

down- Use o seguinte comando para baixar a interface em vez de ifdown.

post-down - Ações executadas logo após a interface estar inoperante.

pre-up - Ações antes da interface ser ativada.

up- Use o seguinte comando para atualizar a interface em vez de ifup. Cabe a sua imaginação usar qualquer opção disponível no iputils. Como exemplo, poderíamos usar up ip link set $IFACE up mtu 9000para habilitar jumbo-frames durante a upoperação (em vez de usar a mtuprópria opção). Você também pode ligar para qualquer outro software up sleep 5; mii-tool -F 100baseTx-FD $IFACEpara forçar 100 Mbps Full duplex 5 segundos depois que a interface estiver ativa.

hwaddress ether 00:00:00:00:00:00- Altere o endereço mac da interface em vez de usar o que é codificado permanentemente em rom ou gerado por algoritmos. Você pode usar a palavra random- chave para obter um endereço mac aleatório.

dns-nameservers- endereços IP de servidores de nomes. Requer o resolvconfpacote. É uma maneira de concentrar todas as informações em /etc/network/interfacesvez de usar /etc/resolv.confpara configurações relacionadas ao DNS. Não edite o resolv.confarquivo de configuração manualmente, pois ele será alterado dinamicamente pelos programas no sistema.

dns-search example.net- Anexe example.net como domínio às consultas do host, criando o FQDN. Opção domainde/etc/resolv.conf

wpa-ssid - Sem fio: defina um WPA SSID sem fio.

mtu- tamanho da MTU . mtu 9000= Quadro Jumbo. Útil se a sua caixa Linux estiver conectada a switches que suportem tamanhos maiores de MTU. Pode quebrar alguns protocolos (tive experiências ruins com snmp e jumbo frames).

wpa-psk - Sem fio: defina um PSK codificado em hexadecimal para o seu SSID.

ip_rp_filter 1- Filtro de caminho reverso ativado. Útil em situações em que você tem 2 rotas para um host, e isso forçará o pacote a retornar de onde veio (mesma interface, usando suas rotas). Exemplo: você está conectado à sua lan ( 192.168.1.1/24) e possui um servidor dlna com uma interface na sua lan ( 192.168.1.10/24) e outra interface no dmz para executar tarefas administrativas ( 172.16.1.1/24). Durante uma sessão ssh do seu computador para o dlna dmz ip, as informações precisam retornar para você, mas serão interrompidas para sempre, porque o servidor dlna tentará fornecer a resposta diretamente por meio da interface lan. Com o rp_filter ativado, ele garantirá que a conexão retorne de onde veio. Mais informações aqui .

Algumas dessas opções não são opcionais. O Debian avisará se você colocar um endereço IP em uma interface sem máscara de rede, por exemplo.

Você pode encontrar mais bons exemplos de configuração de rede aqui .

Coisas relacionadas :

Links que possuem informações relacionadas ao /etc/network/interfacesarquivo de configuração de rede:


fonte
Obrigado, isso ajuda muito. Será que inettem alguma coisa a ver com a "internet"? Li em algum lugar que significa apenas "IPv4" e inet6"IPv6", mas o termo "inet" é realmente confuso quando você o vê e confunde com abreviação de "internet". E os nomes que se usa, como eth0, são definidos ou posso escolher eu mesmo? Se eu tiver mais de um adaptador de rede local, como posso saber qual ethpertence a qual adaptador de rede local?
Foo Bar
2
Ambos. Juntos, eles definem o método de aquisição de endereço IP (dhcp, estático, scripts ppp, sem endereço) e a versão do protocolo IP ( inet= v4 e inet6= v6). Os nomes das interfaces dependem da distribuição que você está usando e da maneira como udevestá configurado. O Debian usa eth*e wlan*para interfaces a cabo e sem fio. O Fedora usa o esquema biosdevname, onde em0é a primeira interface Ethernet integrada na sua placa-mãe e p<slot>p<eth port>o nome de um nicho PCI. Você pode corrigir nomes de rede em /etc/udev/rules.d/70-persistent-net.rulesou criar alias interfaces.
2
Em relação a "gateway - o gateway padrão de um servidor. Tenha cuidado ao usar apenas um desse cara". Essa é uma por estrofe ou uma interface de gateway entre todas as estrofes?
ctbrown
2
Deve ser um gateway entre todas as estrofes ou você terá problemas com sua rota padrão. Para trabalhar com o multi gateway / multi link, será necessário pensar em algumas regras do iptables + marcação do pacote + ip.
Uma pequena consulta, se neste arquivo, eu estou tendo iface eth0 inet estático e, se eu escrever algum IP contra o campo de endereço, isso significa que esse IP específico que acabei de escrever ficaria vinculado ao endereço MAC do meu sistema?
k10 26/03
0

Eu também acrescentaria que:

  • interfaces é para serviços ifup / ifdown.
  • Quando você usa allow-hotplug, ele não inicia com ifup / ifdown, bcos você precisa usar o sinalizador --allow = hotplug.

Você pode rastrear o que está acontecendo com o ifup usando o sinalizador --verbose.

Eu não sou 100% certo disso, mas parece que basicamente quando ifup é chamado, você executará tudo em / etc / network / interfaces com up ... se não for especificado o contrário.

Não estou certo de como se relaciona: serviço de rede ...

Seria bom se alguém apontasse o que está acontecendo após a chamada:

service networking restart

em relação a ifup / ifdown.

sinceramente
fonte