Archive

Archive for the ‘NetBSD’ Category

The Vectra’s rise and fall

13 de novembro de 2014 1 comentário

Hi folks,

A few years ago I wrote about my personal server: An HP Vectra VL5/100, which was running NetBSD in that occasion. If you’re still interested, there’s a portuguese link here with the setup, and here’s a picture taken on the day it arrived:

HP Vectra

Its hostname was vectra.timm.net (also vectra.serveblog.net), and it was a great computer. The hostname was chosen due Vectra is also an old car I like, and I really think it’s a cool hostname. 🙂  That said, Vectra was built in 1996, and had been used by a former colleague of mine, who gave me in January 2008 when I was still living in Goiania. I don’t know exactly regarding the original configuration, but when I received it, was already a Pentium 166MHz with 96MB Ram and a 4GB HD drive. This colleague of mine was freeing some space on his house, and knowing I like to play with old computers, he gave me instead of discarding on the nearest garbage can he could find.

Leia mais…

Usando (e criando um roteador com) NetBSD

15 de dezembro de 2008 7 comentários

O princípio. Senta que lá vem história!

Há muitas coisas que realmente adoro. E, uma delas, são os servidores. Máquinas preparadas para o funcionamento 24×7, com pouquíssimo downtime. Ahh, os servidores!  ^-^’  O gerenciamento, a instalação, configuração, os testes, e os uptimes são coisas muito legais de se acompanhar no dia-a-dia. Pra quem gosta, claro. E, como sysadmin, é legal ter algo para brincar nas horas vagas.

Então, em casa, possuo um HP Vectra VL5/100. Não é um servidor, mas sim um desktop construído em 1996 com uma incrível configuração: Pentium 166, 96MB Ram (em pentes EDO!) e funcionando perfeitamente. Ganhei-a de um amigo que estava se desfazendo de suas velharias tecnológicas, e preparei a máquina para executar a função de um servidor doméstico. É basicamente um roteador, controlado por porta serial e cabo RS-232!

Assim, quando o ganhei, troquei o HD por um cartão Compact Flash de 2GB espetado na IDE através de um adaptador (R$60,00 no total, pelo ML), substituindo o velho e barulhento Quantum Fireball de 4GB. Retirei o fan do processador e coloquei um dissipador de cobre, do meu finado Athlon XP, bem como uma melhora na circulação de ar. Essa máquina veio com Windows Millenium, e coloquei o sistema operacional Linux assim que o recebi. Mas, por ser bem velho, a única coisa que funcionou nele foi o Slackware 11. Instalada em Maio de 2008, sobreviveu até alguns dias atrás com pouquíssimo downtime.

Os problemas

Quando instalei-o, originalmente, queria utilizar o Vectra com FreeBSD. Porém, o sistema nem bootava, indicando alguma incompatibilidade feia com a controladora IDE do rapaz. Foi até tolerável, até por que, pior que configurar um ADSL PPPoE com modem bridgeado no FreeBSD é só configurar esse mesmo ADSL PPPoE com modem bridgeado no Solaris. O Slackware 11 funcionou muito bem enquando durou.

Porém, para acelerar o longo processo de boot, com mais de um minuto e trinta segundos, havia retirado a verificação do sistema de arquivos ReiserFS, o que garantiria a rapidez no caso de um reboot inesperado. Não me causou problemas durante seis meses, até o momento que mudei de casa.

Na casa nova, a rede elétrica é monofásica, e qualquer coisa estava provocando a reinicialização do Vectra. Em menos de um mês o sistema de arquivos já estava destruído, e numa bela manhã, o sistema operacional já não bootou mais. Basicamente um fsck.reiserfs –rebuild-tree resolveria o problema. Mas, pelo gabinete ser desktop (e o monitor ficar em cima), e a máquina não ter cdrom nem disquete, o trabalho seria o mesmo de uma reinstalação.

Então, tive um lapso de vontade de testar novamente o NetBSD no Vectra. Sem motivo ou razão aparente. No segundo semestre da faculdade, havia instalado o NetBSD em várias máquinas velhas de um laboratório que não possuia internet. Utilizava mesmo para idiotices, e nunca havia explorado nem o gerenciamento de pacotes do sistema operacional. Será que funcionaria nessa máquina? Afinal, o FreeBSD não funcionou, mas não custaria nada tentar.

E eis que veio o NetBSD!

