Capítulo 5. Configuração de rede

Índice

5.1. A infra-estrutura de rede básica
5.1.1. O nome de domínio
5.1.2. A resolução de nome de máquina
5.1.3. O nome da interface de rede
5.1.4. A gama de endereços de rede para a LAN
5.1.5. O suporte a dispositivos de rede
5.2. A configuração moderna de rede para desktop
5.2.1. Ferramentas GUI de configuração de rede
5.3. A ligação e antiga configuração de rede
5.4. O método de ligação de rede (antigo)
5.4.1. A ligação DHCP com Ethernet
5.4.2. A ligação de IP estático com a Ethernet
5.4.3. A ligação PPP com o pppconfig
5.4.4. A ligação PPP alternativa com o wvdialconf
5.4.5. A ligação PPPoE com o pppoeconf
5.5. A configuração básica de rede com ifupdown (legacy)
5.5.1. A sintaxe simplificada de comando
5.5.2. A sintaxe básica de "/etc/network/interfaces"
5.5.3. A interface de rede loopback
5.5.4. A interface de rede servida por DHCP
5.5.5. A interface de rede com IP estático
5.5.6. O básico da interface de rede sem fios
5.5.7. A interface LAN wireless com WPA/WPA2
5.5.8. A interface LAN wireless com WEP
5.5.9. A ligação PPP
5.5.10. A ligação PPP alternativa
5.5.11. A ligação PPPoE
5.5.12. O estado de configuração de rede do ifupdown
5.5.13. A reconfiguração de rede básica
5.5.14. O pacote ifupdown-extra
5.6. A configuração de rede avançada com ifupdown (antigo)
5.6.1. O pacote ifplugd
5.6.2. O pacote ifmetric
5.6.3. A interface virtual
5.6.4. A sintaxe de comando avançada
5.6.5. A estrofe de mapeamento
5.6.6. A configuração manual da rede comutável
5.6.7. Scripts com o sistema ifupdown
5.6.8. Mapeando com guessnet
5.7. A configuração de rede de baixo nível
5.7.1. Comandos iproute2
5.7.2. Operações de rede seguras de baixo nível
5.8. Optimização da rede
5.8.1. Encontrar o MTU óptimo
5.8.2. Definir o MTU
5.8.3. Optimização WAN TCP
5.9. Infra-estrutura netfilter
[Dica] Dica

Para um guia geral de rede em GNU/Linux, leia o Guia de Administradores de Rede de Linux.

[Dica] Dica

Apesar deste documento ainda utilizar o antigo ifconfig(8) com IPv4 para os seus exemplos de configuração de rede, Debian está a mudar para ip(8) com IPv4+IPv6 no lançamento Wheezy. Patches para este documento são bem-vindos.

5.1. A infra-estrutura de rede básica

Vamos rever a infra-estrutura básica de rede do sistema Debian moderno.

Tabela 5.1. Lista de ferramentas de configuração de rede

pacotes popcon tamanho tipo descrição
ifupdown V:589, I:993 191 config::ifupdown ferramenta standard para activar e desactivar a rede (especifico de Debian)
ifplugd V:4, I:10 352 , , gerir a rede com fios automaticamente
ifupdown-extra V:0, I:2 119 , , script de testes de rede para melhorar o pacote "ifupdown"
ifmetric V:0, I:1 100 , , define métricas de rota para uma interface de rede
guessnet V:0, I:1 532 , , script de mapeamento para melhorar o pacote "ifupdown" via ficheiro "/etc/network/interfaces"
ifscheme V:0, I:0 132 , , scripts de mapeamento para melhorar o pacote "ifupdown"
ifupdown-scripts-zg2 V:0, I:0 147 , , scripts da interface Zugschlus para o método manual do ifupdown
network-manager V:310, I:395 4015 config::NM NetworkManager (daemon): gere a rede automaticamente
network-manager-gnome V:227, I:345 5746 , , NetworkManager (frontend do GNOME)
network-manager-kde V:7, I:29 36 , , NetworkManager (frontend do KDE)
wicd I:33 48 config::wicd gestor de rede com fios e sem fios (metapacote)
wicd-cli V:0, I:4 87 , , gestor de rede com fios e sem fios (cliente de linha de comandos)
wicd-curses V:2, I:7 195 , , gestor de rede com fios e sem fios (cliente Curses)
wicd-daemon V:32, I:38 1654 , , gestor de rede com fios e sem fios (daemon)
wicd-gtk V:26, I:35 552 , , gestor de rede com fios e sem fios (cliente GTK+)
iptables V:277, I:993 1378 config::Netfilter ferramentas administrativas para filtragem de pacotes e NAT (Netfilter)
iproute V:637, I:967 970 config::iproute2 iproute2, IPv6 e outras configurações avançadas de rede: ip(8), tc(8), etc
ifrename V:2, I:3 192 , , renomear interfaces de rede baseado em vários critérios de estatística: ifrename(8)
ethtool V:65, I:156 292 , , mostra ou altera as definições de um dispositivo Ethernet
iputils-ping V:359, I:996 97 test::iproute2 teste de acessibilidade de rede de uma máquina remota pelo nome-de-máquina ou endereço IP (iproute2)
iputils-arping V:4, I:32 36 , , teste de acessibilidade de rede de uma máquina remota especificado pelo endereço ARP
iputils-tracepath V:14, I:109 67 , , rastreia o caminho de rede até uma máquina remota
net-tools V:698, I:997 916 config::net-tools conjunto de ferramentas de rede NET-3 (net-tools, configuração de rede IPv4): ifconfig(8) etc.
inetutils-ping V:0, I:1 278 test::net-tools teste de acessibilidade de rede de uma máquina remota pelo nome-de-máquina ou endereço IP (legacy, GNU)
arping V:4, I:32 46 , , teste de acessibilidade de rede de uma máquina remota especificado pelo endereço ARP (legacy)
traceroute V:113, I:992 175 , , rastreia o caminho de rede até uma máquina remota (legacy, consola)
isc-dhcp-client V:429, I:797 1768 config::low-level Cliente DHCP
wpasupplicant V:345, I:460 1364 , , suporte de cliente para WPA e WPA2 (IEEE 802.11i)
wpagui V:0, I:7 790 , , Cliente GUI Qt para o wpa_supplicant
wireless-tools V:73, I:243 325 , , ferramentas para manipular Extensões Wireless do Linux
ppp V:70, I:444 863 , , ligação PPP/PPPoE com chat
pppoeconf V:2, I:27 340 config::helper ajudante de configuração para ligação PPPoE
pppconfig V:1, I:12 990 , , ajudante de configuração para ligação PPP com chat
wvdial V:3, I:17 276 , , ajudante de configuração para ligação PPP com wvdial e ppp
mtr-tiny V:15, I:121 113 test::low-level rastreia o caminho de rede até uma máquina remota (curses)
mtr V:6, I:36 154 , , rastreia o caminho de rede até uma máquina remota (curses e GTK+)
gnome-nettool V:28, I:330 2644 , , ferramentas para operações comuns de informação de rede (GNOME)
nmap V:61, I:337 14940 , , mapeamento de rede / sondagem de portos (Nmap, consola)
zenmap V:2, I:14 2177 , , mapeamento de rede / sondagem de portos (GTK+)
tcpdump V:32, I:224 1028 , , analisador de tráfego de rede (Tcpdump, consola)
wireshark V:13, I:88 2472 , , analisador de tráfego de rede (Wireshark, GTK+)
tshark V:4, I:35 338 , , analisador de tráfego de rede (consola)
nagios3 V:4, I:16 29 , , sistema de monitorização e gestão para máquinas, serviços e redes (Nagios)
tcptrace V:0, I:3 389 , , produz um sumário das ligações a partir da saída do tcpdump
snort V:3, I:4 1752 , , sistema flexível de detecção de intrusos na rede (Snort)
ntop V:6, I:14 1674 , , mostra a utilização da rede num navegador web
dnsutils V:115, I:921 374 , , clientes de rede disponibilizados com BIND: nslookup(8), nsupdate(8), dig(8)
dlint V:3, I:60 96 , , verifica informação de zona DNS usando pesquisas do servidor de nomes
dnstracer V:0, I:4 81 , , rastreia uma cadeia de servidores DNS até à fonte

