Capítulo 5. Configuração de rede

Índice

5.1. A infraestrutura 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. O alcance de endereços de rede para a LAN
5.1.5. O suporte a dispositivos de rede
5.2. A configuração de rede moderna para desktop
5.2.1. Ferramentas GUI de configuração de rede
5.3. A ligação e configuração legacy de rede
5.4. O método de ligação de rede (legacy)
5.4.1. A ligação DHCP com a 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 de rede básica com ifupdown (legacy)
5.5.1. A sintaxe de comando simplificada
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. A base da interface LAN wireless
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 base da configuração de rede
5.5.14. O pacote ifupdown-extra
5.6. A configuração de rede avançada com ifupdown (legacy)
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 de rede comutável manualmente
5.6.7. Usar 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. Infraestrutura do netfilter
[Dica] Dica

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

5.1. A infraestrutura de rede básica

Vamos rever a infraestrutura de rede básica do sistema Debian moderno.

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

pacotes popcon tamanho tipo descrição
ifupdown * V:59, I:99 158 config::ifupdown ferramenta standard para activar e desactivar a rede (especificação da Debian)
ifplugd * V:0.4, I:0.9 352 , , gerir a rede com fios automaticamente
ifupdown-extra * V:0.02, I:0.2 119 , , script de testes de rede para melhorar o pacote "ifupdown"
ifmetric * V:0.01, I:0.09 100 , , define métricas de rota para uma interface de rede
guessnet * V:0.05, I:0.2 516 , , mapear o script para melhorar o pacote "ifupdown" via ficheiro "/etc/network/interfaces"
ifscheme * V:0.02, I:0.06 132 , , scripts de mapeamento para melhorar o pacote "ifupdown"
ifupdown-scripts-zg2 * V:0.00, I:0.04 232 , , scripts da interface Zugschlus para o método manual do ifupdown
network-manager * V:30, I:37 3756 config::NM NetworkManager (daemon): gere a rede automaticamente
network-manager-gnome * V:21, I:32 5577 , , NetworkManager (frontend do GNOME)
network-manager-kde * V:1.1, I:3 12 , , NetworkManager (frontend do KDE)
cnetworkmanager * V:0.04, I:0.3 NOT_FOUND , , NetworkManager (cliente de linha de comandos)
wicd * I:3 73 config::wicd gestor de rede com fios e sem fios (metapacote)
wicd-cli * V:0.05, I:0.3 103 , , gestor de rede com fios e sem fios (cliente de linha de comandos)
wicd-curses * V:0.2, I:0.7 216 , , gestor de rede com fios e sem fios (cliente Curses)
wicd-daemon * V:2, I:3 1521 , , gestor de rede com fios e sem fios (daemon)
wicd-gtk * V:2, I:3 567 , , gestor de rede com fios e sem fios (cliente GTK+)
iptables * V:26, I:99 1304 config::Netfilter ferramentas administrativas para packet filtering e NAT (Netfilter)
iproute * V:50, I:94 1084 config::iproute2 iproute2, IPv6 e outra configuração de rede avançada: ip(8), tc(8), etc
ifrename * V:0.2, I:0.4 191 , , renomear interfaces de rede baseado em vários critérios de estatística: ifrename(8)
ethtool * V:5, I:14 248 , , mostra ou altera as definições de um dispositivo Ethernet
iputils-ping * V:37, I:99 156 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:0.4, I:4 80 , , teste de acessibilidade de rede de uma máquina remota especificado pelo endereço ARP
iputils-tracepath * V:0.4, I:2 116 , , rastreia o caminho de rede até uma máquina remota
net-tools * V:71, I:99 996 config::net-tools conjunto de ferramentas de rede NET-3 (net-tools, configuração de rede IPv4): ifconfig(8) etc.
inetutils-ping * V:0.03, I:0.11 255 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:0.4, I:3 104 , , teste de acessibilidade de rede de uma máquina remota especificado pelo endereço ARP (legacy)
traceroute * V:12, I:99 144 , , rastreia o caminho de rede até uma máquina remota (legacy, consola)
dhcp3-client * V:8, I:48 60 config::low-level Cliente DHCP
wpasupplicant * V:33, I:44 1195 , , suporte de cliente para WPA e WPA2 (IEEE 802.11i)
wpagui * V:0.11, I:0.9 726 , , Cliente GUI Qt para o wpa_supplicant
wireless-tools * V:7, I:23 325 , , ferramentas para manipular Extensões Wireless do Linux
ppp * V:7, I:40 1016 , , ligação PPP/PPPoE com chat
pppoeconf * V:0.2, I:3 340 config::helper ajudante de configuração para ligação PPPoE
pppconfig * V:0.17, I:1.5 1024 , , ajudante de configuração para ligação PPP com chat
wvdial * V:0.4, I:1.9 348 , , ajudante de configuração para ligação PPP com wvdial e ppp
mtr-tiny * V:1.7, I:16 120 test::low-level rastreia o caminho de rede até uma máquina remota (curses)
mtr * V:0.6, I:3 180 , , rastreia o caminho de rede até uma máquina remota (curses e GTK+)
gnome-nettool * V:3, I:34 2920 , , ferramentas para operações comuns de informação de rede (GNOME)
nmap * V:6, I:28 7104 , , mapeamento de rede / sondagem de portos (Nmap, consola)
zenmap * V:0.2, I:1.3 2400 , , mapeamento de rede / sondagem de portos (GTK+)
knmap * V:0.02, I:0.2 NOT_FOUND , , mapeamento de rede / sondagem de portos (KDE)
tcpdump * V:3, I:22 980 , , analisador de tráfego de rede (Tcpdump, consola)
wireshark * V:1.6, I:8 2256 , , analisador de tráfego de rede (Wireshark, GTK+)
tshark * V:0.4, I:3 339 , , analisador de tráfego de rede (consola)
nagios3 * V:0.5, I:1.7 29 , , sistema de monitorização e gestão para máquinas, serviços e redes (Nagios)
tcptrace * V:0.04, I:0.3 436 , , produz um sumário das ligações a partir da saída do tcpdump
snort * V:0.4, I:0.6 1308 , , sistema flexível de detecção de intrusos na rede (Snort)
ntop * V:0.7, I:1.6 1856 , , mostra a utilização da rede num navegador web
dnsutils * V:12, I:91 373 , , clientes de rede disponibilizados com BIND: nslookup(8), nsupdate(8), dig(8)
dlint * V:0.4, I:6 96 , , verifica informação de zona DNS usando pesquisas do servidor de nomes
dnstracer * V:0.08, I:0.4 92 , , rastreia uma cadeia de servidores DNS até à fonte