Testei dias antes numa máquina virtual, no trabalho, e como me diverti! Unix _É_ o sistema. (E que o Open Group não me leia). É ótimo editar um rc.conf, ler os manuais bem elaborados e diretos que os desenvolvedores de sistemas BSDs criam, bem como seus handbooks. Decidi-me a instalar o NetBSD no Vectra. A instalação foi horrivelmente rápida, e o sistema estava instalado na velha carroça menos de 30 minutos depois.

Informações básicas sobre o sistema

1) Gerenciamento de pacotes

O NetBSD possui o pkgsrc, ferramenta de gerenciamento de pacotes semelhante ao Ports, do FreeBSD, e ao Portage, do Gentoo Linux. Porém, numa máquina com 166MHz e 2GB de armazenamento físico, nem cogitei a instalação compilação de qualquer programa através do pkgsrc.

Então, os repositórios do NetBSD também possuem pacotes pré-compilados para o sistema operacional. Óbvio que não garante a mesma otimização, mas quebra o galho e é muito fácil de gerenciar. Para isso, no NetBSD, os comandos são o pkg_add, pkg_info, pkg_delete, pkg_view e pkg_admin. Sintaxe mais limpa impossível: pkg_add (nomedopacote).

Os pacotes são buscados através do caminho absoluto (ou relativo), ou então através da variável de ambiente $PKG_PATH. Como a máquina não tem cdrom, setei-a apenas para o FTP do NetBSD com os pacotes atualizados:

export PKG_PATH=ftp://ftp.netbsd.org/pub/NetBSD/packages/4.0/i386/All

A resolução de dependências é automática e eficaz, não como o horror do dpkg utilizado no Debian Linux.

Por ele instalei o bash, rp-pppoe (que não funcionou), o screen, apache, samba, pciutils, wget, vim (:split > ALL!) e irssi. Assim como o pkg-get do Solaris, os programas instalados pelo pkg_add ficam localizados numa hierarquia separada do resto do sistema: /usr/pkg/(whattever).

2) Configurações a nível de sistema

Fora os arquivos de configuração (que são iguais em todos os Unices/Linuces), uma coisa que eu nunca fui muito fã no Linux são as configurações na /proc. Funciona bem, mas organização do diretório não é muito prática. Assim como no FreeBSD, o NetBSD utiliza o comando sysctl. O sysctl -a mostra todas as configurações de sistema em execução naquele momento. Para que as configurações possam ser carregadas automaticamente, basta editar o arquivo /etc/sysctl.conf. O sysctl usa MIBs, assim como as de SNMP.

As configurações de inicialização, também como o FreeBSD e como várias distribuições Linux (como o Arch), são realizadas no arquivo /etc/rc.conf. Os scripts ficam no diretório /etc/rc.d. E, os exemplos como de praxe, ficam em /etc/defaults/rc.conf. Boa parte das configurações são realizadas somente nesses dois arquivos.

Os arquivos de exemplo também ficam localizados em /usr/share/examples e /usr/pkg/share/examples.

Configuração do Roteador

E enfim, a configuração de um roteador no NetBSD. Todos os programas necessários para a criação já estavam disponíveis após a instalação, bastou configurá-los: DHCPD, PPPOECTL e Packet Filter. A configuração do DHCPD é simplíssima como em qualquer sistema operacional, nem vou explicar aqui.

a) Definindo o IP fixo da interface de rede interna:

ifconfig ex1 inet 192.168.1.1 netmask 255.255.255.0 up

Para subir automaticamente durante o boot, basta adicionar ao /etc/rc.conf:

ifconfig_ex1=”192.168.1.1 netmask 255.255.255.0″

b) Configuração do PPPoE

Primeiramente é preciso criar o dispositivo virtual que utilizará o pppoe. Isso pode ser feito com os seguintes comandos:

ifconfig pppoe0 create
ifconfig pppoe0 inet 0.0.0.0 0.0.0.1 down

Após isso, é necessário vincular o dispositivo físico ao virtual:

ifconfig ex0 plumb
ifconfig ex0 up
pppoectl -e ex0 pppoe0

Então a linha de conexão. A senha é real, pois se trata da operadora GVT, e não é única.

pppoectl pppoe0 myauthproto=pap ‘myauthname=turbonet@turbonet’ ‘myauthsecret=gvt25’ hisauthproto=none

O status pode ser acompanhado pelo comando pppoectl pppoe0. Após a conexão, subir a interface:

