Artigos 05:29 PM

Autenticação Centralizada com Postgres – NSS e PAM

A rede da empresa em que trabalho já há muito tempo autentica os usuários em um banco de dados Mysql, no entanto devido ao processo de migração de nosso sistema interno, decidimos que o PostgreSQL será o banco oficial com que iremos trabalhar e portanto nosso banco de usuários deveria ser migrado para o mesmo.
Como eu já havia visto algumas poucas coisas a respeito de autenticação de usuários com Postgres na época em que configurei a autenticação com Mysql, imaginei que hoje em dia o suporte ao PostgreSQL estaria melhor e disponível em uma variedade maior de softwares, o que pra minha alegria é uma verdade.
Com o objetivo de centralizar a maior quantidade de sistemas de autenticação disponíveis na rede, comecei a pesquisar a respeito do assunto.
Nesse primeiro artigo exemplifico a configuração da libnss e do pam em conjunto com o PostgreSQL.
Futuramente publicarei também a minha experiência com o Samba, Postfix e outros serviços disponíveis na rede que administro.

Continue Reading »

Dicas 10:47 PM

Palm OS – Aplicativos essenciais

Já há algum tempo sou proprietário de um Palm LifeDrive. Apesar de satisfeito não sou totalmente feliz com o aparelho devido as limitações e problemas que só o Palm OS pode proporcionar (acreditem em certas situações ele é mais problemático que o Windows). É claro que seguindo as recomendações da Palm de só utilizar os softwares originais e/ou recomendados por eles o nível de problemas cai para quase 0 (zero) mas quem consegue viver assim?

Apesar de tudo, o Palm OS é bem suportado pelo Software Livre e inclusive existem muitos aplicativos Livres para o sistema operacional da Palm.
No linux contamos com boas opções para manter o Palm sincronizado e também para integrar a transferência de dados entre aplicativos.

Continue Reading »

Dicas 12:51 AM

Instalando Mysql 5 e Php 5 no Fedora Core 4

Recentemente um cliente precisou realizar uma atualização no seu servidor para atender as exigências de um sistema novo. A princípio a tarefa parecia ser simples, atualizar o Mysql e PHP para a versão 5 de ambos no Fedora Core 4.
Depois de pesquisar no google percebi que eu precisaria de um pouco mais do que “yum update && yum install mysql” para fazer as coisas funcionarem.

Continue Reading »

Artigos 09:11 PM

Autenticação SMTP no Postfix com pop-before-smtp

Postfix + pop-before-smtp

Recentemente tive que implementar alguma forma de autenticação no servidor de um cliente para envio de e-mail uma vez que ele decidiu utilizar um cliente de e-mail ao invés de webmail.
De cara pensei em SASL pois a configuração com Postfix não custuma ser muito trabalhosa, ao menos não no Gentoo. Infelizmente a distribuição do servidor de meu client é Fedora Core, uma distribuição com a qual não tenho nenhuma intimidade.
Procurei na internet alguma forma de fazer isso mas não fui muito feliz em minhas buscas. Como eu já tinha compilado o postfix com suporte ao mysql pois nãoa havia achado uma solução “pronta” na época da configuração do servidor, resolvi fazer o mesmo recompilando o postfix com suporte ao Mysql e SASL. Infelizmente a tentativa não deu certo e o postfix sempre morria após a primeira conexão na porta 25.
Cansado e sem paciência de tentar resolver esse problema achei melhor tentar algo mais prático, pensei então no pop-before-smtp (pop antes do smtp).


Continue Reading »

Dicas 11:15 AM

Mysql – Error 1114 – Table is full

Recentemente instalei o Zabbix no servidor da minha rede para monitorar algumas máquinas, inclusive ele próprio. Ontem passei o dia configurando os itens a serem monitorados das minhas máquinas e tudo estava funcionando perfeitamente bem, com todos os gráficos sendo gerados e todas as estatísticas computadas.

Hoje ao chegar na empresa, fui direto ver a tela de gráficos que configurei e qual não foi minha surpresa ao verificar que os gráficos estavam todos em branco. Como por padrão o zabbix exibe o gráfico com período de 1 hora, alterei para 24 horas e pude notar que a última atualização no gráfico ocorreu ontem por volta das 23hrs, no entanto as estatísticas continuavam sendo coletadas. Seria esse um erro no serviço zabbix? Felizmente não existe nenhum problema com o Zabbix pelo que pude verificar ao reinicia-lo, no entanto continuo sem geração dos gráficos.

