24 de fevereiro de 2011

Habilitando seu desktop / laptop como um router

Talvez não para todos mas, para nós que trabalhamos em vários datacenters diferentes, volta e meia nos deparamos com servidores que não são conectados diretamente à internet, nem usam um serviço de proxy para isso.

Mas, nestes casos, como fazer para se conectar à internet? Bom, caso o dono dos servidores (seu cliente) permitir, e você tiver uma conexão 3G ou WiFi disponivel no seu laptop, é muito simples usar o seu laptop como um "router" para acesso à internet.

Óbviamente que eu estou contando que você roda alguma distribuição de Linux, certo? ;)

Bom, para tornar o seu laptop/desktop em um router basta:

1. Habilitar o encaminhando de pacotes de uma interface para a outra no seu kernel
# cat 1 >/proc/sys/net/ipv4/ip_forward

2. Uma vez que isso foi feito, precisamos agora criar 2 regras no seu iptables. Porém, antes disso, verifique se o seu iptables não está configurado para ser um firewall (afinal, não queremos barrar os pacotes que chegarão no laptop do servidor)
# service iptables status

(se estiver rodando o mais simples é desligá-lo)
# service iptables stop

3. Ok, agora vamos configurar o iptables para permitir que os pacotes que venham do servidor sejam redirecionados para a interface conectada à internet e para permitir que os IP's que vem da "rede interna" sejam "mascarados" como um único IP de saída (NAT), respectivamente:
# iptables -A FORWARD -i eth0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

onde eth0 é a interface da rede interna, onde o servidor está conectado, e wlan0 é a interface da rede externa, a qual está conectada à internet.

Pronto! O seu laptop está funcionando como um router. Agora basta que você garanta que no seu servidor o DNS está configurado:
# cat /etc/resolv.conf

Se o arquivo não conter um nameserver válido, pode ser adicionado o nameserver 8.8.8.8 que é um DNS público do Google.

E precisamos garantir que temos uma rota default apontando para o IP do nosso laptop/desktop:
# route add default gw <ip_laptop>

Se quiser testar, basta fazer um ping para algum site, como google.com, e ver se o nome está sendo resolvido e se o ping está sendo respondido.

4 de fevereiro de 2011

"O vôo é doméstico, mas o embarque é internacional". Faz sentido?

Santiago para o Rio de Janeiro. Com parada em São Paulo. Pergunta: internacional ou nacional?

Pois bem, parece que a resposta para essa pergunta não é tão simples quanto parece. Inicialmente vocês devem estar pensando que é um vôo internacional com conexão em São Paulo. Pois estão enganados, assim como eu também fui.

Tudo começou com a compra. Na verdade, o problema todo foi falta de comunicação.

Na empresa que trabalho temos que usar a American Express (AMEX) como nossa agência de viagens. Então, já que tinha que ir ao Chile à trabalho, liguei para a AMEX e pedi uma passagem ida e volta Rio de Janeiro / Santiago. A falta de comunicação já começou quando a atendente me disse que havia um assento de ida direto do Rio de Janeiro para Santiago, porém que a volta seria com conexão em São Paulo. A falta de comunicação foi que, na verdade, não era conexão em São Paulo mas sim um vôo de Santiago para São Paulo e um outro de São Paulo para o Rio de Janeiro.

Bom, até aí ninguém tem culpa a não ser a AMEX. Aliás, esta não foi a primeira vez que eles me fazem algo assim. Se fosse por mim, não usava o serviço deles pois além de tudo é caro. Mas como estou preso à políticas de trabalho, não tenho muita escolha...

O problema real foi quando, na volta, fui fazer o check-in em Santiago. A atendente da LAN, companhia que estava voando, me disse que minha bagagem estaria "checada" até São Paulo somente e que lá eu deveria retirá-la, passar na Alfandega, sair do terminal, passar no balcão da TAM, fazer o meu novo check-in (agora de SP pro RJ), e aí passar na polícia mais uma vez, e etc, etc... Ou seja, uma bagunça total. Resolvi então ir no balcão da TAM, que era o vôo de SP pro RJ e uma parceira da LAN. Lá na TAM me informaram tudo diferente: disseram que minha mala deveria estar despachada direto ao RJ, que eu não ia precisar fazer Alfandega em SP, que eu não ia sair do terminal e etc, etc....

Conclusão: após um vôo horroroso cheio de bebês e crianças berrando durante sa 4h de vôo, eu cheguei em São Paulo e tive que fazer todo o trâmite de passar pela polícia, Alfandega, ir ao check-in da TAM, despachar bagagem, passar polícia e etc... só que agora em um vôo doméstico.

