Virtualizando Windows com Stub Domains no Xen

11 12 2008
modelo stub domains

modelo stub domains

Salve salve!

Acabou de ser publicado no site do xen-br o howto que fiz sobre SutbDomais.

Link: xen-br.org





xen-tools

26 09 2008

Xen-tools é um conjunto de scripts que facilitam a instalação de domUs no Debian.   Atualmente permite instalações de Debian, Ubunto e CentOS4.

Podemos instalar o xen-tools via apt, porém se estiver usando uma versão do xen diferente da que está nos repositórios,  recomendo fazer a instalação do xen-tools “na unha”. Não é nada complicado.

Instalando dependências:

aptitude install libconfig-inifiles-perl libexpect-perl \
libio-pty-perl libio-stty-perl libterm-readline-gnu-perl \
librpm4.4 libneon27 libterm-size-perl  libtext-template-perl \
rinse rpm reiserfsprogs vnstat

Baixando e instalando o xen-tools:

wget http://www.xen-tools.org/software/xen-tools/xen-tools-3.9.tar.gz
tar -xvzf xen-tools-3.9.tar.gz
cd xen-tools-3.9
make install

Instalando o domU:

xen-create-image --hostname etch --lvm xendisk --ip 10.0.0.26 \
--netmask 255.255.255.0 --gateway 10.0.0.3 --dist=etch \
--verbose --force --mem=256 --size=8G

Existem diversos exemplos de uso no site do projeto.





HowTo – Criando uma máquina virtual RedHat no Debian com xen3.3

18 09 2008

Considerações iniciais.
Este howto foi feito com base numa instalação do debian lenny com o xen-3.3.0, porém deverá funcionar com versões anteriores.
Estou partindo do princípio que o xen já esteja instalado e funcionando. Se ainda não o instalou, siga o howto de instalação do xen3.3.0 do xen-br.

Preparando o Disco Virtual LVM

Resumão sobre LVM:
PV – Physical Volume: Basicamente serve para criar o UUID, o UUID é um identificador unico para cada volume fisico, então PVs são volumes físicos.
VG – Volume Group: Um VG é o agrupamento de vários PVs.
LV – Logical Volume: Os LVs podem ser grosseiramente chamados de partições, aqui você formata e monta o sistema de arquivos no Linux, essa e a única camada que realmente acessível para o usuário.

Criando Phisical Volume
Para criar um volume físico não precisa atribuir nenhum nome para ele, apenas apontar qual dispositivo que deverá ser usado.
# pvcreate /dev/sda3

Criando Volume Group
Neste exemplo, o volume group chamará xen-disks
# vgcreate xen-disks /dev/sda3

Criando Logical Volume
O volume lógico chamará storm
# lvcreate –name storm –size 10g xen-disks

Para conferir se o volume lógico foi criado corretamente, execute o comando lvdisplay
# lvdisplay

Instalando NFS
Iremos fazer a instalação da máquina virtual via NFS, para isso devemos instalar os pacotes necessários:
# aptitude install nfs-kernel-server portmap

edite o arquivo /etc/exports
Adicione a linha:
/media/cdrom *(ro)

# /etc/init.d/nfs-kernel-server restart
# exportfs

Para conferir se o compartilhamento está funcionando execute: # showmount -e ip_do_servidor

Preparando a máquina virtual
Neste exemplo a máquina virtual chamará “storm”.
Crie o arquivo de configuração da máquina virtual em /etc/xen/storm.
Precisamos indicar o local dos arquivos vmlinuz e initrd.img, eles são os responsáveis por iniciar o processo de instalação.
Exemplo de arquivo de configuração:

kernel = "/media/cdrom0/images/xen/vmlinuz"
ramdisk = "/media/cdrom0/images/xen/initrd.img"
name = "storm"
memory = "256"
disk = [ 'phy:/dev/xen-disks/storm,xvda,w' ]
vif = [ 'bridge=xenbr0' ]
vcpus = 1
on_reboot = 'destroy'
on_crash = 'destroy'

Criando a máquina virtual:
# xen create -c /etc/xen/storm