5.1.1. O nome de domínio

A nomeação do nome de domínio é difícil para os utilizadores de PCs normais de estação de trabalho. O PC estação de trabalho pode ser móvel que salta pela rede ou está localizado 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.

[Dica] Dica

Quando você usa um nome de domínio inválido, precisa de iludir o nome de domínio usado 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”.

De acordo com rfc2606, "invalid" parece ser a escolha para o domínio top level (TLD) para construir nomes de domínio que se tem a certeza de serem inválidos a partir da Internet.

O protocolo de descoberta de rede mDNS (Apple Bonjour / Apple Rendezvous, Avahi em Debian) usa "local" como o pseudo domínio top-level. A Microsoft também parece promover "local" para o TLD de rede de área local.

[Atenção] Atenção

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

Outras escolhas populares para o TLD inválido parecem ser "localdomain", "lan", "localnet", ou "home" de acordo com as minhas análises chegadas por 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 uma estrofe tipo "hosts: files dns" dicta a ordem de resolução do nome de máquina. (Isto substitui a funcionalidade antiga da estrofe "order" em "/etc/host.conf".)

  2. O método files é invocado primeiro. Se o nome de máquina existe no ficheiro "/etc/hosts", devolve um endereço válido para ele 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.

O ficheiro "/etc/hosts" que associa endereços IP com nomes de máquinas contém 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