Alterei o nível de debug no arquivo zabbix-server.conf para 4 na linha com o parâmetro DebugLevel e reiniciei novamente o serviço. Dessa forma consegui verificar no log do servidor o problema que estava acontecendo:

# tail -f /var/log/zabbix/zabbix_server.log
013359:20061124:105552 Query::insert into trends \\
(clock,itemid,num,value_min,value_avg,value_max) values \\
(1164369600,17543,1,1041.594705,1041.594705,1041.594705)
013359:20061124:105552 Query failed:The table 'trends' is full [1114]

Table is full? Como isso pode acontecer? Como utilizo o Mysql para o Zabbix imaginei logo que o banco devia ter crescido demasiadamente e dessa forma teria enchido a partição /var. Uma rápida consulta ao espaço livre em disco (df) me mostrou que ainda existe muito espaço livre na partição /var então isso não pode ser um problema de espaço em disco para o Mysql.

Verifiquei que a tabela trends só tem cerca de 1 milhão de registros, o que não é muito pois já tive tabelas em algumas base de dados com muito mais do que essa quantidade de registros.
Resolvi tentar executar a query direto no mysql para ver o que acontecia

# mysql -p
Enter password:
Database changed

mysql> use zabbix
mysql> insert into trends (clock,itemid,num,value_min,value_avg,value_max) \\
values (1164369600,17539,1,112.790411,112.790411,112.790411);
ERROR 1114: The table 'trends' is full

Procurar no google por “mysql error 1114 table is full” não me retornou resultados satisfatórios então resolvi pesquisar no mysql mesmo a raiz do problema.
Imaginei que deveria existir alguma variável limitando o tamanho da tabela ou algo parecido. Com o comando show variables é possível verificar as variáveis atuais do mysql.
Como não existia nenhuma variável que aparentemente estivesse limitando o tamanho das tabelas, resolvi verificar as variáveis pertinentes ao tipo de tabela innodb uma vez que esse é o tipo das tabelas usadas pelo zabbix.

A variável que me pareceu mais passível de estar limitando o tamanho das tabelas foi a “innodb_data_file_path” cujo valor estava definido como ibdata1:10M:autoextend:max:128M (provavelmente o padrão do mysql), no entanto o nome da variável não indicava exatamente limitação de tamanho da tabela, mas de qualquer forma era bom verificar.

Procurando no google por esse valor achei um blog onde o autor do post relatava o mesmo problema que o meu com o zabbix e tableas do tipo innodb e coincidentemente a mesma distribuição Linux estava sendo usada: Gentoo.
Pelo que entendi o problema realmente estava na definição do tamanho máximo definido pro arquivo InnoDB (ibdata1). O autor do post indica o endereço http://www.browardphp.com/mysql_manual_en/manual_InnoDB.html onde a configuração do InnoDB é explicada.

De acordo com as especificações do site, alterei o parâmetro innodb_data_file_path para ibdata1:10M:autoextend, reiniciei o mysql e o zabbix, e pronto, o zabbix voltou a gerar os gráficos novamente.

# vi /etc/my/mysql.cnf

innodb_data_file_path = ibdata1:10M:autoextend

# /etc/init.d/mysql restart
# /etc/init.d/zabbix-server restart

Não esqueça de alterar novamente o nível de debug no arquivo zabbix-server.conf

Referências

Artigos 11:49 AM

Instalando o AWStats na Dreamhost

O AWStats é um excelente software para análise de logs e geração de estatísticas. Ele trabalha muito bem com os principais web servers (principalmente o Apache) e também pode ser usado para analisar logs de ftp, e deservidores de e-mail segundo informação dos desenvolvedores.

Na empresa onde trabalho, utilizamos o AWStats junto com outras soluções como extreme tracking e google analytics, porém acho o AWStats o mais objetivo de todos no sentido de apresentar as estatísticas coletadas do log.

Essa semana resolvi instalar o AWStats na minha conta da DreamHost, uma vez que eu não gostei muito do Analog que eles disponibilizam e além do mais eu já instalei o AWStats antes, então agora não devo encontrar dificuldades.

Para facillitar o processo, dei uma olhada no Wiki da DreamHost e achei um passo a passo de como instalar o AWStats.
O AWStats pode funcionar de 2 formas: com páginas estaticas ou através do cgi. Particularmente eu prefiro utilizar como CGI pois possibilita a atualização dos dados apartir do browser. No Wiki da DreamHost esse método é chamado de rápido (Quick).


Continue Reading »

Uncategorized 12:14 PM

Roteamento Avançado – Forçando as rotas

Após a implementação do segundo link de internet aqui da empresa (Roteando múltiplos links de internet) descobri que alguns sites não funcionavam direito.
Os problemas começaram a ocorrer principalmente nos Internet Banking devido a mudança do IP durante a sessão do sistema.

Como sou usuário do Bradesco comecei a testar o acesso e verifiquei que durante uma sessão de Internet Banking, aproximadamente 4 hosts diferentes do Bradesco são conectados.
Como os hosts são de redes diferentes, é bem possível que cada para cada host seja utilizado um gateway diferente e é ai que ocorre a alteração do IP do cliente.

Para contornar esse problema de forma fácil e rápida é possível marcar os pacotes no firewall que atenderem a uma certa condição, como por exemplo o endereço de destino.
Uma vez que os pacotes estejam marcados é possível definir a tabela de roteamento a ser utilizada por esses pacotes.

Após inúmeros testes e muito monitoramento com tcpdump, netstat e whois, descobri as 3 redes de IP do Bradesco que eu deveria forçar a utilização por 1 dos links. Inseri 3 regras no firewall para marcar os pacotes destinados a essas redes.

# iptables -A PREROUTING -t mangle -p tcp -m tcp -d 200.173.19.0/25 -j MARK --set-mark 0x1
# iptables -A PREROUTING -t mangle -p tcp -m tcp -d 200.246.210.0/23 -j MARK --set-mark 0x1
# iptables -A PREROUTING -t mangle -p tcp -m tcp -d 200.155.80.0/20 -j MARK --set-mark 0x1

Uma vez que os pacotes estejam marcados é possível definir a tabela de roteamento a ser utilizada. Para isso utilizamos novamente o iproute2:

# ip rule add prio 11 fwmark 0x1 table isp1
# ip route flush cache

O exemplo acima assume que o nome da tabela do link 1 é isp1. Para maiores informações sobre como criar/nomear tabelas de roteamento consulte o artigo Roteando múltiplos links de internet

Após mais um tempo alguns usuários detectaram outros sites com o mesmo problema e o que percebi é que em sua grande maioria os serviços em questão rodavam sobre conexões seguras (https). Sendo assim alterei a regra no firewall para trafegar todu que for destinado a porta 443 pela link 1.
A regra abaixo cuida do serviço:

# iptables -A PREROUTING  -t mangle -p tcp -m tcp --dport 443 -j MARK --set-mark 0x1
# ip route flush cache

É importante executar o comando ip route flush cache toda vez que for alterada alguma regra referente ao roteamento de pacotes.

Pronto, agora toda conexão https será direcionada para o primeiro link. Caso o link falhe é possível trocarmos a tabela de roteamento a ser utilizada:

# ip rule del prio 11 fwmark 0x1 table isp1
# ip rule add prio 11 fwmark 0x1 table isp2
# ip route flush cache

Usando o Nagios ou algum outro software de monitoramento (um simples shell script) é possível automatizar a detecção de problemas no link para alterar o link a ser utilizado por essas conexões, tornando assim o serviço praticamente ininterrupto.

Artigos 02:18 PM

Roteando múltiplos links de internet

A empresa onde trabalho depende 100% da internet para seu funcionamento, devido a isso procurei escolher uma boa opção de link de internet levando em consideração o melhor preço X a melhor qualidade de serviço.
É claro que as melhores opções são sempre os links dedicados, no entanto esses serviços são caros se comparados aos serviços DSL disponíveis.

Depois de um bom tempo usando o Velox da Telemar, fui apresentado a MundiVox que até que tem um serviço de boa qualidade, só deixando a desejar no primeiro mês de uso.

Apesar da boa qualidade do serviço, inevitavelmente acontecem algumas pequenas interrupções que as vezes não passam de 1 minuto, mas as vezes pode passar dos 10. Sendo assim decidi contratar mais um link de internet de outro fornecedor para efeitos de backup.

Uma vez que o outro link já estava instalado e funcionando surgiu o desafio: Como inserir o novo link na rede de modo a garantir que a internet não pare nunca (failover), e como combinar os 2 links para aumentar a velocidade de acesso a internet (load balancing)?

Inicialmente pensei que a solução fosse utilizar o recurso de “bonding” do kernel, no entanto após ler bem a pouca documentação disponível descobri que o bonding só funciona com links que façam parte de uma mesma rede (lógica).

Pesquisando mais a fundo descobri que a solução está nas tabelas de roteamento do sistema, na verdade na parte Avançada de Roteamento do sistema (o conhecido Linux Advanced Routing and Traffic Control)

A idéia básica do sistema é de criar tabelas de roteamento separadas para cada link e utilizar um gateway multipath ( com rotas alternativas ) como rota padrão. Para isso é necessário utilizar o pacote iproute2, disponível em http://linux-net.osdl.org/index.php/Iproute2

O pacote iproute2 fornece ferramentas avançadas para a configuração de interfaces, endereços, rotas e filtros e pode substituir as ferramentas padrões já conhecidas: ifconfig, route, arp.
No kernel, a opção IP: advanced router provê o suporte necessário para o recurso.

A configuração é simples e basicamente se dá em configurar o kernel e adicionar algumas tabelas de roteamento.


Continue Reading »

News 08:48 PM

Gentoo Linux. Você está pronto para ele?

Recentemente li um artigo linux.com de um usuário linux relatando sua experiência com o Gentoo.
Na verdade o autor do artigo não chega a ter uma experiência agradável e tenho certeza que muitas pessoas passam pela mesma frustração ao tentar instalar o Gentoo.

A verdade é que a instalação do Gentoo não exige nada mais de conhecimento do que um usuário “intermediário” de linux deve ter, o que engloba compilação de software, compilação de kernel, particionamento e manutenção de disco e sistemas de arquivos, edição de arquivos de configuração, e um pouco de experiência com as ferramentas unix padrão.

Uma exigência que deve ser observada é a atenção ao manual de instalação, principalmente em uma primeira instalação, visto que passar desapercebido por algum detalhe pode significar em ter que recomeçar todo o processo.
Atenção em especial deve ser dada as partes que tratam do Portage e das USE flags.

Outro detalhe que pode ser observado na trajetória do autor é que são necessárias paciência para aguardar o tempo de compilação dos programas e experiência em pesquisas nos principais mecanismos de buscas na hora que aparecem dúvidas.

Resumindo, o Gentoo é feito para aqueles que querem:

  • conhecer a fundo o seu sistema
  • construir seu próprio sistema
  • optimizar o sistema
  • estar sempre atualizado
  • tem o controle total do sistema

Minha experiência com o Gentoo (desde dezembro/2003) tem sido muito agradável e desde então meu conhecimento sobre linux tem se multiplicado diariamente em áreas diversas e a cada dia ainda me surpreendo com novas ferramentas e facilidades que só o Gentoo proporciona.

O suporte a arquitetura 64bits não deixa nada a desejar, e outras arquiteturas são bem vindas também como PowerPC. O repositório de pacotes é tão grande quanto o da concorrência e uma vasta documentaçãi está disponível na internet, principalmente em ens http://wiki.gentoo-wiki.com ensinando a fazer de tudo um pouco, desde a configuração de servidores até a configuração de sistemas múltimidia, etc, etc.

Vida longa para o Gentoo!

Referências

http://distrocenter.linux.com/article.pl?sid=06/09/12/213246&tid=108
-

Uncategorized 10:59 PM

Mousegestures? cadê você?

Há um certo tempo venho sendo ligeiramente incomodado com um certo “recurso” do firefox, o mousegesture. Toda vez que faço um movimento vertical brusco no touchpad ou no wheel (rodinha) do mouse, o firefox entende que deve avançar ou voltar no histórico.

Como em parte do tempo utilizo uma tablet ao invés de mouse, o problema nunca me pertubou muito, porém eu ficava curioso com o fato de que não existe opção nenhuma nas preferências para desabilitar ou habilitar o recurso.
Cheguei a tentar criar outro perfil mas de nada adiantou, e o mais curioso é que outros usuários da minha rede não tinham o problema usando a mesma versão de browser, porém em arquitetura 32 bits.

Comecei a procurar no google mas tudo o que eu achava me levava a forums que diziam que o recurso devia estar sendo fornecido por algum plugin. É claro que eu tinha certeza de não ter nenhum plugin desse tipo (nunca gostei de mousegestures) então continuei procurando e depois de um certo tempo encontrei o seguinte link: http://kb.mozillazine.org/About:config_entries#Mousewheel..2A
Segundo o link acima, o parâmetro mousewheel.horizscroll.withnokey.action define a ação a ser tomada quando executar o scroll no mouse/touchpad, e por padrão essa opção vem definida com o valor 2 que representa justamente o recurso de avançar/voltar.
Nesse caso alterei o valor para 0 (zero) e imediatamente o recurso foi desabilitado.
Por curiosidade verifiquei nas outras máquinas (que não tem este comportamento) e verifiquei que a configuração é a mesma então a única diferença que vejo é de arquitetura que no meu caso é 64 bits.

De qualquer forma, agora não sou mais importunado por esse recurso que deveria vir desabilitado por padrão e com uma interface mais amigável para habilitar/desabilitar.

« Previous Page