Capítulo 10. Configurações de rede

Índice
10.1. Prática
10.2. Tópicos avançados

10.1. Prática

10.1.1. Opções de configuração do kernel

Antes de adentrarmos os meandros das configurações de rede, é bom dar uma olhada nos correspondentes parâmetros presentes na configuração do kernel. Para maiores detalhes sobre o tópico veja-se Capítulo 7. Aqui nos concentraremos apenas sobre os aspectos relativos à montagem e gerenciamento de redes, tomando como exemplo o arquivo de configuração i386/GENERIC. Os arquivos de configuração para as outras plataformas contêm opções similares, geralmente acompanhadas de comentários dentro do próprio arquivo que lhes esclarecem o uso. Ademais, as opções de compilação do kernel estão documentadas na página de manual options(4) e, geralmente, há uma página de manual para cada driver (por exemplo tlp(4)).

      #       $NetBSD: GENERIC,v 1.354.2.15 2001/05/06 15:18:54 he Exp $      

A primeira linha do arquivo de configuração mostra o número de versão que, neste caso, é 1.354.2.15 e que pode ser útil para confrontar com outras versões via CVS ou para reportar eventuais bugs.

options         NTP             # NTP phase/frequency locked loop      

Se quisermos usar o Network Time Protocol (NTP), pode-se ativar esta opção para obter a máxima precisão. Se esta opção não está ativa, o NTP funciona do mesmo modo. Ver ntpd(8) para detalhes ulteriores.

file-system     NFS             # Network File System client      

Para utilizar o disco rígido de uma outra máquina com o Network File System (NFS), é necessário ativar esta opção. Ver Secção 10.2.2 para maiores informações.

options         NFSSERVER       # Network File System server      

Esta opção compreende o lado servidor do protocolo NFS e deve ser habilitada para permitir a outras máquinas usarem o disco rígido local. Ver Secção 10.2.2 para maiores informações.

#options        GATEWAY         # packet forwarding      

Para instalar um estradador (router) que encaminha os pacote entre várias redes ou entre várias interfaces de rede, é preciso habilitar a opção GATEWAY. Não apenas ativa o estradamento dos pacotes mas aumenta ainda alguns buffers. Ver options(4) para outros detalhes.

options         INET            # IP + ICMP + TCP + UDP      

Ativa o suporte ao TCP/IP no kernel. Mesmo se não se pretende usar redes, esta opção é ainda assim necessária para as comunicações internas à máquina por parte de sub-sistemas como o X Window. Ver inet(4) para os detalhes.

options         INET6           # IPV6      

Quem quer usar o IPv6 deve ativar esta opção que foi introduzida com a versão 1.5 do NetBSD. Quem não quer IPv6 pode comentá-la. Ver a página de manual inet6(4) e Secção 9.1.7 para ulteriores informações sobre o protocolo Internet de nova geração.

#options        IPSEC           # IP security      

Inclui o suporte para o protocolo IPsec: autenticação, compressão, chaves, etc. Esta opção pode ser utilizada mesmo sem ativar o IPv6, quando se deseja usar o IPsec apenas com o IPv4, o que é possível. Ver ipsec(4).

#options        IPSEC_ESP       # IP security (encryption part; define w/IPSEC)      

Esta opção é utilizada em complemento ao IPSEC para ativar a criptografia IPsec.

#options        MROUTING        # IP multicast routing      

Incluir esta opção para ativar o estradamento de serviços multicast como o MBone. Note-se que o routing é depois controlado pelo dæmon mrouted(8).

options         NS              # XNS
#options        NSIP            # XNS tunneling over IP      

Estas opções habilitam a família de protocolos Xerox Network Systems(tm). Não estão em relação com o stack do protocolo TCP/IP e não são muito utilizados hoje. A página de manual ns(4) contém alguns detalhes.

options         ISO,TPIP        # OSI
#options        EON             # OSI tunneling over IP      

Estas opções ativam o stack do protocolo OSI que, depois de ter sido considerado o futuro das redes, tem hoje um interesse prevalentemente histórico. Ver a página de manual iso(4).

options         CCITT,LLC,HDLC  # X.25      

Estas opções ativam o conjunto de protocolos X.25 para a transmissão de dados por linha serial. São, ou melhor, eram, usadas juntamente com o protocolo OSI ou em redes WAN.

options         NETATALK        # AppleTalk networking protocols      

Inclui o suporte para o stack do protocolo AppleTalk. Para poder usá-lo são necessários os programas servidores que podem ser encontrados, por exemplo, em pkgsrc/net/netatalk e pkgsrc/net/netatalk-asun. Maiores informações sobre o protocolo AppleTalk e seu stack correspondente podem ser encontrados na página do manual atalk(4).

options         PPP_BSDCOMP     # BSD-Compress compression support for PPP
options         PPP_DEFLATE     # Deflate compression support for PPP
options         PPP_FILTER      # Active filter support for PPP (requires bpf)      

