[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ próximo ]
Este capítulo está focado em administração de rede no Debian. Para uma
introdução geral a redes no GNU/Linux, leia o Net-HOWTO.
Para um sistema Debian ser capaz de acessar a Internet, suas interfaces de rede precisam ser suportadas pelo kernel e estar configuradas apropriadamente.
O primeiro requisito é o suporte de kernel para os dispositivos de interface de rede como placas Ethernet, placas Wi-Fi e modems. Para obter esse suporte você pode precisar recompilar o kernel ou adicionar módulos a ele como descrito em O kernel Linux no Debian, Capítulo 7.
A configuração de dispositivos de rede é explicada abaixo. A informação nesse capítulo foi atualizada para o Sarge. Muito dela não se aplica para versões anteriores.
Um sistema Debian pode ter várias interfaces, cada uma com um endereço de Protocolo de Internet (IP) diferente. As interfaces podem ser de diferentes tipos, incluindo:
Loopback: lo
Ethernet: eth0, eth1, ...
Wi-Fi: wlan0, wlan1, ... [42]
Token Ring: tr0, tr1, ...
PPP: ppp0, ppp1, ...
Há uma grande faixa de outros dispositivos de rede disponíveis, incluindo SLIP, PLIP (IP em linha serial e paralela), dispositivos "shaper" para controlar o tráfego em certas interfaces, frame relay, AX.25, X.25, ARCnet, e LocalTalk.
Toda interface de rede conectada diretamente à Internet (ou a qualquer rede baseada em IP) é identificada por um endereço IP de 32 bit único. [43] O endereço IP pode ser dividido na parte que endereça a rede e na parte que endereça o sistema (host). Se você tiver um endereço IP, defina para 1 os bits que são parte do endereço de rede e defina para 0 os bits que são parte do endereço do sistema e então você obtém a máscara da rede.
Tradicionalmente, redes IP foram agrupadas em classes cujas partes do endereço de rede foram de comprimento 8, 16 ou 24 bits. [44]
endereços IP máscara rede comprimento
Classe A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8
Classe B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16
Classe C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24
Endereços IP fora dessas faixas são usados para propósitos especiais.
Há faixas de endereços em cada classe reservados para uso em redes locais (LANs). Esses endereços têm a garantia de não conflitar com nenhum endereço no domínio da Internet. (Pelo mesmo motivo, se um desses endereços é designado para um sistema então esse sistema não pode acessar a Internet diretamente, precisa acessá-la através de um gateway que atua como um proxy para serviços individuais ou que faça Translação de Endereço de Rede (Network Address Translation).) Essas faixas de endereços são dadas na tabela a seguir junto com o número de faixas em cada classe.
endereços de rede compr. quantidade
Classe A 10.x.x.x /8 1
Classe B 172.16.x.x - 172.31.x.x /16 16
Classe C 192.168.0.x - 192.168.255.x /24 256
O primeiro endereço em uma rede IP é o endereço da própria rede. O último endereço é o endereço de broadcast da rede. [45] Todos os outros endereços podem ser alocados a sistemas na rede. Desses, o primeiro ou o último endereço normalmente é alocado para o gateway de Internet para a rede.
A tabela de roteamento contém a informação do kernel sobre como enviar pacotes IP aos seus destinos. Aqui está uma amostra de tabela de roteamento para um sistema Debian em uma rede local (LAN) com endereço IP 192.168.50.x/24. O sistema 192.168.50.1 (também na LAN) é um roteador para a rede corporativa 172.20.x.x/16 e o sistema 192.168.50.254 (também na LAN) é um roteador para a Internet para todos.
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.0 * 255.0.0.0 U 0 0 2 lo
192.168.50.0 * 255.255.255.0 U 0 0 137 eth0
172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0
default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0
A primeira linha depois do cabeçalho diz que o tráfego destinado à rede 127.x.x.x será roteado para lo a interface de loopback.
A segunda linha diz que o tráfego destinado aos sistemas na LAN serão roteados através de eth0.
A terceira linha diz que o tráfego destinado à rede corporativa será roteado para o gateway 192.168.50.1 e também através de eth0.
A quarta linha diz que o tráfego destinado à Internet será roteado para o gateway 192.168.50.254 e também através de eth0.
Os endereços IP na tabela também podem aparecer como nomes que são obtidos
procurando endereços em /etc/networks ou usando o resolvedor da
Biblioteca C.
Além de rotear, o kernel pode fazer translação de endereço de rede, shaping, e filtro.
Veja o Net-HOWTO e
outros
HOWTOs de rede para informações mais aprofundadas.
As ferramentas de configuração de rede de baixo nível tradicionais nos sistemas
GNU/Linux são os programas ifconfig e route que vêm
no pacote net-tools. Essas ferramentas oficialmente foram
superadas pelo ip que vem no pacote iproute. O
programa ip funciona no Linux 2.2 e superiores e é mais capaz que
as ferramentas antigas. Entretanto, as ferramentas antigas ainda funcionam e
são mais familiares a muitos usuários.
ifconfig e route
Aqui está uma ilustração de como mudar o endereço IP da interface
eth0 de 192.168.0.3 para 192.168.0.111 e
tornar a eth0 como rota para a rede 10.0.0.0 via
192.168.0.1. Nós começamos executando ifconfig e
route sem argumentos de interface para exibir o estado atual de
todas as interfaces de rede e roteamento.
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0
inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23363 errors:0 dropped:0 overruns:0 frame:0
TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB)
Interrupt:9
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:230172 errors:0 dropped:0 overruns:0 frame:0
TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB)
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
Primeiro nós desativamos a interface.
# ifconfig eth0 inet down
# ifconfig
lo Link encap:Local Loopback
... (agora sem a entrada eth0)
# route
... (agora sem entradas de roteamento na tabela)
Então nós a ativamos com o novo endereço IP e novo roteamento.
# ifconfig eth0 inet up 192.168.0.111 \
netmask 255.255.0.0 broadcast 192.168.255.255
# route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
O resultado:
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0
inet addr:192.168.0.111 Bcast:192.168.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
...
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
Para mais informações veja ifconfig(8) e route(8).
ip
Os equivalentes para o ip dos comandos ifconfig e
route anteriores são:
ip link show
ip route list
ip link set eth0 down
ip addr del dev eth0 local 192.168.0.3
ip addr add dev eth0 local 192.168.0.111/16 broadcast 192.168.255.255
ip link set eth0 up
ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
O programa ip mostra sua sintaxe de comando quando executado com o
argumento help. Por exemplo, ip link help mostra:
Usage: ip link set DEVICE { up | down | arp { on | off } |
dynamic { on | off } |
multicast { on | off } | txqueuelen PACKETS |
name NEWNAME |
address LLADDR | broadcast LLADDR |
mtu MTU }
ip link show [ DEVICE ]
Veja também a página de manual ip(8).
O programa iwconfig, que vem no pacote
wireless-tools, é usado para interfaces Wi-Fi, juntamente com o
ifconfig ou ip.
Veja a página de manual iwconfig(8).
Se você acessa a Internet através de um modem conectado a uma linha telefônica discada, então a conexão é negociada usando o Protocolo Ponto-a-Ponto (PPP). Tais conexões são acessadas como uma interface de rede ppp0, ppp1 e assim por diante.
Uma interface PPP é gerenciada pelo daemon PPP pppd quem vem no
pacote ppp. Assim, para o usuário, configurar uma interface PPP
significa configurar o pppd.
pppd manualmente
Para um link de rede ser estabelecido, precisa-se abrir uma porta de
comunicação (normalmente uma porta serial), enviar comandos a um dispositivo de
comunicação (normalmente um modem), discar um número de telefone, autenticar a
identidade em um daemon PPP remoto, criar uma interface PPP e então modificar
tabelas de roteamento de forma que o tráfego possa ser enviado através do link.
O pppd pode fazer tudo isso e conseqüentemente tem uma longa lista
de opções de operação. Essas opções são descritas na página de manual
pppd(8).
Em um sistema Debian, as opções globais são definidas no arquivo
/etc/ppp/options. As opções específicas de usuário são definidas
em ~/.ppprc. Opções que precisam depender da porta de comunicação
usada são gravadas em /etc/ppp/options.nome_da_porta.
Por exemplo, suponha que você tem dois modems—um modem Lucent LT interno
("on board") acessado através de /dev/LT-modem e um modem externo
acessado através de /dev/ttyS0. Crie os dois seguintes arquivos de opções.
# cat > /etc/ppp/options.LT-modem <<EOF
115200
init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem"
EOF
# cat > /etc/ppp/options.ttyS0 <<EOF
115200
init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0"
EOF
Esses se referem aos seguites scripts chat. Primeiro,
/etc/chatscripts/setup-LT-modem.
ABORT ERROR
'' ATZ
OK 'ATW2X2 S7=70 S11=55'
OK AT
Segundo, /etc/chatscripts/setup-ttyS0.
ABORT ERROR
'' ATZ
OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0'
OK AT
Os conteúdos desses arquivos devem depender de seu hardware, claro.
As opções também podem ser dadas ao pppd como argumentos.
No Debian, o pppd normalmente é iniciado usando o comando
pon. Quando o pon é usado, seu primeiro argumento dá
nome a um arquivo de opções em /etc/ppp/peers/ que também é lido
pelo pppd. [46] Esse é o local onde se define as opções que são específicas
a um parceiro (peer) particular—por exemplo, um Provedor de Serviço de
Internet (ISP) particular.
Suponha por exemplo que você alterne entre Amsterdam e Den Haag. Em cada cidade você tem acesso a dois serviços de ISP—Planet e KPN. Primeiro crie um arquivo de opções básicas para cada ISP.
# cat > /etc/ppp/peers/KPN <<EOF
remotename KPN
noauth
user kpn
noipdefault
ipparam KPN
EOF
# cat > /etc/ppp/peers/Planet <<EOF
remotename Planet
auth
user user3579@planet.nl
noipdefault
mru 1000
mtu 1000
ipparam Planet
EOF
Esses arquivos definem opções que diferem entre os dois ISPs. Opções comuns a
ambos os ISPs podem ser colocadas em /etc/ppp/options ou em um dos
arquivos de opções específicos de interface, conforme apropriado.
Agora crie arquivos de opções para cada ISP em cada cidade. Em nosso exemplo a única diferença entre conectar a um ISP em um local ou em outro é o chatscript que é necessário. (O chatscript é diferente porque o número de telefone de acesso local é diferente.)
# cat > /etc/ppp/peers/KPN-Amsterdam <<EOF
connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam"
file /etc/ppp/peers/KPN
EOF
# cat > /etc/ppp/peers/KPN-DenHaag <<EOF
connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag"
file /etc/ppp/peers/KPN
EOF
# cat > /etc/ppp/peers/Planet-Amsterdam <<EOF
connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam"
file /etc/ppp/peers/Planet
EOF
# cat > /etc/ppp/peers/Planet-DenHaag <<EOF
connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag"
file /etc/ppp/peers/Planet
EOF
Cada diretiva file inclui um dos arquivos de opções mostrados
anteriormente. A diretiva connect especifica o comando que o
pppd usa para fazer a conexão. Normalmente usa-se o programa
chat para isso, adaptando o chatscript para o ISP. Aqui estão os
chatscripts para Den Haag; os chatscripts para Amsterdam devem ser similares
exceto pelo número de telefone, ou podem ser diferentes se o ISP oferecer
serviço através de outra companhia lá.
# cat > /etc/chatscripts/KPN-DenHaag <<EOF
ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT ERROR
OK-AT-OK ATDT 0676012321
CONNECT \d\c
EOF
# cat > /etc/chatscripts/Planet-DenHaag <<EOF
ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT ERROR
OK-AT-OK ATDT 0676002505
CONNECT \d\c
EOF
Para poder conectar a esses ISPs você precisa de nomes de clientes e senhas que
o pppd possa fornecer ao parceiro (peer) sob demanda. Essa
informação é guardada em /etc/ppp/pap-secrets (se o protocolo PAP
for usado) ou em /etc/ppp/chap-secrets (se o protocolo CHAP for
usado). Apesar de CHAP ser mais seguro, PAP ainda é o mais largamente usado.
Devido a esses arquivos conterem segredos, o grupo e o mundo não podem ter
permissão de leitura ou escrita neles. Os formatos desses arquivos são
explicados na página de manual pppd(8). Um "segredo"
(terceiro campo) é procurado no arquivo encontrando o nome do cliente (primeiro
campo) e/ou o nome do servidor (segundo campo). Ao conectar a um ISP
geralmente não se sabe o nome do servidor, então ao invés fornece-se o nome do
cliente; isso foi feito nas linhas user nos peers/KPN
e peers/Planet acima.
# nome cliente nome serv. segredo
kpn * kpn
user3579@planet.nl * myfavoritepet
pppd usando o pppconfig
Uma maneira rápida de configurar o pppd é usar o programa
pppconfig que vem no pacote de mesmo nome. O
pppconfig define arquivos como aqueles acima depois de perguntar
ao usuário questões através de uma interface de menu.
Se você optar usar o resolvconf então certifique-se de selecionar
"None" na tela "Configure Nameservers".
wvdial
Uma abordagem diferente de usar o pppd é executá-lo a partir do
wvdial que vem no pacote wvdial. Ao invés de o
pppd executar o chat para discar e negociar a
conexão, o wvdial faz a discagem e negociação inicial e então
inicia o pppd para que faça o resto. Dados somente um número de
telefone, nome de usuário e senha, o wvdial em muitos casos tem
sucesso em fazer a conexão.
Um sistema Debian algumas vezes precisa identificar a si mesmo pelo nome. Para esse propósito é mantido um nome de sistema (hostname) pelo kernel.
O script de inicialização /etc/init.d/hostname.sh ajusta o nome do
sistema durante a inicialização (usando o comando hostname) para o
nome gravado em /etc/hostname. Esse arquivo contém
somente o nome do sistema, não um nome de domínio completo.
Para mostrar o nome do sistema atual execute hostname sem
argumentos.
O nome de correio (mailname) de um sistema é o nome que os
programas relacionados a correio usam para identificar o sistema. O arquivo
/etc/mailname contém esse nome seguido por uma nova linha. O nome
de correio geralmente é um dos nomes de domínio totalmente qualificados do
sistema. Veja a página de manual mailname(5).
O que o destinatário de e-mail vê no cabeçalho From: (De:) de uma mensagem enviada por seu sistema Debian depende de como Agentes de Correio de Usuário (MUA) e Agentes de Transferência de Correio (MTA) são configurados. Suponha que um usuário local foo envie uma mensagem a partir de um sistema com nome de correio meusistema.dom. O cabeçalho From: do e-mail de saída será:
"From: foo@meusistema.dom" se o MUA não tiver um cabeçalho From: definido;
"From: bar@meusistema.dom" se o MUA tiver "From: bar" definido;
"From: bar@bogus.dom" se o MUA tiver "From: bar@bogus.dom" definido.
Mesmo quando o MUA tiver um cabeçalho From: definido o MTA pode adicionar um cabeçalho "Sender:foo@herman.dom" para indicar sua verdadeira origem.
É claro que quando algum MTA envolvido realiza reescrita de endereço como discutido em Definindo um pega-tudo (catchall) para endereços de email inexistentes sob o Exim, Seção 9.6.1.3 e Configurando reescrita seletiva de endereço para mensagens de saída sob o Exim, Seção 9.6.1.4, o endereço de e-mail visto pelo destinatário pode ser mudado para qualquer coisa.
Os sistemas são referenciados por um nome de domínio assim como por endereço
IP. DNS é um sistema cliente-servidor em que resolvedores de nome consultam
servidores de nome (nameservers) para associar nomes de domínios com endereços
IP e outras propriedades de sistemas. O resolver(3) da Biblioteca
C GNU também pode procurar endereços IP em arquivos ou consultar Network
Information Services (NIS) (Serviços de Informação de Rede).
Para ver qual nome de domínio é associado com o sistema local, use o comando hostname --fqdn. Isso mostra o primeiro nome de domínio completamente qualificado que o resolvedor encontra para o nome do sistema local. [47]
O trabalho de encontrar quais endereços IP são associados com um nome de
domínio particular é trabalho de um resolvedor. O resolvedor mais comumente
usado é o conjunto de funções que leva esse nome (resolver(3)) na
Biblioteca C GNU. Outro é o resolvedor FireDNS que vem no pacote
libfiredns.
A forma como o resolvedor da LIBC resolve nomes é governada pela linha
hosts no arquivo de configuração /etc/nsswitch.conf.
Essa linha lista os serviços que devem ser usados para resolver um nome: por
exemplo, dns, files, nis,
nisplus. [48]
Veja a página de manual nsswitch.conf(5). Se for usado o serviço
files, o comportamento do resolvedor também é governado pelo
arquivo de configuração /etc/hosts. Veja a página de manual
hosts(5).
Todos os arquivos acima são estáticos e podem ser editados com seu editor favorito.
Se for usado o serviço dns, o comportamento do resolvedor também é
governado pelo arquivo de configuração /etc/resolv.conf. Veja a
página de manual resolv.conf(5). Uma das funções importantes do
resolv.conf é listar os endereços IP de servidores de nome que
serão contactados para resolver o nome. Essa lista freqüentemente depende do
ambiente de rede e esse pode mudar de tempos em tempos enquanto seu computador
está funcionando. Programas como o pppd e o dhclient
são capazes de manipular o resolv.conf para adicionar e remover
linhas, mas esses recursos não funcionam sempre apropriadamente e eles
conflitam uns com os outros. O pacote resolvconf soluciona o
problema melhor fornecendo uma estrutura padrão para atualizar esse arquivo.
Veja Gerenciando informação do resolvedor de nomes
– resolvconf, Seção 10.4.2.
resolvconf
O pacote resolvconf fornece uma estrutura para gerenciamento
dinâmico de informação disponível sobre servidores de nomes. Ele soluciona o
problema de longa data de como manter listas dinâmicas de servidores de nomes
para o resolvedor e caches de DNS para usar. O resolvconf ajusta a si mesmo
como o intermediário entre programas que controlam interfaces de rede e
fornecem informação de servidor de nome, e aplicações que precisam de
informação de servidor de nome.
O resolvconf é projetado para funcionar sem que qualquer
configuração manual precise ser feita. Entretanto, o pacote é um tanto novo e
requer alguma intervenção manual para que funcione adequadamente. Isso é
certamente verdadeiro se você já personalizou pacotes para que atualizem o
/etc/resolv.conf: você precisará desabilitar suas personalizações.
Veja /usr/share/doc/resolvconf/README.gz
para detalhes.
dnsmasq
A menos que seu servidor de nomes precise ser obrigatório para um domínio, é
melhor que você use um servidor de nomes local para cache como o
dnsmasq. Ele funciona bem com o resolvconf.
bind
Se você precisa fornecer serviço de nome de autoridade para um domínio então
precisa de um servidor de nomes bastante maduro como o named que
vem no pacote bind9 ou no pacote bind. Recomenda-se
o bind9 para instalações novas.
Para instalar o bind9, instale esses pacotes básicos:
bind9; dnsutils. Você pode também desejar instalar
esses pacotes utilitários: bind9-host; dns-browse;
dnscvsutil; nslint. Você também pode querer instalar
esse pacote de documentação: bind9-doc. Você pode também querer
instalar esses pacotes de desenvolvimento: libbind-dev;
libnet-dns-perl. Se você configurar interfaces usando DHCP então
pode achar esse pacote útil: dhcp-dns.
Instale o bind9 ou reconfigure-o com dpkg-reconfigure
para fazer a configuração básica. A configuração consiste na edição do arquivo
named.conf. No Debian esse arquivo é encontrado em
/etc/bind/ e é usado principalmente para definir as zonas DNS
básicas; ele inclui dois outros arquivos:
named.conf.local, usado para definir zonas locais, e
named.conf.options, usado para definir opções. (O último é
processado pelo resolvconf para produzir
/var/run/bind/named.options que é igual ao original exceto que a
especificação forwarders é uma liista de servidores de nome não
locais disponíveis no momento. Para fazer uso disso, mude a linha
include no named.conf de forma que inclua
/var/run/bind/named.options. Veja Gerenciando informação do resolvedor de nomes –
resolvconf, Seção 10.4.2.)
Os arquivos de base de dados nomeados em named.conf* sem caminho
completo para o arquivo serão gravados em /var/cache/bind/. Esse
é o lugar certo para gravar arquivos gerados pelo named: por
exemplo, arquivos de base de dados para zonas para as quais o daemon é
secundário. Arquivos de base de dados estáticos em /etc/bind/são
e precisam ser referenciados em named.conf pelos caminhos
completos dos nomes de arquivo. Veja /usr/share/doc/bind9/README.Debian.gz
para detalhes.
A configuração de baixo nível de interfaces de rede pode ser automatizada por meio de Dynamic Host Configuration Protocol (DHCP) (Protocolo de Configuração Dinâmica de Sistemas). Seu firewall ou sistema roteador ou seu ISP de banda larga podem fornecer endereços IP e outros parâmetros dessa maneira.
Para fazer isso funcionar você precisa instalar um dos seguintes pacotes:
dhcp3-client (versão 3, Internet Software Consortium)
dhcpcd (Yoichi Hariguchi e Sergei Viznyuk)
pump (Redhat)
O pump é simples e largamente utilizado. O
dhcp3-client é complexo mas mais configurável. [49]
Para tornar a configuração de rede mais fácil, o Debian fornece uma ferramenta
de configuração de rede de alto nível padrão que consiste dos programas
ifup e ifdown e do arquivo
/etc/network/interfaces. [50] Se você optar por usar ifupdown para fazer a
configuração de sua rede então normalmente você não deve usar
comandos de baixo nível também. [51] O ifupdown é escrito considerando que será
usado sozinho para configurar e desconfigurar interfaces de rede.
Para atualizar configuração de interface faça isso:
# ifdown eth0
# editor /etc/network/interfaces # altere como quiser
# ifup eth0
Para mais informações veja interfaces(5), /usr/share/doc/ifupdown/examples/network-interfaces.gz
e ifup(8).
Suponha que você quer configurar uma interface Ethernet que tem um endereço IP
fixo 192.168.0.123. Esse endereço começa com
192.168.0 então deve estar em uma LAN. Suponha também que
192.168.0.1 é o endereço do gateway da LAN para a Internet. Edite
o arquivo /etc/network/interfaces de forma que inclua uma estrofe
como essa:
iface eth0 inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
Se você tiver o resolvconf instalado então pode adicionar linhas
que especifiquem informação de DNS. Por exemplo:
iface eth0 inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
dns-search nicedomain.org
dns-nameservers 195.238.2.21 195.238.2.22
Depois que a interface foi levantada, os argumentos das opções
dns-search e dns-nameservers se tornam disponíveis
para o resolvconf para inclusão no arquivo
resolv.conf. O argumento nicedomain.org da opção
dns-search corresponde ao argumento de uma opção
search em resolv.conf(5). Os argumentos
195.238.2.21 e 195.238.2.22 da opção
dns-nameservers corresponde aos argumentos das opções
nameserver no resolv.conf(5). Outras palavras de
opção reconhecidas são dns-domain e dns-sortlist.
Veja Gerenciando informação do resolvedor de nomes
– resolvconf, Seção 10.4.2.
Para configurar uma interface usando DHCP edite o arquivo
/etc/network/interfaces de forma que inclua uma estrofe como essa:
iface eth0 inet dhcp
Para que isso funcione você precisa ter instalado um dos clientes DHCP mencionados em Configurando interfaces de rede usando DHCP, Seção 10.5.
O pacote wireless-tools inclui um script
/etc/network/if-pre-up.d/wireless-tools que torna possível
configurar hardware Wi-Fi (802.11a/b/g) antes de levantar a interface. A
configuração é feita usando o programa iwconfig; veja a página de
manual iwconfig(8). Para cada parâmetro de comando possível do
iwconfig você pode incluir uma opção em
/etc/network/interfaces nomeada como o parâmetro com um prefixo
"wireless-". Por exemplo, para definir o ESSID de eth0
para meuessid e a chave de encriptação para
123456789e antes de levantar a eth0 usando DHCP,
edite o arquivo /etc/network/interfaces de forma a incluir uma
estrofe como esta:
iface eth0 inet dhcp
wireless-essid myessid
wireless-key 123456789e
Os programas ifup e ifdown usam pon e
poff para adicionar e remover interfaces PPP, então primeiro leia
Configurando uma interface PPP, Seção 10.2.4.
Suponha que você precisa configurar PPP para funcionar com o parceiro (peer)
meuisp. Edite o /etc/network/interfaces de forma a
incluir uma estrofe como essa:
iface ppp0 inet ppp
provider myisp
Com essa estrofe no lugar, ifup ppp0 faz
pon meuisp
Infelizmente atualmente não é possível fornecer opções do pppd
adicionais em uma estrofe ppp no
/etc/network/interfaces. [52]
Atualmente não é possível usar ifupdown para realizar configuração
auxiliar de interfaces PPP. Devido ao pon finalizar antes que o
pppd tenha acabado de fazer a conexão, o ifup executa
os scripts up antes que a interface PPP esteja pronta para usar.
Até que esse bug [53] seja
corrigido é necessário fazer configuração auxiliar em
/etc/ppp/ip-up ou /etc/ppp/ip-up.d.
Muitos Internet Service Providers (ISPs) (Provedores de Serviço de Internet)
usam PPP para negociar conexões mesmo quando as máquinas dos clientes são
conectadas a eles através de redes Ethernet e/ou ATM. Isso é realizado por
meio de PPP sobre Ethernet (PPPoE) que é uma técnica para o encapsulamento de
fluxos PPP dentro de frames Ethernet. Suponha que seu ISP se chame
meuisp. Primeiro configure PPP e PPPoE para o parceiro
(peer) meuisp. A maneira mais fácil de fazer isso é
instalar o pacote pppoeconf e executar o pppoeconf a
partir do console. Então edite o arquivo /etc/network/interfaces
de forma a incluir uma estrofe como essa:
iface eth0 inet ppp
provider myisp
Algumas vezes ocorrem problemas de Maximum Transmit Unit (MTU) (Unidade de
Transmissão Máxima) com PPPoE sobre Digital Subscriber Line (DSL). Veja
DSL-HOWTO para
detalhes.
Note que se seu modem de banda larga contém um roteador então o próprio modem/roteador negocia a conexão PPPoE e aparece no lado da LAN como um simples gateway Ethernet para a Internet.
Suponha que a eth0 esteja conectada à Internet com um endereço IP
configurado por DHCP e que a eth1 esteja conectada à LAN com um
endereço IP estático 192.168.1.1. Edite o arquivo
/etc/network/interfaces de forma a incluir estrofes como essas:
iface eth0 inet dhcp
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
Se você ativar NAT nesse sistema como descrito em Construindo um roteador gateway, Seção 10.12, então você poderá compartilhar a conexão à Internet com todos os sistemas na LAN.
Usando interfaces virtuais você pode configurar uma única placa Ethernet para
ser uma interface para várias sub-redes IP. Por exemplo, suponha que seu
sistema esteja em uma rede LAN 192.168.0.x/24. Você quer conectar o sistema à
Internet usando um endereço IP público provido via DHCP usando sua placa
Ethernet existente. Edite o /etc/network/interfaces de forma a
incluir estrofes como essas:
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
iface eth0:0 inet dhcp
A interface eth0:0 é uma interface virtual. Quando é levantada, também é levantada a sua superior eth0.
O que vem a seguir será importante para o leitor compreender a diferença entre uma interface física e uma interface lógica. [54] Uma interface física é o que temos chamado de "a interface", a coisa que é chamada eth0, ppp1, ou o que você tiver. Uma interface lógica é um conjunto de valores que pode ser atribuído aos parâmetros variáveis de uma interface física. Se você achar isso confuso, substitua a expressão "configurado como interface lógica X" pela expressão "configurado com o perfil de interface X" conforme você ler.
As definições iface no arquivo
/etc/network/interfaces são na verdade definições de interfaces
lógicas, não de interfaces físicas. [55] Se você nunca quiser reconfigurar suas interfaces então
pode ignorar esse fato já que a interface física X por padrão será
configurada como interface lógica X.
Entretanto, suponha que seu computador seja um laptop que você transporta entre a casa e o trabalho. Quando você conecta o computador à rede corporativa ou à sua LAN doméstica você precisa configurar a eth0 apropriadamente.
Primeiro defina duas interfaces lógicas casa e trabalho (ao invés de eth0 como fizemos anteriormente) que descrevem como a interface deve ser configurada para a rede doméstica e a rede do trabalho, respectivamente.
iface home inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
iface work inet static
address 81.201.3.123
netmask 255.255.0.0
gateway 81.201.1.1
Então a interface física eth0 pode ser levantada para a rede doméstica com a configuração apropriada especificando na linha de comando:
# ifup eth0=casa
Para configurar a eth0 para a rede do trabalho execute os comandos:
# ifdown eth0
# ifup eth0=work
Note que com o arquivo interfaces escrito como acima não será mais
possível levantar a eth0 usando apenas ifup eth0. A
razão para isso é que o ifup usa o nome da interface física como o
nome padrão da interface lógica e agora em nosso exemplo não há uma interface
lógica eth0 definida.
Nomes de interface lógica podem ser "mapeados" para outros nomes de
interface lógica quando o ifup é executado. A forma como os nomes
são mapeados pode ser feita para depender de circunstâncias. Então o
ifup pode ser configurado de forma que levante uma dada interface
física como a interface lógica apropriada entre um conjunto de alternativas
predefinidas.
O mapeamento de nome de interface lógica ocorre como a seguir:
Se nenhum nome de interface lógica for dado na linha de comando do
ifup então o nome da interface física é usado como o nome de
interface lógica inicial.
Se o nome de interface lógica combinar com o padrão-glob de uma estrofe mapping então o mapeamento é aplicado para gerar um novo nome de interface lógica. Isso é feito recursivamente até não haver padrões-glob que combinem.
Se o último nome de interface lógica for o rótulo de uma definição de interface
lógica em /etc/network/interfaces então a interface física é
levantada como essa interface lógica. Caso contrário o ifup
mostra uma mensagem que está ignorando a interface desconhecida ("Ignoring
unknown interface" e sai.
A sintaxe de uma estrofe mapping é:
mapping padrão-glob
script nome-do-script
[map entrada do script]
O script nomeado na estrofe mapping é executado com o nome de interface física como seu argumento e com os conteúdos de todas as linhas "map" seguintes na estrofe para ele como sua entrada padrão. O script mostra o resultado do mapeamento em sua saída padrão antes de acabar.
Por exemplo, a seguinte estrofe mapping fará com que o
ifup levante a interface eth0 como a interface lógica
casa.
mapping eth0
script /usr/local/sbin/echo-casa
onde /usr/local/sbin/echo-casa é:
#!/bin/sh
echo casa
Devido ao mapeamento ser feito com um script é possível selecionar a interface
lógica baseado em algum tipo de teste. Vamos começar com um exemplo. Suponha
que você tem placas de rede diferentes para casa e trabalho. O diretório
/usr/share/doc/ifupdown/examples/ contém um script de mapeamento
que pode ser usado para selecionar uma interface lógica baseado no endereço de
Media Access Controller (endereço MAC) (Controlador de Acesso de Mídia).
Primeiro instale o script no diretório apropriado.
# install -m770 /usr/share/doc/ifupdown/examples/get-mac-address.sh \
/usr/local/sbin/
Então adicione uma estrofe como a seguinte em
/etc/network/interfaces:
mapping eth0
script /usr/local/sbin/get-mac-address.sh
map 02:23:45:3C:45:3C casa
map 00:A3:03:63:26:93 trabalho
Programas de mapeamento mais sofisticados são descritos abaixo em guessnet, Seção 10.8.1, e laptop-net, Seção 10.8.2.
Instale o pacote guessnet e então adicione uma estrofe como a
seguinte ao arquivo /etc/network/interfaces:
mapping eth0
script guessnet-ifupdown
map casa
map trabalho
Agora quando você fizer ifup eth0, o guessnet
verificará se a eth0 deve ser levantada como casa ou
trabalho. Para fazer isso ele usa informação gravada nas
definições de interface lógica.
O pacote laptop-net toma uma abordagem diferente para
reconfiguração de rede automágica. O laptop-net não faz uso das interfaces
lógicas do ifupdown mas ao invés disso tem seu próprio sistema de
"esquemas" de configuração e "perfis" de sistema. O
laptop-net entretanto ainda usa o ifupdown para configurar
interfaces físicas. Para mais informações consulte a documentação bem escrita
no pacote laptop-net-doc.
Nós temos visto como as interfaces podem ser reconfiguradas. A reconfiguração precisa ser feita em momentos apropriados.
Tradicionalmente a rede era configurada durante a seqüência de inicialização
através do script de inicialização /etc/rcS.d/S40networking e era
raramente reconfigurada. Serviços que dependiam de rede eram iniciados mais
tarde na seqüência de inicialização. No desligamento ou reinicialização os
scripts de inicialização eram executados na ordem oposta.
Atualmente, entretanto, há uma tendência no GNU e no Linux no sentido de
suportar hardware e circunstâncias que mudam dinamicamente. O primeiro suporte
foi adicionado para cartões PCMCIA trocáveis durante funcionamento; mais
recentemente o mecanismo hotplug foi adicionado de forma que muito
mais periféricos podem ser inseridos e retirados enquanto o computador está
funcionando. Isso inclui hardware de rede. Note que serviços que dependem de
hardware que é inserido com computador em funcionamento (hot swapped) precisam
ser iniciados somente depois que o hardware é inserido e precisam ser parados
quando o hardware estiver removido. Isso significa que tais serviços precisam
ser removidos do controle de inicialização System V e ao invés disso colocados
no controle do ifupdown.
Por exemplo, suponha que o serviço foo controlado pelo script de
inicialização /etc/init.d/foo depende da interface de rede
eth0 configurada dinamicamente.
Primeiro remova foo do controle do sistema de inicialização:
# update-rc.d -f foo remove
Então coloque foo sob controle do ifupdown
adicionando as opções up e down à estrofe
eth0 em /etc/network/interfaces que contém chamadas
ao script de inicialização foo:
iface eth0 inet dhcp
up /etc/init.d/foo start
down /etc/init.d/foo stop
Na inicialização o script /etc/rcS.d/S40networking executa o
comando ifup -a. Isso levanta todas as interfaces físicas
listadas em estrofes auto no /etc/network/interfaces.
Atualmente é freqüentemente melhor gerenciar a configuração de rede usando
métodos dinâmicos. Uma vez que estão disponíveis mecanismos para suportar
hardware que mude dinamicamente se torna mais simples tratar hardware estático
como se fosse dinâmico também. A inicialização pode então ser tratada
simplesmente como outro evento hotplug. (Veja Gatilhando configuração de rede –
hotplug, Seção 10.9.2.)
Entretanto, na maioria dos casos se deseja que pelo menos a interface de
loopback lo seja levantada na inicialização. Assim, certifique-se
de que o /etc/network/interfaces inclua as seguintes estrofes.
auto lo
iface lo inet loopback
Você pode listar nomes de interfaces físicas adicionais em estrofes
auto se desejar que também sejam levantadas durante a
inicialização. Nunca liste interfaces PCMCIA em estrofes
auto. O programa cardmgr de PCMCIA é iniciado mais
tarde na seqüência de inicialização que quando o
/etc/rcS.d/S40networking é executado.
hotplug
Para obter suporte a hot plug instale o pacote hotplug.
Hardware de rede pode ser conectado com o computador ligado durante a
inicialização ou depois que um cartão (por exemplo, um cartão PCMCIA) é
inserido na máquina ou depois que um utilitário como o discover é
executado e carrega os módulos de controladores necessários.
Quando o kernel detecta um novo hardware ele inicializa o controlador (driver)
para o hardware e então executa o programa hotplug para
configurá-lo. Mais tarde, se o hardware for removido, então o kernel executa o
hotplug novamente com ajustes de variáveis de ambiente diferentes.
No Debian, quando o hotplug é chamado ele executa scripts em
/etc/hotplug/ e /etc/hotplug.d/. Veja
hotplug(8) para obter detalhes.
O hardware de rede recentemente inserido é configurado pelo script
/etc/hotplug/net.agent. [56] Suponha que seu cartão de rede PCMCIA tenha sido inserido
resultando na interface eth0 se tornando disponível para uso. O
/etc/hotplug/net.agent faz o seguinte:
ifup eth0=hotplug
A menos que você tenha adicionado uma definição de interface lógica ou um
mapeamento chamado hotplug em
/etc/network/interfaces, esse comando não fará nada. Para fazer
com que o comando configure a eth0, adicione a seguinte estrofe em
/etc/network/interfaces:
mapping hotplug
script echo
(Não inclua uma estrofe mapping como essa se você estiver
usando pedidos do ifplugd iniciados pelo hotplug para
controlar a interface, como descrito em Gatilhando
a configuração de rede – ifplugd, Seção 10.9.3.)
Se você quiser que apenas a eth0 e mais nenhuma outra interface
seja levantada com hot plug então use grep ao invés de
echo como a seguir:
mapping hotplug
script grep
map eth0
Veja Reconfiguração mágica de rede, Seção
10.8 e /usr/share/doc/hotplug/README.Debian
para mais dicas.
ifplugd
O ifplugd levanta ou derruba uma interface de acordo com o
hardware relacionado estar ou não plugado em uma rede. O programa pode
detectar um cabo conectado a uma interface Ethernet ou um ponto de acesso
associado a uma interface Wi-Fi. Quando o ifplugd vê que o estado
do link foi alterado ele executa um script proxy que por padrão chama o
ifup ou ifdown para a interface.
O ifplugd funciona bem em combinação com o hotplug.
Quando um cartão foi inserido resultando na disponibilização de uma interface
para uso, /etc/hotplug.d/net/ifplugd.hotplug inicia um pedido de
ifplugd para essa interface. Quando o ifplugd
detecta que o cartão está plugado em uma rede ele usa o ifup para
a interface.
waproamd
Para associar a um ponto de acesso, um cartão Wi-Fi pode ter que ser programado
com uma chave de encriptação WEP apropriada. Se você está usando o
ifplugd para controlar o ifup como descrito em Gatilhando a configuração de rede –
ifplugd, Seção 10.9.3 então obviamente você não pode definir a
chave de encriptação usando o ifup porque o ifup só é
chamado depois que o cartão foi associado. Uma possível solução é programar
todas as chaves requeridas na memória não-volátil do cartão Wi-Fi. Se você
muda entre muitas redes então seu cartão Wi-Fi pode não ser capaz de gravar
chaves suficientes.
Outra solução é usar o waproamd que define a chave de encriptação
WEP de acordo com os pontos de acesso que estão disponíveis, conforme revelado
pela varredura (scanning).
O waproamd funciona bem em combinação com o hotplug.
Quando um cartão foi inserido resultando na disponibilização de uma interface
para uso, o /etc/hotplug.d/net/waproamd inicia um pedido de
waproamd para essa interface. O waproamd funciona
muito bem em combinação com o ifplugd.
Veja o arquivo README do pacote waproamd para mais informações.
Se você usa cartões de rede PCMCIA de 16 bit então deve definir
CARDMGR_OPTS="-f" em /etc/default/pcmcia.
Isso deixa a inicialização ligeiramente mais lenta mas previne uma condição de
corrida executando o cardmgr em primeiro plano (foreground) até
que todos os cartões PCMCIA de 16 bit sejam configurados.
Apesar de por padrão o /etc/init.d/pcmcia ser iniciado a partir de
/etc/rc2.d/S20pcmcia você pode querer mudar isso para executar
antes, por exemplo, para /etc/rc2.d/S12pcmcia para garantir que o
subsistema PCMCIA seja inicializado antes que os serviços de rede sejam
iniciados em S20.
Há várias abordagens possíveis para configurar interfaces de rede PCMCIA.
Para cartões de rede PCMCIA de 32 bit PCI (CardBus):
hotplug / ifupdown
Para cartões de rede PCMCIA de 16 bit ISA:
hotplug / ifupdown com
/etc/pcmcia/network desabilitado localmente (recomendado), ou
pcmcia-cs / ifupdown com o
/etc/pcmcia/network padrão (obsoleto), ou
pcmcia-cs personalizado habilitando recursos de
/etc/pcmcia/network (obsoleto)
A abordagem recomendada para cartões de 16 bit toma vantagem do fato que o
subsistema hot plug do Linux 2.4 agora suporta PCMCIA. Simplesmente siga as
direções em Gatilhando configuração de rede
– hotplug, Seção 10.9.2. [57] Note, entretanto, que para
prevenir que o script hook /etc/pcmcia/network do
cardmgr interfira com o hotplug você precisa
adicionar localmente a linha:
exit 0
no início de /etc/pcmcia/network para desabilitar esse
comportamento padrão.
Note que não há nada errado em executar o cardmgr. Nós apenas não
queremos que ele chame programas de configuração de rede.
Para o cardmgr funcionar adequadamente você precisa editar o
arquivo /etc/pcmcia/config.opts para configurar recursos
atribuídos a cartões PCMCIA de 16 bit. Veja PCMCIA, Seção 7.2.1 e o
HOWTO de PCMCIA no
Linux para mais informações.
A configuração de serviço de rede típica em um ambiente desktop ou servidor doméstico envolve:
O super-servidor de Internet e daemon wrapper TCP/IP, veja Restringindo acesso a serviços, Seção 9.2.5.
/etc/inetd.conf
ssh: Shell segura OpenSSH, veja SSH, Seção 9.5.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
exim: agente de transporte de correio, veja Nome de correio (Mailname), Seção 10.3.2 e Agentes de transporte de correio (MTAs), Seção
9.6.1.
/etc/exim/exim.conf
/etc/mailname
/etc/aliases
/etc/email-addresses
fetchmail: daemon para baixar mensagens de uma conta POP3, veja Baixando mensagens – Fetchmail,
Seção 9.6.2.
/etc/fetchmailrc
procmail: programa de distribuição local de mensagens e filtro,
veja Processando mensagens –
Procmail, Seção 9.6.3.
~/.procmailrc
Hostname e DNS (proxy, cache, ...), veja Nome do sistema (Hostname), Seção 10.3.1 e Domain Name Service (DNS) (Serviço de Nome de Domínio), Seção 10.4.
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/resolv.conf
/etc/bind/named.conf (edite)
/etc/bind/db.lan (adicione para sistemas de LAN)
/etc/bind/db.192.168.0 (adicione para LAN reverso)
DHCP, veja Configurando interfaces de rede usando DHCP, Seção 10.5.
/etc/dhcp3/dhclient.conf (DHCP lado do cliente)
/etc/default/dhcp3-server (DHCP lado do servidor)
/etc/dhcp3/dhcpd.conf (DHCP lado do servidor)
cvs: concurrent versions system (sistema de versões concorrentes),
veja Concurrent Versions System (CVS)
(Sistema de Versões Concorrentes), Seção 12.1.
/etc/cvs-cron.conf
/etc/cvs-pserver.conf
nfs-kernel-server: network file system (sistema de arquivos de
rede), veja Configuração de NFS, Seção
3.4. (para sistemas semelhantes ao unix)
/etc/exports
samba: compartilhamento de arquivos e impressora com o Windows,
veja Configuração do Samba, Seção
3.5 e Samba, Seção 8.6.37.
/etc/samba/smb.conf
Sistema daemon de impressão, veja Configuração da Impressora, Seção 3.6.
/etc/printcap (para o lpr)
apache e apache2: servidor web.
/etc/apache/*
/etc/apache2/*
squid: servidor cache proxy web.
/etc/squid/*
Se você encontrar problemas então verifique a saída do seguinte como primeira verificação do que está acontecendo:
# ifconfig
# cat /proc/pci
# cat /proc/interrupts
# dmesg | more
Veja também as seções seguindo Testes de rede básicos, Seção 8.6.28.
Se você tiver problemas com alguns sítios web, veja Estranhos problemas de acesso a alguns websites, Seção 3.7.5.
Um sistema Debian pode ser uma máquina gateway de propósitos gerais que faz Network Address Translation (Translação de Endereço de Rede) (NAT, também conhecido como masquerading (mascaramento)), transferência de correio, DHCP, cache DNS, cache proxy HTTP, serviço CVS, serviço NFS, e serviço Samba. Veja Hosts e IP a usar para LAN, Seção 3.1.9 para o exemplo de tal configuração.
O projeto netfilter/iptables é um subsistema de firewalling para o kernel Linux
2.4 e superiores. Consulte Netfilter, onde muitos tópicos de
configuração de rede são explicados.
O Netfilter processa pacotes usando 5 chains embutidas : PREROUTING, INPUT, FORWARD, OUTPUT e POSTROUTING.
decisão de
roteamento
IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT
interface ROUTING \ filter / ROUTING interface
DNAT | tracking ^ SNAT
REDIRECT | | MASQUERADE
v |
INPUT OUTPUT
| filter ^ filter,DNAT
v |
\--> Processo Local --/
programas user-space
Os pacotes são processados em cada chain embutida usando as seguintes tabelas.
filter (filtro de pacotes, padrão)
INPUT (para pacotes entrando na própria máquina)
FORWARD (para pacotes sendo roteados através da máquina)
OUTPUT (para pacotes gerados localmente).
nat (tradução de endereços de rede)
PREROUTING (para alterar pacotes no momento que eles chegam)
OUTPUT (para alterar pacotes gerados localmente antes do roteamento)
POSTROUTING (para alterar pacotes quando eles estão prestes a saírem)
mangle ("mangling" de endereços de rede, bom somente após o kernel 2.4.18)
todas as cinco chains embutidas.
Regras de firewall possuem diversos alvos :
quatro alvos básicos :
ACCEPT significa deixar o pacote passar.
DROP significa descartar o pacote.
QUEUE significa passar o pacote para o userspace (caso suportado pelo kernel).
RETURN significa parar de atravessar esta chain e continuar na próxima regra na chain anterior (a chain que chamou esta).
alvos extendidos :
LOG liga o logging do kernel.
REJECT envia como resposta um pacote de erro e descarta o pacote.
SNAT altera o endereço de origem de pacote e é usado somente na chain POSTROUTING. (somente tabela nat)
--to-source endereçoip[-endereçoip][:porta-porta]
MASQUERADE é o mesmo que SNAT mas para conexões com endereços IP atribuídos dinamicamente (discadas). (somente tabela nat)
--to-ports porta[-porta]
DNAT altera o endereço de destino do pacote e é usado nas chains PREROUTING e OUTPUT e em chains definidas pelo usuário que são chamadas somente a partir destas chains. (somente tabela nat)
--to-destination endereçoip[-endereçoip][:porta-porta]
REDIRECT altera o endereço IP de destino para enviar o pacote para a própria máquina.
--to-ports porta[-porta]
Os comandos básicos do iptables são :
iptables -N chain # cria uma chain
iptables -A chain \ # adiciona regra na chain
-t tabela \ # usa tabela (filter, nat, mangle)
-p protocolo \ # tcp, udp, icmp ou all,
-s endereço-origem[/máscara] \
--sport porta[:porta] \ # porta de origem caso -p seja tcp ou udp
-d endereço-origem[/máscara] \
--dport porta[:porta] \ # porta de destino caso -p seja tcp ou udp
-j alvo \ # o que fazer se o pacote casar
-i nome-interface-entrada \# para INPUT, FORWARD, PREROUTING
-o nome-interface-saída # para FORWARD, OUTPUT, POSTROUTING
Máquinas em uma LAN podem acessar os recursos da Internet através de um gateway que translada o endereço IP na LAN para endereços IP usáveis na Internet.
# apt-get install ipmasq
Aplique as regras de exemplo para aumentar a proteção do ipmasq.
Consulte /usr/share/doc/ipmasq/examples/stronger/README.
Para imagens de kernel 2.4 do Debian sob o woody, certifique-se de carregar os
módulos apropriados. A versão do Sarge do ipmasq resolveu esse problema.
Consulte Função de rede, Seção
7.2.3 para obter instruções de configuração.
Para imagens de kernel 2.2 do Debian, edite o Z92timeouts.rul em
/etc/masq/rules como a seguir para assegurar uma conexão mais
longa para sites remotos (bom para e-mails grandes, etc.) :
# tcp, tcp-fin, udp
# 2hr, 10 sec, 160 sec - padrão
# 1 day, 10 min, 10 min - exemplo mais longo
$IPCHAINS -M -S 86400 600 600
Adicionalmente, caso a rede seja acessada através de um cartão de rede PCMCIA,
o ipmasq precisa ser iniciado a partir de
/etc/pcmcia/network.opts (leia: /usr/share/doc/ipmasq/ipmasq.txt.gz)
ou a partir de /etc/network/interfaces (leia: Configuração de rede e PCMCIA, Seção 10.9.5 e Gatilhando a reconfiguração de rede, Seção 10.9).
Suponha que você possua um notebook PC que esteja configurado para usar outros ambientes LAN e você queira usar seu agente de mensagens de usuário (software de e-mail) no notebook PC sem reconfigurá-lo.
Adicionar as seguintes regras através do comando iptables na
máquina gateway irá redirecionar a conexão SMTP para a máquina gateway.
# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \
-p tcp --dport smtp --to-port 25 # smtp=25, INPUT está aberto
Para um conjunto de regras de redirecionamento mais completo considere instalar
o pacote ipmasq e adicionar ao diretório
M30redirect.def/etc/ipmasq/rules/.
[FIXME] Política de roteamento (por Phil Brutsche pbrutsch@tux.creighton.edu):
Confira o manual iproute para
maiores detalhes. Controle de tráfego (tc) pode também ser interessante.
Ambiente :
eth0: 192.168.1.2/24; gateway 192.168.1.1
eth1: 10.0.0.2/24; gateway 10.0.0.1
Sem mascaramento nesta máquina.
Mágica especial :
ip rule add from 192.168.1.2 lookup 1
ip rule add from 10.0.0.2 lookup 2
ip route add to default via 10.0.0.1 metric 0
ip route add to default via 192.168.1.1 metric 1
ip route add table 1 to 192.168.1.0/24 via eth0
ip route add table 1 to 10.0.0.2/24 via eth1
ip route add table 1 to default via 192.168.1.1
ip route add table 2 to 192.168.1.0/24 via eth0
ip route add table 2 to 10.0.0.2/24 via eth1
ip route add table 2 to default via 10.0.0.2
[FIXME] Eu nunca fiz isso. Como configurar a conexão discada como backup para uma conexão rápida com recursos de auto-discagem ? Por favor enviem-me um patch aqui :)
[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ próximo ]
Referência Debian
CVS, Qui Jan 18 11:53:12 UTC 2007osamu#at#debian.orgpormenese#at#uol.com.br