terça-feira, 19 de abril de 2011

Failed to lock the file! VMWare virtual disk (vmdk)

Hoje ao subir um máquina virtual que está em um VMWare Server 2.02 que tinha tido problemas com o sistema operacional me deparei a mensagem:

"Cannot open the disk ‘file001.vmdk’ or one of the snapshot disks it depends on. Reason: Failed to lock the file. "

Procurandei na net e felizmente encontrei a solução, é só deletar a(s) pasta(s) com o nome file001.vmdk.lck que estão dentro do mesmo diretório dos arquivos da máquina virtual.


quarta-feira, 23 de março de 2011

Instalação do Layer 7 no Debian Lenny

Uma dica muito valiosa que reduz muitas linhas do seu script de firewall e o melhor de tudo que funciona direitinho.
Implementando o layer 7 no Linux Debian Lenny, segue o tutorial:

Instalando pacotes necessários:

# aptitude install libncurses5-dev
# aptitude install kernel-package
# aptitude install zlib1g-dev

Entre no diretório source e faça download dos arquivos.

# cd /usr/src
# wget
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2
# wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.2.tar.bz2
# wget http://downloads.sourceforge.net/l7-filter/netfilter-layer7-v2.21.tar.gz
# wget http://downloads.sourceforge.net/l7-filter/l7-protocols-2008-04-23.tar.gz
# wget http://merkel.debian.org/~jurij/2.6.28-1/i386/config-2.6.28-1-686.gz

Remova o iptables:

# aptitude purge iptables

Descompactando os pacotes:

# tar jxvf linux-2.6.28.tar.bz2
# tar jxvf iptables-1.4.2.tar.bz2
# tar zxvf netfilter-layer7-v2.21.tar.gz
# tar zxvf l7-protocols-2008-04-23.tar.gz
# uncompress config-2.6.28-1-686.gz


Criando um link para o diretório do kernel:

# ln -s /usr/src/linux-2.6.28 /usr/src/linux

Copiando as configurações de boot e aplicando os patches do layer7 no kernel:

# cd /usr/src/linux
# cp ../config-2.6.28-1-686 .config
# patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch


Compilando e instalando o kernel


# make oldconfig
(enter para todas as questões)

# make menuconfig

Entre no diretório Networking -> Networking Options -> Network Packet Filtering Framework (netfilter) -> Core Netfilter Configuration

Marque os módulos (M) layer7 match support e (M) string match support

(M) layer7 match support #MARCAR COMO MÓDULO
(M) string match support #MARCAR COMO MÓDULO

Saia pelo exit, na última tela, escolha a opção salvar para o arquivo .config, ou seja, no último exit você será questionado se deseja salvar. Agora é simples, basta compilar.

# make-kpkg -initrd kernel_image

Foi criado um arquivo linux-image-2.6.28_2.6.28-10.00.Custom_i386.deb no diretório /usr/src, volte ao diretório e instale.

# cd /usr/src
# dpkg -i linux-image-2.6.28_2.6.28-10.00.Custom_i386.deb


Pronto, o novo kernel já esta instalado.

Aplicando os patches no iptables e instalando

Digite:

# cd /usr/src/iptables-1.4.2

Copie os arquivos libxt_layer7.c libxt_layer7.man para o diretório do iptables:

# cp ../netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/* extensions/

Instalando o iptables:

# ./configure --with-ksource=/usr/src/linux
# make
# make install
# cd /usr/src/l7-protocols-2008-04-23
# make install


Pronto, só reiniciar e usar!

# reboot

Se por acaso o Debian não carregar o módulo automaticamente, execute o seguinte comando:

# modprobe ipt_layer7

Exemplo de regras:

iptables -A FORWARD -m layer7 --l7proto msnmessenger -j DROP
iptables -A FORWARD -m layer7 --l7proto http -j DROP

Se quiser saber quais os protocolos suportados consulte:
http://l7-filter.sourceforge.net/protocols


Fonte: http://www.vivaolinux.com.br/dica/Instacao-do-layer7-no-Debian-Lenny


Squid Tuning - Mais dicas, aumentando a performance de disco.