Estas opções controlam vários aspectos do protocolo PPP (Point-to-Point-Protocol). As duas primeiras determinam os algoritmos de compressão usados/disponíveis, enquanto a terceira habilita o código para a filtragem de alguns pacotes.

options         PFIL_HOOKS      # pfil(9) packet filter hooks
options         IPFILTER_LOG    # ipmon(8) log support      

Estas opções habilitam o uso do firewall com IPfilter. Ver as páginas de manual ipf(4) e ipf(8) para maiores informações sobre o uso do IPfilter, assim como a Secção 10.2.1 para um exemplo de configuração.

# Compatibility with 4.2BSD implementation of TCP/IP.  Not recommended.
#options        TCP_COMPAT_42      

Esta opção é necessária somente se na rede ainda estão presentes máquinas que usam 4.2BSD ou um stack de rede derivado desta versão. Na presença de máquinas 4.2BSD é necessário prestar atenção na correta configuração do endereço de broadcast. Isso porque o 4.2BSD tem um bug no código de networking relativamente ao endereço de broadcast. Este bug força pôr todos os bits de host em "0" no endereço de broadcast. A opção TCP_COMPAT_42 serve para isso.

options         NFS_BOOT_DHCP,NFS_BOOT_BOOTPARAM      

Estas opções habilitam a busca de informações com DHCP ou com o protocolo BOOTPARAM quando o kernel usa um sistema de arquivos "root" do tipo NFS. Ver a página de manual diskless(8) para informações adicionais.

# Kernel root file system and dump configuration.
config          netbsd  root on ? type ?
#config         netbsd  root on sd0a type ffs
#config         netbsd  root on ? type nfs      

Estas linhas indicam ao kernel onde procurar o próprio sistema de arquivos "root" e de qual tipo de sistema de arquivos se trata. Se, por exemplo, quer-se criar um kernel que usa um sistema de arquivos (filesystem) root do tipo NFS através da interface tlp0, pode-se fazê-lo com a diretriz "root on tlp0 type nfs". Se usamos ? no lugar do tipo de dispositivo, o kernel procura determinar o dispositivo autonomamente.

# ISA serial interfaces
com0    at isa? port 0x3f8 irq 4        # Standard PC serial ports
com1    at isa? port 0x2f8 irq 3
com2    at isa? port 0x3e8 irq 5      

Para usar o PPP ou SLIP é necessário ter uma interface serial (com). Também funciona uma que se encaixe em USB, PCMCIA ou PUC.

# Network Interfaces      

A lista das interfaces de rede é bastante longa e contém dispositivos de todo tipo. É necessário simplesmente selecionar aquela que corresponde ao próprio hardware, baseando-se nos comentários presentes no arquivo. A maior parte dos drivers tem sua própria página de manual. Por exemplo, tlp(4), ne(4), etc.

# MII/PHY support      

Esta seção elenca as interfaces de rede independentes do dispositivo. Em caso de dúvida, habilitar todas elas e deixar a escolha para o kernel. Ver a página de manual mii(4) para maiores informações.

# USB Ethernet adapters
aue*    at uhub? port ?         # ADMtek AN986 Pegasus based adapters
cue*    at uhub? port ?         # CATC USB-EL1201A based adapters
kue*    at uhub? port ?         # Kawasaki LSI KL5KUSB101B based adapters      

Os adaptadores ethernet USB têm uma banda limitada a apenas 2 Mbits/s mas são práticos de usar. Naturalmente, para funcionar, é necessário configurar também as opções para USB que, contudo, não são descritas aqui, além, é claro, de dispor do hardware necessário. Vejam-se as várias páginas de manual.

# network pseudo-devices
pseudo-device   bpfilter        8       # Berkeley packet filter      

Este pseudo-dispositivo permite o "sniffing (farejamento)" de pacotes de todos os tipos. É necessário para tcpdump, mas também para rarpd e para outros aplicativos que devem examinar o tráfico da rede. Ver bpf(4) para informações adicionais.

pseudo-device   ipfilter                # IP filter (firewall) and NAT      

Esta linha ativa a interface IPfilter do kernel para a filtragem dos pacotes usada pelo firewalling, NAT (também chamado IP masquerading), etc. Ver ipf(4) e Secção 10.2.1 para maiores informações.

pseudo-device   loop                    # network loopback      

Esta é a interface "loopback" de rede, usada tanto por alguns programas quanto para efetuar algum tipo de routing. Deve ser habilitada. Ver a página de manual lo(4) para os detalhes.

pseudo-device   ppp             2       # Point-to-Point Protocol      

Esta opção é necessária para se poder usar o protocolo PPP tanto via interface serial quanto via ethernet (PPPoE). Ver ppp(4).

pseudo-device   sl              2       # Serial Line IP      

O "Serial Line IP" é simplesmente o protocolo IP encapsulado para viajar por uma linha serial. Já que não inclui opções como a negociação dos endereços IP, já não é muito usado atualmente. Veja-se sl(4).

pseudo-device   strip           2       # Starmode Radio IP (Metricom)      

Ver a página de manual strip(4) para o suporte aos velhos dispositivos de rede Metricon Ricochet. Se você tem um, habilite esta opção.