5.1.1. O nome de domínio

Aitribuir o nome de domínio é difícil para os utilizadores de PCs normais de estação de trabalho. A estação de trabalho PC pode ser portátil que salta pela rede ou está localizada atrás da firewall de NAT e é inacessível a partir da Internet. Para tais casos, você pode não querer que o nome de domínio seja um nome de domínio válido para evitar colisão de nomes.

Se não tem a certeza do que escolher para este nome de dominio, escolha "localdomain".

De acordo com a minha análise à chegada de mail outras escolhas populares para tal domínio de topo (TLD) inválido e seguro parecem ser lan", "localnet", "home", "invalid" ou "local". Isto é consistente com os queries a TLDs inválidos. Pode também escolher alguns domínios de segundo e terceiro nível não utilizados.

[Atenção] Atenção

Se o serviço DNS na sua LAN utilizar "local" como TLD para a sua LAN, pode interferir com o mDNS.

[Dica] Dica

Quando utilizar um nome de domínio inválido, tem de iludir o nome de domínio utilizado por alguns programas como os MTA para que operem de modo apropriado. Veja Secção 6.3.3, “A configuração do endereço de mail”.

5.1.2. A resolução de nome de máquina

A resolução de nome de máquina também é suportada actualmente pelo mecanismo NSS (Name Service Switch). O fluxo desta resolução é o seguinte.

  1. O ficheiro "/etc/nsswitch.conf" com "hosts: files dns" dicta a ordem de resolução do nome de máquina. (Isto substitui a funcionalidade antiga de "order" em "/etc/host.conf".)

  2. O método files é invocado primeiro. Se o nome de máquina for encontrado no ficheiro "/etc/hosts", devolve um endereço válido e termina. (O ficheiro "/etc/host.conf" contém "multi on".)

  3. O método dns é invocado. Se o nome de máquina é encontrado pela consulta ao Internet Domain Name System (DNS) identificado pelo ficheiro "/etc/resolv.conf", devolve um endereço válido para ele e termina.

Por exemplo, "/etc/hosts" parece-se com o seguinte.

127.0.0.1 localhost
127.0.1.1 <host_name>.<domain_name> <host_name>

# As linhas seguintes são desejáveis para máquinas capazes de IPv6
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Cada linha começa por um endereço IP e é seguida pelo hostname associado.

O endereço IP 127.0.1.1 na segunda linha deste exemplo pode não ser encontrada nalguns outros sistemas tipo-Unix. O Instalador Debian cria esta entrada para um sistema sem um endereço IP permanente como contenção para algum software (p.e., GNOME) conforme é documentado no bug #316099.

O <host_name> coincide com o nome da máquina definido em "/etc/hostname".

Para <domain_name> do PC portátil, poderá escolher um domínio seguro e inválido tal como "localdomain". (Veja Secção 5.1.1, “O nome de domínio”)

Para um sistema com um endereço IP permanente, esse endereço IP permanente deve ser utilizado aqui em vez do 127.0.1.1.

Para um sistema com um endereço IP permanente e um nome de domínio totalmente qualificado (FQDN) disponibilizado pelo Sistema de Nomes de Domínio (DNS), o <host_name> e <domain_name> canónicos devem ser utilizados aqui.

O "/etc/resolv.conf" é um ficheiro estático se o pacote resolvconf não estiver instalado. Se instalado, é um link simbólico. De qualquer modo, contém informação que inicializa as rotinas de resolução de nomes. Se o DNS existir no IP="192.168.11.1", contém o seguinte.

nameserver 192.168.11.1

O pacote resolvconf torna este "/etc/resolv.conf" num link simbólico e gere o seu conteúdo automaticamente pelos scripts hook.

A resolução de nome de máquina via Multicast DNS (utilizando Zeroconf, aka Apple Bonjour / Apple Rendezvous) que permite efectivamente resolução de nomes por programas Unix/Linux comuns no domínio ad-hoc mDNS "local", pode ser disponibilizada ao instalar o pacote libnss-mdns. O ficheiro "/etc/nsswitch.conf" deverá ter uma estrofe como "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 " para activar esta funcionalidade.

A resolução de nome de máquina através do depreciado NETBios sobre TCP/IP utilizada em antigos sistemas Windows pode ser disponibilizada ao instalar o pacote winbind. O ficheiro "/etc/nsswitch.conf" deverá ter um bloco como "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins" para activar esta funcionalidade. (Os sistemas modernos de Windows normalmente utilizam o método dns para a resolução dos nomes de máquinas.)

5.1.3. O nome da interface de rede

O nome da interface de rede, p.e. eth0, é atribuído a cada hardware no kernel Linux conforme é encontrado, através do mecanismo de configuração do espaço de utilizador, udev (veja Secção 3.5.11, “O sistema udev”). O nome da interface de rede é referido como interface física em ifup(8) e interfaces(5).

De modo a assegurar que cada interface de rede seja chamado de modo persistente em cada arranque do sistema utilizando o MAC address e etc., existe um ficheiro de registo "/etc/udev/rules.d/70-persistent-net.rules". Este ficheiro é gerado automaticamente pelo programa "/lib/udev/write_net_rules", provavelmente executado pelo ficheiro de regras persistent-net-generator.rules". Você pode modificá-lo para alterar as regras de nomeação.

[Cuidado] Cuidado

Quando editar o ficheiro de regras "/etc/udev/rules.d/70-persistent-net.rules", você tem de manter cada regra numa única linha e o MAC address em minúsculas. Por exemplo, se você encontrar "FireWire device" e "PCI device" neste ficheiro, provavelmente vai querer nomear o "PCI device" como eth0 e configura-lo como a interface de rede principal.

5.1.4. A gama de endereços de rede para a LAN

Vamos lembrar as gamas de endereços do IPv4 de 32 bits em cada classe reservada para utilização em redes de área local (LANs) pelo rfc1918. É garantido que estes endereços não estejam em conflito com quaisquer endereços na Internet.

Tabela 5.2. Lista de gamas de endereços de rede

Classe endereços de rede máscara de rede máscara de rede /bits # de sub-redes
A 10.x.x.x 255.0.0.0 /8 1
B 172.16.x.x — 172.31.x.x 255.255.0.0 /16 16
C 192.168.0.x — 192.168.255.x 255.255.255.0 /24 256

[Nota] Nota

Se for atribuído um destes endereços a uma máquina, então essa máquina não poderá aceder à Internet directamente mas terá de aceder através de uma gateway que age como um proxy para serviços individuais ou então fará Network Address Translation(NAT). O router de banda larga geralmente executa NAT para o ambiente LAN do consumidor.

5.1.5. O suporte a dispositivos de rede

Apesar da maioria dos dispositivos de hardware serem suportados pelo sistema Debian, existem alguns dispositivos de rede que necessitam de firmware não-livre DFSG para os suportar. Por favor veja Secção 9.7.6, “Controladores de hardware e firmware”.

5.2. A configuração moderna de rede para desktop

Os sistemas Debian squeeze podem gerir a ligação de rede através de software daemon de gestão como o NetworkManager (NM) (network-manager e pacotes associados) ou Wicd (wicd e pacotes associados).

  • Vêm com as suas próprias GUIs e programas de linha de comandos como as suas interfaces de utilizador.

  • Vêm com os seus próprios daemons como os seus sistemas de backend.

  • Permitem ligação fácil do seu sistema à Internet.

  • Permitem gestão fácil de configuração de redes com e sem fios.

  • Permitem-nos configurar a rede independentemente do pacote legacy ifupdown.

[Nota] Nota

Não utilize estas ferramentas de configuração de rede automáticas em servidores. Estas são destinadas principalmente para os utilizadores móveis em portáteis.

Estas ferramentas modernas de configuração de rede necessitam ser correctamente configuradas para evitar entrarem em conflito com o pacote legacy ifupdown e o seu ficheiro de configuração "/etc/network/interfaces".

[Nota] Nota