Procurando mais informações a respeito do Squid, me deparei na seguinte página. http://wiki.squid-cache.org/BestOsForSquid e descobri duas dicas a mais para melhorar o acesso a disco e consequentemente a resposta dos arquivos em cache.

Esse artigo deve ser considerado uma continuação do anterior "Otimizando o Squid - Versão 2008", disponível em http://linuxadm.blogspot.com/2008/02/otimizando-o-squid-verso-2008.html

1ª Dica - noatime option

O Linux salva em cada arquivo a informação de data e hora de ultimo acesso além de ultima modificação, e como o Squid utiliza seu timestamp próprio, é inutil contar com o timestamp do filesystem. Para melhorar o acesso aos arquivos de cache setamos então o diretório de cache com o parâmetro "noatime".

Como fazer? Simples.
Se o seu diretório de cache está numa partição em separado (o que a propósito é uma excelente idéia) basta adicionar o parâmetro noatime no seu fstab.

Exemplo:
/dev/sda3 /var/spool/squid reiserfs defaults,noatime 0 2

obs.. Recomendo adicionar o noatime somente nas partições do cache, não em partiçoes do sistema, tal como /

Se você já possui um particionamento, e não deseja reparticionar seu disco, pode fazer através do comando chattr (change attribute)

Exemplo:
#chattr -R +A /var/spool/squid
(Onde o -R é para recursividade, e o +A para especificar o noatime)

Para usar o chattr com ReiserFS é necessário ativar o suporte no Kernel.

[*] ReiserFS extended attributes
[*] ReiserFS POSIX Access Control Lists
[*] ReiserFS Security Labels

Para visualizar os atributos do arquivo utilize o lsattr.

Exemplo:
#lsattr
------------- ./radius.sql (Arquivo sem nenhum atributo ativo)

2ª Dica - Espaço Livre (free space)
Sempre deixe acima de 20% de espaço livre no filesystem contendo seu cache dir, geralmente a performance do filesystem degrada dramaticamente se o espaço usado excede 80%.

3º Dica - Desativar o Store.log (Enviada por YellowBR)
Como dito anteriormente, quanto melhor otimizarmos o acesso a disco mais rapido será nosso proxy, uma forma de melhorar a performance de disco é reduzir a escrita desnecessária.
O store.log exibe quais arquivos foram removidos do cache, quais objetos estão salvos, e o tempo que estão no cache, entretanto, não existe uma utilidade real para esses dados, portanto é recomendável desativar essa flag.
Exemplo:
cache_store_log none

Fonte: http://www.visolve.com/squid/squid24s1/logfiles.php

Dica Extra (E extremamente útil) - notail option
Se você usa ReiserFs (o que é indicado para cache do squid) é interessante o uso da opção notail ao montar o sistema de arquivos. O "tail packing" é uma característica do ReiserFS para melhor uso de espaço, que permite 5% a menos de perda de espaço em disco se comparado ao ext2 ou ext3, a grosso modo ele faz um agrupamento de arquivos menores que um bloco do filesystem (4k), por isso a excelente performance do ReiserFS com arquivos menores.

Fonte: http://www.funtoo.org/en/articles/linux/ffg/2/

Portanto se você está disposto a sacrificar 5% do estaço em disco para um incremento de performance, ative a opção notail no seu fstab.

/dev/sda3 /var/spool/squid reiserfs defaults,noatime,notail 0 2

Se você não quiser reiniciar seu linux, basta apenas remontar a partição com o parâmetro notail.

#mount -o remount /var/spool/squid

As últimas duas dicas não referem-se apenas ao Squid, mas ao uso do sistema operacional em sí, procure manter o mesmo procedimento para sua partição primária.

Outras dica óbvia, e não menos importante, é procurar disco com velocidades maiores, por exemplo discos de 15k RPM.

Estarei adicionando essas dicas no arquivo original, mas manterei esse post em separado para que os antigos leitores vejam que houveram incremento de informações no tutorial.

segunda-feira, 17 de janeiro de 2011

Instalando o Zabbix no Debian Lenny

Instalando o Zabbix no Debian Lenny.