Mas vocês acharam que isso tudo foi tranquilo e que acabou por aí, né? Mais uma vez enganados, como eu.

Após fazer o check-in na TAM, olhar minha passagem e ver em letras grandes INFRAERO DOMÉSTICO, tive que ir para o embarque INTERNACIONAL e passar pela polícia seguindo as regras internacionais. Daí resolveram implicar com a minha pasta de dente (em tubo de 125g) e com o creme de mãos que tenho (de 75g). A pasta de dente disseram que era acima de 100g (apesar de estar no fim) e que deveria ser descartada. E o creme me disseram que, por não estar em um plástico, também deveria ser descartado.

E você acham que eu ia deixar por aí? Hehehehe, se enganaram, mas dessa eu não me enganei ;)

Não deixei barato. Comecei a gastar minha salíva, afinal eu tinha ainda 1:30h pra embarcar, e disse que todos os outros locais internacionais que viajei, incluindo USA, nunca implicaram com a minha pasta de dente. E que o meu creme de mãos, apesar de não estar no saco plástico, não deveria ser jogado fora pois é de obrigação do aeroporto fornecer o saco plástico, assim como em todos os outros aerportos que já passei.

Bom, pra finalizar o melo-drama brasileiro, a porno-chanchada (que infelizmente de nudez não teve nada :P ), a polícia que inspecionou a minha bagagem disse:

"Eu vou fingir que não vi, mas só dessa vez..."

Esse é o Brasil que vai sediar a Copa do Mundo em 2014 e as Olímpiadas em 2016. Esse Brasil tem que tomar muito "toddynho" e leite ninho nos próximos anos, ou vamos sediar a comédia trágica de ser o único país a ser desclassificado após ser classificado!

1 de fevereiro de 2011

Suspend e HIbernate pararam de funcionar após upgrade do Ubuntu 10.10

Costumeiramente faço os upgrades do Ubuntu assim que estão disponíveis. O interessante dos updates do Linux, versus updates do Windows por exemplo, é que realmente vemos a diferença quando fazemos os updates. Seja uma função adicional, uma melhoria na performance, ou, no meu caso, um problema que aparece.

Após o fazer um update, por volta do dia 28/01/2011, meu Ubuntu 10.10 parou de funcionar a função de "suspend" e "hibernate".

O equipamento que uso é um Lenovo Thinkpad T400. Meu kernel é o 2.6.35-25-generic.

Inicialmente acreditei que era um problema da placa gráfica Intel Mobile 4 Series, mas logo descobri que não. Olhei em alguns logs, como o /var/log/pm-suspend.log assim como o /var/log/messages e o dmesg mas nenhum falava claramente sobre algum problema.

Porém quando eu tentava fazer o "suspend" ou "hibernate" uma mensagem sobre os módulos do Trusted Platform Module (TPM) aparecia na tela. Infelizmente era rápido demais para analisar corretamente a mensagem.

O que fiz então foi usar um comando muito útil para analisar os módulos de kernel do TPM: modinfo. Fiz o seguinte:

  1. Pesquisei se havia algum módulo do TPM carregado no meu sistema


     # lsmod |grep tpm

  2. Encontrei 3 módulos: tpm_tis, tpm_bios e tpm. Verifiquei com o modinfo se havia algum parametro que eu poderia passar para este módulo.
 
     # modinfo tpm
     # modinfo tpm_tis
     # modinfo tpm_bios

  3. Dos 3 módulos, somente o tpm_tis tinha um parâmetro para passar. E o parâmetro dizia o seguine na sua descrição: "itpm:Force iTPM workarounds (found on some Lenovo laptops)". Ou seja, provavelmente esse parametro me ajudaria (já que meu laptop é Lenovo).

  4. Criei o arquivo /etc/modprobe.d/tpm_tis.conf e adicionei a seguinte linha options tpm_tis itpm=1. O arquivo teve que ser criado para garantir que este parametro será passado todas as vezes que o meu sistema for carregado.

     # echo "options tpm_tis itpm=1" >/etc/modprobe.d/tpm_tis.conf 

  5. Depois foi só descarregar o módulo e carregá-lo novamente

     # modprobe -r tpm_tis && modprobe tpm_tis

Após este procedimento tudo voltou ao normal. Agora ao fechar o meu laptop, ele entra em "suspend". E se fica muito tempo assim, vai para o "hibernate". Do jeito que era antes! :-D