Algumas funcionalidades destas ferramentas automáticas de configuração de rede podem sofrer regressões. Não são tão robustas como o pacote legacy ifupdown. Consulte BTS do network-manager e BTS do wicd para os problemas e limitações actuais.

5.2.1. Ferramentas GUI de configuração de rede

Documentação oficial para NM e Wicd em Debian são disponibilizadas em "/usr/share/doc/network-manager/README.Debian" e "/usr/share/doc/wicd/README.Debian", respectivamente.

Essencialmente, a configuração de rede para desktop é feita como se segue.

  1. Tornar o utilizador de ambiente de trabalho, p.e. foo, pertencente ao grupo "netdev" com o seguinte (Em alternativa, em ambientes de trabalho modernos como o GNOME e o KDE, faça-o automaticamente através de D-bus).

    $ sudo adduser foo netdev
  2. Mantenha a configuração de "/etc/network/interfaces" tão simples como o seguinte.

    auto lo
    iface lo inet loopback
  3. Reiniciar NM ou Wicd com o seguinte.

    $ sudo /etc/init.d/network-manager restart
    $ sudo /etc/init.d/wicd restart
  4. Configure a sua rede através da GUI.

[Nota] Nota

Apenas as interfaces que não estão listadas em "/etc/network/interfaces" ou que foram configuradas com "auto …" ou "allow-hotplug …" e "iface … inet dhcp" (sem outras opções) são geridas pelo NM para evitar conflitos com o ifupdown.

[Dica] Dica

Se desejar estender as capacidades de configuração de rede do NM, por favor procure módulos plug-in apropriados e pacotes suplementares como os network-manager-openconnect, network-manager-openvpn-gnome, network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth, etc. O mesmo vale para o Wicd.

[Cuidado] Cuidado

Estas ferramentas automáticas de configuração de rede podem não ser compatíveis com as configurações esotéricas do legado ifupdown em "/etc/network/interfaces" como aquelas em Secção 5.5, “A configuração básica de rede com ifupdown (legacy)” e Secção 5.6, “A configuração de rede avançada com ifupdown (antigo)”. Consulte BTS do network-manager e BTS do wicd para os problemas e limitações actuais.

5.3. A ligação e antiga configuração de rede

Quando o método descrito em Secção 5.2, “A configuração moderna de rede para desktop” não satisfizer as suas necessidades, deve utilizar a ligação de rede e método antigo de configuração que combina muitas ferramentas mais simples.

A antiga ligação de rede é específica para cada método (veja Secção 5.4, “O método de ligação de rede (antigo)”).

Existem 2 tipos de programas para a configuração de rede de baixo nível em Linux (veja Secção 5.7.1, “Comandos iproute2”).

  • Os programas antigos net-tools (ifconfig(8), …) são do sistema de rede Linux NET-3. A maioria estão agora obsoletos.

  • Os novos programs Linux iproute2 (ip(8), …) são o sistema de rede actual do Linux.

Apesar destes programas de rede de baixo nível serem poderosos, não são tão práticos de utilizar. Por isso foram criados sistema de configuração de rede de alto nível.

O pacote ifupdown é o standard de facto para tais sistemas de configuração de rede de alto nível em Debian. Permite-lhe activar a rede simplesmente ao fazer, p. e., "ifup eth0". O seu ficheiro de configuração é o ficheiro "/etc/network/interfaces" e o seu conteúdo típico é o seguinte:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

O pacote resolvconf foi criado como suplemento ao sistema ifupdown para suportar uma fácil configuração da resolução de endereços de rede ao automatizar a rescrita do ficheiro de configuração do resolvedor "/etc/resolv.conf". Agora, a maioria dos pacotes de configuração de rede em Debian estão modificados para utilizar o pacote resolvconf (veja "/usr/share/doc/resolvconf/README.Debian").

Scripts de ajuda do pacote ifupdown tais como ifplugd, guessnet, ifscheme, etc. são criados para automatizar a configuração dinâmica do ambiente de rede para os PCs móveis assim como numa rede com fios. Estes são relativamente difíceis de usar mas funcionam bem com o sistema ifupdown existente.

Estes estão explicados em detalhe com exemplos (veja Secção 5.5, “A configuração básica de rede com ifupdown (legacy)” e Secção 5.6, “A configuração de rede avançada com ifupdown (antigo)”).

5.4. O método de ligação de rede (antigo)

[Cuidado] Cuidado

O método de teste de ligação descrito nesta secção destina-se a propósitos de teste. Não se destina a ser utilizado directamente para as ligações do dia-a-dia de rede. Você é avisado para utilizá-lo via NM, Wicd, ou do pacote ifupdown (veja Secção 5.2, “A configuração moderna de rede para desktop” e Secção 5.5, “A configuração básica de rede com ifupdown (legacy)”).

O método de ligação de rede típico e caminho de ligação para um PC pode ser resumido ao seguinte:

Tabela 5.3. Lista de métodos de ligação de rede e caminhos de ligação

PC método de ligação caminho de ligação
Porta série (ppp0) PPP modem ⇔ POTS ⇔ ponto de acesso dial-up ⇔ ISP
Porta Ethernet (eth0) PPPoE/DHCP/Estático ⇔ BB-modem ⇔ serviço BB ⇔ ponto de acesso BB ⇔ ISP
Porta Ethernet (eth0) DHCP/Estático ⇔ LAN ⇔ router BB com with tradução de endereços de rede (NAT) (⇔ BB-modem …)

Aqui está um sumário do script de configuração para cada método de ligação.

Tabela 5.4. Lista de configurações de ligação de rede

método de ligação configuração pacote(s) backend
PPP pppconfig para criar chat determinista pppconfig, ppp
PPP (alternativa) wvdialconf para criar chat heurístico ppp, wvdial
PPPoE pppoeconf para criar chat determinista pppoeconf, ppp
DHCP descrito em "/etc/dhcp/dhclient.conf" isc-dhcp-client
IP estático (IPv4) descrito em "/etc/network/interfaces" net-tools
IP estático (IPv6) descrito em "/etc/network/interfaces" iproute

A ligação de rede anónima significa o seguinte.

Tabela 5.5. Lista de ligações de rede anónimas

acrónimo significado
POTS serviço de antigo telefone simples
BB banda larga
serviço BB ex. a linha de subscrição digital (DSL), a TV por cabo, ou a fibra até aos casas (FTTP)
modem BB ex. o modem DSL, o modem de cabo, ou o terminal de rede óptica (ONT)
LAN rede de área local
WAN rede de área alargada
DHCP protocolo de configuração dinâmico de máquina
PPP protocolo ponto-para-ponto
PPPoE protocolo ponto-para-ponto sobre Ethernet
ISP Provedor de serviço de Internet

[Nota] Nota

Os serviços de ligação WAN via TV por cabo são normalmente servidos por DHCP ou PPPoE. Os de ADSL e FTTP são geralmente servidos por PPPoE. Você tem de consultar o seu ISP para os requesitos de configuração exactos para a ligação WAN.

[Nota] Nota

Quando é utilizado um router de banda larga para criar um ambiente LAN caseiro, os PCs na LAN são ligados à WAN através do router com tradução de endereços de rede (NAT). Para tais casos, as interfaces de rede dos PCs na LAN são servidas por DHCP ou IP estático a partir do router. O router tem de ser configurado para ligar à WAN seguindo as instruções do seu ISP.

5.4.1. A ligação DHCP com Ethernet

A típica rede moderna de casa ou de pequena empresa, isto é, LAN, está ligada à WAN (Internet) por um router de banda larga de classe de consumidor. A LAN por detrás deste router é servida geralmente pelo servidor de protocolo de configuração dinâmica de máquinas (DHCP) que corre no router.

Instale apenas o pacote isc-dhcp-client para a Ethernet servida pelo protocolo de configuração dinâmica de máquinas (DHCP).

Veja dhclient.conf(5).

5.4.2. A ligação de IP estático com a Ethernet

Não é necessária nenhuma acção especial para a Ethernet servida por IP estático.

5.4.3. A ligação PPP com o pppconfig

O script de configuração pppconfig configura a ligação PPP interactivamente ao seleccionar o seguinte.

  • O número de telefone

  • O nome de utilizador do ISP

  • A palavra-passe do ISP

  • A velocidade da porta

  • A porta de comunicação do modem

  • O método de autenticação