Preparando o Debian

Instalando o Zabbix no Debian Lenny.

1. Instale os seguintes pacotes de dependências:

# aptitude install build-essential mysql-server libmysqlclient15-dev php5 php5-gd php5-mysql snmp libsnmp-dev snmpd libcurl3-dev apache2 fping curl

2. Crie um usuário chamado zabbix:

# adduser zabbix

3. Acrescente o usuário zabbix ao grupo administradores:

# adduser zabbix adm

Baixando o Zabbix

4. Como usuário zabbix, efetue o download do fonte do Zabbix e descompacte o pacote:

# su - zabbix
$ wget
http://prdownloads.sourceforge.net/zabbix/zabbix-1.8.2.tar.gz?download
$ tar zxvxpf zabbix-1.8.2.tar.gz

5. Retorne ao usuário root:

# logout
ou
ctrl + d

Preparando o MySQL e o resto do sistema

6. No MySQL, crie a base de dados zabbix e crie o usuário zabbix da base de dados:

# mysql -p -e "create database zabbix;"
# mysql -p -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'senha do usuário';"


7. Logue como usuário zabbix e importe as tabelas utilizando os arquivos:

# su - zabbix
$ cd zabbix-1.8.2/create/schema
$ mysql -uzabbix -p zabbix < mysql.sql $ cd ../data/ $ mysql -uzabbix -p zabbix < data.sql $ mysql -uzabbix -p zabbix <>

8. Como root, configure, compile e instale o servidor do zabbix:

$ su -
# cd /home/zabbix/zabbix-1.8.2/
# ./configure --prefix=/usr --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent
# make install


9. Prepare o restante do sistema:

# nano /etc/services

Adicione as seguintes linhas ao final do arquivo:

zabbix_agent 10050/tcp # Zabbix ports
zabbix_trap 10051/tcp

Continue configurando o sistema:

# mkdir /etc/zabbix
# chown -R zabbix.zabbix /etc/zabbix/
# cp misc/conf/zabbix_* /etc/zabbix/


Edite o arquivo /etc/zabbix/zabbix_agentd.conf e certifique-se que o parâmetro Server aponta para o IP I/O 127.0.0.1.

Edite o arquivo /etc/zabbix/zabbix_server.conf e configure os parâmetros DBUser=zabbix e DBPassword=senha criada para o usuário zabbix na base de dados zabbix do MySQL.

10. Copie os scripts para a pasta /etc/init.d/

# cp misc/init.d/debian/zabbix-server /etc/init.d
# cp misc/init.d/debian/zabbix-agent /etc/init.d


11. Edite os arquivos de inicialização para acertar o caminho do diretório zabbix:

# nano /etc/init.d/zabbix-server

Encontre a linha:

DAEMON=/home/zabbix/bin/${NAME}

e substitua por:

DAEMON=/usr/sbin/${NAME}

Edite o arquivo zabbix-agent:

# nano /etc/init.d/zabbix-agent

Localize a linha:

DAEMON=/home/zabbix/bin/${NAME}

e substitua por:

DAEMON=/usr/sbin/${NAME}

Salve e saia.

12. Mude a permissão do arquivo e adicione o zabbix-server para iniciar automaticamente no boot de todos os níveis de execução:

# chmod 755 /etc/init.d/zabbix-server
# update-rc.d zabbix-server defaults
# chmod 755 /etc/init.d/zabbix-agent
# update-rc.d zabbix-agent defaults


Iniciando o Zabbix

13. Inicie o servidor:

# /etc/init.d/zabbix-server start

14. Inicie o agente:

# /etc/init.d/zabbix-agent start

15. Certifique-se que os serviços estão rodando:

# ps -auz | grep zabbix

Configurando o Apache e o frontend do Zabbix

16. Configure a interface web:

# mkdir /home/zabbix/public_html/

# cp -R /home/zabbix/zabbix-1.8.2/frontends/php/* /home/zabbix/public_html/

17. Edite o arquivo de configuração do apache2:

# nano /etc/apache2/sites-enabled/00-defaults

18. Acrescente as linhas ao arquivo:


Alias /zabbix /home/zabbix/public_html/

AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all

Order deny,allow
Deny from all


Order deny,allow
Deny from all





19. Faça os ajustes no arquivo php.ini:

# nano /etc/php5/apache2/php.ini

max_execution_time = 300 ; Maximum execution time of each script, in seconds
date.timezone = America/Sao_Paulo
post_max_size = 16M
max_input_time = 300

20. Reinicie o apache:

# /etc/init.d/apache2 restart

21. Abra o browser e aponte para o zabbix:

http://ip_do _servidor_zabbix/zabbix/

Finalizando a instalação

22. Na aba introdução, leia e clique em Next

23. Em License Agreement clique em I Agree

24. Configure a conexão DB e faça um teste

25. Verifique todos os itens do sumário de instalação

26. Clique em Instalation. Caso seja apresentado um erro, altere para 777 as permissões do diretório /home/zabbix/public_html/conf

# chmod 777 /home/zabbix/public_html/conf

A instalação está concluída!

segunda-feira, 22 de novembro de 2010

Configurando a Placa de Rede no VMWARE Server

"Bridged" to an automatically assigned physical nic

WARNING: this is unreliable on hosts with more than one physical nic.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "vlance"
ethernet0.connectionType = "bridged"

This settings enable an AMD PCnet32 network-card.
Most older OS have drivers for this nic.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "vmxnet"
ethernet0.connectionType = "bridged"

This settings enable an VMXnet network-card.
You can only use this nic if you install the VMware-tools inside the guest.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "e1000"
ethernet0.connectionType = "bridged"

This settings enable an Intel E1000 network-card.
Modern OS should have drivers for this nic.
NOTE: VMware usually assigns this nic to 64bit-guests - but it also works with 32-bit guests

Connected to the virtal adapter of the host named "hostonly"

You can use the VMware-builtin DHCP-service to auto-configure guests that use this type of connection.

WARNING: this is unreliable on hosts that don't use defaults for the vmnet-mapping.
NOTE: this is the same as ethernet0.connectionType = "vmnet1"

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "vlance"
ethernet0.connectionType = "hostonly"

This settings enable an AMD PCnet32 network-card.
Most older OS have drivers for this nic.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "vmxnet"
ethernet0.connectionType = "hostonly"

This settings enable an VMXnet network-card.
You can only use this nic if you install the VMware-tools inside the guest.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "e1000"
ethernet0.connectionType = "hostonly"

This settings enable an Intel E1000 network-card.
Modern OS should have drivers for this nic.
NOTE: VMware usually assigns this nic to 64bit-guests - but it also works with 32-bit guests

Connected to the virtal adapter of the host named "nat"

You can use the VMware-builtin DHCP-service to auto-configure guests that use this type of connection.
Guests configured this way can also use the hosts internet connection via the VMware NAT service.


WARNING: this is unreliable on hosts that don't use defaults for the vmnet-mapping.
Note: this is the same as ethernet0.connectionType = "vmnet8"

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "vlance"
ethernet0.connectionType = "nat"

This settings enable an AMD PCnet32 network-card.
Most older OS have drivers for this nic.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "vmxnet"
ethernet0.connectionType = "nat"

This settings enable an VMXnet network-card.
You can only use this nic if you install the VMware-tools inside the guest.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "e1000"
ethernet0.connectionType = "nat"

This settings enable an Intel E1000 network-card.
Modern OS should have drivers for this nic.
NOTE: VMware usually assigns this nic to 64bit-guests - but it also works with 32-bit guests

Custom configuration

For multihomed hosts specify your physical > vmnet mapping manually and configure your guests with type "custom"

All unused vmnets can be used for "guest-only" connections.

WARNING: on Linux hosts that use UDEV you may have to create device-nodes manually.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "vlance"
ethernet0.connectionType = "custom"
ethernet0.vnet = "vmnet5"

This settings enable an AMD PCnet32 network-card.
Most older OS have drivers for this nic.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "vmxnet"
ethernet0.connectionType = "custom"
ethernet0.vnet = "vmnet5"

This settings enable an VMXnet network-card.
You can only use this nic if you install the VMware-tools inside the guest.

ethernet0.present= "true"
ethernet0.startConnected = "true"
ethernet0.virtualDev = "e1000"
ethernet0.connectionType = "custom"
ethernet0.vnet = "vmnet5"

This settings enable an Intel E1000 network-card.
Modern OS should have drivers for this nic.
NOTE: VMware usually assigns this nic to 64bit-guests - but it also works with 32-bit guests

quinta-feira, 23 de setembro de 2010

Recuperando a senha de root

Algumas vezes se faz necessário a mudança da senha de Administrador dos Sistemas Operacionais, tanto pelas políticas internas da empresa, quanto pela saída de algum funcionário ou por diversos outros motivos, infelizmente com o passar do tempo esquecemos essas senhas por desuso ou por esquecimento mesmo, para resolver o problema em sistemas Linux podemos fazer da seguinte forma:

01 - O primeiro passo é iniciar o computador pelo Live Cd;

02 – Agora vá para o modo texto com o comando abaixo;

CTRL + ALT + F2

03 - logue-se com root

sudo su -

04 - Verifica qual a geometria do disco com o comando fdisk -l /dev/sdx (onde "x" é o letra correspondente ao disco)

05 - monte a partição correspondente com o comando:

#mkdir /media/disco

#mount -t ext3 /dev/sdx /media/disco -o rw

#cd /media/disco/etc

#vi shadow

a apague os caracteres na linha do root, deixando assim:

root ::0::::::

:wq

#cd /

#umount /media/disco

reboot

Pronto a senha de root foi zerada.


segunda-feira, 30 de agosto de 2010

Source list completo do Debian 5 Lenny, para servidores e desktops. Segue alguns sources do Debian 5 para incrementas seu source.list. Para atualizar a sources.list basta logar como ROOT e executar os passos abaixo:

#vim /etc/apt/sources.list

Apague todo o conteúdo e adicione as linhas abaixo:

deb ftp://ftp.br.debian.org/debian/ stable main contrib non-free

deb ftp://mirrors.kernel.org/debian/ stable main contrib non-free

deb http://ftp.br.debian.org/debian/ lenny main contrib

deb http://ftp.br.debian.org/debian/ lenny main contrib non-free

deb http://ftp.br.debian.org/debian/ lenny-proposed-updates contrib main

deb http://ftp.br.debian.org/debian-multimedia/ lenny main

deb http://ftp.br.debian.org/debian-multimedia/ lenny main

deb http://ftp.br.debian.org/debian/ oldstable main

deb http://ftp.br.debian.org/debian/ stable main

deb http://ftp.br.debian.org/debian/ stable main contrib non-free

deb http://packages.dotdeb.org stable all

deb http://security.debian.org/ lenny/updates main contrib

deb http://security.debian.org/ lenny/updates main contrib non-free

deb http://security.debian.org/ stable/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main

deb http://www.backports.org/debian lenny-backports main contrib non-free

deb http://www.debian-multimedia.org stable main

deb-src ftp://ftp.br.debian.org/debian/ stable main contrib non-free

deb-src ftp://mirrors.kernel.org/debian/ stable main contrib non-free

deb-src http://ftp.br.debian.org/debian/ lenny main contrib

deb-src http://ftp.br.debian.org/debian/ lenny main contrib non-free

deb-src http://ftp.br.debian.org/debian/ lenny-proposed-updates contrib main

deb-src http://ftp.br.debian.org/debian/ oldstable main

deb-src http://ftp.br.debian.org/debian/ stable main

deb-src http://ftp.br.debian.org/debian/ stable main contrib non-free

deb-src http://packages.dotdeb.org stable all

deb-src http://security.debian.org/ lenny/updates main contrib

deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb-src http://security.debian.org/ stable/updates main contrib non-free

deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

deb-src http://www.backports.org/debian lenny-backports main contrib non-free

deb-src http://www.debian-multimedia.org stable main

#===============================================================FIM==============================================================

Salve o arquivo, feche e atualize a lista de repositórios como

#apt-get update --fix-missing

#apt-get upgrade --fix-missing