pseudo-device   tun             2       # network tunneling over tty      

Este dispositivo de rede serve para predispor um túnel para os pacotes de rede, na direção de um dispositivo /dev/tun*. Os pacotes encaminhados à interface tun0 podem ser lidos em /dev/tun0, e os dados escritos no /dev/tun0 são enviados à interface de rede tun0. Com este sistema pode-se implementar, por exemplo, o estradamento QoS em modo usuário. Ver tun(4) para outros detalhes.

pseudo-device   gre             2       # generic L3 over IP tunnel      

O encapsulamento GRE pode ser usado para efetuar um túnel de pacotes arbitrários de nível 3 no IP, por exemplo pela implementação do VPN. Ver gre(4) para detalhes ulteriores.

pseudo-device   ipip            2       # IP Encapsulation within IP (RFC 2003)      

Um outro dispositivo para encapsular IP sobre IP, com um formato diferente de encapsulamento. Ver a página de manual ipip(4) para os detalhes.

pseudo-device   gif             4       # IPv[46] over IPv[46] tunnel (RFC 1933)      

A interface GIF serve para ativar um túnel, por exemplo de IPv6 sobre Ipv4, que pode ser usado para se obter conectividade IPv6 na ausência de uma conexão IPv6 com o ISP. São possíveis também outras combinações de operações: ver os exemplos contidos na página de manual gif(4).

#pseudo-device  faith           1       # IPv[46] tcp relay translation i/f      

A interface faith captura o tráfico TCP IPv6 para implementar o relay de IPv6 a IPv4, por exemplo para transições de protocolo. Ver a página de manual faith(4).

#pseudo-device  stf             1       # 6to4 IPv6 over IPv4 encapsulation      

Esta diretriz acrescenta um dispositivo de rede que se pode usar para criar um túnel IPv6 em IPv4 sem necessidade de configurar o próprio túnel. O remetente dos pacotes contém na saída o endereço IPv4, o que permite enviar as respostas via IPv4. Ver a página de manual stf(4) e a Secção 10.2.4 para maiores detalhes.

pseudo-device   vlan                    # IEEE 802.1q encapsulation      

Esta interface fornece o suporte para as LAN virtuais IEEE 802.1Q, que permitem marcar os pacotes ethernet com uma ID "vlan". Configurando oportunamente os switches que suportam as VLAN, podem ser criadas VLAN nas quais um grupo de máquinas não vê o tráfico dos outros grupos. A página de manual vlan(4) contém maiores informações a propósito.

10.1.3. Conectando-se à Internet

Há muitos tipos de conexão à Internet. Esta seção explica como conectar-se a um provedor usando um modem através da linha telefônica, com o protocolo PPP, uma das instalações mais comuns. As operações a realizar, pela ordem, são:

A julgar pela lista acima parece um procedimento complexo, que exige muito trabalho. Na realidade, cada um dos pontos elencados é muito simples. Trata-se apenas de criar, modificar ou simplesmente aferir alguns pequenos arquivos de texto. No exemplo seguinte suporemos que o modem esteja conectado à segunda porta serial /dev/tty01 (COM2 no DOS).

10.1.3.4. Script de conexão e chat file

O script de conexão é o que vem especificado na linha de comando do pppd. Encontra-se em /etc/ppp/peers e tem geralmente o nome do provedor. Por exemplo, supondo que o provedor se chame BigNet e que o nosso nome de usuário junto ao provedor seja alan, assim poderia ser o script para a conexão:

No exemplo precedente, o script indica o chat file a ser utilizado para a conexão. Para uma explicação das opções: pppd(8).

O script de conexão chama o programa chat para efetuar a conexão física verdadeira e própria (inicialização do modem, composição do número, etc.). Os parâmetros a passar para o chat são bastante numerosos e convém pô-los em um arquivo, ainda que seja possível especificá-los inline no script de conexão. Por exemplo, supondo que o número do telefone do POP mais vizinho seja 02 99999999

10.1.3.7. Teste do modem

Antes de ativar a conexão pode ser conveniente realizar um teste do modem para verificar se tudo funciona corretamente. Para o teste pode-se usar o programa cu.

  1. Criar o arquivo /etc/uucp/port que contém as seguintes linhas:

    type modem
    port modem
    device /dev/tty01
    speed 115200	      
    (naturalmente, no lugar de /dev/tty01 é necessário substituir o dispositivo apropriado).

  2. Executar o comando cu -p modem para iniciar um teste interativo. Neste ponto podem-se enviar os comandos ao modem. Por exemplo:

    # cu -p modem
    Connected.
    ATZ
    OK
    ~.
    
    Disconnected.
    #	      
    No exemplo precedente é enviado ao modem o comando de reset (ATZ) e o modem responde com OK. Como se vê, para sair do cu é necessário executar o comando ~. (acento til seguido de ponto).

Se o modem parece não funcionar, a primeira coisa a verificar é se o modem está efetivamente conectado à porta usada pelo cu. Uma outra causa freqüente de problemas são os cabos.

