LabExposed

BSD, Linux e software livre em geral.

Brincando Com Vnet Em Jail No FreeBSD

| Comments

Este tutorial é uma serie de dicas e comando para gerenciar Jails com o novo esquema de emulação de rede que ainda esta experimental no FreeBSD. Mas já é possível usar as features que o mesmo oferece e criar um ambiente totalmente personalizado com firewall e ferramentas de diagnósticos de rede dentro de uma jail.

Uma ótima definição sobre Jail esta disponível no Wikipedia no endereço:
http://pt.wikipedia.org/wiki/FreeBSD_jail

Para iniciar-mos o tutorial, precisamos como pre-requisito que você conheça como recompilar o kernel do FreeBSD, tarefa ao qual existem bons documentos disponíveis, a começar pelo o Handbook.

No kernel precisaremos das seguintes entradas no arquivo de configuração:

options LIBALIAS
options IPFIREWALL
options IPFIREWALL_NAT
options IPFIREWALL_FORWARD
options IPFIREWALL_DEFAULT_TO_ACCEPT

options DUMMYNET options HZ=1000

options VIMAGE

Assim que configurar o kernel, faca a recompilação do mesmo e reinicie o servidor.

No exemplo que estou citando aqui, estou usando um FreeBSD 8.1-RELEASE, para o mesmo eu apenas recompilei o kernel com as opções acima, fica ao seu critério configurar o FreeBSD, o importante que as opções citadas acima possam estar disponíveis no kernel.

Feito isso, podemos iniciar a configuração do FreeBSD, para agilizar a visualização do mesmo, eu preparei um vídeo com as alterações. Abaixo do vídeo deixei disponível os comandos para que possam ser anotadas com mais facilidade.

Utilizando ZFS, vamos criar o ambiente da Jail

zfs create tank/jails
zfs set mountpoint=/usr/jails tank/jails
zfs create tank/jails/jail_teste

Se voce executou um “make world” no seu sistema, muito provavelmente você tem os binários disponíveis no diretório “/usr/src”, então, use-o para criar o ambiente da Jail:

cd /usr/src
make installworld distribution DESTDIR=/usr/jails/jail_teste

Senão, configure a Jail usando o utilitário sysinstall conforme mostra o vídeo.

Vamos iniciar a Jail e configurar a rede:

mount -t devfs devfs /usr/jails/centreon/dev
jail -c vnet host.hostname=jail_test.server path=/usr/jails/jail_teste persist
ifconfig bridge0 create
ifconfig epair create
ifconfig bridge0 addm em0 addm epair0a up   # sendo em0 sua interface de rede real
ifconfig epair0a up
jls
 JID  IP Address      Hostname                      Path
 1  -               jail_teste.server               /usr/jails/jail_teste
ifconfig epair0b vnet 1

Agora precisamos entrar na Jail e configura-la:

jexec 1 /bin/csh

Configure a loopback:

ifconfig lo0 127.0.0.1/8 up

Configure o ip na interface:

ifconfig epair0b 192.168.4.231/24 up

route add default 192.168.4.3

add net default: gateway 192.168.4.3

echo ‘nameserver 8.8.8.8’ > /etc/resolv.conf

Teste a conectividade…

ping google.com

PING google.com (64.233.163.104): 56 data bytes 64 bytes from 64.233.163.104: icmp_seq=0 ttl=55 time=16.151 ms 64 bytes from 64.233.163.104: icmp_seq=1 ttl=55 time=18.904 ms ^C — google.com ping statistics — 2 packets transmitted, 2 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 16.151/17.527/18.904/1.377 ms

É isso… agora basta trabalhar dentro da sua Jail conforme um FreeBSD normal e usando os recursos de rede mais facilmente.

Abraços

Comments