Upload
independent
View
1
Download
0
Embed Size (px)
Citation preview
Curso Linux Básico
Módulo Configuração de Redes TCP/IP i
SUMÁRIO
1 INTRODUÇÃO 1
2 INTERFACE DE COMUNICAÇÃO 3
2.1 Reconhecimento das Interfaces de Rede 3
2.2 Configuração as Interfaces 4
2.3 Tabela ARP 6
3 ROTEAMENTO DE DATAGRAMAS IP 8
3.1 Tabela de Roteamento Mínimo 8
3.2 Verificação de Conectividade 10
3.3 Roteamento Dinâmico 11
3.3.1 RIP - Routing Information Protocol 12
4 DOMAIN NAME SERVICE (DNS) 15
4.1 Configuração do Resolver 16
4.2 Configuração do BIND 17
5 NETWORK FILE SYSTEM (NFS) 25
5.1 Exportando Arquivos 25
5.2 Montando Diretórios Remotos 27
6 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
7 NETWORK INFORMATION SERVICE (NIS) 35
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 1
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:
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 2
Figura 1.1 - Formato de comandos UNIX
$ 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)
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 3
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:
Configurar a placa através de jumpers, dip switches, etc;
instalar fisicamente a placa no computador (e configurá-la via software quando for o caso);
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;
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
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 4
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 Nome adotado para a primeira interface Ethernet
SCO UNIX depende do fabricante (ex: e3B0)
Linux eth0
Digital UNIX ln0, tu0
Solaris le0
SunOS le0, ie0, ec0
AIX en0 (Ethernet), et0 (802.3)
HP-UX 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: nome da interface de rede a ser configurada (eth0, lo, etc);
addr_family: parâmetro opcional que informa o tipo de endereço sendo configurado. Para endereços IP, este parâmetro deve ser inet;
address: especifica address como o endereço IP associado à interface;
netmask mask: associa a máscara de rede mask à interface;
broadcast address: informa o endereço de broadcast da interface para address.
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 5
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.
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.
Usando um hostname, então, o comando poderia ser:
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
localizados em arquivos como /etc/tcp e /etc/init.d/tcp.
Os parâmetros adicionais do ifconfig mais utilizados são descritos abaixo:
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
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
venus# ifconfig le0 venus
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 6
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.
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
ARGUMENTOS:
-v fornece mensagens detalhadas (verbose)
-n modo numérico, mostra apenas endereços, isto é, não tenta converter um endereço para o nome de uma máquina
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
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 7
-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
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 8
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: nome da interface de rede da qual se deseja obter informações sobre conexões;
-n: mostra endereços e portas em modo numérico, isto é, não faz tradução para nomes;
-r: mostra a tabela de rotas corrente;
-i interface: mostra somente informações relacionadas à interface especificada;
EXPLICAÇÃO:
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.
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 9
EXEMPLO:
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: determina se a rota é para um máquina ou para uma rede. Se este parâmetro for omitido, é assumido o valor “-host”;
destination: informa destino da rota;
netmask mask: utiliza mask como máscara de subrede para esta rota;
gateway router: 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;
device: nome da interface de rede que esta rota utilizará como saída;
metric M: estabelece a métrica para a rota sendo estabelecida;
mss M: estabelece o MSS – Maximum Segment Size (tamanho máximo do segmento) TCP a usar com esta rota;
window W: informa o tamanho da janela TCP a ser usada nessa rota.
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á
apolo# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
255.255.255.255 0.0.0.0 255.255.255.255 UH 1500 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 1500 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0 0 lo
0.0.0.0 192.1.2.3 0.0.0.0 UG 1500 0 0 ppp0
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 10
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:
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.
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
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).
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 Iface
10.3.0.0 0.0.0.0 255.255.0.0 U 1500 0 0 eth0
10.2.1.0 10.3.0.254 255.255.255.0 UG 1500 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0 0 lo
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 Genmask Flags MSS Window irtt Iface
10.3.0.0 0.0.0.0 255.255.0.0 U 1500 0 0 eth0
10.2.1.0 10.3.0.254 255.255.255.0 UG 1500 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0 0 lo
0.0.0.0 10.3.0.252 0.0.0.0 UG 1500 0 0 eth0
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 11
SINOPSE:
ping [ -f ] [ -i tempo espera ] [ -count quantidade ] destino
ARGUMENTOS:
-f envia um novo “ping” assim que receber a resposta do anteriormente enviado. A comportamento default é enviar uma requisição a cada segundo;
-i tempo espera informa o tempo entre cada envio de um novo “ping”;
-count quantidade informa quantos “pings” devem ser enviados. O comportamento default é enviar “pings” eternamente, até o comando ser cancelado;
destino: 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).
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 12
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.
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
sistemas UNIX. RIP seleciona a rota com o menor hop count como sendo a melhor. O hop count
ABC Ltda
RIP
Provedor
Baía Norte
EIGRP
Cia. das
Índias
IGRP
Provedor
Bananal Sul
EIGRP
Serralheria
Metal Sul
EIGRP
Provedor
Manezinho
OnLine
OSPF
Provedor
Bananal Sul
EIGRP
BGP
BGP
BGP
BGP
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 13
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:
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:
# net 0.0.0.0 gateway 150.162.1.1 metric 1 active
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 14
-q: Instrui o routed a apenas “escutar” rotas, sem anunciar as suas próprias rotas (quiet);
-g: 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;
-s: 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).
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
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 15
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.
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 16
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.
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:
www.cade.com.br
www.mit.edu
mail.hp.com
raiz “.”
br
com
cade
www
edu com
mit hp
www mail
arpa
in-addr
200
135
250
1 2
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 17
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.
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:
# 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
raiz “.”
br
com
rede
jurere
minha sua
mole joaca
www
fusca bmw
zona “minha”
zona “rede”
zona “sua”
domínio “rede”
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 18
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) /etc/named.conf
(BIND 8.x)
Significado
directory caminho options {
directory “caminho”;
};
Define um caminho de diretório onde os
demais arquivos serão armazenados
cache . arquivo zone “.” {
type hint;
file “arquivo”;
};
Especifica o arquivo de cache contendo a
lista de servidores do domínio “.” (raiz)
primary zona arquivo zone “zona” {
type master;
file “arquivo”;
};
Configura o servidor como primário da zona
especificada, sendo que a base de dados está
armazenada em arquivo
secondary zona servidor arquivo zone “zona” {
type slave;
file arquivo;
masters {
servidor;
};
};
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
forwarders servidor1 servidor2 … options {
forwarders {
servidor1;
servidor2;
…
};
};
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
slave options {
forward only;
};
Força o servidor a usar somente os
forwarders, sem tentar atender a nenhuma
solicitação
; Um comentário é precedido por
; um ponto-e-vírgula
// Um comentário é
// precedido por duas
// barras
Comentários devem ser precedidos de
caracteres especiais. Deve-se evitar linhas
em branco, especialmente com o BIND 4.x
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 19
Configuração exemplo de um servidor (named.boot):
Configuração exemplo de um servidor (named.conf):
# cat /etc/named.boot
; named.boot – BIND 4.x
directory /var/named
cache . named.ca
primary 0.0.127.in-addr.arpa named.local
;
primary rede.com.br rede.zone
primary 250.135.200.in-addr.arpa rede.revzone
secondary minha.rede.com.br 200.135.251.1 minha.zone
secondary 251.135.200.in-addr.arpa 200.135.251.1 minha.revzone
;
forwarders 200.135.15.3 150.162.1.3
# 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;
};
};
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 20
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:
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;
ttl: time-to-live. Define o tempo em segundos que a informação contida neste Resource Record deve ser mantida em cache;
IN: identifica o registro como sendo da classe INternet. Na realidade, até hoje não foram criadas outras classes de registros DNS;
type: identifica qual tipo de Resource o registro indica;
data: contém a informação específica para o tipo de Resource Record declarado acima.
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:
[name] [ttl] [class] type data [;comment]
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 21
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:
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
# 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
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
86400 ; Refresh after 24 hours
7200 ; Retry after 2 hours
2592000 ; Expire after 30 days
345600 ) ; Minimum ttl of 4 days
IN NS localhost.
;
1 IN PTR localhost.
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 22
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:
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.
@ IN SOA 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
IN NS ns.rede.com.br.
;
1 IN PTR ns.rede.com.br.
2 IN PTR www.rede.com.br.
3 IN PTR ftp.rede.com.br.
4 IN PTR mail.rede.com.br.
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 23
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
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.
@ IN SOA 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
IN NS ns.rede.com.br.
IN MX 1 mail.rede.com.br.
;
ns 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.
$ 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
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 24
$ 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
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 25
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.
Cada entrada no arquivo /etc/exports segue o formato:
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 26
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).
|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.
O comando exportfs lê o arquivo /etc/exports a fim de exportar um diretório:
# cat /etc/exports
/usr -access=servidor1:servidor2
/usr/local -access=servidor1:servidor2
/usr/local/tmp -access=servidor1:servidor2
/usr/local/www -access=servidor1:servidor2
/var/spool/mail -access=servidor1:servidor2
/home/venus -access=servidor1:servidor2
/projects proj*.rede.com.br(rw)
/usr *.rede.com.br(ro) 10.1.2.0/255.255.255.0(rw)
/home/server2 server1(rw,no_root_squash)
/pub (ro)
/pub/private (noaccess)
venus# exportfs /usr
venus# exportfs -a
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 27
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.
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: nome do host servidor;
filesystem: nome do diretório ou sub-diretório exportado pelo servidor;
mount-point: 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.
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.
O arquivo /etc/fstab provê informações sobre os sistemas de arquivos a serem montados na
inicialização do sistema.
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
venus# mount apolo:/home/apolo /home/apolo
venus# umount /home/apolo
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 28
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.
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 29
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
que atualmente já existem versões para diversas plataformas, inclusive não-UNIX, como: Linux,
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 30
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: inicia o processo como daemon. Caso esta opção não seja especificada, o processo somente inicia se tiver sido chamado pelo inetd;
-d nível: 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
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
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 31
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): parâmetro do tipo string que informa ao servidor a qual workgroup / domínio pertence;
server string (G): string que será mostrada como “comentário” ao lado do nome do servidor em um cliente SMB;
status (G): parâmetro booleano que configura o servidor para fornecer informações sobre seu status ou não;
wins support (G): parâmetro booleano que instrui o nmbd para atuar ou não como um servidor WINS;
security (G): 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 senha simples para leitura e/ou escrita. No modo “user” a autenticação é feita localmente no arquivo de usuários do UNIX
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 32
(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.
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 33
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
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 34
# 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).
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 35
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.
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.
venus% domainname inf.ufsc.br
venus% domainname
inf.ufsc.br
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 36
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.
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.
Para disparar um servidor slave os seguintes passos devem ser seguidos:
Configurar o domínio NIS com o comando domainname;
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
babbage# domainname servers
babbage# /usr/lib/yp/ypinit –m
babbage# ypserv
babbage# ypxfrd
babbage# yppasswdd
babbage# ypbind
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 37
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.
Para disparar um cliente NIS, basta configurar o domínio NIS e disparar o daemon cliente:
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.
pascal# domainname servers
pascal# /usr/lib/yp/ypinit –s babbage
pascal# ypserv
pascal# ypbind
hollerith# domainname servers
hollerith# ypbind
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#
Curso Linux Básico
Módulo Configuração de Redes TCP/IP 38
BIBLIOGRAFIA
1. ALBITZ, Paul; LIU, Cricket. DNS and BIND. O’Reilly & Associates, 1992.
2. FEIT, Sidnie. TCP/IP – Architecture, Protocols, and Implementation with IP v6 and IP
Security. 2nd
. ed. McGraw-Hill, 1996.
3. FRISCH, Ællen. Essential System Administration. 2nd
. ed. O’Reilly & Associates, 1996.
4. HUNT, Craig. TCP/IP Network Administration. 2nd
. ed. O’Reilly & Associates, 1997.
5. STERN, Hal. Managing NFS and NIS. O’Reilly & Associates, 1991.
Dúvidas, críticas e sugestões sobre esta apostila: mailto:[email protected]