10.1.4. Criando uma pequena rede doméstica

Operar redes é seguramente um dos pontos de força do Unix em geral e do NetBSD em particular, sendo a criação de uma rede doméstica uma operação muito simples (e econômica). Entre outras coisas, na Secção 10.2.1 será visto como configurar uma máquina NetBSD para fazê-la de gateway e de firewall da Internet para o resto da rede, permitindo a todas as máquinas da rede o acesso à Internet com uma só conexão ao provedor. Também aqui não há necessidade de aquisição de nenhum software complementar. O NetBSD já dispõe de todo o necessário. A única perspicácia necessária diz respeito à aquisição de uma placa de rede suportada pelo NetBSD (consultar o arquivo INSTALL para a relação dos dispositivos suportados).

A primeira coisa a fazer é instalar a placa de rede Ethernet na máquina e conectar-se a um hub, a um switch ou conectar-se diretamente entre si com os adequados cabos coaxiais e terminadores. Para este exemplo faça-se referência à figura Figura 10-1.

Uma vez instaladas as placas de rede é necessário atentar para que sejam reconhecidas corretamente pelo kernel estudando o output do dmesg. Por exemplo:

...
ne0 at isa0 port 0x280-0x29f irq 9
ne0: NE2000 Ethernet
ne0: Ethernet address 00:c2:dd:c1:d1:21
...      

Naturalmente é necessário que a placa esteja habilitada no kernel. Caso contrário, habilitá-la, recompilar o kernel e reinicializar. Por exemplo:

...
ne0 at isa? port 0x280 irq 9 # NE[12]000 ethernet cards
...      

Se a placa não for reconhecida pelo kernel, é necessário examinar o arquivo de configuração do kernel para corrigir o IRQ da placa de rede. O IRQ especificado no arquivo deve ser aquele que a placa realmente utiliza. Senão, na maior parte dos casos, o kernel não poderá reconhecê-la na inicialização. Se o IRQ for diferente, pode-se mudar a linha do arquivo de configuração e recompilar o kernel ou reconfigurar a placa (usualmente com um disquete de setup ou, para as placas mais antigas, um jumper).

Experimentemos agora executar o seguinte comando:

# ifconfig ne0
ne0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500 media: Ethernet 10base2      

O output do comando precedente mostra a atual configuração da placa de rede

Neste ponto pode-se passar à configuração de software, que é muito simples. Antes de tudo convém experimentar a placa, começando por configurá-la:

# ifconfig ne0 inet 192.168.1.1 netmask 0xffffff00      

O efeito do comando pode ser verificado com:

# ifconfig ne0
ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500 media: Ethernet 10base2 inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255      

Confrontando com o output do comando ifconfig anterior, pode-se notar que apareceu o endereço de rede especificado e as flags "UP" e "RUNNING". Se uma interface não estiver "UP", o sistema não a inicializará para transmitir pacotes.

Ao host foi atribuído o endereço IP 192.168.1.1, que pertence aos endereços de rede considerados "internos", ou seja, reservados às redes não visíveis da Internet. Neste ponto pode-se dizer que a configuração terminou e não resta senão testá-la. Se já existem outros hosts em rede, pode-se testar fazendo um ping para um outro host. Por exemplo, se o endereço IP de um host ativo da rede é 192.168.1.2, podemos prová-lo com:

