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.
A lista seguinte contém um elenco dos arquivos de configuração da rede, alguns dos quais já vistos em capítulos precedentes. A descrição destes arquivos será objeto das próximas seções.
O banco de dados dos hosts locais. Cada linha descreve um host e contém o endereço IP, o nome do host e os eventuais codinomes (aliases). As redes de modestas dimensões podem ser configuradas usando-se apenas os arquivos dos hosts, sem necessidade de um name server.
Este arquivo especifica as modalidades operacionais para as funções de biblioteca do Internet Domain Name System. Geralmente contém os endereços dos "name servers".
Este arquivo é usado para a configuração automática da placa de rede na inicialização.
Contém o endereço IP do gateway.
Arquivo de configuração do Name Service Switch. Controla as modalidades de acesso aos vários bancos de dados que contêm informações sobre hosts, usuários, grupos, etc. Na prática este arquivo especifica a ordem com base na qual são consultados os bancos de dados. Por exemplo, a linha:
hosts: files dnsespecifica que as informações sobre os hosts vêm de duas fontes: o arquivo local /etc/hosts e o DNS (Internet Domain Name System), e que os arquivos locais são consultados antes do DNS.
Geralmente não é necessário modificar este arquivo.
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:
Solicitar as informações necessárias ao provedor.
Editar o /etc/resolv.conf e aferir o arquivo /etc/nsswitch.conf.
Criar os diretórios /etc/ppp e /etc/ppp/peers se não existem.
Criar o script de conexão, o chat file e o arquivo de opções pppd.
Criar o arquivo de autenticação de usuário e senha.
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).
a primeira coisa a fazer é solicitar ao provedor, que suponhamos chamar-se BigNet, para nos fornecer os dados que servem para se pode conectar. Em particular:
O número de telefone do POP (Point Of Presence) mais vizinho.
O tipo de autenticação utilizada.
O nome de usuário e a nossa senha para usar na conexão.
Os endereços IP dos nameserver.
O arquivo /etc/resolv.conf deve ser configurado com o uso de algumas informações fornecidas pelo provedor, em particular o DNS. Suponhamos que os dos DNS sejam "194.109.123.2" e "191.200.4.52".
Nota: a linha "lookup file bind" indica que os servidores de nomes são utilizados para as expressões não presentes em /etc/hosts. A linha está comentada porque a partir da versão 1.4 do NetBSD não é mais utilizada. As suas funções são desenvolvidas agora pelo arquivo /etc/nsswitch.conf. O novo Name Server Switch permite mudar os métodos de acesso aos bancos de dados usados pelos programas para acessar as informações básicas do sistema.
Nota: a única linha modificada neste arquivo é a que se inicia com "hosts:". Note-se que nas versões posteriores à 1.4.1 não deveria ser mais necessário efetuar essa modificação manualmente.
Os diretórios /etc/ppp e /etc/ppp/peers deverão conter os arquivos de configuração para a conexão. Ao término de uma nova instalação do NetBSD não existem e, assim, é preciso criá-los (chmod 700).
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).
Nota: em caso de problemas de conexão, é possível adicionar ao arquivo precedente duas linha contendo as opções
debug kdebug 4Para informações adicionais: pppd(8), syslog.conf(5).
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
Nota: ocorrendo problemas com o chatfile, pode ser cômodo conectar-se manualmente ao provedor com o cu: desse modo podemos ver com exatidão as linhas que recebemos. Para informações adicionais: cu(1).
Durante a fase de autenticação cada um dos dois sistemas verifica a identidade do outro. Na realidade, o provedor geralmente não espera ser autenticado, mas pretende fazê-lo com o usuário que se conecta.
Geralmente os provedores, para providenciar a nossa autenticação, utilizam um destes dois métodos:
login
PAP/CHAP
A maior parte dos provedores utiliza uma autenticação do tipo PAP/CHAP. Esta informação é geralmente fornecida pelo próprio provedor.
É suficiente criar o arquivo /etc/ppp/pap-secrets (ou /etc/ppp/chap-secrets), cujas linhas têm o seguinte formato:
usuário * password
Por exemplo:
alan * pZY9o
Nota: por motivos de segurança é bom que o arquivo pap-secrets seja de propriedade do root e tenha permissões '600'.
Trata-se de uma forma de autenticação cada vez menos usada. Se o provedor usa a autenticação login, o nome do usuário e a senha não devem ser especificados no pap-secrets ou no chap-secrets, mas no chatfile (naturalmente, nesse caso, é bom adotar permissões adequadas para o chatfile). Neste caso o chatfile simula um login interativo.
Resta para configurar apenas o arquivo das opções do pppd, que é o /etc/ppp/options (chmod 644).
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.
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).
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.
Nota: se quando se inicia o cu aparece uma mensagem que diz "Permission denied", verificar quem é o proprietário dos arquivos /dev/tty##: deve ser uucp. Por exemplo:
$ ls -l /dev/tty00 crw------- 1 uucp wheel 8, 0 Mar 22 20:39 /dev/tty00Se, contudo, o proprietário é root:
$ ls -l /dev/tty00 crw------- 1 root wheel 8, 0 Mar 22 20:39 /dev/tty00 $ cu -p modem cu: open (/dev/tty00): Permission denied cu: All matching ports in use
Finalmente tudo está pronto para ativar a conexão com o provedor, executando-se o comando
# pppd call bignet
onde bignet é o nome do script de conexão já descrito. Para ver as mensagens de conexão do pppd e do chat, executar o comando
# tail -f /var/log/messages
Para desconectar-se é preciso fazer um kill -HUP do pppd.
Quando a conexão está pronta e funcionando corretamente, chega o momento de criar alguns scripts que aumentam a nossa comodidade, permitindo a conexão e a desconexão automática. Por exemplo, para se conectar:
e para se desconectar:
Estes dois scripts usufruem do fato de que o pppd quando está ativo cria o arquivo /var/spool/locl/LDK..tty01, que contém o pid (identificador de processo) do pppd
Os dois scripts devem ser executáveis:
# chmod u+x ppp-up ppp-down
Nota: para acionar o pppd é preciso ser root ou pertencer ao grupo dialer ou ao grupo operator. Portanto, para o uso dos scripts por parte do usuário normal pode-se utilizar o sudo (/usr/pkgsrc/security/sudo) ou atribuir ao usuário um dos grupos acima citados.
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.
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.
Se ambas as máquinas a se coligar utilizam o NetBSD, encontramo-nos na situação mais favorável. A realização de uma conexão SLIP é pra lá de simples. Na primeira máquina
# slattach /dev/tty00 # ifconfig sl0 inet 192.168.1.1 192.168.1.2
na segunda máquina
# slattach /dev/tty00 # ifconfig sl0 inet 192.168.1.2 192.168.1.1
Nesse ponto pode-se experimentar a conexão com o ping. Por exemplo, a partir do segundo PC executar
# ping 192.168.1.1
Se tudo andou bem as duas máquinas estão em rede e podemos usar ftp, telnet, etc. Também pode ser conveniente inserir os nomes e os endereços dos hosts no arquivo /etc/hosts.
No exemplo precedente ambas as máquinas usavam a primeira porta serial (/dev/tty00).
Os endereços 192.169.x.x estão entre os reservados para as redes privadas. A primeira máquina tem o endereço 192.168.1.1 e a segunda tem o endereço 192.168.1.2.
Para se obter uma conexão mais veloz é necessário especificar o parâmentro -s velocidade para slattach.
Para poder executar ftp deve ter sido inicializado o inetd e deve estar habilitado o servidor ftpd.
Nota: se um dos dois PCs utiliza Linux, os comandos neste último são ligeiramente diferentes. Supondo dar ao PC Linux o endereço 192.168.1.2:
# slattach -p slip -s 115200 /dev/ttyS0 & # ifconfig sl0 192.168.1.2 pointopoint 192.168.1.1 up # route add 192.168.1.1 dev sl0Não se pode esquecer do "&" no primeiro comando.
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:
Conectar fisicamente os seriais das duas máquinas.
Ativar o pppd no NetBSD. (Para ver as mensagens enviadas pelo pppd: tail -f /var/log/messages).
Ativar a conexão de acesso remoto no NT.
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:
Criar uma conexão de acesso remoto como a descrita na Secção 10.1.5.2, mas utilizando o "Modem Standard".
No .ppprc substituir a linha que aciona o chat com a seguinte
connect '/usr/sbin/chat -v ATH OK AT OK ATE0V1 OK AT OK ATDT CONNECT'
Para a conexão proceder como no caso do Windows NT.
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.
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.
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:
Compilar um novo kernel com a opção GATEWAY ativa.
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
Criar o arquivo /etc/resolv.conf (como o do gateway).
Executar o comando route add default 192.168.1.1 (192.168.1.1 é o endereço IP do gateway anteriormente configurado).
Naturalmente é muito desconfortável repetir este comando a cada inicialização. Para tornar automática a configuração do gateway podem-se utilizar dois métodos equivalentes:
especificar o endereço do gateway utilizando a opção "defaultroute" do arquivo /etc/rc.conf
escrever o endereço do gateway no arquivo /etc/mygate
Se o cliente não é uma máquina NetBSD, a sua configuração será naturalmente diferente. Em uma máquina Windows, por exemplo, é necessário definir a propriedade "gateway" do protocolo TCP/IP.
Para se efetuar verificações podem ser úteis os seguintes comandos:
Mostra as tabelas de estradamento (parecido com o route show).
No cliente, mostra o caminho seguido pelos pacotes para chegar ao destino.
Para executar no gateway.
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.
Para o cliente como para o servidor deve ser compilado um kernel com a opção necessária habilitada (não é difícil de encontrar...).
O servidor deve habilitar os serviços RPC no /etc/inetd.conf.
No /etc/rc.conf o servidor deve habilitar o dæmon inetd e portmap, além da opção nfs_server.
Em /etc/rc.conf o cliente deve habilitar inetd e nfs_client.
O servidor deve elencar as exportações em /etc/exports e depois executar o comando kill -HUP `cat /var/run/mountd.pid.
O acesso a um diretório remoto baseia-se em dois pressupostos:
O computador remoto exporta o diretório.
O computador local monta o diretório remoto com o comando mount server:/xx/yy /mnt
O comando mount é dotado de um rico sortimento de opções, não propriamente simples.
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:
deve servir de diretório root para cada uma das máquinas cli?.
área de swap para cada uma das máquinas cli?.
diretório /usr comum a todas as máquinas cli?.
para montar como /usr/src em cada uma das màquinas cli? (comum).
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.
O autor deste seção (Instalando ...) è Hubert Feyrer <hubert@feyrer.de>.
O problema com o mount NFS (e com os outros tipos de montagem) é que geralmente podem ser realizadas apenas pelo usuário "root", o que pode resultar em muito desconforto para os outros usuários. Graças ao amd pode-se selecionar um diretório (no nosso caso será usado o diretório /net) sob o qual mesmo os usuários comuns possam efetuar a montagem do NFS, à condição de que o sistema de arquivos a que se deve acessar seja efetivamente exportado pelo servidor NFS.
Para verificar quais são os sistemas de arquivos exportados por um servidor de NFS, usar o comando showmount com a opção -e:
# showmount -e wuarchive.wustl.edu Exports list on wuarchive.wustl.edu: /export/home onc.wustl.edu /export/local onc.wustl.edu /export/adm/log onc.wustl.edu /usr onc.wustl.edu / onc.wustl.edu /archive Everyone
Para montar um diretório e acessar todo o seu conteúdo, incluindo-se os sub-diretórios (por exemplo /archive/systems/unix/NetBSD), basta entrar no diretório com cd:
# cd /net/wuarchive.wustl.edu/archive/systems/unix/NetBSD
O sistema de arquivos é montado automaticamente pelo amd e é possível acessar todos os arquivos, exatamente como se o diretório tivesse sido montado pelo administrador do sistema.
O diretório /net do nosso exemplo pode ser instalado com as seguintes operações (que incluem o setup do amd:
no /etc/rc.conf, selecionar a seguinte variável:
amd=yes
mkdir /amd
mkdir /net
Usando /usr/share/examples/amd/master como exemplo, acrescentar a seguinte diretriz /etc/amd/master:
/net /etc/amd/net
Usando /usr/share/examples/amd/net como exemplo, acrescentar as seguintes linhas a /etc/amd/net:
/defaults type:=host;rhost:=${key};fs:=${autodir}/${rhost}/root * host==${key};type:=link;fs:=/ \ host!=${key};opts:=ro,soft,intr,nodev,nosuid,noconn
Reinicializar a máquina, ou reinicializar o amd manualmente:
# sh /etc/rc.d/amd restart
O autor deste seção (Conectividade ...) é Hubert Feyrer <hubert@feyrer.de>
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.
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.
O setup IPv6 do 6to4 não consiste de um endereço só do lado do usuário. De fato, obtém-se uma rede /48 inteira! Os endereços IPv6 são extraídos a partir de um simples endereço IPv4 original. O prefixo "2002:" é reservado aos endereços de tipo 6to4 (isto é, aos endereços IPv6 derivados do IPv4). Os 32 bits seguintes contém o endereço IPv4. Isto corresponde a ter a disponibilidade de uma rede /48 inteira, deixando 16 bits de espaço para 264 nódulos. A Figura 10-3 mostra a construção do endereço (ou melhor, do conjunto de endereços) IPv6 a partir do IPv4.
Graças ao prefixo 6to4 e à unicidade do endereço IPv4, o bloco de endereços IPv6 obtidos é também único e atribuído à máquina que tinha o endereço IPv4 de partida.
Diferentemente do setup configurado do túnel "IPv6-over-IPv4", não é necessário registrar-se em um gateway 6bone que encaminhe o tráfico IPv6. Em lugar disso, já que o endereço IPv6 deriva do IPv4, as respostas são enviadas ao usuário do gateway 6to4 mais próximo. O encapsulamento dos pacotes é eliminado por uma interface de rede habilitada para 6to4 que depois providencia seu encaminhamento de acordo com o estradamento instalado localmente (caso haja mais de uma máquina conectada à rede 6to4 que foi estabelecida).
No que diz respeito ao envio de pacotes IPv6 (tráfico de saída), a interface de rede habilitada para 6to4 pega o pacote IPv6 e o encapsula em um pacote IPv4. É necessária uma conexão no gateway 6to4, por sua vez conectado ao 6bone, que elimine o encapsulamento dos pacotes e os encaminhe ao 6bone, como se ilustra na Figura 10-4.
Diferentemente do setup com um "túnel pré-configurado", neste caso não se consegue usualmente instalar filtros para os pacotes, a fim de bloquear pacotes 6to4 provenientes de fontes não autorizadas, exatamente por causa do método de funcionamento do mecanismo 6to4. Os pacotes com as seguintes características não deveriam ser considerados pacotes 6to4 válidos e, assim, é justificado filtrá-los:
endereço fonte/destino IPv4 não especificado: 0.0.0.0/8
endereço de loopback (v4) como fonte/destinação: 127.0.0.0/8
multicast IPv4 na fonte/destinação:224.0.0.0/4
broadcast limitado: 255.0.0.0/8
endereço de broadcast de sub-rede na fonte/destinação: depende do setup do IPv4
A página de manual stf(4) do NetBSD relata alguns erros comuns de configuração que são interceptados pelo stack KAME e contém também algumas sugestões para a filtragem de pacotes, mesmo se, por causa dos requisitos desses filtros, o 6to4 não é completamente seguro. Todavia, se os pacotes 6to4 fictícios tornam-se um problema, pode-se utilizar a autenticação IPsec para assegurar-se de que os pacotes IPv6 não sejam modificados.
Para configurar o IPv6 via 6to4 são necessárias algumas informações que tais:
O endereço IPv4 local, que se pode determinar com o comando netstat -i ou com o netstat -i na maior parte dos sistemas Unix. Quando se usa um gateway com NAT ou similar, é preciso utilizar o endereço oficial, visível do exterior, e não o privado (10/8 ou 192.168/16).
Neste exemplo será usado o endereço IP local 62.224.57.114.
O endereço IPv6 local derivado do endereço IPv4. Ver Figura 10-3.
Neste exemplo o endereço é 2002:3ee0:3972:0001::1 (62.224.57.114 == 0x3ee03972, 0001::1 foi escolhido arbitrariamente).
O endereço IPv6 do gateway 6to4 a utilizar. O endereço IPv6 está bom porque contém o endereço IPv4, na habitual tradução do 6to4.
Neste exemplo usaremos 2002:c25f:6cbf::1 (== 194.95.108.191 == 6to4.ipv6.fh-regensburg.de).
Para elaborar pacotes do tipo 6to4, o kernel do sistema operacional deve ser posto em condição de reconhecê-lo e gerenciá-lo. É necessário, portanto, habilitar um driver específico.
Para preparar o kernel do NetBSD para o uso do IPv6 e do 6to4, é necessário ativar as seguinte linhas no arquivo de configuração do kernel:
options INET6 # IPv6 pseudo-device stf # 6to4 IPv6 over IPv4 encapsulation
Nota: o dispositivo stf(4) não está ativo por default.
Recompilar o kernel e reinicializar a máquina para ativar o novo kernel. Ver Capítulo 7 para informações adicionais sobre a configuração, compilação e instalação de um novo kernel.
A presente seção descreve os comandos necessários para o setup do 6to4. Em resumo, as operações a cumprir são:
configurar a interface
estabelecer a rota por default
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
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:
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
Verificar se o pseudo-dispositivo stf(4) esteja incluso no kernel (ver acima).
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
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
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.
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
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.
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:
Um exemplo de script para instalar o 6to4 em máquinas BSD pode-se encontrar em http://www.netbsd.org/packages/net/6to4/. O script determina o endereço IPv6 da máquina e instala, se for desejado, o Router Advertising. O script foi projetado pensando nos ambientes com conexão dial-up, com endereço local que muda periodicamente.
As implementações dos Unix BSD têm a própria documentação. Os links mais interessantes podem ser encontrados em http://www.netbsd.org/Documentation/network/ipv6/ para o NetBSD, http://www.freebsd.org/doc/en_US.ISO_8859-1/books/handbook/ipv6-implementation.html para o FreeBSD ver as páginas 61 e 62 do Administrator's Guide do BSD/OS em http://www.bsdi.com/products/internet/release-notes/rn42.pdf.
Os projetos que trabalham para implementar os stacks do protocolo IPv6 são o KAME para o BSD e o USAGI para o Linux. Os sites correspondentes são http://www.kame.net/ e http://www.linux-ipv6.org/. Uma lista de hosts e routers pode ser encontrada em http://playground.sun.com/pub/ipng/html/ipng-implementations.html.
Além do arquivo oficial RFC no endereço ftp://ftp.isi.edu/in-notes, podem-se encontrar informações sobre o IPv6 em muitos sites da web. O primeiro e mais importante é a página 6Bone em http://www.6bone.net/. O 6Bone foi criado para servir como banco de testes para o IPv6, e agora é uma parte importante do mundo dos usuários do IPv6. Outras páginas da web contendo informações sobre o IPv6 são http://www.ipv6.org/, http://playground.sun.com/pub/ipng/html/ e http://www.ipv6forum.com/. A maior parte destes sites, que vale a pena visitar, contêm outros links úteis.