Configuração de Redes TCP/IP

Propaganda
CURSO LINUX
Módulo Configuração
de Redes TCP/IP
por
Celso Kopp Webber
Curso Linux Básico
SUMÁRIO
1
INTRODUÇÃO
1
2
INTERFACE DE COMUNICAÇÃO
3
3
2.1
Reconhecimento das Interfaces de Rede
3
2.2
Configuração as Interfaces
4
2.3
Tabela ARP
6
ROTEAMENTO DE DATAGRAMAS IP
3.1
Tabela de Roteamento Mínimo
3.2
Verificação de Conectividade
10
3.3
Roteamento Dinâmico
11
3.3.1
4
5
6
7
8
8
RIP - Routing Information Protocol
12
DOMAIN NAME SERVICE (DNS)
15
4.1
Configuração do Resolver
16
4.2
Configuração do BIND
17
NETWORK FILE SYSTEM (NFS)
25
5.1
Exportando Arquivos
25
5.2
Montando Diretórios Remotos
27
SESSION MESSAGE BLOCK (SMB) – SAMBA
28
6.1
Resolução de Nomes NetBIOS
28
6.2
Samba – Servidor e Cliente SMB
29
6.2.1
Iniciando o Samba
30
6.2.2
Configuração do arquivo smb.conf
30
NETWORK INFORMATION SERVICE (NIS)
Módulo Configuração de Redes TCP/IP
35
i
Curso Linux Básico
ii
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
1 INTRODUÇÃO
Configurar uma rede TCP/IP envolve conhecer os sistemas operacionais dos computadores
envolvidos, bem como dominar os aspectos teóricos da arquitetura de redes TCP/IP.
Dessa forma, este texto assume que o leitor possui prévio conhecimento de redes TCP/IP,
incluindo:
• Conceitos básicos de redes de computadores, incluindo a arquitetura IEEE 802 para
LANs e MANs;
• camadas, protocolos, e funcionamento da arquitetura TCP/IP;
• endereçamento IP;
• roteamento IP, sendo obrigatórios os conceitos de roteamento mínimo e roteamento
estático;
• noções sobre os serviços mais comuns sobre TCP/IP, como e-mail, WWW, FTP, e DNS;
• conhecimentos sólidos do sistema operacional UNIX, a nível de usuário.
O material descrito a seguir está voltado para o sistema operacional UNIX, tanto a nível de
comandos de configuração, como arquivos de configuração.
Assim, o objetivo final do texto é apresentar ao leitor um resumo dos pontos chave da
configuração de redes TCP/IP utilizando o sistema operacional UNIX, tanto como cliente, como
servidor.
Já que qualquer teoria sem prática tem seu utilidade reduzida, as explicações a seguir tentam,
sempre que possível, apresentar os comandos de forma geral. Quando necessário, diferenças entre
sistemas operacionais UNIX diferentes são mostradas. Porém, o sistema operacional Linux é
tomado como base durante o texto. A razão do Linux ter sido adotado como exemplo principal é a
sua crescente popularidade, o fato de ser gratuito, a grande gama de hardware suportado (desde PCs
até processadors RISC de alto desempenho), e sua fácil instalação em relação a alguns UNIX
comerciais.
Pode-se dizer hoje que é possível que qualquer pessoa com conhecimentos razoáveis de
informática consiga instalar o Linux em sua máquina.
No decorrer do texto, as seguintes notações são utilizadas:
• negrito: as palavras em negrito constituem o próprio comando e devem ser digitadas
exatamente como estão escritas;
• normal: o texto normal é usado para opções dos comandos, e também deve ser digitado tal
qual está escrito;
• sublinhado: o texto em sublinhado representa os parâmetros que o usuário especifica, como
por exemplo uma opção de um comando;
• [colchetes]: todo o texto entre colchetes é opcional, e pode ser omitido. Os colchetes não
devem ser digitados;
• ...: as reticências indicam que o item apresentado pode ser repetido uma ou mais vezes.
• opção1 | opção2: quando opções separadas por uma barra vertical são apresentadas, uma
delas deve ser escolhida somente.
A figura 1.1 ilustra as notações acima, descrevendo o formato geral de um comando UNIX:
Módulo Configuração de Redes TCP/IP
1
Curso Linux Básico
$ comando [ -opções ... ] [ argumentos ... ]
mais argumentos podem vir em
seguida.
geralmente são nomes de arquivos
ou caminhos.
outras opções de uma ou mais
letras precedidas de hífen.
opções de uma ou mais letras são
precedidas de hífen.
nome do comando. Para comandos
também há distinção entre letras
minúsculas e maiúsculas.
prompt do shell ($ para Bourne
Shell, % para C-Shell e # para
usuário root)
Figura 1.1 - Formato de comandos UNIX
2
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
2 INTERFACE DE COMUNICAÇÃO
Configurar máquinas UNIX para operar em uma rede TCP/IP é uma tarefa relativamente
fácil. Entretanto, diferentemente de outros sistemas operacionais voltados para uso individual, o
UNIX precisa ser configurado por um administrador de sistemas para que seus usuários possam
utilizá-los adequadamente.
O primeiro passo que um administrador de sistemas deve realizar ao conectar uma máquina
UNIX a uma rede TCP/IP é configurar suas interfaces de rede. Para isso é necessário primeiro
informar ao sistema operacional as interfaces de rede existentes.
2.1 Reconhecimento das Interfaces de Rede
Este tópico é bastante disperso. Um problema grave com o UNIX atualmente é que existem
diversos fornecedores. Cada um dá seus próprios nomes para placas de rede, terminais, impressoras,
etc. Da mesma forma, cada um implementa um método próprio para operar com o hardware
existente, isto é, a implementação dos drivers para dispositivos, incluindo as placas de rede, não é
padronizada.
Por isso, fazer o sistema operacional (SO) reconhecer todos os dispositivos em uma máquina
muitas vezes não é tarefa simples.
No caso de interfaces de rede, muitas vezes o fabricante da placa fornece o próprio driver em
um disquete que acompanha a placa. Em outros casos, o SO possui suporte nativo para
determinadas marcas e modelos de interfaces de rede.
A recomendação mais sensata é que antes de decidir por qual computador adquirir para
determinada tarefa, conferir qual é o hardware suportado pelo SO. O Linux, apesar de ser de
domínio público, possui grande suporte a hardware de diversos fabricantes. Raramente um
fabricante de hardware fornece drivers para Linux (apesar que isto está começando a mudar), mas
em geral, o sistema suporta as marcas mais comuns de placas diversas.
Fazer o SO reconhecer uma placa de rede envolve basicamente três etapas:
1. Configurar a placa através de jumpers, dip switches, etc;
2. instalar fisicamente a placa no computador (e configurá-la via software quando for o
caso);
3. instalar o driver correspondente no sistema operacional, informando os parâmetros
configurados nos passos anteriores.
Em alguns casos, o sistema operacional será capaz de reconhercer automaticamente o
hardware do computador. Infelizmente, tecnologias mais antigas como o barramento ISA em PCs
não ajuda muito nesta tarefa. Placas que utilizam o barramento PCI resolvem este problema fazendo
com que o sistema operacional consiga obter a configuração necessária de todos os dispositivos
instalados no barramento.
Genericamente, o sistema operacional reconhece as placas de rede de duas maneiras:
1. O driver faz parte do kernel do sistema operacional. Esta abordagem é antiga, estando em
desuso pela maioria dos UNIX modernos. Entretanto, pode ser necessário recompilar o
kernel de algum sistema mais antigo para incluir o driver do dispositivo que se deseja
reconhecer;
Módulo Configuração de Redes TCP/IP
3
Curso Linux Básico
2. O driver pode ser carregado separadamente pelo kernel do SO. Assim, o kernel é
especializado nas suas funções, e somente os drivers necessários são carregados em
memória. Isto reduz seu tamanho e aumenta sua eficiência. A maioria dos UNIX atuais
utiliza esta abordagem.
Como exemplos, no Linux os comandos:
insmod nome-do-driver [ parâmetros ]
e
modprobe nome-do-driver
são usados para inserir um driver (chamado de módulo no Linux) em memória. Os parâmetros
podem ser especificados com o comando insmod, ou podem ser “adivinhados” com o comando
modprobe . No Solaris da Sun, o comando equivalente é o modload. As páginas de manual on-line
(comando man) devem ser consultadas para maiores detalhes.
Uma vez que o SO tenha reconhecido as interfaces de rede, sejam elas Ethernet, Token Ring,
FDDI, etc., resta-nos saber que nome o SO utiliza para fazer referência a elas sob o diretório /dev.
A tabela a seguir mostra como algumas versões de UNIX chamam as interfaces Ethernet (as mais
usadas):
Sistema Operacional
SCO UNIX
Linux
Digital UNIX
Solaris
SunOS
AIX
HP-UX
Nome adotado para a primeira interface Ethernet
depende do fabricante (ex: e3B0)
eth0
ln0, tu0
le0
le0, ie0, ec0
en0 (Ethernet), et0 (802.3)
lan0
Outros tipos de interfaces possuem outros nomes sob o diretório /dev, como por exemplo fi0
para interfaces FDDI. A interface loopback, implementada em software, é chamada de lo0 em todos
os UNIX, exceto no Linux, que simplesmente a denomina lo.
2.2 Configuração as Interfaces
O comando ifconfig é usado para informar ao sistema operacional o endereço IP, a máscara
de subrede (netmask), e o endereço de broadcast para cada interface de comunicação.
SINOPSE:
ifconfig [ interface ]
ifconfig interface [ addr_family ] [ address ] [ netmask mask ] [ broadcast address ]
[ up | down ] [ [-]arp ] [ metric n ] [ mtu n ]
ARGUMENTOS:
interface:
addr_family:
address:
4
nome da interface de rede a ser configurada (eth0, lo, etc);
parâmetro opcional que informa o tipo de endereço sendo
configurado. Para endereços IP, este parâmetro deve ser inet;
especifica address como o endereço IP associado à interface;
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
netmask mask:
associa a máscara de rede mask à interface;
broadcast address: informa o endereço de broadcast da interface para address.
EXPLICAÇÃO:
Na primeira forma, o comando apenas mostra a situação da interface especificada,
ou de todas as interfaces, caso este parâmetro seja omitido.
Na segunda forma, especifica uma interface e seus parâmetros a serem
configurados.
root@frajola# ifconfig eth0
eth0
Link encap:Ethernet HWaddr 00:60:52:00:EF:F5
inet addr:10.0.0.254 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:307 errors:0 dropped:0 overruns:0
TX packets:260 errors:0 dropped:0 overruns:0
Interrupt:10 Base address:0x320
EXEMPLO:
Na terceira linha aparece uma lista de opções:
up:
a interface está habilitada para o uso;
down:
a interface está desabilitada para o uso;
broadcast:
a interface suporta broadcast;
notrailers:
a interface não suporta trailers;
running:
a interface está operacional.
Pode-se usar um hostname em vez do endereço IP. Neste caso, o arquivo /etc/hosts deve
conter a entrada correspondente ao nome utilizado.
venus# cat /etc/hosts
127.0.0.1
localhost loghost
#
# inf.ufsc.br Subnet
#
150.162.60.1
venus loghost
150.162.60.2
apolo
150.162.60.3
vesta
150.162.60.4
atlas
150.162.60.5
ceres
150.162.60.6
baco
Usando um hostname, então, o comando poderia ser:
venus# ifconfig le0 venus
O ifconfig é normalmente executado na hora de inicialização da máquina por um arquivo de
boot. Nos sistemas BSD, os comandos do ifconfig geralmente estão localizados nos arquivos
/etc/rc.boot e /etc/rc.local. Nos sistemas System V, os comandos do ifconfig geralmente estão
Módulo Configuração de Redes TCP/IP
5
Curso Linux Básico
localizados em arquivos como /etc/tcp e /etc/init.d/tcp.
Os parâmetros adicionais do ifconfig mais utilizados são descritos abaixo:
down:
desabilita a interface;
up:
habilita a interface;
metric n:
define a métrica como sendo n;
arp:
habilita o uso do protocolo ARP no mapeamento entre os
endereços do nível de rede e os endereços do nível de
interface de rede;
-arp:
desabilita o uso do protocolo ARP;
mtu n:
define o MTU como sendo n.
root@frajola# ifconfig eth0 10.3.2.1 netmask 255.255.0.0 broadcast
10.3.255.255 up
root@frajola# ifconfig eth0
eth0
Link encap:Ethernet HWaddr 00:60:52:00:EF:F5
inet addr:10.3.2.1
Bcast:10.3.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:307 errors:0 dropped:0 overruns:0
TX packets:260 errors:0 dropped:0 overruns:0
Interrupt:10 Base address:0x320
As páginas de manual sobre o comando ifconfig dão maiores detalhes das opções de
configuração.
2.3 Tabela ARP
A tabela ARP (Address Resolution Protocol) descreve, para cada interface de uma máquina
que roda a protocolo IP, a relação entre endereços lógicos (endereços IP) e endereços físicos
(endereços da placa de rede, por exemplo, um endereço MAC Ethernet).
Toda vez que uma máquina precisa comunicar-se via protocolo IP com outra, ela precisa
descobrir o endereço físico da placa de rede da máquina destino. O protocolo ARP cuida desta
função. Como cada tecnologia de rede (Ethernet, FDDI, Token Ring, ATM) possui seu próprio
formato de endereço, bem como diferentes métodos de acesso ao meio, o ARP é diferente para cada
tipo de placa de rede.
No ambiente UNIX, é possível manipular diretamente a tabela ARP, através do comando arp.
Em apenas casos muito específicos é necessário adicionar manualmente entradas na tabela ARP,
pois durante o funcionamento normal da rede, o próprio protocolo se encarrega da descoberta
dinâmica dos endereços físicos associados com os endereços lógicos que a máquina está tentando
acessar.
arp [ -v ] [ -n ] [ -i interface ] -a [ máquina ]
arp [ -v ] [ -i interface ] -s máquina endereço físico [ temp ]
arp [ -v ] [ -i interface ] -d máquina
6
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
ARGUMENTOS:
-v
-n
fornece mensagens detalhadas (verbose)
modo numérico, mostra apenas endereços, isto é, não tenta
converter um endereço para o nome de uma máquina
-i interface
especifica o nome da interface de rede cuja table ARP será
manipulada;
-a máquina
a opção “-a” mostra a tabela ARP. Se um nome ou endereço
de máquina é especificado, mostra somente as entradas
daquela máquina
-s máquina end.fís. adiciona uma entrada manualmente à tabela, associando o
endereço lógico de uma máquina ao seu endereço físico. Se a
opção “temp” é especificada, a entrada é temporária, sendo
eliminada após um tempo padrão, caso contrário a entrada é
estática (permanente)
-d máquina
remove a entrada correspondente ao nome ou endereço de
uma máquina
Módulo Configuração de Redes TCP/IP
7
Curso Linux Básico
3 ROTEAMENTO DE DATAGRAMAS IP
Existem 3 tipos básicos de configurações de roteamento:
• Roteamento mínimo: uma rede completamente isolada de todas as demais redes TCP/IP
necessita somente de um roteamento mínimo;
• Roteamento estático: uma rede com um número limitado de gateways para outras redes
TCP/IP pode ser configurada com roteamento estático;
• Roteamento dinâmico: uma rede com mais de uma possível rota para o mesmo destino
deve usar o roteamento dinâmico.
Rotas são construídas pelo próprio processo de boot do sistema, baseando-se nas informações
usadas para o comando ifconfig, manualmente pelo administrador (através do comando route) ou
dinamicamente pelos protocolos de roteamento.
As rotas estão sempre organizadas numa tabela própria.
3.1 Tabela de Roteamento Mínimo
Uma tabela de roteamento mínimo é construída pelos scripts de boot do sistema operacional
após a configuração da interface com o comando ifconfig. O roteamento mínimo é composto de
uma rota para cada rede a que pertence cada interface (incluindo a interface loopback), e uma rota
default.
Com exceção do Linux, todos os UNIX constroem a tabela de roteamento mínimo
automaticamente a partir do comando ifconfig. Entretanto, é ainda necessário estabelecer uma rota
default. Cada versão de UNIX obtém o roteador default a partir de localizações diferentes. Por
exemplo, o Solaris da Sun obtém esta informação do arquivo /etc/defaulroute, enquanto o RedHat
Linux obtém do arquivo /etc/sysconfig/network.
O comando netstat pode ser usado para mostrar informações sobre conexões da máquina, e
também para mostrar a tabela de rotas.
SINOPSE:
netstat [ -n ] [ -r ] [ -i interface ]
ARGUMENTOS:
interface:
-n:
-r:
-i interface:
nome da interface de rede da qual se deseja obter informações
sobre conexões;
mostra endereços e portas em modo numérico, isto é, não faz
tradução para nomes;
mostra a tabela de rotas corrente;
mostra somente informações relacionadas à interface
especificada;
EXPLICAÇÃO:
8
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
Em geral, o comando netstat é utilizado com as opções –rn para mostrar a tabela
de rotas. Adicionalmente, pode ser usado para verificar quais conexões estão
atualmente abertas com a máquina.
EXEMPLO:
apolo# netstat -rn
Kernel IP routing table
Destination
Gateway
255.255.255.255 0.0.0.0
10.0.0.0
0.0.0.0
127.0.0.0
0.0.0.0
0.0.0.0
192.1.2.3
Genmask
255.255.255.255
255.255.255.0
255.0.0.0
0.0.0.0
Flags
UH
U
U
UG
MSS
1500
1500
3584
1500
Window
0
0
0
0
irtt
0
0
0
0
Iface
eth0
eth0
lo
ppp0
No campo Flags da saída do comando netstat, temos os significados:
U:
A rota está no ar (Up);
H:
A rota é para um host (máquina);
G:
A rota é estabelecida passando por um gateway;
D:
Rota aprendida dinamicamente, ou por um daemon de roteamento
dinâmico, ou pelo recebimento de um ICMP Redirect.
O comando route é usado para a criação de uma tabela estática, adicionando ou removendo
rotas manualmente. Rotas adicionadas com o comando route só podem ser removidas com outro
comando route. Quando uma máquina não está atuando como um gateway, o roteamento mínimo
provido com o comando route é suficiente. Quando um determinado gateway está configurado para
um esquema de roteamento simples, também é suficiente estabelecer algumas rotas estáticas com o
comando route. Os rotadores principais de uma rede maior são em geral candidatos a utilizar
roteamento dinâmico.
SINOPSE:
route add [ -host | -net ] destination [ netmask mask ] [ gateway router ] [ metric M ]
[ mss M ] [ window W ] [ device ]
route del [ -host | -net ] destination [ netmask mask ] [ gateway router ] [ device ]
ARGUMENTOS:
-host ou –net:
destination:
netmask mask:
gateway router:
device:
metric M:
mss M:
window W:
determina se a rota é para um máquina ou para uma rede. Se
este parâmetro for omitido, é assumido o valor “-host”;
informa destino da rota;
utiliza mask como máscara de subrede para esta rota;
utiliza router como o gateway para esta rota. Se for utilizado
como gateway um endereço de uma das interfaces da
máquina, a rota será estabelecida enviando diretamente por
aquela interface;
nome da interface de rede que esta rota utilizará como saída;
estabelece a métrica para a rota sendo estabelecida;
estabelece o MSS – Maximum Segment Size (tamanho máximo
do segmento) TCP a usar com esta rota;
informa o tamanho da janela TCP a ser usada nessa rota.
Módulo Configuração de Redes TCP/IP
9
Curso Linux Básico
EXPLICAÇÃO:
Algumas versões do comando route entendem que se destination for uma rede à
qual uma das interfaces da máquina pertence, uma rota do roteamento mínimo está
sendo feita, e por isso os outros parâmetros não precisam ser especificados. É
recomendável sempre o uso do parâmetro netmask, caso contrário geralmente o
comando assume a máscara padrão (conforme a classe) do endereço destino
especificado.
EXEMPLO:
root@frajola# route add -net 10.3.0.0 netmask 255.255.0.0
root@frajola# route add –net 10.2.1.0 netmask 255.255.255.0 gateway
10.3.0.254 eth0
root@frajola# netstat –rn
Kernel IP routing table
Destination
Gateway
Genmask
Flags
MSS Window irtt
10.3.0.0
0.0.0.0
255.255.0.0
U
1500 0
0
10.2.1.0
10.3.0.254 255.255.255.0
UG
1500 0
0
127.0.0.0
0.0.0.0
255.0.0.0
U
3584 0
0
Iface
eth0
eth0
lo
Se a palavra chave default for utilizada como destination, route cria uma rota default. Esta
rota default é utilizada quando não há uma rota específica para o destino desejado. É possível
especificar a rota default estabelecendo uma rota para a rede 0.0.0.0.
root@frajola# route add default gateway 10.3.0.252
root@frajola# route add –net 0.0.0.0 gateway 10.3.0.252
root@frajola# netstat -rn
Kernel IP routing table
Destination
Gateway
10.3.0.0
0.0.0.0
10.2.1.0
10.3.0.254
127.0.0.0
0.0.0.0
0.0.0.0
10.3.0.252
Genmask
255.255.0.0
255.255.255.0
255.0.0.0
0.0.0.0
Flags
U
UG
U
UG
MSS
1500
1500
3584
1500
Window
0
0
0
0
irtt
0
0
0
0
Iface
eth0
eth0
lo
eth0
Para se colocar as informações de roteamento estático nos arquivos de boot duas modificações
são necessárias:
• Adicionar a rota desejada ao arquivo de boot;
• Remover (ou comentar) do arquivo de boot comandos que chamem algum protocolo de
roteamento.
Os arquivos a serem modificados variam conforme a plataforma. Nos UNIX baseados em
BSD, geralmente os comandos de adição de rotas estáticas e/ou de execução de protocolo de
roteamento estão nos arquivos /etc/rc.*. No System V, geralmente estão sob o diretório /etc/init.d,
no arquivo boot, tcp ou inet.
3.2 Verificação de Conectividade
Freqüentemente em uma rede é necessário saber se uma máquina “enxerga” outra. A
10
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
ferramenta de diagnóstico mais popular entre os usuários e administradores de rede é o “ping”. ping
é um utilitário onde a máquina origem envia uma mensagem ICMP “echo request” (solicitação de
eco) para a máquina destino. Se esta estiver no ar, ao receber o “echo request” ela responde com
outra mensagem ICMP “echo reply” (resposta de eco).
SINOPSE:
ping [ -f ] [ -i tempo espera ] [ -count quantidade ] destino
ARGUMENTOS:
-f
-i tempo espera
-count quantidade
destino:
`
envia um novo “ping” assim que receber a resposta do
anteriormente enviado. A comportamento default é enviar uma
requisição a cada segundo;
informa o tempo entre cada envio de um novo “ping”;
informa quantos “pings” devem ser enviados. O comportamento
default é enviar “pings” eternamente, até o comando ser
cancelado;
informa o endereço ou nome da máquina destino.
3.3 Roteamento Dinâmico
Todos os protocolos de roteamento possuem a mesma função básica: determinar a melhor rota
para cada destino e distribuir informações de roteamento entre os sistemas em uma rede.
Protocolos de roteamento são divididos em dois grupos principais:
• Internos: São protocolos utilizados internamente em uma rede independente. Na
terminologia TCP/IP, estes sistemas de redes são chamados de “sistemas autônomos”
(AS). Dentro de um AS, as informações de roteamento são trocadas utilizando um
protocolo interno escolhido pelo administrador local. Exemplos de protocolos de
roteamento internos incluem o RIP (Routing Information Protocol), o IGRP (Internet
Gateway Routing Protocol) e o EIGRP (Enhanced IGRP), e o OSPF (Open Shortest Path
First);
• Externos : São protocolos utilizados para trocar informações de roteamento entre
sistemas autônomos. As informações de roteamento trocadas entre os AS são chamadas
de informações de alcançabilidade. Informação de alcançabilidade é simplesmente a
informação sobre quais redes podem ser alcançadas através de um AS. Exemplos destes
protocolos são o antigo EGP (Exterior Gateway Protocol), que está em desuso, e o mais
recente BGP (Border Gateway Protocol).
Módulo Configuração de Redes TCP/IP
11
Curso Linux Básico
O figura a seguir mostra um exemplo de vários AS interconectados pelo protocolo BGP. Note
que as empresas conectadas aos provedores não utilizam nenhum protocolo de roteamento dinâmico
entre elas e os provedores. Isto é bastante fácil de compreender, afinal a empresa possui apenas um
canal de saída, que é o provedor, bastando portanto configurar seu roteador para apontar a rota
default para o roteador do provedor. Internamente, as empresas utilizam seus próprios protocolos de
roteamento.
ABC Ltda
Cia. das
Índias
IGRP
RIP
Provedor
Baía Norte
BGP
EIGRP
Provedor
Bananal Sul
EIGRP
BGP
Serralheria
Metal Sul
EIGRP
BGP
Provedor
Manezinho
OnLine
OSPF
BGP
Provedor
Bananal Sul
EIGRP
A definição de um AS, de acordo com a RFC 1930, é a seguinte:
“Um AS é um grupo conectado de um ou mais prefixos de endereços IP,
administrados por um ou mais operadores de rede que possuem uma
ÚNICA e CLARAMENTE DEFINIDA política de roteamento.”
Assim, um AS é visto como um conjunto de redes cujos endereços IP “começam” com o
mesmo prefixo, por exemplo, todas as redes classe C que começam com “200.135”.
O protocolo IP, ao decidir por onde enviar um datagrama, consulta uma tabela de roteamento.
Com os protocolos de roteamento dinâmicos, esta tabela é constantemente atualizada, de forma
automática. Caso mais de uma rota exista para um determinado destino, o campo métrica das rotas
é comparado. A rota com a menor métrica é então escolhida.
O significado da métrica depende de cada protocolo de roteamento em uso. O protocolo IP
simplesmente escolhe a rota com menor métrica.
Vejamos a seguir um exemplo de protocolo de roteamento dinâmico, incluindo seu
funcionamento básico e suas considerações sobre métricas.
3.3.1 RIP - Routing Information Protocol
É o protocolo interno mais utilizado, pois é disponibilizado como parte da maioria dos
12
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
sistemas UNIX. RIP seleciona a rota com o menor hop count como sendo a melhor. O hop count
representa o número de gateways que o pacote passa até chegar ao seu destino final. A melhor rota
é aquela que usa o menor número de gateways. Assim, a métrica utilizada pelo RIP é “o número de
roteadores” até o destino final. No UNIX, o protocolo RIP é executado através do servidor de
roteamento routed.
Quando um sistema configurado para prover informação RIP escuta uma requisição, ele
responde com um pacote de atualização baseado na sua tabela de roteamento. Este pacote de
atualização contém o endereço destino retirado da tabela de roteamento e a métrica associada a cada
destino.
Pacotes de atualização não são apenas enviados em resposta a solicitações, mas são também
enviados periodicamente para manter as informações de roteamento atualizadas. O routed envia
periodicamente, a cada 30 segundos, todas as rotas que possui para todas as interfaces configuradas.
Quando um pacote de atualização é recebido pelo routed, ele obtém estas informações e atualiza
suas tabelas de roteamento. Se a rota recebida não consta da tabela ela é adicionada. Se a rota
recebida descreve uma rota para um endereço que já existe, ela somente é usada se possuir um custo
(métrica) menor.
O protocolo RIP também remove rotas da tabela de roteamento. Existem duas razões para isto
acontecer:
1. O gateway para o destino diz que o custo da rota é maior que 15 hops;
2. gateways por onde passam certas rotas não enviaram pacotes de atualização por um dado
período, portanto foram considerados fora de serviço. As rotas que passam por eles são
consideradas inválidas.
O routed vem geralmente incluído nos arquivos de boot. A maioria dos sistemas usa
/etc/routed para rodar o servidor, mas os sistemas SunOS usam /usr/etc/in.routed. No Linux,
normalmente é encontrado em /usr/sbin/in.routed.
Nos UNIX que seguem a linha BSD, o routed é geralmente executado a partir do script de
inicialização /etc/rc.local. No System V, normalmente existe um script próprio chamado
/etc/init.d/routed para executar este daemon.
O routed pode construir uma tabela de roteamento só com as informações recebidas dos
pacotes de atualização, mas algumas vezes é necessário alguma forma de complemento, como uma
rota default inicial. O arquivo /etc/gateways contém estas informações adicionais de roteamento.
routed lê o arquivo /etc/gateways quando é inicializado. O uso mais comum do arquivo
/etc/gateways é definir uma rota default ativa, como no exemplo a seguir:
# net 0.0.0.0 gateway 150.162.1.1 metric 1 active
Todas as entradas do arquivo /etc/gateways começam com a palavra net ou host para indicar
quando o endereço que segue é de uma rede ou de um host. No comando route o parâmetro default
é utilizado para indicar a rota default, mas no arquivo /etc/gateways a rota default é indicada pelo
endereço 0.0.0.0. O parâmetro gateway vem seguido do seu endereço IP e a métrica pelo seu valor.
Todas as entradas do arquivo /etc/gateways terminam com o parâmetro passive ou active.
SINOPSE:
routed [ -q ] [ -g ] [ -s ]
ARGUMENTOS:
Módulo Configuração de Redes TCP/IP
13
Curso Linux Básico
-q:
Instrui o routed a apenas “escutar” rotas, sem anunciar as suas
próprias rotas (quiet);
Anuncia aos demais roteadores uma rota default apontando
para si. Geralmente isto é usado em um gateway padrão de
uma rede, para que os outros roteadores apontem suas rotas
default para ele;
Força o routed a anunciar suas rotas. Normalmente, routed
apenas anuncia suas rotas a cada 30 segundos se a máquina
possuir mais de uma interface de rede configurada
(excetuando-se a interface loopback).
-g:
-s:
EXPLICAÇÃO:
Normalmente, o backbone de uma rede conterá vários roteadores para redes
menores. Um dos roteadores no backbone será o roteador padrão, que fará o
roteamento para o mundo externo. Assim, o roteador padrão deveria executar
routed com as opções –s e –g, enquanto os demais apenas com a opção –s.
EXEMPLOS:
NO GATEWAY PADRÃO
root@frajola# routed –s –g
NOS DEMAIS GATEWAYS
root@frajola# routed –s
EM GATEWAYS PARA UMA ÚNICA REDE
root@frajola# routed -q
14
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
4 DOMAIN NAME SERVICE (DNS)
Freqüentemente os usuários de uma rede sabem o nome da máquina à qual desejam se
conectar na Internet, mas raramente conhecem o endereço IP correspondente. Entretanto, o
protocolo IP trabalha com endereços.
Assim, uma forma de traduzir nomes em endereços faz-se necessária. No início da utilização
do TCP/IP na ARPANET, uma tabela estática com todos os nomes de máquinas e seus endereços
era mantida de forma centralizada pelo DOD NIC (Departmento Of Defense Network Information
Center). Quando uma máquina era adicionada à rede, as atualizações eram enviadas por e-mail ao
DOD NIC, que regularmente atualizava a tabela de hosts.
Regularmente, as demais máquinas da ARPANET copiavam através da rede esta tabela, o que
com o passar do tempo passou a ser uma tarefa dispendiosa e demorada.
A solução rapidamente adotada foi a concepção de um sistema de resolução de nomes com as
seguintes características principais:
• provê um serviço de tradução de nomes para endereços (e endereços para nomes)
automatizado;
• utiliza uma base de dados distribuída hierarquicamente, evitando centralizar informações
em um único ponto;
• cada organização que registra um nome no sistema é responsável pelo gerenciamento dos
nomes abaixo de seu domínio;
• é mantido um cache atualizável das informações obtidas, desta forma eliminando-se a
necessidade de se obter a mesma informação repetidamente.
Este sistema foi batizado de DNS (Domain Name Services) e divide o espaço de nomes em
domínios. Cada domínio deve possuir um servidor primário, e no mínimo um servidor secundário
para fins de redundância. A implementação do DNS usada na maioria dos sistemas UNIX é a
Berkeley Internet Name Domain (BIND).
O software do DNS é conceitualmente dividido em duas partes: um resolver e um servidor de
nomes. O resolver formula a consulta e solicita uma resposta. O servidor de nomes é o processo
que responde às consultas.
O servidor de nomes do BIND executa como um processo distinto chamado named.
Servidores de nomes são classificados conforme a sua configuração:
• primary: servidores de onde todos os dados sobre o domínio são derivados. São ditos
authoritatives, por terem autoridade para responder a solicitações envolvendo máquinas
do seu domínio com informações próprias;
• secondary: servidores que guardam consigo uma cópia das informações mantidas pelo
servidor primary. Também são authoritatives para o domínio;
• caching-only: servidores caching-only recebem as respostas de todas as consultas de
outros servidores de nomes, e guardam em cache para usarem em futuras respostas a
solicitações. São chamados de servidores non-authoritatives. Servidores primários e
secundários também fazem caching para melhoria de desempenho.
Um servidor pode ser enquadrado em mais de uma categoria. Ele pode ser primary para um
domínio e secondary para outro, por exemplo.
Módulo Configuração de Redes TCP/IP
15
Curso Linux Básico
Os nomes do DNS têm uma organização hierárquica, constituindo de domínios aninhados
dentro de domínios. Os nomes são escritos da base para o topo, com pontos separando os níveis.
www.cade.com.br
www.mit.edu
mail.hp.com
raiz “.”
br
com
edu
mit
www
com
arpa
hp
in-addr
mail
200
cade
135
www
250
1
2
Os nós imediatamente abaixo da raiz da árvore (br, edu, com, …) são chamados de domínios
top-level. Um desses domínios, chamado arpa possui significado especial. Para que seja possível
fazer a tradução reversa de nomes, isto é, traduzir endereços para nomes, o nó arpa contém o nó
in-addr, que contém todos os endereços Internet (endereços IP). Na verdade, não existem outros
tipos de endereços alocados na árvore, mas o sistema inicialmente previu esta possibilidade.
Da mesma forma que um nome como www.cade.com.br é organizado na árvore no sentido
inverso, do mais geral (br), até o mais específico (www), os endereços IP também são organizados
no sentido inverso, como por exemplo, 1.250.135.200.in-addr.arpa, que representará o nome
correspondente ao endereço IP 200.135.250.1.
4.1 Configuração do Resolver
Toda máquina que utiliza o sistema DNS, independente de ser servidor DNS ou não, precisa
utilizar um resolver para traduzir consultas de nomes em endereços e endereços em nomes. O
resolver normalmente é uma biblioteca de funções ligada aos programas executáveis, como telnet,
ftp, etc.
No UNIX, a configuração do resolver é feita no arquivo /etc/resolv.conf .As cláusulas
permitidas no arquivo resolv.conf são:
16
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
nameserver address: identifica o servidor do qual o resolver pode solicitar
informações sobre domínios. Mais de uma linha (normalmente
até 3) podem aparecer com a cláusula nameserver. Os
servidores são consultados na ordem em que eles aparecem
no arquivo. Se nenhuma reposta é obtida do primeiro, o
próximo é tentado e assim por diante;
domain domínio:
define o nome do domínio default. O resolver adiciona o
domínio default a todo nome de host que não contenha um
ponto no final. Após isto, ele usa este nome de host
expandido para fazer a consulta ao servidor de nomes;
search lista:
especifica uma lista de domínios que o resolver deve tentar
adicionar a nomes que não contenham um ponto no final.
Cada entrada da lista é tentada até que uma delas seja
encontrada, ou até que tenha sido esgotada.
O exemplo a seguir define o domínio minha.rede.com.br, com dois servidores de nomes, e
configura o resolver para tentar adicionar os domínios minha.rede.com.br e rede.com.br caso o
nome especificado nao termine com um ponto.
# cat /etc/resolv.conf
domain minha.rede.com.br
nameserver 200.135.250.1
nameserver 200.135.250.2
search minha.rede.com.br rede.com.br
4.2 Configuração do BIND
Um servidor DNS pode servir vários domínios. Quando necessário, um domínio pode ser
subdividido em subdomínios. A parte de um domínio pela qual um servidor é responsável é
chamada de zona. Considere o domínio a seguir, subdividido em três zonas:
raiz “.”
br
domínio “rede”
com
zona “rede”
rede
zona “minha”
minha
jurere
mole
joaca
Módulo Configuração de Redes TCP/IP
sua
fusca
www
bmw
zona “sua”
17
Curso Linux Básico
Neste exemplo, toda a Internet enxerga que o servidor responsável pelo domínio rede.com.br
é também responsável pelos subdomínios, pois terminam em rede.com.br. Entretanto, o servidor
deste domínio pode “delegar” um ramo da árvore de rede.com.br, como por exemplo,
minha.com.br a um outro servidor.
Assim, um servidor é na verdade responsável por uma ou mais zonas de um domínio. Às
vezes um servidor é responsável por todo o domínio, mas ainda assim é importante diferenciar o
conceito de domínio de zona.
Existem duas versões atualmente em uso do BIND: 4.x e 8.x. Os arquivos com as
informações sobre as zonas são idênticos em ambas as versões, mas o arquivo principal de
configuração que define quais as zonas de responsabilidade de um servidor possuem formato
diferente em cada versão, conforme a tabela a seguir:
/etc/named.boot (BIND 4.x)
directory caminho
cache . arquivo
primary zona arquivo
secondary zona servidor arquivo
forwarders servidor1 servidor2 …
slave
; Um comentário é precedido por
; um ponto-e-vírgula
18
/etc/named.conf
(BIND 8.x)
options {
directory “caminho”;
};
zone “.” {
type hint;
file “arquivo”;
};
zone “zona” {
type master;
file “arquivo”;
};
zone “zona” {
type slave;
file arquivo ;
masters {
servidor;
};
};
options {
forwarders {
servidor1;
servidor2;
…
};
};
options {
forward only;
};
// Um comentário é
// precedido por duas
// barras
Significado
Define um caminho de diretório onde os
demais arquivos serão armazenados
Especifica o arquivo de cache contendo a
lista de servidores do domínio “.” (raiz)
Configura o servidor como primário da zona
especificada, sendo que a base de dados está
armazenada em arquivo
Configura o servidor como secundário da
zona especificada, sendo especificado o
servidor primário de onde pegar a base de
dados, e gravando-a localmente no arquivo
especificado
Especifica uma lista de servidores
(servidor1, servidor2, …) para repassar o
pedido caso não consiga resolver o nome
com sua própria base de dados
Força o servidor a usar somente os
forwarders, sem tentar atender a nenhuma
solicitação
Comentários devem ser precedidos de
caracteres especiais. Deve-se evitar linhas
em branco, especialmente com o BIND 4.x
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
Configuração exemplo de um servidor (named.boot):
# cat /etc/named.boot
; named.boot – BIND 4.x
directory
/var/named
cache
.
primary
0.0.127.in-addr.arpa
;
primary
rede.com.br
primary
250.135.200.in-addr.arpa
secondary
minha.rede.com.br
secondary
251.135.200.in-addr.arpa
;
forwarders
200.135.15.3 150.162.1.3
named.ca
named.local
rede.zone
rede.revzone
200.135.251.1
200.135.251.1
minha.zone
minha.revzone
Configuração exemplo de um servidor (named.conf):
# cat /etc/named.conf
// named.conf – BIND 8.x
options {
directory
“/var/named”;
forwarders {
200.135.15.3;
150.162.1.3;
};
};
zone “.” {
type hint;
file “named.ca”;
};
zone “0.0.127.in-addr.arpa” {
type master;
file “named.local”;
};
zone “rede.com.br” {
type master;
file “rede.zone”;
};
zone “250.135.200.in-addr.arpa” {
type master;
file “rede.revzone”;
};
zone “minha.rede.com.br” {
type slave;
file “minha.zone”;
masters {
200.135.251.1;
};
};
zone “251.135.200.in-addr.arpa” {
type slave;
file “minha.revzone”;
masters {
200.135.251.1;
};
};
Módulo Configuração de Redes TCP/IP
19
Curso Linux Básico
Os demais arquivos, que especificam as zonas, estão num formado padronizado. Cada arquivo
é na verdade um conjunto de Resource Records (RR), onde cada RR possui o seguinte formato:
[name] [ttl] [class] type data [;comment]
DESCRIÇÃO:
Os Resource Records são definidos na RFC 1033. Estes registros possuem a
seguinte estrutura:
name:
este é o nome do objeto do domínio que o Resource Record
referencia. Pode ser um host ou um domínio;
time-to-live. Define o tempo em segundos que a informação
contida neste Resource Record deve ser mantida em cache;
identifica o registro como sendo da classe INternet. Na
realidade, até hoje não foram criadas outras classes de
registros DNS;
identifica qual tipo de Resource o registro indica;
contém a informação específica para o tipo de Resource
Record declarado acima.
ttl:
IN:
type:
data:
A tabela a seguir mostra os registros padrões disponíveis no BIND:
Nome do RR
Tipo do Registro
Função
Start of Authority
SOA
Marca o início dos dados de uma zona, e define os
parâmetros que afetam a zona inteira.
Name Server
NS
Identifica o servidor de nome do domínio.
Address
A
Converte um nome de host em um endereço.
Pointer
PTR
Converte um endereço para um nome de host.
Mail Exchanger
MX
Identifica onde entregar o mail para um nome de
domínio dado.
Canonical Name
CNAME
Define um nome alternativo para o host.
Host Information
HINFO
Geralmente descreve o hardware e o sistema
operacional de um host.
Well Known Service
WKS
Anuncia os serviços de rede.
Text Information
TXT
Serve para o administrador inserir informações
adicionais sobre cada máquina
Um arquivo básico named.ca contém registros do tipo NS que nomeiam os servidores raiz.
Um exemplo é mostrado a seguir:
20
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
# cat /var/named/named.ca
;
This file is made available by InterNIC registration services
;
under anonymous FTP as
;
file
/domain/named.root
;
on server
FTP.RS.INTERNIC.NET
.
3600000 IN NS
A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.
3600000
A
198.41.0.4
.
3600000
NS
B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.
3600000
A
128.9.0.107
.
3600000
NS
C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.
3600000
A
192.33.4.12
.
3600000
NS
D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.
3600000
A
128.8.10.90
.
3600000
NS
E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.
3600000
A
192.203.230.10
.
3600000
NS
F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.
3600000
A
192.5.5.241
.
3600000
NS
G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.
3600000
A
192.112.36.4
.
3600000
NS
H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.
3600000
A
128.63.2.53
.
3600000
NS
I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.
3600000
A
192.36.148.17
.
3600000
NS
J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.
3600000
A
198.41.0.10
.
3600000
NS
K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.
3600000
A
193.0.14.129
.
3600000
NS
L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.
3600000
A
198.32.64.12
.
3600000
NS
M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.
3600000
A
202.12.27.33
O arquivo named.local é utilizado para converter o endereço 127.0.0.1 (loopback) no nome
do localhost. Basicamente, o arquivo named.local é sempre o mesmo em qualquer servidor DNS,
apesar de ser possível expressar a mesma coisa de formas diferentes:
@
;
1
IN
SOA
IN
NS
localhost. root.localhost.
1997022700 ;
86400
;
7200
;
2592000
;
345600 )
;
localhost.
IN
PTR
localhost.
(
Serial
Refresh after 24 hours
Retry after 2 hours
Expire after 30 days
Minimum ttl of 4 days
Observe o caractere “@” no início do arquivo. Se olharmos para o formato de um RR, o
primeiro item define um nome de domínio ou host sobre o qual queremos definir um RR. O
caractere “@” especifica para utilizar o próprio domínio definido como “zona” no arquivo
/etc/named.boot ou /etc/named.conf. Quando o item “name” do RR não é definido em uma linha,
é assumido o valor definido no registro SOA.
O registro SOA define um conjunto de valores da zona sendo especificada:
• Na primeira linha temos o domínio específico desta zona, seguido do endereço de e-mail
Módulo Configuração de Redes TCP/IP
21
Curso Linux Básico
•
•
•
•
•
da pessoa responsável, apenas trocando o caractere especial “@” por um ponto “.”;
Serial: número de série do arquivo de zona. É importante incrementar este número
sempre que o arquivo for modificado, pois dessa forma os servidores secundários da zona
saberão que o arquivo foi alterado. A convenção AAAAMMDDNN, onde AAAA=ano,
MM=mês, DD=dia, e NN=número da alteração no dia, garante que o número de série
sempre será maior do que o anterior quando for modificado;
Refresh: intervalo em segundos que os servidores secundários devem verificar por
modificações no servidor primário;
Retry: intervalo em segundos que os servidores secundários devem esperar para tentar
novamente caso não tenham conseguida conexão para um Refresh;
Expire: tempo máximo de validade dos registros no servidor secundário, após não ter
conseguido atualizar sua cópia. Após este tempo decorrido sem atualização, o servidor
secundário deve parar de responder requisições para a zona;
Minimum: tempo default de ttl para os demais registros, quando especificado.
O arquivo de inicialização rede.revzone é similar ao arquivo named.local. Ambos os
arquivos traduzem endereços IP em nomes de hosts através de registros PTR, como pode-se ver no
exemplo:
@
IN
SOA
IN
;
1
2
3
4
IN
IN
IN
IN
250.135.200.in-addr.arpa. root.250.135.200.in-addr.arpa. (
1998072400 ; Serial
86400
; Refresh after 24 hours
7200
; Retry after 2 hours
2592000
; Expire after 30 days
345600 )
; Minimum ttl of 4 days
NS
ns.rede.com.br.
PTR
PTR
PTR
PTR
ns.rede.com.br.
www.rede.com.br.
ftp.rede.com.br.
mail.rede.com.br.
O arquivo de inicialização rede.zone contém a maioria das informações de domínio. Este
arquivo converte nomes de hosts em endereços IP, mas também contém registros dos tipos MX,
CNAME e outros.
22
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
@
;
ns
IN
SOA
IN
IN
NS
MX
rede.com.br. root.rede.com.br. (
1998072400 ; Serial
86400
; Refresh after 24 hours
7200
; Retry after 2 hours
2592000
; Expire after 30 days
345600 )
; Minimum ttl of 4 days
ns.rede.com.br.
1 mail.rede.com.br.
IN
A
200.135.250.1
MX
1 mail.rede.com.br.
; Subdominios - delegation
minha
IN
NS
ns.minha.rede.com.br.
ns.minha IN
A
200.135.251.1
;
www
IN
A
200.135.250.2
MX
1 mail.rede.com.br.
ftp
IN
A
200.135.250.3
MX
1 mail.rede.com.br.
mail
IN
A
200.135.250.4
MX
1 mail.rede.com.br.
O comando nslookup é uma ótima ferramenta para localização de erros no servidor, pois
permite que qualquer um realize consultas diretamente ao servidor de nomes e recupere qualquer
$ nslookup www.rede.com.br
Server: ns.rede.com.br
Address: 200.135.250.1
Non-authoritative answer:
Name:
www.rede.com.br
Address: 200.135.250.2
uma das informações conhecidas pelo DNS. Ele pode ser usado diretamente na linha de comando
ou através do modo interativo. No modo direto, procede-se como no exemplo:
E no modo interativo:
Comandos úteis no modo interativo:
server server name muda o servidor DNS a ser questionado;
set type = type
muda o tipo (A, PTR, MX, NS, Any, etc) do registro pesquisado;
set domain=domain muda o nome do domínio pesquisado;
ls domain
recupera o arquivo de zonas do domínio;
exit
sai do modo interativo.
Módulo Configuração de Redes TCP/IP
23
Curso Linux Básico
$ nslookup
Default Server: ns.rede.com.br
Address: 200.135.250.1
> www.rede.com.br
Server: ns.rede.com.br
Address: 200.135.250.1
Non-authoritative answer:
Name:
www.rede.com.br
Address: 200.135.250.2
> set type=mx
> rede.com.br
Server: ns.rede.com.br
Address: 200.135.250.1
rede.com.br
preference = 1, mail exchanger = mail.rede.com.br
rede.com.br
nameserver = ns.rede.com.br
mail.rede.com.br
internet address = 200.135.250.4
ns.rede.com.br
internet address = 200.135.250.1
24
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
5 NETWORK FILE SYSTEM (NFS)
O Network File System (NFS) permite o compartilhamento de arquivos através de uma rede.
Ele foi desenvolvido pela Sun Microsystems e hoje se encontra disponível em muitas plataformas,
sendo o padrão para compartilhamento de arquivos no ambiente UNIX. Existem soluções NFS para
ambientes como o MS-DOS e o MS-Windows, o que permite uma integração destes ambientes com
o UNIX.
Através do NFS, usuários e aplicações podem acessar arquivos remotos como se fossem
locais, de forma transparente.
As principais vantagens de se usar o NFS são:
• A possibilidade de se ter estações sem disco;
• Racionalização do uso dos discos, pois muitos softwares passam a residir exclusivamente
em um servidor;
• Manutenção centralizada dos arquivos do domínio;
• Transparência perante os usuários.
O NFS é constituído de processos servidores e clientes. Um host executando os processos
clientes do NFS acessa arquivos remotos como se fizessem parte do sistema de arquivos local. Um
host executando os processos servidores do NFS disponibiliza seus arquivos para uso pelos clientes.
Um cliente acessa arquivos remotos fazendo um “mount”, da mesma forma que acessa um
filesystem local em um disco, por exemplo. Um servidor disponibiliza seus arquivos através de um
“export”. Freqüentemente um host executa tanto os processos servidores quanto os clientes.
Os principais daemons envolvidos com o NFS são:
• nfsd: executado pelos servidores para atender às requisições de acesso aos arquivos feitas
pelos clientes;
• biod: executado pelos clientes (Block I/O Daemon);
• rpc.lockd: executado por clientes e servidores a fim de negociar o fornecimento de locks
para arquivos;
• rpc.statd: executado por clientes e servidores para monitorar o NFS; é utilizado para
reestabelecer a comunicação entre clientes e servidores após uma falha de rede;
• rpc.mountd: executado pelos servidores para atender as requisições de mount feitas
pelos clientes;
• rpc.rquotad: executado pelos servidores para fornecer informações sobre quotas de
usuários aos clientes que montam o filesystem exportado.
5.1 Exportando Arquivos
O primeiro passo na configuração de um servidor NFS é decidir quais arquivos serão
exportados. Exporte apenas os arquivos que realmente serão utilizados pelos clientes.
O controle de acesso remoto aos arquivos locais está associado aos diretórios e não aos
arquivos em particular. Portanto, não podemos exportar um arquivo de um diretório sem exportar os
demais.
O arquivo /etc/exports especifica quais diretórios são exportados pelo servidor, quais
clientes poderão acessá-los o que poderão fazer com os arquivos.
Módulo Configuração de Redes TCP/IP
25
Curso Linux Básico
Cada entrada no arquivo /etc/exports segue o formato:
diretório
[-opção] [,opção]
As principais opções são:
ro
os clientes não podem escrever nos arquivos (read-only);
rw = host [:host]:
permite que os usuários do(s) host(s) citado(s) escrevam no
arquivo;
root = host [: host]:
dá acesso de root aos usuários root de determinado(s)
host(s);
access = host [:host]: permite acesso somente a partir do(s) host(s) listado(s).
# cat /etc/exports
/usr
/usr/local
/usr/local/tmp
/usr/local/www
/var/spool/mail
/home/venus
-access=servidor1:servidor2
-access=servidor1:servidor2
-access=servidor1:servidor2
-access=servidor1:servidor2
-access=servidor1:servidor2
-access=servidor1:servidor2
|No Linux, um novo formato de arquivo é utilizado, que permite mais flexibilidade. Cada
entrada do arquivo /etc/exports no Linux segue o formato:
diretório
[host][(opção, [opção])] …
host:
um host pode ser especificado por seu endereço IP, pelo seu
nome
DNS,
por
uma
faixa
de
IPs
(ex:
200.30.40.0/255.255.255.0), ou por uma faixa de domínio (ex:
*.rede.com.br). Quando o campo host é vazio, o diretório é
exportado para qualquer host;
As principais opções são:
ro:
o diretório é exportado como read-only;
rw:
o diretório é exportado como read-write (isto é default);
noaccess:
informa que o diretório não deve ser exportado (útil para
exportar um diretório e não permitir acesso a um subdiretório
deste diretório);
no_root_squash: permite que o usuário root da máquina cliente acesse o
diretório montado remotamente com permissão de root.
/projects
/usr
/home/server2
/pub
/pub/private
proj*.rede.com.br(rw)
*.rede.com.br(ro) 10.1.2.0/255.255.255.0(rw)
server1(rw,no_root_squash)
(ro)
(noaccess)
O comando exportfs lê o arquivo /etc/exports a fim de exportar um diretório:
venus# exportfs /usr
venus# exportfs -a
26
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
5.2 Montando Diretórios Remotos
Um cliente NFS pode acessar apenas os diretórios que lhe foram exportados. O comando
showmount verifica quais diretórios estão disponíveis ao cliente em um determinado servidor.
apolo$ showmount -e venus
export list for venus:
/pub/private
(everyone)
/pub
<anon clnt>
/home/server2
server1
/usr
10.1.2.3/255.255.255.0,*.rede.com.br
/projects
proj*.rede.com.br
O comando mount é utilizado pelos clientes para montar um diretório remoto:
mount - monta um sistema de arquivos.
SINOPSE:
mount [ -o options ] hostname:filesystem mount-point
ARGUMENTOS:
hostname:
filesystem:
mount-point:
nome do host servidor;
nome do diretório ou sub-diretório exportado pelo servidor;
nome do diretório local onde o diretório remoto será montado.
DESCRIÇÃO:
O comando mount permite que diretórios exportados por um servidor NFS sejam montados
localmente. Subdiretórios dos diretórios exportados também podem ser montados. Por exemplo, se
um servidor exporta o diretório /usr, um cliente pode decidir montar apenas o diretório /usr/man.
venus# mount apolo:/home/apolo /home/apolo
Quando se monta um diretório sobre um diretório não vazio, o conteúdo deste, apesar de não
ser visível, continua inalterado. Assim que o mount for desfeito o conteúdo original do diretório
volta a ser visível. O comando umount desmonta um diretório.
venus# umount /home/apolo
O arquivo /etc/fstab provê informações sobre os sistemas de arquivos a serem montados na
inicialização do sistema.
Módulo Configuração de Redes TCP/IP
27
Curso Linux Básico
6 SESSION MESSAGE BLOCK (SMB) – SAMBA
O protocolo SMB é um dos protocolos mais “populares” de compartilhamento de arquivos e
impressoras atualmente, principalmente no ambiente de microcomputadores. Com o sucesso do
sistema operacional Microsoft Windows, o uso do protocolo se tornou praticamente obrigatório nos
ambientes onde máquinas com este sistema operacional estão interligadas em rede.
O SMB é na verdade o protocolo utilizada pelo NetBIOS, um conjunto de serviços sobre o
protocolo SMB que foi padronizada por ocasião das primeiras experiências de ligar PCs em rede.
Assim, quanto o termo NetBIOS é usado, na verdade o protocolo que transporta os serviços de
compartilhamento de arquivos e impressoras é o SMB. Por isso os dois termos podem ser usados de
forma intercambiável.
O NetBIOS é um protocolo da camada de aplicação, e define que cada nó da rede possui um
nome de até 15 caracteres. Os dois serviços do NetBIOS, serviço de datagrama e serviço de nomes,
estão padronizados no RFC 1001 e RFC 1002, respectivamente.
O NetBIOS pode operar sobre os seguintes protocolos de transporte (de nível inferior à
aplicação): TCP/IP, NetBEUI, e SPX/IPX (da Novell). Enquanto o NetBEUI é apenas uma
implementação de NetBIOS direta sobre a subcamada LLC (padrão IEEE), os outros dois (TCP/IP e
SPX/IPX) são realmente protocolos de transporte/rede, em relação ao modelo OSI. A desvantagem
de utilizar NetBEUI é o que o protocolo exige que todas as máquinas estejam na mesma rede física
(porque não utiliza como transporte um protocolo que permita roteamento, como o IP).
Dessa forma, quando uma máquina utiliza NetBIOS sobre TCP/IP (NBT) ou NetBIOS sobre
IPX, é preciso uma forma de traduzir os nomes NetBIOS para os endereços IP ou IPX, conforme o
protocolo utilizado.
Os nomes NetBIOS podem ser de dois tipos: UNIQUE e GROUP. Toda máquina rodando
NetBIOS em uma rede deve possuir um nome único (UNIQUE), que não pertença a outra máquina
na rede. Se necessário, a máquina pode solicitar na rede um nome GROUP, ao qual várias máquinas
podem pertencer.
6.1 Resolução de Nomes NetBIOS
Como o NetBIOS utiliza nomes para identificar as máquinas, e os protocolos inferiores
utilizam endereços numéricos, uma forma de resolução de nomes é necessária. No caso de
NetBEUI, a tradução de nomes será diretamente para endereços físicos 802.3 (Ethernet). No caso de
IP, a tradução será de nomes para endereços IP (semelhante ao DNS), assim como no caso de IPX a
tradução será de nomes para endereços IPX (que são constituídos do endereço 802.3 mais um
prefixo que identifica a rede a que pertence a máquina).
A resolução de nomes NetBIOS pode ser feita de duas formas: por difusão (broadcast) ou por
requisição direta a um servidor de nomes (point-to-point).
Na resolução por broadcast, uma máquina simplesmente envia por difusão na rede um
anúncio do nome que deseja utilizar. Se não houver objeção por parte de outra máquina que já
esteja utilizando o nome, ela então o adota como sendo seu.
Quando a máquina deseja transmitir para outra, ela também envia por difusão uma pergunta
pelo nome destino. A máquina destino, escutando a requisição, responde com seu endereço, de
maneira muito semelhante ao protocolo ARP usado na camada de acesso à rede da arquitetura
TCP/IP.
28
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
A implementação de um servidor de nomes, de acordo com a RFC 1001, é apenas possível
quando se utiliza NetBIOS sobre TCP/IP. A implementação de um servidor de nomes point-to-point
da Microsoft foi denominada WINS (Windows Internet Name Service).
A resolução de nomes NetBIOS através de um servidor WINS resolve o problema de excesso
de broadcasts na rede em decorrência da resolução de nomes. Quando uma máquina deseja registrar
seu nome, ela contacta o servidor WINS para isso. Desta forma, as máquinas da rede que não se
registrarem ao servidor WINS ficarão “invisíveis” pelas demais, quando consultarem o servidor
WINS.
O processo de registro de nomes das máquinas é feito assim que o protocolo entra no ar.
Quando a máquina é desligada, a máquina solicita a retirada do nome do servidor. Caso a máquina
seja desligada abruptamente, sem ter a oportunidade de retirar seu nome do registro, o servidor
WINS não terá como saber que o nome não está mais associado a uma máquina ativa.
Como o protocolo de transporte para o servidor WINS é o TCP/IP, máquinas espalhadas por
várias redes, inclusive interconectadas por uma WAN, conseguem se registrar e consultar o servidor
de nomes. É possível assim ter um único servidor de nomes na rede, onde todos podem obter
informações sobre os endereços das máquinas que rodam NetBIOS, de forma muito semelhante ao
DNS.
É possível existir mais de um servidor WINS na rede, de forma que a base de dados fique
replicada, e caso o servidor principal saia do ar, o servidor secundário assume a responsabilidade.
Além disso, o administrador da rede pode incluir entradas estáticas no servidor WINS, por exmeplo,
para máquinas servidoras da rede, já que estas normalmente não mudam de endereço IP e de nome.
6.2 Samba – Servidor e Cliente SMB
Atualmente, o protocolo nativo de compartilhamento de arquivos e impressoras na família de
sistemas operacionais Windows, da Microsoft, é o SMB. Isto abriu várias oportunidade de mercado
para desenvolvedores de soluções de conectividade entre plataformas. Por exemplo, vários
fornecedores comercializam implementações de NFS para Windows, de forma que os clientes
Windows de uma rede enxerguem os diretórios exportados via NFS em servidores UNIX.
Para integrar sistemas Windows e UNIX, uma outra abordagem é implementar o protocolo
SMB no lado UNIX. Diversos fornecedores independentes, bem como os próprios fornecedores de
UNIX possuem suas próprias soluções SMB para integração com máquinas Windows, sem
necessidade de adicionar software a elas. Esta solução talvez seja a melhor para integrar sistemas
UNIX e sistemas Windows, pois em geral as máquinas Windows existem em maior quantidade do
que as máquinas UNIX, e o fato de não ser necessária a instalação de software adicional no lado
Windows é uma grande vantagem.
Boa parte das implementações dos fornecedores de UNIX é simplesmente um acordo com a
Microsoft para licenciarem o código nativo do LanManager, que era antigamente a implementação
SMB da Microsoft para UNIX (por ocasião da Microsoft comercializar seu próprio UNIX, o
Xenix).
Entretanto, existe uma solução de domínio público (freeware), chamada Samba, que foi
desenvolvida incialmente por Andrew Tridgell em 1992 quando era um estudante de PhD na
Universidade Nacional Australiana, em Canberra, Austrália.
Apesar dos primeiros testes e início do desenvolvimento do Samba terem sido no SunOS, da
Sun Microsystems, o início de seu desenvolvimento mais sério foi sobre a plataforma Linux, sendo
Módulo Configuração de Redes TCP/IP
29
Curso Linux Básico
que atualmente já existem versões para diversas plataformas, inclusive não-UNIX, como: Linux,
SunOS, Solaris, SVR4, Ultrix, OSF1, AIX, BSDI, NetBSD, Sequent, HP-UX, SGI, FreeBSD,
NeXT, ISC, A/UX, SCO, Intergraph, Domain/OS, DGUX, QNX, NetWare, VMS, OS/2, Amiga, e
outros que eventualmente são incluídos na lista.
Todas as informações sobre o produto, downloads, FAQs, entre outros, está disponível no site
http://www.samba.org, além dos mirrors espalhados pelo globo. O primeiro passo é obter o
software, preferencialmente pré-compilado para o sistema operacional do servidor a ser utilizado.
Após instalado, sua configuração é limitada a apenas um arquivo de configuração, chamado
smb.conf, e geralmente encontrado sob o diretório /etc ou sob o diretório /usr/local/samba/lib.
Conforme a utilização dada ao servidor Samba, configurações adicionais incluirão criação de
diretórios de arquivos compartilhados, ajustes de permissões, etc.
6.2.1 Iniciando o Samba
O samba é composto de dois processos: smbd e nmbd. O primeiro é o servidor propriamente
dito, enquanto o segundo é responsável pela resolução de nomes (ou via broadcast ou via protocolo
WINS).
Preferencialmente, o samba deve ser inciado durante o boot do sistema, ficando disponível
para conexões assim que a máquina servidora estiver no ar. Este modo coloca os dois processos
para rodar como daemons. Entretanto, pode ser que em algumas situações não seja adequado o
samba estar todo o tempo rodando, pois é usado raramente, e a máquina possui pouca memória e
CPU disponível. Neste caso pode-se iniciar o samba via inetd, que escuta as requisições na rede
para vários serviços (telnet, ftp, talk) e dispara o servidor adequado assim que uma requisição
chegar pela rede.
SINOPSE:
smbd [ -D ] [ -d nível ]
nmbd [ -D ] [ -d nível ]
ARGUMENTOS:
-D:
-d nível:
inicia o processo como daemon. Caso esta opção não seja
especificada, o processo somente inicia se tiver sido chamado
pelo inetd;
especifica o nível de detalhes a ser armazenado no arquivo de
logs do sistema. O valor default é 3, a não ser que outro seja
especificado no arquivo de configuração smb.conf.
6.2.2 Configuração do arquivo smb.conf
A único arquivo de configuração necessário para o Samba é o smb.conf. A localização padrão
do arquivo depende dos parâmetros especificados no momento da compilação do programa.
O arquivo de configuração é orientado a linhas, sendo composto de seções, e dentro de cada
seção, parâmetros. Cada seção especifica um item compartilhado, normalmente chamado de
compartilhamento (share). Os parâmetros para cada share podem ser então especificados
individualmente. Caso seja necessário que uma linha de configuração continue na linha seguinte,
deve-se colocar o caractere “\” (barra invertida) no final da linha a ser continuada. Além disso, toda
30
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
linha que começa com o caractere “#” ou “;” é considerada um comentário.
Dentro do arquivo, as seções são especificados por um nome entre colchetes. Não existe
limite no tamanho do nome do compartilhamento, que pode inclusive conter espaços, mas a
recomendação é que sejam utilizados no máximo 8 caracteres, sem espaços, para evitar problemas
futuros com alguns clientes de rede mais antigos (DOS, Windows for Workgroups, e até mesmo
Windows 95).
Existem também três seções especiais:
• [global]: parâmetros nesta seção aplicam-se ao servidor em si, ou definem valores default
para os outros compartilhamentos;
• [homes]: esta seção permite que usuários conectem-se diretamente a seus diretórios
home. O Samba automaticamente mapeia o compartilhamento [homes] para o login do
usuário que está conectando ao servidor;
• [printers]: a seção [printers] é um serviço automático, que lê o arquivo /etc/printcap (se
impressão estilo BSD estiver em uso), e apresenta todas as impressoras encontradas
automaticamente.
Os parâmetros são normalmente compostos de uma ou mais palavras, e são especificados no
formato:
• nome-do-parâmetro = valor
O valor de cada parâmetro pode ser de um dos seguintes tipos:
• string: uma seqüência qualquer de caracteres, como por exemplo o parâmetro que
especifica o nome do servidor: netbios name = Server1
• numérico: um número qualquer decimal, como por exemplo o parâmetro que especifica o
tamanho máximo do arquivo de logs, em Kbytes: max log size = 250
• booleano: um opção que especifica os valores verdadeiro ou falso. Estes valores podem
ser especificados como yes/no, true/false, ou 1/0. Como exemplo, a opção que informa se
o nmbd atuará com servidor WINS ou não: wins support = yes
Os principais parâmetros são especificados a seguir. À frente de cada nome de parâmetro
listado, é mostrado entre parênteses se o parâmetro se aplica à seção global (G), a
compartilhamentos (C) específicos. Quando um parâmetro que se aplica a compartilhamentos (C)
for encontrado na seção global, ele será interpretado como o valor default para este parâmetro
quando ele não for especificado em um determinado compartilhamento.
PARÂMETROS:
workgroup (G):
server string (G):
status (G):
wins support (G):
security (G):
parâmetro do tipo string que informa ao servidor a qual
workgroup / domínio pertence;
string que será mostrada como “comentário” ao lado do nome
do servidor em um cliente SMB;
parâmetro booleano que configura o servidor para fornecer
informações sobre seu status ou não;
parâmetro booleano que instrui o nmbd para atuar ou não
como um servidor WINS;
string que especifica o modelo de autenticação a ser utilizado
pelo servidor. No modo “share” a autenticação é como no
Windows 3.x/9x, ou seja, um compartilhamento possui uma
Módulo Configuração de Redes TCP/IP
31
Curso Linux Básico
senha simples para leitura e/ou escrita. No modo “user” a
autenticação é feita localmente no arquivo de usuários do UNIX
(passwd). No modo “server” a autenticação é feita repassada
para um servidor de autenticação Windows NT ou Samba;
password server (G): nome da máquina responsável por autenticação. Este
parâmetro só é válido se “security = server”;
share modes (G):
parâmetro booleano que habilita ou não locking em arquivos;
comment string (C): string de comentário para um compartilhamento;
path (C):
string que especifica o diretório que está sendo compartilhado;
browseable (C):
parâmetro booleano que especifica se o compartilhamento será
visível para o cliente (por exemplo, no Ambiente de Rede do
Win95);
public (C):
especifica se o compartilhamento requer que o usuário se
identifique e autentique;
writable (C):
se este parâmetro é true, compartilha em modo read-write;
read only (C):
se este parâmetro é true, compartilha em modo read-only. Este
parâmetro é um sinônimo para “writable”, apenas com o
significado invertido;
create mode (C):
modo numérico (usado pelo comando chmod) com o qual
novos arquivos serão criados;
valid users (C):
lista de usuários separados por vírgula que possuem direito de
conexão
ao
compartilhamento.
Grupos
podem
ser
especificados colocando-se um caractere “@” em frente ao
nome do grupo na lista;
invalid users (C):
lista de usuários separados por vírgula que NÃO possuem
direito de conexão ao compartilhamento. Grupos podem ser
especificados colocando-se um caractere “@” em frente ao
nome do grupo na lista;
write list (C):
lista de usuários separados por vírgula que possuem direto de
escrita no compartilhamento. Grupos podem ser especificados
colocando-se um caractere “@” em frente ao nome do grupo na
lista.
32
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
EXEMPLO:
#==== Opcoes Globais ====
#
# Ultima alteracao: 24/07/98, Celso
[global]
# Opcoes gerais
workgroup = CURSO
server string = Samba Server
# Opcoes de impressao
printcap name = /etc/printcap
print command = lpr -h -r -P %p %s
lprm command = lprm -P %p %j; /usr/local/bin/lpreset /dev/lp1
load printers = yes
printing = bsd
# Opcoes de log
log file = /var/log/samba/log.%m
max log size = 50
# Opcoes de seguranca
hosts allow = 127. 10.0.0.
security = user
encrypt passwords = yes
smb passwd file = /etc/smbpasswd
guest ok = no
# Opcoes de rede / desempenho
socket options = TCP_NODELAY
;
interfaces = 192.168.12.2/24 192.168.13.2/24
# Controle de listas. Este servidor possuira’ a lista de maquinas da rede
os level = 33
domain master = yes
preferred master = yes
# Opcoes de controle de dominio. Este servidor atuara’ como um PDC
domain logons = yes
domain admin group = @celso
logon drive = x:
logon script = local.bat
logon path = \\%L\profiles\%U
# Suporte a WINS
wins support = yes
dns proxy = no
Módulo Configuração de Redes TCP/IP
33
Curso Linux Básico
# Convencoes de nomes de arquivos
preserve case = yes
short preserve case = yes
veto files = /lost+found/quota.user/quota.group/
#==== Definicoes de Compartilhamentos ====
[homes]
comment = Directorios dos Usuarios
browseable = no
writable = yes
[printers]
comment = Todas as impressoras
path = /var/spool/samba
browseable = no
guest ok = yes
writable = no
printable = yes
[FloppyA]
comment = Unidade de disquete
path = /misc/fd
browseable = yes
public = yes
writable = yes
guest ok = yes
[Temp]
comment = Espaco temporario
path = /tmp
browseable = yes
public = yes
writable = yes
guest ok = yes
Neste exemplo, os parâmetros em negrito são os parâmetros usuais em um arquivo de
configuração, que devem ser adaptados para cada caso específico (por ex,: parâmetro workgroup).
34
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
7 NETWORK INFORMATION SERVICE (NIS)
Freqüentemente, em uma rede de computadores, é desejável que a autenticação de usuários
seja centralizada em servidores centrais de autenticação. Este modelo de segurança em redes é
adotado por vários produtos, por exemplo, a família Mirosoft Windows. Em UNIX, normalmente a
autenticação é feita localmente, consultando o arquivo /etc/passwd.
Entretanto, a Sun Microsystems definiu um padrão que serve, entre outras coisas, para este
propósito. Inicialmente o produto foi chamado de YP – Yellow Pages (Páginas Amarelas), pois
tratava-se de um mecanismo de distribuição centralizada de informações pelas estações da rede.
Entretanto YP era já uma marca registrada na Inglaterra, e a Sun rebatizou o produto de NIS –
Network Information Service (Serviço de Informações de Rede).
O NIS é um banco de dados administrativo utilizado para disseminar informações por todo o
domínio (note-se que o conceito de domínio aqui é diferente daquele do DNS. Um domínio NIS
está restrito a um conjunto de máquinas sob a mesma administração, e não se enquadra em uma
estrutura hierárquica, nem aceita subdivisões). O NIS converte uma série de arquivos
administrativos do UNIX em mapas disponíveis pela rede.
Os principais arquivos convertidos em mapas pelo NIS são:
• /etc/passwd : contém informações sobre usuários;
• /etc/group : contém informações sobre grupos de usuários;
• /etct/ethers: associa endereços IP a endereços físicos (usado pelo RARP);
• /etc/hosts: associa nomes de hosts a endereços IP;
• /etc/networks: associa nomes de redes a endereços IP;
• /etc/netmasks: associa netmasks às redes;
• /etc/protocols: contém protocolos suportados pelo host;
• /etc/services: contém serviços suportados pelo host;
• /etc/aliases: contém mail aliases;
• /etc/netgroup : define grupos de hosts e de usuários.
O principal motivo para se utilizar NIS é a facilidade administrativa. Com NIS, os arquivos de
configuração podem ser mantidos de forma centralizada em um servidor e disponibilizados
automaticamente pelo domínio.
Um conjunto de máquinas que compartilham os mesmos mapas do NIS formam um domínio
NIS. É recomendável que o nome de um domínio NIS coincida com o nome do domínio Internet. O
servidor NIS cria um sub-diretório para cada domínio que ele serve no diretório /var/yp.
O comando domainname define ou mostra o nome do domínio NIS corrente.
venus% domainname inf.ufsc.br
venus% domainname
inf.ufsc.br
O nome do domínio NIS é normalmente configurado na inicialização do sistema a partir do
arquivo /etc/defaultdomain. Este é o arquivo utilizado no SunOS e no Solaris durante o boot do
sistema para descobrir qual o domínio NIS em uso. Outros UNIX provavelmente irão armazenar o
nome do domínio NIS em outros locais.
Módulo Configuração de Redes TCP/IP
35
Curso Linux Básico
Os principais programas envolvidos com o NIS são:
• ypserv : daemon servidor do NIS, responsável pelo atendimento às requisições dos
clientes;
• ypbind: daemon cliente do NIS, responsável por encaminhar as requisições ao servidor;
• ypinit: programa de inicialização do NIS; lê os arquivos de /etc e cria os mapas
correspondentes. Este programa normalmente está no diretório /usr/lib/yp;
• ypxfrd: daemon responsável por transferir os mapas do servidor mestre para os
servidores escravos;
• yppasswdd: daemon responsável por receber notificações de alteração de senha de um
usuário em uma máquina cliente.
O NIS cria um mapa equivalente ao arquivo /etc/hosts. Logo, ele pode dispensar o uso do
DNS para domínios pequenos e isolados da Internet. Entretanto, alguns resolvers, quando
configurados para utilizar NIS, ignoram completamente a configuração DNS (/etc/resolv.conf) e
passam somente a consultar nomes no mapa hosts do domínio NIS. A solução é fazer com que o
servidor NIS, quando receba a consulta por um nome que não está em seu mapa hosts, consulte um
servidor DNS. Isto pode ser feito incluindo a cláusula “B=-b” no arquivo de construção dos mapas
NIS, localizado em /var/yp/Makefile.
venus# vi /var/yp/Makefile
# Set the following variable to "-b" to have NIS servers use the domain
# name resolver for hosts not in the current domain.
B=-b
Para garantir o funcionamento do serviço, o NIS define duas classes de servidores: master e
slave. Um domínio NIS deve possuir pelo menos um servidor master (mestre), e opcionamente
vários servidores slave (escravos), que obterão cópias dos mapas NIS a partir do servidor master.
Para inicializar o servidor mestre do domínio e criar os mapas iniciais, os seguintes passos
devem ser feitos:
• Configurar o domínio NIS com o comando domainname;
• Executar o comando ypinit –m. Este comando lerá os arquivos do diretório /etc e criará
os mapas correspondentes no diretório /var/yp/domainname, onde domainname é o
nome do domínio ajustado no passo anterior;
• Dispare os daemons necessários. O daemon ypserv é o servidor em si, portanto deve
sempre estar rodando no servidor. Se existem servidores slave que irão se conectar ao
servidor master, ele deve rodar também o daemon ypxfrd. Se os clientes precisarem
alterar senhas de usuários no servidor NIS, então o daemon yppasswdd também deve
ser executado. Por fim, a máquina servidora precisa também ser configurada como cliente
NIS, executando o ypbind.
babbage#
babbage#
babbage#
babbage#
babbage#
babbage#
domainname servers
/usr/lib/yp/ypinit –m
ypserv
ypxfrd
yppasswdd
ypbind
Para disparar um servidor slave os seguintes passos devem ser seguidos:
• Configurar o domínio NIS com o comando domainname;
36
Módulo Configuração de Redes TCP/IP
Curso Linux Básico
•
•
Executar o comando ypinit –s master. Este comando fará com que o servidor master
seja contactado, e seus mapas copiados;
Dispare os daemons necessários. O daemon ypserv é o servidor em si, portanto deve
sempre estar rodando no servidor. Por fim, a máquina servidora precisa também ser
configurada como cliente NIS, executando o ypbind.
pascal#
pascal#
pascal#
pascal#
domainname servers
/usr/lib/yp/ypinit –s babbage
ypserv
ypbind
Para disparar um cliente NIS, basta configurar o domínio NIS e disparar o daemon cliente:
hollerith# domainname servers
hollerith# ypbind
No servidor NIS mestre, toda vez que um dos arquivos exportados for alterado, é necessário
reconstruir o mapa correspondente. Para isso, é necessário executar o comando make dentro do
diretório /var/yp. O comando make irá reconstruir os mapas de acordo com as regras do arquivo
/var/yp/Makefile existente, deixando-os sincronizados com os arquivos originais. O exemplo a
seguir ilustra a situação.
babbage# cd /var/yp
babbage# make
gmake[1]: Entering directory `/var/yp/servers'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
gmake[1]: Leaving directory `/var/yp/servers'
babbage#
Módulo Configuração de Redes TCP/IP
37
Curso Linux Básico
BIBLIOGRAFIA
1.
2.
3.
4.
5.
ALBITZ, Paul; LIU, Cricket. DNS and BIND. O’Reilly & Associates, 1992.
FEIT, Sidnie. TCP/IP – Architecture, Protocols, and Implementation with IP v6 and IP
Security. 2nd. ed. McGraw-Hill, 1996.
FRISCH, Ællen. Essential System Administration. 2nd. ed. O’Reilly & Associates, 1996.
HUNT, Craig. TCP/IP Network Administration. 2nd. ed. O’Reilly & Associates, 1997.
STERN, Hal. Managing NFS and NIS. O’Reilly & Associates, 1991.
Dúvidas, críticas e sugestões sobre esta apostila: mailto:[email protected]
38
Módulo Configuração de Redes TCP/IP
Download