Aqui o <nome_de_máquina> corres ao próprio nome de máquina definido em "/etc/hostname". O <nome_de_domínio> aqui é o nome de domínio totalmente qualificado (FQDN) desta máquina.

[Dica] Dica

Para <nome_de_domínio> do PC móvel sem o FQDN real, você pode escolher um TLD fictício e seguro como "lan", "home", "invalid", "localdomain", "none", e "private".

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 (usando 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.

The hostname resolution via deprecated NETBios over TCP/IP used by the older Windows system can be provided by installing the winbind package. The "/etc/nsswitch.conf" file should have stanza like "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins" to enable this functionality. (Modern Windows system usually use the dns method for the hostname resolution.)

5.1.3. O nome da interface de rede

O nome da interface de rede, ex. eth0, é atribuído a cada hardware no kernel Linux através do mecanismo de configuração do espaço de utilizador, udev (veja Secção 3.5.11, “O sistema udev”), como é encontrado. 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 nomeada de modo persistente em cada arranque do sistema usando 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. O alcance de endereços de rede para a LAN

Vamos lembrar os alcances de endereços do IPv4 a 32 bits em cada classe reservada para usar em redes de área local (LANs) por rfc1918. Estes endereços têm garantia de não entrarem em conflito com quaisquer endereços apropriados na Internet.

Tabela 5.2. Lista de alcances 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 um destes endereços for atribuído a uma máquina, então essa máquina não pode aceder à Internet directamente mas tem de aceder-lhe através de uma gateway que age como um proxy par serviços individuais ou então faça 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 requerem DSFG drivers de hardware externas não-livres para os suportar. Por favor veja Secção 9.7.8, “Drivers de hardware não-livres”.

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

Os sistemas Debian squeeze podem gerir a ligação de rede via 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 fio e sem fios.

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

[Nota] Nota

Não use 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 de configuração de rede modernas precisam de ser configuradas correctamente 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 de configuração de rede automáticas 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ções oficiais 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, ex. foo, pertencente ao grupo "netdev" com o seguinte (Alternativamente, faça-o automaticamente via D-bus sob ambientes de trabalho modernos como o GNOME e o KDE).

    $ 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 de 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 de rede básica com ifupdown (legacy)” e Secção 5.6, “A configuração de rede avançada com ifupdown (legacy)”. Consulte BTS do network-manager e BTS do wicd para os problemas e limitações actuais.

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

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

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

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 destes sã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, eles são incómodos de utilizar. Então 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, por ex., "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 configuração suave 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 usar 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 como os para PCs móveis numa LAN de fios. Estes são relativamente difíceis de usar mas jogam bem com o sistema ifupdown existente.

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

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

[Cuidado] Cuidado

O método de teste de ligação descrito nesta secção destina-se a objectivos de teste. Não se destina a ser usado directamente para as ligações diárias de rede. Você é avisado para usá-lo via NM, Wicd, ou o pacote ifupdown (veja Secção 5.2, “A configuração de rede moderna para desktop” e Secção 5.5, “A configuração de rede básica 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
Porto série (ppp0) PPP modem ⇔ POTS ⇔ ponto de acesso dial-up ⇔ ISP
Porto Ethernet (eth0) PPPoE/DHCP/Estático ⇔ BB-modem ⇔ serviço BB ⇔ ponto de acesso BB ⇔ ISP
Porto 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 conversa determinista pppconfig, ppp
PPP (alternativa) wvdialconf para criar conversa heurística ppp, wvdial
PPPoE pppoeconf para criar conversa determinista pppoeconf, ppp
DHCP descrito em "/etc/dhcp3/dhclient.conf" dhcp3-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 broadband
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 geralmente servidor por DHCP ou PPPoE. Os de ADSL e FTTP são geralmente servidos por PPPoE. Você tem de consultar o seu ISP para os requerimentos de configuração exactos para a ligação WAN.

[Nota] Nota

Quando é usado um router BB para criar um ambiente LAN caseiro, os PCs na LAN são ligados à WAN via router BB 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 BB. O router BB tem de ser configurado para ligar à WAN seguindo as instruções do seu ISP.

5.4.1. A ligação DHCP com a Ethernet

A rede moderna típica de casa ou pequena empresa, isto é, LAN, está ligada à WAN (Internet) por um router de banda larga de classe de consumidor. A LAN por detrás de este router é servida geralmente pelo servidor de dynamic host configuration protocol (DHCP) que corre no router.

Instale o pacote dhcp3-client para a Ethernet servida por dynamic host configuration protocol (DHCP).

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

Nenhuma acção especial necessária para a Ethernet servida pelo 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 conversa especifica 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 usar 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 apenas ao seleccionar 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 uma lista de dados de autenticação automaticamente.

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 o seguinte.

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 de rede básica com ifupdown (legacy)

A configuração tradicional de rede TCP/IP no sistema Debian usa 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 de rede básica 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 de comando simplificada

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 a estrofe "iface eth0" existir
ifdown eth0 desactiva a interface de rede eth0 com a configuração eth0 se a estrofe "iface eth0" existir

[Atenção] Atenção

Não use 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 com "iface <nome_de_configuração> …" definem a configuração de rede <nome_de_configuração>
Linhas iniciadas com "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 com a estrofe 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, a estrofe mapping não é usada e você usa 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 existe sempre no ficheiro "/etc/network/interfaces".

5.5.4. A interface de rede servida por DHCP

Após preparar o sistema por Secção 5.4.1, “A ligação DHCP com a 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
 hostname "minha_máquina"

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 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 example.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

  • The domain name: "example.com"

  • Endereço IP do servidor DNS: 192.168.11.1

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

nameserver 192.168.11.1
domain example.com
[Cuidado] Cuidado

Os endereços IP usados no exemplo em cima 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. A base da interface LAN wireless

A LAN wireless (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 requerem 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

Você precisa de instalar o pacote wpasupplicant para suportar a WLAN com o novo WPA/WPA2.

No caso de IP servidor por DHCP em ligação WLAN, a entrada no ficheiro "/etc/network/interfaces" deverá ser como 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

Você precisa 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 servidor por DHCP em ligação WLAN, a entrada no ficheiro "/etc/network/interfaces" deverá ser como 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

Você precisa 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

Você precisa 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 base da configuração de rede

Quando você tenta reconfigurar a interface, por ex., 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 a 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 testes de ligação de rede fáceis para usar 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 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 (legacy)

A funcionalidade do pacote ifupdown pode ser melhorada para além do que foi descrito em Secção 5.5, “A configuração de rede básica 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 usar isto.

[Cuidado] Cuidado

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

5.6.1. O pacote ifplugd

O pacote ifplugd é uma ferramenta antiga de configuração de rede automática que apenas pode gerir ligações Ethernet. Isto resolve situações de ligar/desligar cabos Ethernet para portáteis e etc. Se você tem o NetworkManager ou o Wicd (veja Secção 5.2, “A configuração de rede moderna 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 usar o pacote ifplugd para o porto Ethernet interno, 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 a rota de prioridade mais alta e é a predefinição. 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 an 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, “Infraestrutura do 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 usar 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 usando o nome de configuração de rede e o nome de interface de rede. Eu uso 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 seguinte 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 de comando simplificada” requerem que o testemunho de nome da configuração de rede da estrofe iface corresponda ao nome da interface de rede em "/etc/network/interfaces".

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 funcionalidade avançada ao ficheiro "/etc/network/interfaces" ao automatizar a escolha da configuração com o script de mapeamento especificado pelo <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 produz a execução do seguinte comando para configurar eth0 automaticamente.

$ 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 pode 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 de rede comutável manualmente

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

Para todas as configurações de rede que precisa aceder, você cria um único ficheiro "/etc/network/interfaces" como o seguinte.

auto lo
iface lo inet loopback

iface config1 inet dhcp
 hostname "mymachine"

iface config2 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 dns-domain example.com
 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

# The following is used internally only
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 você 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 o nome de configuração de rede (o nome lógico da interface) config1 a ela pelo 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 precise de ajustar os números no final de eth*, ppp*, etc. se possuir várias interfaces de rede.

5.6.7. Usar 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 "$IF_", convertendo para maiúsculas,substituindo os 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”) usa 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 via o mecanismo de mapeamento, também as usa.

[Nota] Nota

Para exemplos mais específicos de scripts personalizados de configuração de rede que usam estas variáveis de ambiente, você deve consultar os scripts exemplo em "/usr/share/doc/ifupdown/examples/*" e os scripts usados 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 como descrito em Secção 5.6.6, “A configuração de rede comutável manualmente”, você pode usar 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.

  • Você listas 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 da Suite 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/". Você pode precisar 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:1.3, I:8 109 mostra informação da utilização de largura de banda numa interface de rede
iperf * V:0.5, I:4 170 ferramenta de medição da largura de banda do Protocolo Internet
apt-spy * V:0.2, I:1.6 204 escreve um ficheiro "/etc/apt/sources.list" baseado em testes de largura de banda
ifstat * V:0.2, I:1.1 88 InterFace STATistics Monitoring
bmon * V:0.2, I:0.8 188 monitor de largura de banda portável e estimador de taxas
ethstatus * V:0.08, I:0.6 84 script que mede rapidamente a transferência efectiva de um dispositivo de rede
bing * V:0.06, I:0.5 96 testador de largura de banda empírica estocástica
bwm-ng * V:0.2, I:1.3 152 monitor de largura de banda pequeno e simples baseado em consola
ethstats * V:0.03, I:0.2 52 monitor de estatísticas de Ethernet baseado em consola
ipfm * V:0.04, I:0.16 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 do 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

Você vê ping(8) com sucesso com 1454.

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

[Dica] Dica

O exemplo em cima com valor PMTU de 1454 é para o meu provedor FTTP anterior o qual usava Modo de Transferência Assíncrona (ATM) com a coluna vertebral da sua rede e servia os seus clientes com PPPoE. O valor PMTU real depende do seu ambiente, ex. 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 uso de métodos de túnel (VPN etc.) pode reduzir ainda mais a optimização de MTU pelos seus custos.

  • 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 as linhas de estrofe iface pertinentes em "/etc/network/interfaces" com o seguinte.

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

For the static IP (see Secção 5.5.5, “A interface de rede com IP estático”), you can replace pertinent iface stanza lines in the "/etc/network/interfaces" with the following.

iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 mtu 1454
 dns-domain example.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, “Infraestrutura do 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

A performance do TCP pode ser maximizada ao ajustar os parâmetros de tamanho de buffer TCP como descrito em "Guia de Afinações do TCP" e "Afinações do TCP" para a WAN moderna de alta largura de banda e alta latência. 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. Infraestrutura do netfilter

O Netfilter disponibiliza uma infraestrutura 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:26, I:99 1304 ferramentas de administração para o netfilter
iptstate * V:0.11, I:0.7 164 monitoriza continuamente o estado do netfilter (semelhante ao top(1))
shorewall-perl * V:0.05, I:0.3 NOT_FOUND Shoreline Firewall, gerador de ficheiro de configuração do netfilter (baseado em Perl, recomendado para lenny)
shorewall-shell * I:1.0 NOT_FOUND Shoreline Firewall, gerador de ficheiro de configuração do netfilter (baseado em shell, alternativo para lenny)

O principal programa de espaço de utilizador para o netfilter é o iptables(8). Você 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 Linux 2.6 actual.