ifconfig pppoe0 up

Para conectar automaticamente durante o boot, basta criar o arquivo /etc/ifconfig.pppoe0 com o seguinte conteúdo:

create
! /sbin/ifconfig ex0 up
! /sbin/pppoectl -e ex0 $int
! /sbin/pppoectl $int myauthproto=pap ‘myauthname=turbonet@turbonet’ ‘myauthsecret=gvt25’ hisauthproto=none
0.0.0.0 0.0.0.1 up

E adicionar os seguintes ítens ao /etc/rc.conf:


ifwatchd=YES
ipnat=YES

c) Habilitar o roteamento de pacotes

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

Para ativar a cada boot, basta editar o /etc/sysctl.conf e adicionar o mesmo parâmetro ao final do arquivo.

d) Criação do ipnat.conf

Adicionar as linhas a seguir no arquivo /etc/ipnat.conf

map pppoe0 192.168.1.0/24 -> 0/32 portmap tcp/udp 40000:60000 mssclamp 1440
map pppoe0 192.168.1.0/24 -> 0/32

Os dois parâmetros estabelecem o nat das redes informadas através do dispositivo virtual pppoe0.

Novamente, para serem carregados durante o boot, basta adicionar no /etc/rc.conf:

ipnat=YES

Estado final do arquivo /etc/rc.conf:

#       $NetBSD: rc.conf,v 1.96 2000/10/14 17:01:29 wiz Exp $
#
# see rc.conf(5) for more information.
#
# Use program=YES to enable program, NO to disable it. program_flags are
# passed to the program on the command line.
#

# Load the defaults in from /etc/defaults/rc.conf (if it’s readable).
# These can be overridden below.
#
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
fi

hostname=”Vectra.timm.net”
sshd=yes
ifconfig_ex1=”192.168.1.1 netmask 255.255.255.0″
#defaultroute=”192.168.1.2″
ifwatchd=YES
ipnat=YES
dhcpd=YES  dhcpd_flags=”ex1″ #Definir interface para o sinal DHCP
smbd=YES
nmbd=YES
samba=YES
apache=NO
pf=YES
pf_rules=”/etc/pf.conf”
clear_tmp=YES

# If this is not set to YES, the system will drop into single-user mode.
#
rc_configured=YES

# Add local overrides below
#
wscons=YES

Reboot para testar se tudo vai subir automaticamente, e está pronto seu roteador em NetBSD! 🙂

Pendengas

a) Uma coisa que eu realmente não gosto nos Unices (independente da família) é a nomenclatura dos dispositivos de rede. No Linux, independente do tipo, é sempre ethX, wlanX, pppX. No Unix não, e no NetBSD não é diferente. Minhas duas 3Coms, contidas no Vectra, são as ex0 e ex1. Placas de rede de outro modelo obterão nomenclaturas diferentes, mas não mudará no contexto do artigo.

b) Meu console serial, infelizmente, agora só funciona quando quer. O arquivo /etc/ttys está corretamente configurado, e não se trata de problema no cabo RS-232 ou nos adaptadores. O pessoal do canal #netbsd, da FreeNode, bem que tentou. Mas não deu certo.

c) Me adaptar a utilizar o vmstat no lugar do free… 😛

Conclusões

Sério. Esse Vectra nunca foi tão rápido em toda a sua (longa) existência. O NetBSD é um sistema operacional leve, enxuto e eficaz, e não tão repleto de cacarias como o FreeBSD. Isso pode garantir alguns anos a mais na existência deste velho guerreiro, apesar de continuar cogitando a aquisição de um Pentium 3 (Dell, Compaq, HP ou outro montado) para executar a mesma função quando este vier a óbito! 😀

Porém, também é interessante para aqueles que reclamam sem conhecer. O NetBSD não é tão fácil como o Linux no quesito usuabilidade, afinal é um Unix de verdade. (Novamente, que o Open Group não me leia).  Recomendo para todo e qualquer geek (e aos usuários Windows também, pra aprenderem a não recalmar  😀 ) a utilização deste sistema operacional, se possível em máquina pré-histórica equivalente. Vale a pena e é uma excelente chance de aprendizado.

E sim. Cogito seriamente em adotá-lo como desktop.

Stay safe!
Lucas Timm.

UPDATE: Vivendo e aprendendo. Não sabia que o Linux também tinha sysctl…

Categorias:NetBSD Tags:,