# ping 192.168.1.2
PING ape (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=1.286 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=0.649 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=0.681 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=255 time=0.656 ms
^C
----ape PING Statistics----
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.649/0.818/1.286/0.312 ms      

Na próxima reinicialização a configuração da placa será efetuada novamente. Para automatizar a operação convém criar o arquivo /etc/ifconfig.ne0, que contém a linha

inet 192.168.1.1 netmask 0xffffff00      

Depois, no arquivo /etc/rc.conf é necessário configurar a opção

auto_ifconfig=YES      

enfim se inserem os endereços dos hosts em /etc/hosts. Por exemplo:

O arquivo /etc/nsswitch.conf deve ser modificado como já foi explicado no Exemplo 10-2.

Na próxima reinicialização tudo será configurado automaticamente.

Nota: neste exemplo foi criado o arquivo /etc/ifconfig.ne0 para que a placa de rede fosse reconhecida como ne0. Para outras placas de rede é necessário substituir pelo nome adequado.

Para configurar a rede é necessário, portanto, simplesmente conectar fisicamente os computadores, atribuir a cada um deles um endereço IP e configurar o arquivo /etc/hosts com os endereços de todos em cada host e modificar o arquivo /etc/nsswitch.conf. Trata-se de uma política de gestão elementar, adaptada somente a redes de pequenas dimensões.

10.1.5. Conectando dois PCs por via serial

Acontece às vezes (ao menos comigo) encontrar-me na necessidade de transferir arquivos de um portátil para um PC. Se o portátil não se pode conectar em rede e não tem o drive do disquete (ou talvez o arquivo é muito grande para um disquete), uma solução simples e eficaz é conectar as duas máquinas com um cabo null modem. Nas seções seguintes vejamos alguns exemplos de possíveis configurações.

10.1.5.2. Conectando Windows NT a NetBSD

Windows NT e NetBSD podem ser postos em rede de modo simples, com um cabo serial null modem. O procedimento consiste em se criar uma conexão de "acesso remoto" no NT e em inicializar o pppd no NetBSD. Vejamos na prática como se faz.

Supondo inicializar o pppd como root, é necessário criar um arquivo .ppprc em /root. O conteúdo do arquivo deve ser parecido com o seguinte:

connect '/usr/sbin/chat -v CLIENT CLIENTSERVER'
local
tty00  
115200
crtscts
lock   
noauth
nodefaultroute
:192.168.1.2	

O significado da primeira linha será explicado depois. 192.168.1.2 é o endereço IP que será designado pelo NetBSD ao host NT. tty00 é a porta serial usada para a conexão.

Do lado do NT é necessário antes instalar um modem do tipo null modem (conexão direta) e depois criar uma conexão de acesso remoto que use este modem. O driver null modem é padrão no NT, mas não se trata de um verdadeiro e próprio null modem. De fato, na ativação da conexão o NT envia a linha CLIENT e espera receber a resposta CLIENTSERVER (eis o significado da primeira linha do .ppprc: o chat deve responder ao NT, do contrário a conexão não chegará a bom termo). Para a criação da conexão utilizar o null modem, indicar um número telefônico qualquer (ele não será usado), escolher um servidor ppp, habilitar apenas o protocolo TCP/IP, usar endereço IP e nameserver indicados pelo servidor (o NetBSD, no caso). Ademais, selecionar o fluxo de controle de hardware e a porta 115200 8N1.

Nesse ponto pode-se efetuar a conexão:

10.1.5.3. Conectando Windows 95 ao NetBSD

Como para o caso do Windows NT, convém usar a conexão de acesso remoto do Windows e o servidor ppp do BSD. Infelizmente o Windows 95 não dispõe de um driver null modem, o que complica um pouco as coisas. A coisa mais simples é procurar um na Internet (trata-se de um arquivo .INF banal) e seguir as mesmas instruções do Windows NT, com a única advertência de remover a linha que reclama o chat do arquivo .ppprc.

Na falta de um driver null modem pode-se usar um pequeno truque:

Desse modo o programa chat, chamado na conexão, emula o comportamento de um modem padrão e restitui ao Windows as linhas de resposta que receberia de um modem: para cada comando AT enviado, o chat responde com um OK.

10.2. Tópicos avançados

10.2.1. IPNAT

Por trás da misteriosa sigla IPNAT esconde-se o Internet Protocol Network Address Translation, que permite o estradamento (routing) de uma rede IP fictícia (local) para uma verdadeira (Internet). Isto significa que com um só IP fornecido pelo provedor podem-se conectar à Internet vários computadores, criando uma falsa rede IP interna e estradando os dados através de um computador conectado à Internet e no qual funciona o IPNAT.

Para alguns exemplos de uso do IPNAT, ver no subdiretório /usr/share/examples/ipf, em particular os arquivos BASIC.NAT e nat-setup.

O exemplo apresentado nesta seção é ilustrado pela Figura 10-1. O host 1 pode conectar-se à Internet com o modem chamando o provedor, que designa um endereço IP dinâmico. Os hosts 2 e 3 não podem comunicar-se com a Internet. Para tornar possível a conexão também a eles, usam-se o IPF e o IPNAT.

10.2.1.1. Configuração do gateway/firewall

Se o kernel foi compilado com a opção GATEWAY ativa, esta fica habilitada por default sem que se executem operações adicionais de configuração. Para verificar se está habilitada:

# sysctl net.inet.ip.forwarding
net.inet.ip.forwarding = 1	

Se o resultado for "1", como no exemplo precedente, a opção está habilitada. Além disso, no arquivo de configuração do kernel deve estar habilitado o "pseudo-device ipfilter". Se o resultado todavia for "0", então a opção não está habilitada e há duas possibilidades:

  1. Compilar um novo kernel com a opção GATEWAY ativa.

  2. Ativar a opção no kernel atual com o seguinte comando:

    # sysctl -w net.inet.ip.forwarding=1	      

    As definições do sysctl são adicionadas ao arquivo /etc/sysctl.conf de modo que sejam restabelecidas automaticamente na reinicialização do sistema. Neste caso é necessário acrescentar

    net.inet.ip.forwarding=1		

As instruções seguintes explicam como criar uma configuração do IPNAT que entre em funcionamento automaticamente cada vez que nos conectamos com o provedor e se ativa o link PPP. Com esta configuração todos os PCs da rede doméstica poderão compartilhar a conexão à Internet, mesmo que não utilizem o NetBSD.

Criar o arquivo /etc/ipnat.conf contendo as seguintes regras:

map ppp0 192.168.1.0/24 -> 0/32 proxy port ftp ftp/tcp
map ppp0 192.168.1.0/24 -> 0/32 portmap tcp/udp 40000:60000
map ppp0 192.168.1.0/24 -> 0/32	

192.168.1.0/24 representa o conjunto de endereços internos a mapear. A primeira linha permite o funcionamento do tcp ativo através do NAT e é opcional. A segunda linha assegura que os pacotes tcp e udp sejam gerenciados corretamente pelo NAT (o portmapping é necessário devido à relação um/muitos). A terceira linha faz funcionar todo o resto (ICMP, ping, etc.).

Criar o arquivo /etc/ppp/ip-up que será chamado automaticamente na ativação do link PPP.

#!/bin/sh
# /etc/ppp/ip-up
/etc/rc.d/ipnat forcestart	

Criar o arquivo /etc/ppp/ip-down que será acionado automaticamente na desativação do link PPP.

#!/bin/sh
# /etc/ppp/ip-down
/etc/rc.d/ipnat forcestop	

ip-up e ip-down devem ser executáveis:

# chmod u+x ip-up ip-down	

10.2.2. NFS

Uma vez posta para funcionar a rede, é possível compartilhar arquivos e diretórios entre computadores graças ao NFS. Do ponto de vista do compartilhamento de arquivos, o computador que oferece acesso às suas hierarquias de diretórios é o computador servidor. O computador que acessa é o cliente. Um computador pode ser contemporaneamente cliente e servidor. Vejamos quais são as operações a cumprir.

O acesso a um diretório remoto baseia-se em dois pressupostos:

O comando mount é dotado de um rico sortimento de opções, não propriamente simples.

10.2.2.1. Exemplo de instalação do NFS

Este exemplo, bastante elaborado, foi tomado de uma situação real apresentada em uma mailing list. Suponhamos ter o seguinte cenário: cinco máquinas cliente (cli1, ..., cli5) devem acessar alguns diretórios em um servidor (buzz.toy.org). Alguns dos diretórios exportados pelo servidor são específicos dos clientes individuais, outros compartilhados por todos os clientes. Todos os clientes inicializam a partir do servidor e devem montar os diretórios. Os diretórios exportados pelo servidor são:

No servidor estão presentes os seguintes sistemas de arquivos

/dev/ra0a su /
/dev/ra0f su /usr
/dev/ra1a su /usr/src
/dev/ra2a su /export	

Nos clientes queremos obter os seguintes sistemas de arquivos

buzz:/export/cli?/root su /
buzz:/export/common/usr su /usr
buzz:/usr/src su /usr/src	

A configuração do servidor é a seguinte:

# /etc/exports
/usr/src -network 123.45.67.0 -mask 255.255.255.0
/export  -alldirs -maproot=root -network 123.45.67.0 -mask 255.255.255.0	

Obviamente 123.445.67.0 deve ser substituído com o endereço real da rede, como também a netmask. Ademais, pode ser necessário acrescentar: -maproot=root à linha com "/usr/src".

Nos clientes /etc/fstab deve conter

buzz:/export/cli?/root / nfs rw
buzz:/export/common/usr /usr nfs rw,nodev,nosuid
buzz:/usr/src /usr/src rw,nodev,nosuid	

Naturalmente para cada cliente é necessário substituir o número correspondente ao lugar do caracter "?" em /etc/fstab.

10.2.3. Instalando /net com amd

O autor deste seção (Instalando ...) è Hubert Feyrer .

10.2.4. Conectividade IPv6 e passagem para o IPv6 com o 6to4

O autor deste seção (Conectividade ...) é Hubert Feyrer

Esta seção explica de forma prática como chegar à conectividade IPv6 e, já que esta última ainda não é fácil de se obter de modo nativo, descreve amplamente as alternativas à conectividade nativa IPv6 e um método para se efetuar a transição até que as conexões IPv6 se tornem mais comuns.

Encontrar um ISP que ofereça a conectividade IPv6 nativa requer uma boa dose de sorte. O passo seguinte é encontrar um router capaz de gerenciar o tráfico. No momento nem todos os produtores de routers introduzem suporte a IPv6 em suas máquinas e, quando o fazem, é improvável que ofereçam estradamento ou switching IPv6 com aceleração de hardware. Uma alternativa econômica e de uso comum ao router hardware consiste no uso de um PC padrão, configurando-o como router. Por exemplo, utilizando um sistema operacional como o NetBSD e um software do tipo do Zebra para gerenciar os protocolos de estradamento. Esta solução é hoje bastante difundida para os sites que queiram logo a conectividade IPv6. A única desvantagem é que só serve um ISP que suporte IPv6 e uma conexão dedicada apenas para IPv6.

Na falta de conectividade nativa, pode-se ainda utilizar o IPv6 graças aos túneis. No lugar de enviá-los diretamente, os pacotes IPv6 são encapsulados dentro de pacotes IPv4, como mostrado na Figura 10-2. Usando a infraestrutura IPv4, os pacotes encapsulados são enviados a uma conexão real IPv6, que remove o encapsulamento e o envia em modo nativo.

Para usar os túneis há duas possibilidades. A primeira consiste no uso de um túnel que se chama "configurado". A segunda no uso de um túnel "automático". O túnel configurado caracteriza-se pelo fato de requerer uma preparação de ambos os lados do próprio túnel, geralmente sujeita a alguma forma de registro a fim de intercambiar os dados de configuração. Um exemplo desse túnel é o encapsulamento IPv6-sobre-Ipv4 descrito em [RFC1933] e implementado, por exemplo, pela interface gif(4) do NetBSD.

Um túnel automático requer um servidor público dotado de uma forma qualquer de conectividade IPv6, por exemplo via 6bone. Este servidor torna públicos os próprios dados de conectividade e ativa o protocolo de "tunneling" que não requer um registro explícito dos sites que o utilizam para se conectar. Um exemplo popular desse protocolo é o mecanismo 6to4 descrito em [RFC3056] e implementado pelo dispositivo stf(4) do NetBSD. Um outro mecanismo que não requer registro de informações IPv6 é o assim chamado 6over4, que implementa o transporte do IPv6 em uma rede IPv4 habilitada para o multicast ao invés de, por exemplo, ethernet ou FDDI. O 6over4 está documentado em [RFC2529]. A sua principal desvantagem é que é necessária a presença de uma infraestrutura multicast existente. Se não há uma estrutura desse tipo, a sua criação e configuração requer um esforço comparável à configuração de túnel IPv6 direto e, portanto, nesse caso, trata-se de uma hipótese que não vale a pena considerar.

10.2.4.1. Utilizando o IPv6 com o 6to4

O 6to4 oferece uma solução simples para a obtenção da conectividade IPv6 para os host que são dotados de uma conexão IPv4 (verSecção 9.1.7. Pode-se utilizar com endereços IPv4 estáticos e dinâmicos (o tipo mais comum no caso de conexão "dial-up" via modem). Quando se usa um endereço Ipv4 dinâmico, as mudanças de endereço são um problema para o tráfico de entrada, o que implica que não se pode usar este tipo de disposição para um servidor web.

A configuração do exemplo descrita nesta seção refere-se ao NetBSD 1.5.2.

10.2.4.7. Setup do 6to4

A presente seção descreve os comandos necessários para o setup do 6to4. Em resumo, as operações a cumprir são:

  1. configurar a interface

  2. estabelecer a rota por default

  3. instalar o Router Advertisement, se assim for desejado.

O primeiro passo a dar para instalar o 6to4 é atribuir um endereço IPv6 à interface 6to4, usando o comando ifconfig(8). Dada a configuração descrita há pouco, o comando é:

# ifconfig stf0 inet6 2002:3ee0:3972:1::1 prefixlen 16 alias  (local)	

Depois de ter configurado o dispositivo 6to4 com este comando, precisa instalar o routing para encaminhar o tráfico IPv6 ao gateway 6to4. O melhor método consiste no fixar uma rota:

# route add -inet6 default 2002:cdb2:5ac2::1 (remote)	

Note-se que o dispositivo stf(4) do NetBSD determina o endereço do gateway 6to4 da tabela de estradamento. Usufruindo desta característica é simples instalar um gateway 6to4 próprio, se se dispõe de uma verdadeira conexão IPv6, por exemplo, via 6bone.

Depois de ter dado estes comandos a conexão ao mundo do IPv6 estará ativa. Congratulações! Assumindo que a resolução dos nomes seja sempre efetuada por IPv4, pode-se agora efetuar um "ping" de um site IPv6 como www.kame.net ou www6.netbsd.org:

# /sbin/ping6 www.kame.net	

O último passo na instalação do IPv6 via 6to4 consiste na configuração do Router Advertisement, para o caso em que haja vários hosts na rede. Se bem que seja possível repetir as instalações 6to4 para cada nódulo, esta operação comporta custos de estradamento onerosos de um nódulo para outro. Os pacotes são enviados ao gateway 6to4 que os encaminha ao nódulo vizinho. Em vez disso é preferível instalar o 6to4 em uma única máquina e estabelecer o IPv6 nativo para a rede local.

Inicia-se com a designação de um endereço IPv6 à interface de rede. No exemplo seguinte assumimos que a sub-rede "2" da rede IPv6 seja a rede ethernet local e que o endereço MAC da interface ethernet seja 12:34:56:78:9a:bc. Ou seja, o endereço IP da interface ethernet do gateway local é 2002:3ee0:3972:2:1234:56ff:fe78:9abc. Atribuimos este endereço à interface ethernet:

# ifconfig ne0 inet6 alias 2002:3ee0:3972:2:1234:56ff:fe78:9abc	

No comando precedente, "ne0" é a interface que se refere à placa de rede ethernet. Naturalmente será diferente de acordo com a placa instalada no sistema.

Para o setup do router é preciso depois verificar se encaminha efetivamente os pacotes do dispositivo 6to4 local à interface ethernet e vice-versa. Para habilitar o forwarding dos pacote IPv6, definir "ip6mode=router" no arquivo /etc/rc.conf, que fixa em "1" o "sysctl" do net.inet6.ip6.forwarding.

# sysctl -w net.inet6.ip6.forwarding=1	

Para configurar o Router Advertisement é preciso aferir o arquivo /etc/rtadvd.conf. Este arquivo permite configurar muitas coisas mas, geralmente, a configuração por default de não conter dados vai bem. Com esta instalação os endereços IPv6 de todas as placas de rede serão tornadas públicas.

Depois de ter verificado que a configuração do Router Advertisement está correta e que o forwarding IPv6 está habilitado, pode-se inicializar o dæmon correspondente que no NetBSD chama-se rtadvd. Da primeira vez ele pode ser inicializado manualmente para efeito de teste. Depois convém usar os scripts de inicialização do sistema. Em qualquer hipótese, veremos todos os nódulos locais configurarem magicamente a sub-rede, tornada pública em virtude de seus endereços link-local pré-existentes.

# rtadvd	

10.2.4.8. Breve introdução ao uso do pkgsrc/net/6to4

Até agora descrevemos o funcionamento e instalação do 6to4. Para automatizar estas operações, por exemplo quando se conecta "online", convém utilizar o pacote "6to4", que determina o endereço IPv6 a partir do endereço IPv4 atribuído pelo provedor e ainda provê às necessárias configurações.

A instalação do pacote pkgsrc/net/6to4 requer as seguintes operações:

  1. Instalar o pacote compilando-o a partir do pkgsrc ou usando o pacote pré-compilado 6to4-1.nb1 com o comando pkg_add.

    # cd /usr/pkgsrc/net/6to4
    # make install
    	    
  2. Verificar se o pseudo-dispositivo stf(4) esteja incluso no kernel (ver acima).

  3. Configurar o pacote "6to4". Em primeiro lugar, copiar /usr/pkg/etc/6to4.conf-example em /usr/pkg/etc/6to4.conf, e depois ordenar as variáveis. Note-se que o arquivo utiliza a sitaxe perl.

    # cd /usr/pkg/etc
    # cp 6to4.conf-example 6to4.conf
    # vi 6to4.conf
    	    

    A página de manual 6to4(8) descreve todas as variáveis que se possam assentar no 6to4.conf. Quando se tem uma conexão IP dialup via PPP e não se está interessado no Router Advertising para as outras máquinas IPv6 da rede local doméstica ou do escritório, não é necessário efetuar nenhuma configuração. Se, ao contrário, se quer utilizar o Router Advertising, é necessário definir a variável in_if de acordo com o valor da interface ethernet interna. Por exemplo:

    in_if="rtk0";            # Inside (ethernet) interface 
  4. Agora já nos podemos conectar e depois executar o comando 6to4 manualmente:

    # /usr/pkg/sbin/6to4.pl start	    

    Com a conexão efetuada, usar o comando ping6(8) para verificar se tudo funciona corretamente. Em caso afirmativo, inserir as seguintes linhas no script /etc/ppp/ip-up que é ativado toda vez que nos conectamos:

    logger -p user.info -t ip-up Configuring 6to4 IPv6
    /usr/pkg/sbin/6to4.pl stop
    /usr/pkg/sbin/6to4.pl start	    
  5. Para ter o routing IPv6 também na rede interna, pode-se indicar ao 6to4.pl para fazer funcionar automaticamente o Router Advertising:

    # /usr/pkg/sbin/6to4 rtadvd-start	    

    Também este comando se pode por no script /etc/ppp/ip-up para torná-lo permanente.

  6. Se mudamos o /etc/ppp/ip-up para acionar automaticamente o 6to4, convém mudar também /etc/ppp/ip-down para encerrá-lo quando se corta a conexão e se passa offline. Os comandos a inserir em /etc/ppp/ip-down são:

    logger -p user.info -t ip-down Shutting down 6to4 IPv6
    /usr/pkg/sbin/6to4.pl rtadvd-stop   
    /usr/pkg/sbin/6to4.pl stop	    

10.2.4.9. Gateway 6to4

No momento não estão ainda disponíveis muitos gateways 6to4. Uma lista dos atualmente utilizáveis encontra-se em http://www.kfu.com/~nsayer/6to4/. Naturalmente convém escolher o mais vizinho. Nos testes parece que apenas 6to4.kfu.com e 6to4.ipv6.microsoft.com funcionaram. A Cisco tem um gateway junto ao qual é necessário registrar-se antes de poder usá-lo. Ver http://www.cisco.com/ipv6/.

Há ainda um servidor experimental 6to4 na Alemanha: 6to4.ipv6.fh-regensburg.de. Este servidor usa o NetBSD-1.5 e foi instalado com o uso do método descrito neste capítulo. A configuração da máquina pode-se ver no endereço http://www.feyrer.de/IPv6/netstart.local.

10.2.4.10. Conclusões e aprofundamentos

Se o confrontamos com o nível alcançado hoje pelo IPv4, o IPv6 ainda está dando os seus primeiros passos: funciona, muitos serviços e clientes já estão disponíveis mas ainda falta uma base de usuários. As informações contidas neste capítulo podem constituir um ponto de partida que permita um começo de experimentação e uso do IPv6.

Alguns links úteis: