Muitos dos usuários Linux um dia pensa em montar um servidor e não foi diferente comigo.
Umas das grandes "dificuldades" para um iniciante é achar uma distribuição adequada, para sua aprendizagem, pois uns só querem conhecer o sistema e outros são mais "loucos" querem ir mais a fundo no sistema. Desses 2 anos de GNU/Linux que tenho, passei por algumas distribuições (a maioria "MAJOR" dentro das existentes) como: Red Hat 9, Gentoo, Slackware, Debian, Arch, Kurumin, Ubuntu, Crux e tentei até NetBSD e FreeBSD (BSD não é linux, é um "UNIX-like" assim como GNU/Linux). Dentre todas que vejo por ai, se você realmente quer aprender recomendo as seguintes (de acordo com minha preferência, pois com o tempo você vai achar uma que se adeque a seu perfil):
- Arch
Crux
Gentoo
FreeBSD
Slackware
Qualquer uma dessas você vai ganhar muito conhecimento, desde a compilação de um pacote até conhecer seu sistema a fundo, como: inits, system call, etc...
"Mas onde, vai entrar a história do servidor?"
Calma amiguinho, estou falando isso pois a escolha para uma distribuição para se colocar no servidor é muito importante. Se você chegar e perguntar a uma pessoa experiente sobre qual distribuição usar eles vão responder: "Use Slackware ou Debian, pois são estáveis, tem o FreeBSD e o OpenBSD que são bem seguros e estáveis."
Certo, são excelentes escolhas. Porém temos que ver outras coisas como familiaridade com o sistema, nivel de conhecimento e tempo para montar o servidor.
Como sempre tirando minhas dúvidas no IRC e no google, cheguei a conclusão que iria usar Arch Linux para montar meu primeiro servidor. Muitos podem falar: "ah ele é louco por usar Arch Linux". Mas conhece o sistema, uso a mais de 1 ano e sei como funciona. Por ouvir isso, fui perguntar a algumas pessoas sobre a minha escolha.
Vocês vão ver que um mau uso e o não conhecimento perante uma distribuição acaba prejudicando-a. Em alguns momentos ele entra em contradição ao falar que Arch não é boa para servidor, pois ele diz que faz algumas coisas em servidores e por que não fazer no Arch também ?????
Outra coisa é você usar a distribuição no desktop e outra é em servidor, o Arch visa muito a estabilidade do SISTEMA E NÃO DO DESKTOP. Espero que isso esclareça algumas coisas, quem usa e acompanha as atulizações do Arch sabe muito bem que 80% das atualizações são para pacotes de desktop, uns 10% para atualização da base do sistema e os outros 10% são para pacotes com bugs e questão de releases do Arch. O ponto principal de montar um servidor é saber o que você vai fazer e como fazer, com isso usar uma distribuição que você conhece é muito importante, pois facilitará seu trabalho.
Uma coisa que aprendi foi: Se você aprendeu a compilar um pacote, aprendeu a criar um pacote para sua distribuição favorita, aprendeu a configurar tudo na linha de comando. Então aprendeu a usar GNU/Linux, lógico que existe algumas particularedades entre distros, mas isso você tira de letra.
Ainda afirmo, a melhor distribuição é aquela que te dar PODER DE CONFIGURAÇÃO TOTAL NA LINHA DE COMANDO. Tenho tudo isso no Arch, então vou usa-lá, essa foi a minha decisão.
Feito isso vamos para a parte de elaboração do que vai ser colocado no servidor.
- 1- Firewall;
2- Proxy;
3- Outros, vão sendo implementados conforme as necessidades.
Uma coisa que eu aprendi vendo a galera no IRC, foi: "Antes de colocar logo como servidor, coloque a máquina em rede e vá configurando até substituir o servidor atual."
Foi o que eu fiz e surgiu meu primeiro problema, botar o Arch em rede. Editei no rc.conf pra setar o ip para entrar em rede, setei com ifconfig fiz várias coisas para verificar o problema até route -n usei para verificar se a rota tá correta, para no final ver que não tinha editado o /etc/resolv.conf
Ip: 192.168.1.11
Gateway: 192.168.1.254
DNS: 192.168.1.254
- Código: Selecionar tudo
#
# /etc/resolv.conf
#
nameserver 192.168.1.254
Todo o meu problema foi esse ai, mesmo sabendo o que era preciso para botar em rede não prestei atenção no /etc/resolv.conf. O primeiro problema foi resolvido.
Atualizei o Arch Linux 0.8 (VooDoo) que saiu no final de Março e foram apenas 53 mb de atualização, pois as releases foram modificadas. Isso mostra para mostrar o nivel de atualização do arch é baixo para a base do sistema, onde se quer mais estabilidade, pois é aqui que muitos vão trabalhar para "construir/moldar" seu sistema, tanto para servidor (como é o meu caso) e para desktop (como tenho em casa).
Atualização pronta, vamos instalar os pacotes necessários e começar a configurar (não vou cobrir a utilização e configuração do pacman ou do abs. Apenas uma dica, na utilização como servidor fique atento nos repositórios para não usar repositórios desnecessários).
- Código: Selecionar tudo
# pacman -Sy iptables
Agora começa a minha briga, pesquisa no wiki, google, pdfs e outros, para aprender iptables acabou gerando algumas dificuldades: elaborar regras, saber quais módulos necessários e como configurar no Arch (se fosse qualquer outra distribuição eu não saberia configurar).
Solução:
Pegar regras "prontas" e analisar, na minha opinião saiu melhor assim do que pegar só a teoria. Você analisando as regras "prontas" fica melhor de se adequar as necessidades e conforme for passando o tempo vai ganhando mais experiência com iptables, mas sempre estudando o mesmo.
Depois de ter achado uma solução ter tirado algumas dúvidas, o que era preciso de urgência?
Compartilhar a internet, para o pessoal começar a trabalhar pois o servidor (um computador antigo rodando coyote) que estava realizando essa função resolveu deixar de funcionar.
Veio outro problema, conexão adsl não funcionava, configuração de tudo que é jeito e reinstala os pacotes. Quando o real problema que tinha era na linha do telefone. Passei 1 dia nisso tentando resolver esse probleminha, vamos para o compartilhamento.
Iptables no Arch funciona de forma semelhante ao Gentoo, iptables.rules. Como funciona isso?
Primeiro vamos ver os arquivos principais:
iptables /etc/conf.d/iptables
iptables /etc/iptables/empty.rules
iptables /etc/iptables/simple_firewall.rules
iptables /etc/rc.d/ip6tables
iptables /etc/rc.d/iptables
Iptables.rules funciona da seguinte maneira, primeiro você na linha de comando digita as regras:
- Código: Selecionar tudo
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# /etc/rc.d/iptables save
# /etc/rc.d/iptables start
iptables save ele salvará as regras e irá gerar o /etc/iptables/iptables.rules. Mas e o echo 1 > /proc/sys/net/ipv4/ip_forward ? Não se preoculpe ele já vem por padrão no /etc/rc.d/iptables. Por questão de deixar algo universal e por querer aprender shell script, resolve criar um /etc/rc.d/firewall onde criei um shell script básico contendo as regras e deixando ele no padrão de inicialização do Arch, veja abaixo:
- Código: Selecionar tudo
#!/bin/bash
#
#
# Habilitando IpForward
echo 1 > /proc/sys/net/ipv4/ip_forward
# Compartilhando
iptables -t -A POSTROUTING -o ppp0 -j MASQUERADE
Conexão ADSL funcionando legal, chegou a hora de testar as regras feitas. Testei das 2 formas como foi falado a cima e nada de funcionar, ou seja, máquinas clientes rodando windows não conseguiam acesso a internet, pedindo auxilio a alguns amigos tive o mesmo problema de DNS, só que dessa vez nos clientes windows, onde a configuração correta era:
Ip: 192.168.1.11
Gateway: 192.168.1.254
DNS1 VELOX
DNS2: VELOX
Onde o gateway seria o Arch e os DNS seriam os da Velox. Depois que isso foi resolvido, testei as 2 formas de criação de regras e ambas funcionarão. Observem que um grande problema, na hora de configurar é a falta de atenção, tomem muito cuidado com isso. Outras regras de iptables forão adicionas e ambas as formas de eleboração e estão funcionando, porém só utilizo o /etc/rc.d/firewall para melhor compreensão e aprendizagem.
Um problema que tive na primeira semana de estágio foi tempo para testar o que estou fazendo, pois fico só configurando e só posso testar no final do primeido período de trabalho. Depois que coloquei o Arch em rede, configurei e botei para servidor esse problema acabou.
Iptables funcionando de forma adequada, Arch rodando perfeitamente como servidor e se saindo muito bem, a sensação de trabalho bem feito e bem elaborado (apesar de ser a primeira vez que faço isso, tento sempre elaborar um roteiro bem estruturado e sempre comentando o que faço, anotando erros e soluções adotadas), aparece e seu trabalho é feito sem problemas.
Outra coisa é não apressar-se, pois a maioria dos problemas que tive foi, tentar fazer as coisas rápido. Fiquem atentos a isso.
Dicas:
man iptables
http://www.netfilter.org
http://www.eriberto.pro.br/iptables
http://focalinux.cipsga.org.br/guia/ava ... tables.htm
http://www.netfilter.org/documentation/ ... HOWTO.html
http://iptables-tutorial.frozentux.net/ ... index.html
http://iptables-tutorial.frozentux.net/scripts/
http://www.slackware-rn.com.br/~leoarcher/
Dicas 2:
# Como compartilhar a internet um bom artigo que achei por ai.
http://br-linux.org/tutoriais/000685.html
Após a configuração completa e bem sucedida da conexão adsl e do iptables, chegando no outro dia tive um grande problema com o noip, ele não queria "resolver" o nome na conta criada no site. Foi preciso apagar o endereço lá existente e criar outro. Para instalar e configurar não tem mistério, usando o pacman ou ABS a instalação é tranquila.
Precisando apenas descomentar o repositório community tanto no pacman.conf como no abs.conf, depois de usar é só comentar novamente para não ter problemas com esse repositório mais na frente. SEMPRE TENHA CUIDADO A USAR QUALQUER, EU DISSE QUALQUER GERENCIADOR DE PACOTES, POIS SE VOCÊ NÃO CONHECE-LO BEM PODE ACABAR PREJUDICANDO O SERVIDOR.
Depois dos repositórios descomentados faça:
- Código: Selecionar tudo
# pacman -Sy noip
ou
- Código: Selecionar tudo
# abs
# cd /var/abs/community/network/noip
# pwd
/var/abs/community/network/noip
# makepkg
# pacman -A noip-2.1.4-1-i686.pkg.tar.gz
No abs, ele irá dar um "erro" por que na hora da criação do pkgbuild não foi adicionado a opção arch=(i686).
- Código: Selecionar tudo
[root@archlinux noip]# makepkg
==> ERROR: noip is not available for the 'i686' architecture.
Note that many packages may need a line added to their PKGBUILD
such as arch=('i686').
Com a instalação e configuração do noip completa foi preciso editar o meu /etc/rc.d/firewall e botar algumas regras de redirecionamento de portas, tudo tranquilo e rodando perfeitamente.
Realmente aprender a montar um servidor não é dificil e também o ganho que conhecimento fazendo isso é muito grande. Depois do firewall e noip, o mais trabalhoso foi o squid, vejamos o por quê.
Primeiro vamos instalar o squid:
- Código: Selecionar tudo
# pacman -Sy squid
Squid instalado, vamos configurar...
OBS.: Por padrão todo e qualquer pacote relativo ao sistema (sistema modo texto e servidor), EU DISSE "SISTEMA" e não pacotes relativos a Desktop, devem ter seu arquivos de configuração no /etc.
- Código: Selecionar tudo
# cd /etc/squid
# mv squid.conf squid.conf.old
# grep -iv ^# squid.conf.old squid.conf (Isso irá tirar os comentários deixando só as configurações padrões)
# vi squid.conf
A configuração não é dificil e nem complexa, pois existem materiais muito bons por ai (vide squid.ninja). Porém algumas configurações não são equivalente pois a versão no Arch Linux é a 2.6.STABLE13. Essa foi a minha primeira dificuldade, pois precisa de proxy transparente.
Mas a maior dificuldade não foi essa, foi conseguir assimilar as ordem das acls depois disso foi tudo mais fácil.
Link:
http://www.linuxman.pro.br/squid/
Cheguei ao final desse pequeno estudo de caso, aconteceu comigo e acho que aconteceu com várias pessoas na sua primeira vez também.
Mas você pode se perguntar, "Não entendi a finalidade desse artigo."
A finalidade do artigo foi mostrar alguns pontos:
- 1- Arch Linux é estável para ser usado como servidor;
2- Mostrar que a distribuição que você mais curte/adora/mais sabe mexer/que tem mais afinidade é a mais indicada a usar, pois assim você tem mais possibilidades de aprender;
3- As distrbuições totalmente baseadas em linha de comando e edição de arquivos (veja o inicio do artigo) são mais gratificantes em relação a nivel de conhecimento;
4- Conhecer profundamente a distribuição que se está usando é muito importante para fazer um bom trabalho, se você pegar uma distribuição baseada na linha de comando tudo fica mais fácil mesmo não sendo bem conhecida bastando só se adapta-se a mesmo, o que leva um tempo.
Agradecimentos:
- Vuln pelo indicação do sites e por liberar o espaço em: http://www.slackware-rn.com.br/~leoarcher/
NoComments por algumas dicas e tirar algumas dúvidas.
Hlegius pela ajuda no entendimento de algumas coisas com iptables.
Underguiz no auxilio sobre o lance do DNS.
ratifers pela ajuda no entendimento das acls no squid.
Arch Linux FOREVER...