Tabela 5.6. Lista de ficheiros de configuração para a ligação PPP com pppconfig

ficheiro função
/etc/ppp/peers/<nome_do_isp> O ficheiro de configuração gerado pelo pppconfig para um pppd específico para <nome_de_isp>
/etc/chatscripts/<nome_do_isp> O ficheiro de configuração gerado pelo pppconfig para chat especifico com <nome_de_isp>
/etc/ppp/options O parâmetro de execução geral para o pppd
/etc/ppp/pap-secret Dados de autenticação para PAP (risco de segurança)
/etc/ppp/chap-secret Dados de autenticação para CHAP (mais seguro)

[Cuidado] Cuidado

O valor "<nome_do_isp>" do "provedor" é assumido se os comandos pon e poff forem invocados sem argumentos.

Você pode testar a configuração usando ferramentas de configuração de baixo nível como as seguintes.

$ sudo pon <nome_do_isp>
...
$ sudo poff <nome_do_isp>

Veja "/usr/share/doc/ppp/README.Debian.gz".

5.4.4. A ligação PPP alternativa com o wvdialconf

Uma aproximação diferente a utilizar pppd(8) é corrê-lo a partir do wvdial(1) que vem no pacote wvdial. Em vez do pppd correr o chat(8) para marcar e negociar a ligação, o wvdial faz a marcação e a negociação inicial e depois arranca o pppd para fazer o resto.

O script de configuração wvdialconf configura a ligação PPP interactivamente ao seleccionar apenas o seguinte:

  • O número de telefone

  • O nome de utilizador do ISP

  • A palavra-passe do ISP

wvdial tem sucesso a criar a ligação na maioria dos casos e mantém automaticamente uma lista de dados de autenticação.

Tabela 5.7. Lista de ficheiros de configuração para a ligação PPP com wvdialconf

ficheiro função
/etc/ppp/peers/wvdial O ficheiro de configuração gerado pelo wvdialconf para o pppd, específico para wvdial
/etc/wvdial.conf O ficheiro de configuração gerado pelo wvdialconf
/etc/ppp/options O parâmetro de execução geral para o pppd
/etc/ppp/pap-secret Dados de autenticação para PAP (risco de segurança)
/etc/ppp/chap-secret Dados de autenticação para CHAP (mais seguro)

Você pode testar a configuração usando ferramentas de configuração de baixo nível como as seguintes.

$ sudo wvdial
...
$ sudo killall wvdial

Veja wvdial(1) e wvdial.conf(5).

5.4.5. A ligação PPPoE com o pppoeconf

Quando o seu ISP o serve com ligação PPPoE e você decide ligar o seu PC directamente à WAN, a rede do seu PC tem de ser configurada com PPPoE. PPPoE significa PPP over Ethernet. O script de configuração pppoeconf configura a ligação PPPoE interactivamente.

Os ficheiros de configuração são os seguintes:

Tabela 5.8. Lista de ficheiros de configuração para a ligação PPPoE com pppoeconf

ficheiro função
/etc/ppp/peers/dsl-provider O ficheiro de configuração gerado pelo pppoeconf para o pppd, específico para pppoe
/etc/ppp/options O parâmetro de execução geral para o pppd
/etc/ppp/pap-secret Dados de autenticação para PAP (risco de segurança)
/etc/ppp/chap-secret Dados de autenticação para CHAP (mais seguro)

Você pode testar a configuração usando ferramentas de configuração de baixo nível como as seguintes.

$ sudo /sbin/ifconfig eth0 up
$ sudo pon dsl-provider
...
$ sudo poff dsl-provider
$ sudo /sbin/ifconfig eth0 down

Veja "/usr/share/doc/pppoeconf/README.Debian".

5.5. A configuração básica de rede com ifupdown (legacy)

A configuração tradicional de rede TCP/IP no sistema Debian utiliza o pacote ifupdown como uma ferramenta de alto nível. Existem 2 casos típicos:

Estes métodos de configuração tradicionais são muito úteis se desejar definir configurações avançadas (veja Secção 5.5, “A configuração básica de rede com ifupdown (legacy)”).

O pacote ifupdown disponibiliza uma estrutura standard para a configuração de rede de alto nível no sistema Debian. Nesta secção, aprendemos a configuração básica de rede com o ifupdown com uma introdução simplificada e muitos exemplos típicos.

5.5.1. A sintaxe simplificada de comando

O pacote ifupdown contém dois comandos: ifup(8) e ifdown(8). Eles oferecem configuração de rede de alto nível ditada pelo ficheiro de configuração "/etc/network/interfaces".

Tabela 5.9. Lista de comandos de configuração de rede básicos com ifupdown

comando acção
ifup eth0 activa a interface de rede eth0 com a configuração eth0 se existir "iface eth0"
ifdown eth0 desactiva a interface de rede eth0 com a configuração eth0 se existir "iface eth0"

[Atenção] Atenção

Não utilize as ferramentas de configuração de baixo nível tais como os comandos ifconfig(8) e ip(8) para configurar uma interface em estado activo.

[Nota] Nota

Não existe nenhum comando ifupdown.

5.5.2. A sintaxe básica de "/etc/network/interfaces"

A sintaxe chave de "/etc/network/interfaces" como explicada em interfaces(5) pode ser resumida ao seguinte.

Tabela 5.10. Lista de estrofes em "/etc/network/interfaces"

estrofe significado
"auto <nome_da_interface>" inicia a interface <nome_da_interface> no arranque do sistema
"allow-auto <nome_de_interface>" , ,
"allow-hotplug <nome_de_interface>" inicia a interface <nome_de_interface> quando o kernel detecta um evento hotplug da interface
Linhas começadas por "iface <nome_de_configuração> …" definem a configuração de rede <nome_de_configuração>
Linhas iniciadas por "mapping <nome_da_interface_global> " define valor de mapeamento de <nome_de_configuração> para o <nome_de_interface> correspondente
A linha começada com um cardinal "#" ignorar como comentários (os comentários no fim da linha não são suportados)
Uma linha terminada com uma barra inversa "\" estende a configuração para a próxima linha

As linhas começadas por iface têm a seguinte sintaxe:

iface <nome_de_configuração> <familia_de_endereços> <nome_do_método>
 <opção1> <valor1>
 <opção2> <valor2>
 ...

Para a configuração básica, mapping não é utilizado e você utiliza o nome da interface de rede como o nome da configuração de rede (Veja Secção 5.6.5, “A estrofe de mapeamento”).

[Atenção] Atenção

Não defina duplicados da estrofe "iface" para uma interface de rede em "/etc/network/interfaces".

5.5.3. A interface de rede loopback

A seguinte entrada de configuração no ficheiro "/etc/network/interfaces" activa a interface de rede loopback lo durante o arranque do sistema (via estrofe auto).

auto lo
iface lo inet loopback

Isto está sempre presente no ficheiro "/etc/network/interfaces".

5.5.4. A interface de rede servida por DHCP

Após preparar o sistema com Secção 5.4.1, “A ligação DHCP com Ethernet”, a interface de rede servida por DHCP é configurada ao criar a entrada de configuração no ficheiro "/etc/network/interfaces" como o seguinte:

allow-hotplug eth0
iface eth0 inet dhcp

Quando o kernel Linux detecta a interface física eth0, a estrofe allow-hotplug faz com que ifup active a interface e a estrofe iface faz com que ifup utilize DHCP para configurar a interface.

5.5.5. A interface de rede com IP estático

A interface de rede servida por IP estático é configurada ao criar a entrada de configuração no ficheiro "/etc/network/interfaces" como se segue:

allow-hotplug eth0
iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 dns-domain exemplo.com
 dns-nameservers 192.168.11.1

Quando o kernel Linux detecta a interface física eth0, a estrofe allow-hotplug faz com que ifup active a interface e a estrofe iface faz com que ifup use IP estático para configurar a interface.