A instalação iniciará normalmente em modo texto.
Na tela que perguntar qual o tipo de mídia será usada, escolha “Imagem NFS”.
Na tela de configuração do NFS, digite o ip da máquina e o compartilhamento, conforme abaixo.

Nome do servidor NFS: ip_da_maquina Diretório Red Hat Enterprise Linux Server: /media/cdrom

Após terminar a instalação, a vm será “desligada”. Neste momento edite novamente o arquivo de configuração e remova os parametros:
kernel = “/media/cdrom0/images/xen/vmlinuz”
ramdisk = “/media/cdrom0/images/xen/initrd.img”

Salve o arquivo e inicie novamente a máquina virtual:
# xm create -c storm

Aparecerá o grub do RedHat e a vm será iniciada.





Instalando o Pidgin

30 05 2008

Pidgin é um excelente client de mensagens instantâneas, que suporta os mais conhecidos protocolos (e os não tão conhecidos também), tais como: MSN, Google Talk, IRC, ICQ, Yahoo!, AIM, XMPP dentre muitos outros.

Vou descrever como instalar a última versão do Pidgin, já que a que está nos repositórios do Etch é véia pakas =p

Primeiramente é necessário a instalação de algumas dependências: aptitude install libxml-parser-perl libgtk2.0-dev libxml2-dev libgnutls-dev libstartup-notification0-dev libgstreamer0.10-dev libgtkspell-dev libmeanwhile-dev libavahi-glib-dev libdbus-1-dev libdbus-glib-1-dev network-manager-dev libperl-dev tcl8.4-dev tk8.4-dev

Agora baixe o fonte do pidgin diretamente do site: http://www.pidgin.im/download/source

Descompacte o arquivo com o comando tar -jxf pidgin-2.2.0.tar.bz2 e entre no diretório criado.

Crie o Makefile para compilação com o comando: ./configure

Para compilar e instalar o programa: make && make install

Agora basta reiniciar seu gerenciador de janelas que o pidgin estará no menu Aplicações. =D





Virtualizando

9 05 2008

Depois de algumas semanas tenebrosas estou voltando a postar regularmente no blog. Também não ocorreram muitas novidades recentemente… No meu tempo livre estou pegando para fazer a interface web para a nova versão do post-la. Mas o meu objetivo agora é estudar virtualização. Comecei a fazer alguns testes com o Xen (zêin) e me empolguei bastante! Ajudei o pessoal do xen-br a homologar o wiki de Compilação do Xen 3.2 do Debian Etch, e agora estou enchendo o saco deles na freenode (#xen-br) rssrss. Neste sábado vou participar do Mão na Massa Xen promovido pela Tempo Real. Quem vai dar o curso é o Jardel Fernandes, que também é meu professor na Faculdade. Pra quem tiver interesse em fazer este treinamento de Xen, haverá outra turma em Julho.

Então é isso… assim que pegar as manhas de virtualizar pingüins eu posto aqui uns tutoriais =)





Replicando base LDAP

14 03 2008

Demorei um pouco, mas estou postando as configurações para fazer réplica do OpenLDAP.
É interessante utilizarmos réplica da base ldap para autenticar serviços em outros servidores. É só pensar do seguinte modo: O que é melhor: meu squid ter que ir até o PDC se autenticar, ou ele fazer a consulta ldap localmente?
Com réplica matamos dois gatos com uma paulada só! Pois criamos uma base de contingência (ou várias) e amenizamos o tráfego na rede.

Levaremos em conta que o openldap esteja instalado e funcionando nos dois servidores.

Configuração do /etc/ldap/slapd.conf no servidor primário:

replogfile /var/log/ldap/slapd.replog
replica host=ip_servidor_secundario:389
 binddn="cn=admin,dc=dominio,dc=com,dc=br"
 bindmethod=simple credentials=senha

Atenção!! Atente para o espaço em branco no inicio das duas ultimas linhas. ;)

Configuração do /etc/ldap/slapd.conf nos servidores secundário:

updatedn "cn=admin,dc=dominio,dc=com,dc=br"
updateref ldap://ip-servidor-primario:380

É necessário que o servidor OpenLDAP secundario tenha os mesmo dados que o servidor OpenLDAP primario, para isto iremos gerar uma copia da base do servidor OpenLDAP primario:
slapcat -v -l /home/usuario/base.ldif
Transfira o arquivo para o servidor secundário, e importe os dados:
slapadd -v -l base.ldif

Antes de iniciar o ldap no servidor secundário verifique as permissões no diretório: /var/lib/ldap/. Todos os arquivos devem ser do usuário openldap. (chown openldap.openldap /var/lib/ldap/*)
inicie o ldap.

Agora faça uma alteração na base principal e verifique se o servidor secundário está sendo atualizado.

That’s all…





netfilter/iptables turbinado com layer7

13 02 2008

Layer7 é um excelente plugin para o netfilter/iptables que trabalha na camada de aplicação, dando maior flexibilidade ao firewall. Este é um tutorial para aplicação do patch no kernel e no iptables.

baixar fontes do kernel (http://kernel.org)

baixar fontes do layer7 e os protocolos (http://sourceforge.net/projects/l7-filter)

baixar fontes do iptables (http://www.netfilter.org)
ftp://ftp.netfilter.org/pub/iptables/

descompactar kernel em /usr/src
descompactar layer7 e protocolos em /usr/src/layer7

aplicar patch do layer7:
cd /usr/src/linux
patch -p1 < /usr/src/layer7/netfilter-layer7-v2.9/kernel-2.6.18-2.6.19-layer7-2.9.patch

configurar o kernel: make menuconfig

habilitar as opções: (copiado descaradamente do blog do César Domingos)
Networking –>
Networking options –>
[*] Network packet filtering framework (Netfilter) –>
[*] Bridged IP/ARP packets filtering
Core Netfilter Configuration —>
<M> Netfilter netlink interface
<M> Netfilter NFQUEUE over NFNETLINK interface
<M> Netfilter LOG over NFNETLINK interface
<M> Netfilter connection tracking support
-*- Connection tracking flow accounting
-*- Connection mark tracking support
[*] Connection tracking security mark support
[*] Connection tracking events (EXPERIMENTAL)
<M> SCTP protocol connection tracking support (EXPERIMENTAL)
<M> UDP-Lite protocol connection tracking support (EXPERIMENTAL)
<M> Amanda backup protocol support
<M> FTP protocol support
<M> H.323 protocol support (EXPERIMENTAL)
<M> IRC protocol support
<M> NetBIOS name service protocol support (EXPERIMENTAL)
<M> PPtP protocol support
<M> SANE protocol support (EXPERIMENTAL)
<M> SIP protocol support (EXPERIMENTAL)
<M> TFTP protocol support
<M> Connection tracking netlink interface (EXPERIMENTAL)
{M} Netfilter Xtables support (required for ip_tables)
<M> “CLASSIFY” target support
<M> “CONNMARK” target support
<M> “DSCP” target support
<M> “MARK” target support
<M> “NFQUEUE” target Support
<M> “NFLOG” target support
<M> “NOTRACK” target support
<M> “TRACE” target support
<M> “SECMARK” target support
<M> “CONNSECMARK” target support
<M> “TCPMSS” target support
<M> “comment” match support
<M> “connbytes” per-connection counter match support
<M> “connlimit” match support”
<M> “connmark” connection mark match support
<M> “conntrack” connection tracking match support
<M> “DCCP” protocol match support
<M> “DSCP” match support
<M> “ESP” match support
<M> “helper” match support
<M> “length” match support
<M> “limit” match support
<M> “mac” address match support
<M> “mark” match support
<M> IPsec “policy” match support
<M> Multiple port match support
<M> “physdev” match support
<M> “pkttype” packet type match support
<M> “quota” match support
<M> “realm” match support
<M> “sctp” protocol match support (EXPERIMENTAL)
<M> “state” match support
<M> “layer7″ match support
[ ] Layer 7 debugging output
<M> “statistic” match support
<M> “string” match support
<M> “tcpmss” match support
<M> “time” match support
<M> “u32″ match support
<M> “hashlimit” match support

IP: Netfilter Configuration —>
<M> IPv4 connection tracking support (required for NAT)
…… (Tem mais opções antes)
<M> Full NAT
<M> MASQUERADE target support
<M> REDIRECT target support
<M> NETMAP target support
<M> SAME target support (OBSOLETE)
<M> Basic SNMP-ALG support (EXPERIMENTAL)

Criar pacote .deb para instalar o kernel:
make-kpkg –revision=1 –append-to-version=-hbueno kernel_image

Criar ram drive para não dar pau na inicialização:
make-kpkg –append-to-version=“-hbueno” –initrd –us –uc kernel_image

Instalar o kernel:
dpkg -i linux-image-2.6.23.12-hbueno_1_i386.deb

Reinicie a máquina com o novo kernel

Decompactar fonte do iptables e entrar no diretório descompactado em /usr/src/layer7
Aplicar patch do layer7 no iptables:
patch -p1 < /usr/src/layer7/netfilter-layer7-v2.17/iptables-1.4-for-kernel-2.6.20forward-layer7-2.17.pa
chmod 755 extension/.layer7-test
make KERNEL_DIR=/usr/src/linux
make install KERNEL_DIR=/usr/src/linux

A instalação do layer7 no iptables está finalizada. Vamos agora instalar os protocolos.
cd /usr/src/layer7/l7-protocols-xxxx
make install

Exemplo de regra para testar:
iptables -A FORWARD -m layer7 –l7proto bittorrent -j DROP





PDC Samba com OpenLDAP

11 02 2008

Recentemente precisei implantar Samba como PDC autenticando em uma base LDAP. Encontrei muito material na internet, porém alguns muito complexos, outros incompletos. A questão é que deve-se saber muito bem o que está fazendo antes de um projeto como esse. Ainda mais levando em conta que a base LDAP irá autenticar outros serviços, como squid e aplicações internas. Costumo aplicar a filosofia KISS (Keep It Simple, Stupid), pois quanto mais complexo for, mais fácil é de dar problemas e mais demorado é para solucioná-los. Tudo isso tive que levar em conta, afinal não quero perder meu emprego.

Após ler vários manuais e fazer inúmeros testes, fiz a implantação do Samba + OpenLdap + Squid. Este é um passo-a-passo que criei enquanto fazia a implantação.

Tutorial: Samba como PDC + OpenLdap + Squid no Debian Etch.

Instalar o Samba: aptitude install samba samba-doc winbind
Arquivo exemplo de configuração do smb.conf: smb.conf

Instalar o OpenLDAP: aptitude install openssl db4.2-util sasl2-bin libsasl2-modules libsasl2-modules-ldap slapd ldap-utils

Copiar o schema do samba para o ldap:
cd /usr/share/doc/samba-doc/examples/LDAP/
gunzip samba.schema.gz
cp samba.schema /etc/ldap/schema/
cd /etc/ldap

Arquivo exemplo de configuração do slapd.conf: slapd.conf

descomentar a linha: allow bind_v2
Adicionar o schema do samba(no final da lista):
include /etc/ldap/schema/samba.schema
suffix “dc=empresa,dc=com,dc=br”
password-hash {MD5}
rootdn “cn=admin,dc=empresa,dc=com,dc=br”
rootpw (senha MD5)
access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword
by dn=”cn=admin,dc=empresa,dc=com,dc=br” write

Comando para criar senha: slaplasswd -h {MD5} -s senha

reiniciar openldap: etc/init.d/slapd restart

verificar se está online: netstat -lnt |grep 389
ps aux |grep slapd

Instalar smbldap-tools:aptitude install smbldap-tools

Editar os arquivos em /etc/smbldap.conf:

smbldap.conf

smbldap_bind.conf

Pegar o SID do samba: net getlocalsid

Passar a senha do admin do openldap para o samba: smbpasswd -w senha_adm_ldap

Popular a base: smbldap-populate

Inserir usuário root na base ldap: smbpasswd -a root (caso dê erro, popule a base novamente)

Instalar nss: aptitude install libnss-ldap
editar /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
editar /etc/libnss-ldap.conf
bind policy soft (remover logs na inicialização do servidor)

Verifique se o sistema está reconhecendo os usuários da base com o comando: getent passwd

Por indicação do pessoal da lista debian-br estou utilizando a ferramenta LAM (LDAP Account Manager) para gerenciar minha base LDAP. Realmente é uma excelente opção para gerenciamento de um PDC.

instalar dependências: aptitude install apache2 apache2-ssl php5 php5-ldap php5-mhash php-fpdf
site oficial: http://sourceforge.net/projects/lam
wget http://ufpr.dl.sourceforge.net/sourceforge/lam/ldap-account-manager_2.2.0-1_all.deb
dpkg -i ldap-account-manager_2.2.0-1_all.deb

Configurar a memória do apache:
editar o arquivo /etc/php5/apache2/php.ini
Alterar o parâmetro memory_limit para 64M

Acessar o endereço: http://seu_ip/lam

Para configurar o squid para acessar a base ldap basta utilizar a autenticação ldap_auth:

auth_param basic program /usr/lib/squid/ldap_auth -b “ou=users,dc=empresa,dc=com,dc=br” -h ip_do_servidor_ldap -v 3

No meu próximo post, abordarei backup e réplica da base LDAP.





Instalando Debian em servidores Dell

22 01 2008

DellRecentemente instalei o Debian Etch em um servidor Dell. Já havia instalado Red Hat, mas nunca Debian em um servidor de grife. No começo a instalação ocorreu sem nenhum problema… reconheceu placa de rede, as controladoras, montei LVM sob RAID1… estava tudo fluindo perfeitamente… até que começou a fazer a cópia dos arquivos para o disco. Logo nos 22% da cópia o instalador acusou erro de gravação. Entrei no terminal4 e lá estava indicando que os discos estavam offline. Rebotei a máquina, conferi os RAID’s que havia configurado, e estavam todos OK. Já estava apelando para o google quando lembrei dos parâmetros especiais de instalação. Reiniciei o servidor (máquinas Dell demoram uma eternidade para bootar) iniciou o instalador, pressionei F1 depois F7 e lá estava o parâmetro que deveria usar:

Certain DELL machines —- aic7xxx.aix7xxx=no_probe

Esse comando vai para a minha caixa de ferrametas

É por isso que eu sempre digo: “Lê a tela sysadmin!!!” .. rssrss (piadinha interna)





Compilar kernel no Debian

10 01 2008

Receita de bolo para compilar kernel no Debian.

Instalar pacotes necessários:

# aptitude install libncurses5-dev gcc make kernel-package initramfs-tools

A estruta do kernel deve estar em /usr/src, então vá para diretório.

# cd /usr/src

Faça download do kernel e descompacte-o:

# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.13.tar.bz2

# tar -xvjf linux-2.6.23.13.tar.bz2

# cd linux-2.6.23.13

Para iniciar a configuração do kernel a partir de um padrão para a arquitetura i386 faça:

# cp arch/i386/defconfig .config

Caso deseje recompilá-lo com base no atual, execute:

# make oldconfig

Para configurar o kernel propriamente dito:

# make menuconfig (dentro de /usr/src/linux-2.6.23.12)

Após configurar o kernel, vamos criar os pacotes para instalação:

# make-kpkg –revision=1 –append-to-version=-hbueno kernel_image

Será gerado o arquivo kernel-image-2.6.23.12-hbueno_1_i386.deb em /usr/src

Para instalar:

# dpkg -i kernel-image-2.6.23.12-hbueno_1_i386.deb

É aconselhável criar o RAM driver initrd. Isso evita muitos KERNEL PANIC! ; )

#  make-kpkg –append-to-version “-hbueno” –initrd –us –uc kernel_image

dpkg -i linux-image-2.6.23.12-hbueno_1_i386.deb

Feito isso basta reiniciar a máquina.