Aqui, eu assumi o seguinte:

  • Alcance de endereços IP da rede LAN: 192.168.11.0 - 192.168.11.255

  • Endereço IP da gateway: 192.168.11.1

  • Endereço IP do PC: 192.168.11.100

  • O pacote resolvconf: instalado

  • O nome de domínio: "exemplo.com"

  • Endereço IP do servidor DNS: 192.168.11.1

Quando o pacote resolvconf não estiver instalado, a configuração relacionada com DNS precisa ser feita manualmente ao editar o ficheiro "/etc/resolv.conf" como se seguei:

nameserver 192.168.11.1
domain exemplo.com
[Cuidado] Cuidado

Os endereços IP utilizados no exemplo acima não se destinam a ser copiados literalmente. Você tem de ajustar os números do IP à configuração da sua rede actual.

5.5.6. O básico da interface de rede sem fios

A LAN sem fios (WLAN resumindo) disponibiliza a ligação sem fios mais rápida através da difusão espectral de bandas de rádio não licenciadas baseada no conjunto de standards chamado IEEE 802.11.

As interfaces de WLAN são quase iguais às interfaces Ethernet normais mas necessitam que lhes seja disponibilizado um ID de rede e dados de chave de encriptação quando são inicializadas. As suas ferramentas de rede de alto nível são exactamente as mesmas das interfaces Ethernet com a excepção que os nomes das interfaces são um pouco diferentes como eth1, wlan0, ath0, wifi0, … dependendo das drivers de kernel usadas.

[Dica] Dica

O dispositivo wmaster0 é o dispositivo mestre o qual é um dispositivo interno usado apenas por SoftMAC com a nova API mac80211 do Linux.

Aqui estão algumas palavras chave para lembrar para a WLAN.

Tabela 5.11. Lista de siglas para WLAN

acrónimo palavra completa significado
NWID ID de rede ID de rede a 16 bit usado por redes pre-802.11 WaveLAN (muito descontinuado)
(E)SSID (Extenso) Service Set Identifier nome de rede dos Pontos de Acesso Wireless (APs) interligados para formar uma LAN 802.11 wireless integrada, ID de Domínio
WEP, (WEP2) Wired Equivalent Privacy standard de encriptação wireless 64-bit (128-bit) de 1ª geração com chave de 40 bits (descontinuado)
WPA Wi-Fi Protected Access standard de encriptação wireless de 2ª geração (maioria dos 802.11i), compatível com WEP
WPA2 Wi-Fi Protected Access 2 standard de encriptação wireless de 3ª geração (todos 802.11i), não compatível com WEP

A escolha actual do protocolo é normalmente limitada pelo router wireless que você possui.

5.5.7. A interface LAN wireless com WPA/WPA2

Tem de instalar o pacote wpasupplicant para suportar a WLAN com o novo WPA/WPA2.

No caso de IP servido por DHCP em ligação WLAN, a entrada no ficheiro "/etc/network/interfaces" deverá ser conforme a seguinte:

allow-hotplug ath0
iface ath0 inet dhcp
 wpa-ssid homezone
 # hexadecimal psk is encoded from a plaintext passphrase
 wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Veja "/usr/share/doc/wpasupplicant/README.modes.gz".

5.5.8. A interface LAN wireless com WEP

Tem de instalar o pacote wireless-tools para suportar a WLAN com o antigo WEP. (O seu router pode ainda usar esta infraestrutura insegura, mas é melhor do que nada.)

[Cuidado] Cuidado

Por favor note o seu tráfego de rede em WLAN com WEP pode ser interceptado por outros.

No caso de IP servido por DHCP em ligação WLAN, a entrada no ficheiro "/etc/network/interfaces" deverá ser conforme a seguinte:

allow-hotplug eth0
iface eth0 inet dhcp
 wireless-essid Home
 wireless-key1 0123-4567-89ab-cdef
 wireless-key2 12345678
 wireless-key3 s:password
 wireless-defaultkey 2
 wireless-keymode open

Veja "/usr/share/doc/wireless-tools/README.Debian".

5.5.9. A ligação PPP

Tem de configurar a ligação PPP primeiro como descrito antes (veja Secção 5.4.3, “A ligação PPP com o pppconfig”). Depois, adicione a entrada no ficheiro "/etc/network/interfaces" para o dispositivo PPP principal ppp0 como se segue.

iface ppp0 inet ppp
 provider <nome_do_isp>

5.5.10. A ligação PPP alternativa

Necessita primeiro de configurar a ligação PPP alternativa com o wvdial como descrito antes (veja Secção 5.4.4, “A ligação PPP alternativa com o wvdialconf”). Depois, adicione a entrada no ficheiro "/etc/network/interfaces" para o dispositivo PPP principal ppp0 como se segue.

iface ppp0 inet wvdial

5.5.11. A ligação PPPoE

Para um PC ligado directamente à WAN servido por PPPoE, você precisa de configurar o sistema com a ligação PPPoE como descrito antes (veja Secção 5.4.5, “A ligação PPPoE com o pppoeconf”). Depois, adicione a entrada no ficheiro "/etc/network/interfaces" para o dispositivo PPPoE principal eth0 como se segue.

allow-hotplug eth0
iface eth0 inet manual
 pre-up /sbin/ifconfig eth0 up
 up ifup ppp0=dsl
 down ifdown ppp0=dsl
 post-down /sbin/ifconfig eth0 down
# O seguinte é usado apenas internamente
iface dsl inet ppp
 provider dsl-provider

5.5.12. O estado de configuração de rede do ifupdown

O ficheiro "/etc/network/run/ifstate" armazena os estados de configuração de rede desejados para todas as interfaces de rede actualmente activas e geridas pelo pacote ifupdown numa lista. Infelizmente, mesmo que o sistema ifupdown falhe ao activar uma interface como desejado, o ficheiro "/etc/network/run/ifstate" lista-a como activa.

A menos que o resultado do comando ifconfig(8) para uma interface não tenha uma linha como o exemplo seguinte, não pode ser usada como parte de uma rede IPV4.

  inet addr:192.168.11.2  Bcast:192.168.11.255  Mask:255.255.255.0
[Nota] Nota

Para o dispositivo Ethernet ligado a PPPoE, ao resultado do comando ifconfig(8) falta uma linha que se parece com o exemplo em cima.

5.5.13. A reconfiguração de rede básica

Quando tentar reconfigurar a interface, p.e., eth0, tem que primeiro desactivá-la com o comando "sudo ifdown eth0". Isto remove a entrada de eth0 do ficheiro "/etc/network/run/ifstate". (Isto pode resultar nalguma mensagem de erro se a eth0 não estiver activa ou tiver sido mal configurada anteriormente. Até agora, parece ser seguro fazer isto para a estação de trabalho simples de um utilizador em qualquer altura.)

Agora você é livre de rescrever o conteúdo de "/etc/network/interfaces" como necessitar para reconfigurar a interface de rede eth0.

Então, você pode reactivar eth0 com o comando "sudo ifup eth0".

[Dica] Dica

Você pode (re)inicializar a interface de rede com um simples "sudo ifdown eth0;sudo ifup eth0".

5.5.14. O pacote ifupdown-extra

O pacote ifupdown-extra disponibiliza fáceis testes de ligação de rede para utilizar com o pacote ifupdown.

  • O comando network-test(1) pode ser usado a partir da shell.

  • Os scripts automáticos são corridos para cada execução do comando ifup.

O comando network-test poupa-lhe a trabalheira de executar comandos de baixo nível para analisar o problema de rede.

Os scripts automáticos estão instalados em "/etc/network/*/" e executam o seguinte.

  • Verificar a ligação de cabo de rede

  • Verificar o uso duplicado de endereço IP

  • Configura rotas estáticas do sistema baseadas na definição "/etc/network/routes"

  • Verificar se a gateway de rede está ao alcance

  • Grava os resultados no ficheiro "/var/log/syslog"

Este registo do syslog é bastante útil para a administração de problemas de rede no sistema remoto.

[Dica] Dica

O comportamento automático do pacote ifupdown-extra é configurável com o "/etc/default/network-test". Algumas destas verificações automáticas abrandam o arranque do sistema um pouco porque demora algum tempo a escutar por respostas de ARP.

5.6. A configuração de rede avançada com ifupdown (antigo)

A funcionalidade do pacote ifupdown pode ser melhorada para além do que foi descrito em Secção 5.5, “A configuração básica de rede com ifupdown (legacy)” com conhecimentos avançados.

As funcionalidades descritas aqui são completamente opcionais. Estou a ser preguiçoso e minimalista, raramente me incomodo a utilizar isto.

[Cuidado] Cuidado

Se não conseguir configurar a ligação de rede com a informação de Secção 5.5, “A configuração básica de rede com ifupdown (legacy)”, irá agravar a situação ao utilizar a informação em baixo.

5.6.1. O pacote ifplugd

O pacote ifplugd é uma antiga ferramenta de configuração automática de rede que apenas pode gerir ligações Ethernet. Isto resolve situações de ligar/desligar cabos Ethernet para portáteis e etc. Se tiver o NetworkManager ou o Wicd (veja Secção 5.2, “A configuração moderna de rede para desktop”) instalado, não precisa deste pacote.

Este pacote corre um daemon e substitui as funcionalidades auto ou allow-hotplug (veja Tabela 5.10, “Lista de estrofes em "/etc/network/interfaces"”) e inicia as interfaces após a sua ligação à rede.

Aqui está como utilizar o pacote ifplugd para a porta Ethernet interna, ex. eth0.

  1. Remova a estrofe em "/etc/network/interfaces": "auto eth0" ou "allow-hotplug eth0".

  2. Mantenha a estrofe em "/etc/network/interfaces": "iface eth0 inet …" e "mapping …".

  3. instale o pacote ifplugd.

  4. Corra "sudo dpkg-reconfigure ifplugd".

  5. Coloque eth0 como a "interface estática para ser correspondida pelo ifplugd".

Agora, a configuração de rede funciona como deseja.

  • Após o ligar da máquina ou após a descoberta do hardware, a interface não é activada por si própria.

  • Após encontrar o cabo Ethernet, a interface é activada.

  • Após algum tempo depois de desligar o cabo Ethernet, a interface é desactivada automaticamente.

  • Após ligar outro cabo Ethernet, a interface é activada sob o novo ambiente de rede.

[Dica] Dica

Os argumentos para o comando ifplugd(8) podem definir o seu comportamento tal como o atraso para reconfigurar interfaces.

5.6.2. O pacote ifmetric

O pacote ifmetric permite-nos manipular métricas de rotas à posteriori mesmo para DHCP.

O seguinte configura a interface eth0 para ser preferida sobre a interface wlan0.

  1. Instale o pacote ifmetric.

  2. Adicione uma linha de opção com "metric 0" logo por baixo da linha "iface eth0 inet dhcp".

  3. Adicione uma linha de opção com "metric 1" logo por baixo da linha "iface wlan0 inet dhcp".

O 0 (zero) métrico significa que a rota de prioridade mais alta e é a predefinida. O valor métrico mais alto significa rotas de prioridade mais baixa. O endereço IP da interface activa com o valor métrico mais baixo torna-se o originário. Veja ifmetric(8).

5.6.3. A interface virtual

Uma única interface Ethernet física pode ser configurada como múltiplas interfaces virtuais com endereços IP diferentes. Normalmente o objectivo é ligar uma interface a diferentes sub-redes de IP. Por exemplo, hospedagem web virtual baseada em endereço IP por uma única interface de rede é uma das tais aplicações.

Por exemplo, vamos supor o seguinte.

  • Uma única interface Ethernet na sua máquina está ligada a um hub de Ethernet (não ao router de banda larga).

  • O hub Ethernet esta ligado a ambos; Internet e rede LAN.

  • A rede LAN usa a sub-rede 192.168.0.x/24.

  • A sua máquina usa endereço IP servido por DHCP com a interface física eth0 para a Internet.

  • A sua máquina usa 192.168.0.1 com a interface virtual eth0:0 para a LAN.

As seguintes estrofes em "/etc/network/interfaces" configuram a sua rede.

iface eth0 inet dhcp
 metric 0
iface eth0:0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 network 192.168.0.0
 metric 1
[Cuidado] Cuidado

Apesar deste exemplo de configuração com network address translation (NAT) que usa netfilter/iptables (veja Secção 5.9, “Infra-estrutura netfilter”) poder disponibilizar um router barato para a LAN com apenas uma interface única, não existem capacidades reais de firewall com tal configuração. Você deve utilizar 2 interfaces físicas com NAT tornar a rede local segura a partir da Internet.

5.6.4. A sintaxe de comando avançada

O pacote ifupdown oferece configuração de rede avançada utilizando o nome de configuração de rede e o nome de interface de rede. Eu utilizo uma terminologia ligeiramente diferente da usada em ifup(8) e interfaces(5).

Tabela 5.12. Lista de terminologia para dispositivos de rede

terminologia do manual a minha terminologia exemplos no texto que se segue descrição
nome da interface física nome da interface de rede lo, eth0, <nome_da_interface> nome dado pelo kernel do Linux (usando o mecanismo udev)
nome da interface lógica nome da configuração de rede config1, config2, <nome_da_configuração> testemunho de nome seguindo iface no "/etc/network/interfaces"

Os comandos de configuração de rede básicos em Secção 5.5.1, “A sintaxe simplificada de comando ” necessitam que o testemunho de nome da configuração de rede da estrofe iface corresponda ao nome da interface de rede em "/etc/network/interfaces".

Os comandos de configuração de rede avançados activam a separação do nome da configuração de rede e o nome da interface de rede em "/etc/network/interfaces" como se segue.

Tabela 5.13. Lista de comandos avançados de configuração de rede com ifupdown

comando acção
ifup eth0=config1 torna activa a interface de rede eth0 com a configuração config1
ifdown eth0=config1 torna inactiva a interface de rede eth0 com a configuração config1
ifup eth0 torna activa a interface de rede eth0 com a configuração seleccionada pela estrofe mapping
ifdown eth0 torna inactiva a interface de rede eth0 com a configuração seleccionada pela estrofe mapping

5.6.5. A estrofe de mapeamento

Nós saltamos a explicação da estrofe mapping no "/etc/network/interfaces" em Secção 5.5.2, “A sintaxe básica de "/etc/network/interfaces"” para evitar complicações. Esta estrofe tem a seguinte sintaxe:

mapping <glob_de_nome_de_interface>
 script <nome_de_script>
 map <script_de_entrada1>
 map <script_de_entrada2>
 map ...

Isto disponibiliza a funcionalidade avançada ao ficheiro "/etc/network/interfaces" ao automatizar a escolha da configuração com o script de mapeamento especificado por <nome_do_script>.

Vamos seguir a execução do seguinte.

$ sudo ifup eth0

Quando o "<glob_de_nome_de_interface>" corresponde a "eth0", esta execução leva à execução do seguinte comando para configurar automaticamente eth0.

$ sudo ifup eth0=$(echo -e '<script_entrada1> \n <script_entrada2> \n ...' | <nome_do_script> eth0)

Aqui, as linhas de entrada do script com "map" são opcionais e podem ser repetidas.

[Nota] Nota

O glob para a estrofe mapping funciona como o glob de nome de ficheiro em shell (veja Secção 1.5.6, “Glob da shell”).

5.6.6. A configuração manual da rede comutável

Aqui está como mudar manualmente entre várias configurações de rede sem reescrever o ficheiro "/etc/network/interfaces" como em Secção 5.5.13, “A reconfiguração de rede básica”.

Para todas as configurações de rede que necessite aceder, crie um único ficheiro "/etc/network/interfaces" conforme o seguinte:

auto lo
iface lo inet loopback

iface config1 inet dhcp

iface config2 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 dns-domain lan
 dns-nameservers 192.168.11.1

iface pppoe inet manual
 pre-up /sbin/ifconfig eth0 up
 up ifup ppp0=dsl
 down ifdown ppp0=dsl
 post-down /sbin/ifconfig eth0 down

# O seguinte é usado apenas internamente
iface dsl inet ppp
 provider dsl-provider

iface pots inet ppp
 provider provider

Por favor note que o nome de configuração de rede o qual é o testemunho após iface não usa o testemunho para o nome da interface de rede. Também, não existe nenhuma estrofe auto nem estrofe allow-hotplug para iniciar a interface de rede eth0 automaticamente após eventos.

Agora está pronto para comutar a configuração de rede.

Vamos levar o seu PC para uma LAN servida por DHCP. Você activa a interface de rede (a interface física) eth0 ao atribuir-lhe o nome de configuração de rede (o nome lógico da interface) config1 com o seguinte.

$ sudo ifup eth0=config1
Password:
...

A interface eth0 está activa, configurada por DHCP e ligada a LAN.

$ sudo ifdown eth0=config1
...

A interface eth0 está inactiva e desligada da LAN.

Vamos levar o seu PC para uma LAN servida por IP estático. Você activa a interface de rede eth0 ao atribuir-lhe o nome de configuração de rede config2 para ela com o seguinte.

$ sudo ifup eth0=config2
...

A interface eth0 está activa, configurada com IP estático e ligada à LAN. Os parâmetros adicionais dados como dns-* configuram o conteúdo de "/etc/resolv.conf". Este "/etc/resolv.conf" é melhor is better gerido se o pacote resolvconf estiver instalado.

$ sudo ifdown eth0=config2
...

A interface eth0 está inactiva e desligada da LAN, outra vez.

Vamos levar o seu PC para uma porta em modem-BB ligado ao serviço servido de PPPoE. Você activa a interface de rede eth0 ao atribuir o nome de configuração de rede pppoe a ela com o seguinte.

$ sudo ifup eth0=pppoe
...

A interface eth0 está activa, configurada com ligação PPPoE directamente ao ISP.

$ sudo ifdown eth0=pppoe
...

A interface eth0 está inactiva e desligada, outra vez.

Vamos levar o seu PC para uma localização sem LAN ou modem BB mas com POTS e modem. Você activa a interface de rede ppp0 ao atribuir o nome de configuração de rede pots a ela com o seguinte.

$ sudo ifup ppp0=pots
...

A interface ppp0 está activa e ligada à Internet com PPP.

$ sudo ifdown ppp0=pots
...

A interface ppp0 está inactiva e desligada da Internet.

Você deve verificar o ficheiro "/etc/network/run/ifstate" para o estado actual da configuração de rede do sistema ifupdown.

[Atenção] Atenção

Talvez necessite ajustar os números no final de eth*, ppp*, etc. se possuir várias interfaces de rede.

5.6.7. Scripts com o sistema ifupdown

O sistema ifupdown corre automaticamente scripts instalados em "/etc/network/*/" enquanto exporta variáveis de ambiente para os scripts.

Tabela 5.14. Lista de variáveis de ambiente passadas pelo sistema ifupdown

variável de ambiente valor passado
"$IFACE" nome físico (nome da interface) da interface a ser processada
"$LOGICAL" nome lógico (nome da configuração) da interface a ser processada
"$ADDRFAM" <família_de_endereços> da interface
"$METHOD" <nome_de_método> da interface. (ex., "static")
"$MODE" "start" se corrido a partir de ifup, "stop" se corrido a partir de ifdown
"$PHASE" como para "$MODE", mas com granularidade mais fina, distinguindo as fases pre-up, post-up, pre-down e post-down
"$VERBOSITY" indica se "--verbose" foi usado, regulado para 1 se sim, 0 se não.
"$PATH" caminho de busca de comando: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
"$IF_<OPTION>" valor para a opção correspondente sob a estrofe iface

Aqui, cada variável de ambiente, "$IF_<OPTION>", é criada a partir do nome da opção correspondente tal como <opção1> e <opção2> ao preceder com "$IF_", convertendo para maiúsculas, substituindo hífens por underscores, e descartando os caracteres não-alfanuméricos.

[Dica] Dica

Veja Secção 5.5.2, “A sintaxe básica de "/etc/network/interfaces"” para <família_de_endereços>, <nome_de_método>, <opção1> e <opção2>

O pacote ifupdown-extra (veja Secção 5.5.14, “O pacote ifupdown-extra”) utiliza estas variáveis de ambiente para estender a funcionalidade do pacote ifupdown. O pacote ifmetric (veja Secção 5.6.2, “O pacote ifmetric”) instala o script "/etc/network/if-up.d/ifmetric" o qual define a métrica via variável "$IF_METRIC". O pacote guessnet (veja Secção 5.6.8, “Mapeando com guessnet”), que disponibiliza um estrutura simples e poderosa para a selecção automática da configuração de rede através do mecanismo de mapeamento, também as utiliza.

[Nota] Nota

Para exemplos mais específicos de scripts personalizados de configuração de rede que utilizam estas variáveis de ambiente, você deve consultar os scripts de exemplo em "/usr/share/doc/ifupdown/examples/*" e os scripts utilizados nos pacotes ifscheme e ifupdown-scripts-zg2. Estes scripts adicionais têm algumas sobreposições de funcionalidades com os pacotes básicos ifupdown-extra e guessnet. Se você instalar estes scripts adicionais, deve personalizar estes scripts para evitar interferências.

5.6.8. Mapeando com guessnet

Em vez de escolher manualmente a configuração conforme descrito em Secção 5.6.6, “A configuração manual da rede comutável”, pode utilizar o mecanismo de mapeamento descrito em Secção 5.6.5, “A estrofe de mapeamento” para seleccionar automaticamente a configuração de rede com scripts personalizados.

O comando guessnet-ifupdown(8) disponibilizado pelo pacote guessnet foi desenhado para ser usado como um script de mapeamento e disponibiliza uma estrutura poderosa para melhorar o sistema ifupdown.

  • Liste as condições de teste como o valor para as opções do guessnet para cada configuração de rede sob a estrofe iface.

  • O mapeamento escolhe a iface com o primeiro resultado não-ERRO como a configuração de rede.

Esta utilização dupla do ficheiro "/etc/network/interfaces" pelo script de mapeamento, guessnet-ifupdown, e a infraestrutura original de configuração de rede, ifupdown, não causa impactos negativos porque as opções do guessnet apenas exportam variáveis de ambiente extras para scripts executados pelo sistema ifupdown. Veja detalhes em guessnet-ifupdown(8).

[Nota] Nota

Quando são necessárias múltiplas linhas de opção guessnet em "/etc/network/interfaces", use linhas de opção começadas com guessnet1, guessnet2, e assim em diante, porque o pacote ifupdown não permite que as strings de inicio das linhas de opção sejam repetidas.

5.7. A configuração de rede de baixo nível

5.7.1. Comandos iproute2

Os comandos Iproute2 oferecem capacidades completas de configuração de rede de baixo nível. Aqui está uma tabela de traduções dos comandos net-tools obsoletos para os novos comandos iproute2 etc.

Tabela 5.15. Tabela de tradução dos comandos obsoletos net-tools para os novos comandos iproute2

ferramentas de rede obsoletas novo iproute2 etc. manipulação
ifconfig(8) ip addr endereço de protoco (IP ou IPv6) num dispositivo
route(8) ip route entrada na tabela de rotas
arp(8) ip neigh entrada na cache ARP ou NDISC
ipmaddr ip maddr endereço multicast
iptunnel ip tunnel túnel sobre IP
nameif(8) ifrename(8) nomeia as interfaces de rede baseadas no endereço MAC
mii-tool(8) ethtool(8) Definições de dispositivo Ethernet

Veja ip(8) e Manual do COnjunto de Utilitários IPROUTE2.

5.7.2. Operações de rede seguras de baixo nível

Você pode usar comandos de rede de baixo nível como se segue em segurança pois eles não mudam a configuração de rede.

Tabela 5.16. Lista de comandos de rede de baixo nível

comando descrição
ifconfig mostra o estado de ligação e endereço das interfaces activas
ip addr show mostra o estado de ligação e endereço das interfaces activas
route -n mostra toda a tabela de rotas em endereços numéricos
ip route show mostra toda a tabela de rotas em endereços numéricos
arp mostra o conteúdo actual das tabelas de cache ARP
ip neigh mostra o conteúdo actual das tabelas de cache ARP
plog mostra o log do daemon ppp
ping yahoo.com verifica a ligação de Internet para "yahoo.com"
whois yahoo.com verifica quem registou "yahoo.com" na base de dados de domínios
traceroute yahoo.com rastreia a ligação Internet até "yahoo.com"
tracepath yahoo.com rastreia a ligação Internet até "yahoo.com"
mtr yahoo.com rastreia a ligação Internet até "yahoo.com" (repetidamente)
dig [@servidor-dns.com] exemplo.com [{a|mx|any}] verifica os registos DNS de "exemplo.com" pelo "servidor-dns.com" para um registo "a", "mx", ou "any"
iptables -L -n verifica o filtro de pacotes
netstat -a procura todos os portos abertos
netstat -l --inet procura portos a escutar
netstat -ln --tcp procura portos TCP a escutar (numérico)
dlint exemplo.com verifica a informação da zona DNS de "exemplo.com"

[Dica] Dica

Algumas destas ferramentas de configuração de baixo nível residem em "/sbin/". Pode necessitar de escrever o caminho do comando completo tal como "/sbin/ifconfig" ou adicionar "/sbin" à lista "$PATH" no seu "~/.bashrc".

5.8. Optimização da rede

A optimização de rede genérica está para além do objectivo desta documentação. Eu apenas toco em assuntos pertinentes às ligações de grau de consumidor.

Tabela 5.17. Lista de ferramentas de optimização de rede

pacotes popcon tamanho descrição
iftop V:13, I:93 109 mostra informação da utilização de largura de banda numa interface de rede
iperf V:5, I:49 126 ferramenta de medição da largura de banda do Protocolo Internet
apt-spy V:1, I:10 105 escreve um ficheiro "/etc/apt/sources.list" baseado em testes de largura de banda
ifstat V:2, I:13 88 InterFace STATistics Monitoring
bmon V:2, I:9 188 monitor de largura de banda portável e estimador de taxas
ethstatus V:0, I:6 84 script que mede rapidamente a transferência efectiva de um dispositivo de rede
bing V:0, I:4 96 testador de largura de banda empírica estocástica
bwm-ng V:2, I:13 114 monitor de largura de banda pequeno e simples baseado em consola
ethstats V:0, I:2 52 monitor de estatísticas de Ethernet baseado em consola
ipfm V:0, I:1 156 ferramenta de análise de largura de banda

5.8.1. Encontrar o MTU óptimo

O valor Maximum Transmission Unit (MTU) pode ser determinado experimentalmente com ping(8) com a opção "-M do" a qual envia pacotes ICMP com tamanho de dados inicial de 1500 (com offset de 28 bytes para o cabeçalho IP+ICMP) e encontra o tamanho maior sem fragmentação IP.

Por exemplo, tente o seguinte:

$ ping -c 1 -s $((1500-28)) -M do www.debian.org
PING www.debian.org (194.109.137.218) 1472(1500) bytes of data.
From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454)

--- www.debian.org ping statistics ---
0 packets transmitted, 0 received, +1 errors

Tente 1454 em vez de 1500

Observe ping(8) com sucesso com 1454.

Este processo é a descoberta do Caminho MTU (PMTU) (RFC1191) e o comando tracepath(8) pode automatizar isto.

[Dica] Dica

O exemplo acima com valor PMTU de 1454 é para o meu provedor FTTP anterior o qual utilizava Modo de Transferência Assíncrona (ATM) com a coluna vertebral da sua rede e servia os seus clientes com PPPoE. O valor de PMTU real depende do seu ambiente, p.e. 1500 para o meu novo provedor FTTP.

Tabela 5.18. Regras básicas para o valor MTU óptimo

ambiente de rede MTU racional
Ligação Dial-up (IP: PPP) 576 standard
Ligação Ethernet (IP: DHCP ou fixo) 1500 standard e predefinido
Ligação Ethernet (IP: PPPoE) 1492 (=1500-8) 2 bytes para o cabeçalho PPP e 6 bytes para o cabeçalho PPPoE
Ligação Ethernet (espinha dorsal do ISP: ATM, IP: DHCP ou fixo) 1462 (=48*31-18-8) especulação do autor: 18 para cabeçalho de Ethernet, 8 para trailer de SAR
Ligação Ethernet (espinha dorsal do ISP: ATM, IP: PPPoE) 1454 (=48*31-8-18-8) veja "Configuração de MTU Óptima para Ligações PPPoE ADSL" para o racional

Adicionalmente a estas regras básicas, você deve saber o seguinte:

  • Qualquer utilização de métodos de túnel (VPN etc.) pode reduzir o MTU óptimo pelo excesso que adicionam.

  • O valor MTU não deve exceder o valor PMTU determinado experimentalmente.

  • O maior valor MTU é geralmente melhor quando são conhecidas outras limitações.

5.8.2. Definir o MTU

Aqui estão exemplos para definir o valor MTU desde a sua predefinição 1500 até 1454.

Para o DHCP (veja Secção 5.5.4, “A interface de rede servida por DHCP”), você pode substituir as linhas de estrofe iface pertinentes em "/etc/network/interfaces" com o seguinte.

iface eth0 inet dhcp
 pre-up /sbin/ifconfig $IFACE mtu 1454

Para IP estático (veja Secção 5.5.5, “A interface de rede com IP estático”), você pode substituir as linhas pertinentes de iface em "/etc/network/interfaces" com o seguinte.

iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 mtu 1454
 dns-domain exemplo.com
 dns-nameservers 192.168.11.1

Para o PPPoE directo (veja Secção 5.4.5, “A ligação PPPoE com o pppoeconf”), você pode substituir a linha "mtu" pertinente no "/etc/ppp/peers/dsl-provider" com o seguinte.

mtu 1454

O tamanho de segmento máximo (MSS) é usado como uma alternativa ao tamanho do pacote. As relações entre MSS e MTU são as seguintes.

  • MSS = MTU - 40 para IPv4

  • MSS = MTU - 60 para IPv6

[Nota] Nota

A optimização baseada no iptables(8) (veja Secção 5.9, “Infra-estrutura netfilter”) pode apertar o tamanho do pacote pelo MSS e é útil para o router. Veja "TCPMSS" em iptables(8).

5.8.3. Optimização WAN TCP

Para a WAN moderna de alta largura de banda e alta latência, a performance do TCP pode ser maximizada ajustando os parâmetros de tamanho de buffer TCP conforme descrito em "Guia de Afinações de TCP" e em "Afinações do TCP". Até agora, os ajustes predefinidos actuais de Debian servem bem mesmo para a minha LAN ligada pelo serviço FTTP rápido de 1G bps.

5.9. Infra-estrutura netfilter

Netfilter disponibiliza uma infra-estrutura para firewall de estado e tradução de endereços de rede (NAT) com módulos do kernel Linux (veja Secção 3.5.12, “A inicialização de módulos do kernel”).

Tabela 5.19. Lista de ferramentas de firewall

pacotes popcon tamanho descrição
iptables V:277, I:993 1378 ferramentas de administração para o netfilter
iptstate V:1, I:6 135 monitoriza continuamente o estado do netfilter (semelhante ao top(1))
shorewall-init I:1 112 Inicialização de Shoreline Firewall
shorewall V:11, I:26 1692 Shoreline Firewall, gerador de ficheiro de configuração netfilter
shorewall-lite V:0, I:0 120 Shoreline Firewall, gerador de ficheiro de configuração (versão light) netfilter.
shorewall6 V:1, I:3 697 Shoreline Firewall, gerador de ficheiro de configuração (versão IPv6) netfilter
shorewall6-lite V:0, I:0 118 Shoreline Firewall, gerador de ficheiro de configuração (IPv6, versão light) netfilter

O principal programa de utilizador para o netfilter é o iptables(8). Pode configurar manualmente e interactivamente o netfilter a partir da shell, salvar o seu estado com iptables-save(8), e restaurá-lo via script init com iptables-restore(8) após o reiniciar do sistema.

Scripts de ajuda de configuração como o shorewall facilitam este processo.

Veja documentação em http://www.netfilter.org/documentation/ (ou em "/usr/share/doc/iptables/html/").

[Dica] Dica

Apesar destes terem sido escritos para o Linux 2.4, ambos comando iptables(8) e função de kernel netfilter aplicam-se ao actual Linux 2.6.