Buscar

compartilhado rede e dhcp

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Extraído do livro: Servidores Linux, Guia Prático, de Carlos Morimoto.
Quer comprar o Servidores Linux, Guia Prático impresso? Clique aqui!
Capítulo 2: Compartilhamento , DHCP e Proxy
Um dos usos mais comuns e mais simples para um servidor Linux de rede local é simplesmente
compartilhar a conexão. A vantagem de usar um servidor dedicado ao invés de simplesmente
compartilhar usando o próprio modem ADSL é que você pode incluir outros serviços, como um cache de
páginas (Squid), filtro de conteúdo (SquidGuard ou DansGuardian), firewall, servidor Samba
(compartilhando arquivos com a rede interna), servidor de impressão e assim por diante.
Em uma rede pequena ou média, com de 10 a 50 micros, é possível usar um único servidor de
configuração razoável para todas estas funções. Em redes maiores, com 100 micros ou mais, isso
passa a depender muito do nível de utilização do servidor. Por exemplo, um simples Pentium 100, com
32 MB de RAM pode compartilhar a conexão com um link de até 8 megabits para um número indefinido
de clientes. O mesmo servidor pode compartilhar uma impressora e compartilhar arquivos (serviços
mais pesados que simplesmente compartilhar a conexão), desde que estes serviços não sejam
utilizados de forma intensiva. Porém, uma configuração modesta como esta já não é adequada para
rodar um servidor proxy para uma rede de 50 micros, por exemplo.
Uma máquina mais atual, como um Pentium E ou um Athlon X2, com 512 MB de RAM e um HD de
7200 RPM, já pode rodar o mesmo proxy para 100 ou 200 micros com folga, incluindo serviços
adicionais (como uma VPN, por exemplo). Adicione 2 GB de RAM e ele poderá rodar também um
servidor de arquivos para os mesmos 200 micros.
Máquinas mais parrudas podem desempenhar funções mais pesadas. Você pode, por exemplo, usar o
VMware Server (que veremos em detalhes mais adiante) para rodar diversas máquinas virtuais, cada
uma com um sistema operacional diferente, de forma a atender diversos usuários da rede. Dessa forma,
você pode concentrar aplicativos Windows em uma máquina virtual com o Windows 2003 e o Terminal
Services, oferecer aplicativos para usuários remotos usando um servidor com o Fedora e o NX Server
(que veremos em detalhes no capítulo sobre acesso remoto) e assim por diante. Você pode até mesmo
manter algumas máquinas virtuais com sistemas antigos, como o Windows 98, para rodar aplicativos de
legado que rodam apenas sobre ele. Mas, cada coisa a seu tempo :)
Compartilhando a conexão
Do ponto de vista da segurança e até mesmo da facilidade de configuração, é sempre recomendável
usar um servidor com duas placas de rede, separando o tráfego proveniente da internet do tráfego da
rede local. Com duas placas separadas, fica mais fácil criar as regras de firewall adequadas para
bloquear acessos provenientes da internet e, ao mesmo tempo, permitir o tráfego vindo da rede local.
Se você acessa via ADSL, é recomendável manter o modem configurado como bridge ao invés de
configurá-lo como roteador. Dessa forma, o servidor recebe todas as portas de entrada, permitindo que
você acesse o servidor remotamente via SSH (muito útil para prestar suporte remoto em servidores
instalados por você) ou disponibilize um servidor web ou FTP.
Embora acabe sendo mais trabalhoso, nada impede que você configure o modem como roteador e use
o servidor para novamente compartilhar a conexão recebida do modem, acrescentando os demais
serviços. Nesses casos, você vai precisar configurar o modem para encaminhar ao servidor as portas
que devem ficar abertas, como a porta 22, usada pelo SSH (caso você pretenda administrar o servidor
remotamente), por exemplo. Isso é feito através da interface de administração do modem, através da
opção "Port Forwarding", ou similar:
Página 1 de 7
Extraído do livro: Servidores Linux, Guia Prático, de Carlos Morimoto.
Quer comprar o Servidores Linux, Guia Prático impresso? Clique aqui!
Encaminhamento de portas dentro da configuração de um D-Link 500G
As opções de configuração variam bastante de acordo com o modelo do modem, mas (com exceção de
um punhado de modelos realmente muito antigos) deve estar disponível pelo menos a opção de criar
regras estáticas de encaminhamento, onde você pode encaminhar um conjunto de portas, incluindo
uma regra para cada uma. Na maioria dos casos, a interface de configuração do modem permite
também encaminhar faixas de portas, ou criar uma DMZ (o que faz com que todas as portas sejam
encaminhadas para o servidor, como se ele estivesse diretamente conectado à Internet).
No final, sua rede ficaria com uma topologia similar a essa, com o servidor colocado entre a rede local e
o modem. Uma das interfaces do servidor receberia um endereço de rede local, de forma a receber os
acessos provenientes dos clientes da rede e a segunda seria configurada para acessar a Internet
através do modem:
Ao usar uma conexão via cabo, o layout da rede continua o mesmo, a única diferença é que no acesso
via cabo a configuração da conexão é mais simples, já que é preciso apenas obter a configuração da
rede via DHCP e não é necessário configurar o roteamento de portas, já que o cable modem funciona
como um bridge.
Depois de montar o cabeamento da rede, comece configurando a rede local usando uma das faixas de
endereços IP reservadas como, por exemplo, a 192.168.1.x, onde o servidor fica com o IP 192.168.1.1
(ou 192.168.1.254, caso prefira) e os micros da rede interna recebem endereços dentro da mesma
faixa. O endereço IP de rede local do servidor (192.168.1.1 no exemplo) passa a ser o gateway da rede,
já que é a ele que os clientes irão contactar quando precisarem acessar qualquer endereço externo:
Página 2 de 7
Extraído do livro: Servidores Linux, Guia Prático, de Carlos Morimoto.
Quer comprar o Servidores Linux, Guia Prático impresso? Clique aqui!
No caso do servidor, o gateway padrão é definido apenas ao configurar a conexão com a Internet, não
ao configurar a rede local. Caso você utilize um utilitário de configuração para configurar as interfaces
de rede no servidor, configure primeiro a interface de rede local, mantendo os campos do default
gateway e dos servidores DNS em branco, deixando para configurar a interface da Internet por último.
Isso evita alguns erros comuns. Por exemplo, se você configurar a conexão com a web e depois
configurar a rede local, colocando um endereço qualquer no campo "default gateway", o gateway
informado na configuração da rede local vai substituir o gateway do provedor (definido ao conectar na
internet), fazendo com que a conexão deixe de funcionar.
Aqui temos um exemplo de configuração manual da rede para distribuições derivadas do Debian, onde
a interface eth0 é usada como interface de rede local e a eth1 é usada como placa de internet,
configurada via DHCP:
# sudo nano /etc/network/interfaces
auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
iface eth1 inet dhcp
Agora reinicie as interfaces com os comandos:
# sudo ifdown eth0
# sudo ifup eth0
# sudo ifdown eth1
# sudo ifup eth1
Página 3 de 7
Extraído do livro: Servidores Linux, Guia Prático, de Carlos Morimoto.
Quer comprar o Servidores Linux, Guia Prático impresso? Clique aqui!
Depois de configurada a rede, verifique se consegue pingar os PCs da rede interna (ex: ping
192.168.1.61) a partir do servidor. Se estiver usando Linux nas estações, experimente ativar o servidor
SSH em uma das estações e tentar se conectar a ela a partir do servidor.
Da primeira vez que configurar a rede, use endereços IP estáticos para todas as estações, pois assim é
mais fácil detectar problemas diversos. Depois de tudo funcionando,mude para configuração via DHCP,
como veremos a seguir. Se alguma das estações estiver inacessível, verifique se não existe um firewall
ativo, verifique o cabo de rede e experimente trocar a porta usada no switch.
Ativando o compartilhamento
Depois de tudo preparado, ativar o compartilhamento propriamente dito é bastante simples. No Linux, o
compartilhamento é feito usando o Iptables, o firewall integrado ao Kernel. Na verdade, o Iptables é
expandido através de módulos, por isso suas funções vão muito além das de um firewall tradicional,
incluindo funções avançadas de roteamento. Para ativar o compartilhamento, são necessários apenas
três comandos:
# modprobe iptable_nat
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Substitua o "eth1" pela placa da Internet. Este comando simplesmente compartilha a conexão
proveniente da placa da internet com todas as demais placas de rede espetadas no servidor, por isso
não é necessário especificar a placa de rede local.
O primeiro comando ativa o "iptable_nat", o módulo do Iptables responsável por oferecer suporte ao
roteamento de pacotes via NAT. O segundo ativa o "ip_forward", o módulo responsável pelo
encaminhamento de pacotes, utilizado pelo módulo iptable_nat.
Finalmente, o terceiro cria uma regra de roteamento, que orienta o servidor a direcionar para a internet
todos os pacotes (recebidos dos clientes) que se destinarem a endereços que não façam parte da rede
local (ou seja, qualquer coisa fora da faixa 192.168.1.x). A partir daí, o servidor passa a ser o gateway
da rede.
Em muitas distribuições com o Kernel 2.6, é necessário usar um quarto comando ao compartilhar uma
conexão ADSL. Este comando ajusta os tamanhos dos pacotes recebidos do modem ao MTU usado na
rede local. Note que, apesar da diagramação do livro tornar necessário quebrar o comando em duas
linhas, trata-se de um único comando:
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m \
tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
A barra invertida ("\") faz com que o shell não interprete o caractere seguinte (no caso, a quebra de
linha), permitindo quebrar o comando em duas linhas, sem causar um erro. Esse é um truque que
permite incluir comandos longos demais para caberem na página, divididos em duas linhas ou mais. Na
verdade, o comando forma uma única linha.
Como de praxe, é importante proteger o servidor de ataques provenientes da Internet usando um
firewall. Podemos ativar um firewall simples de bloqueio usando mais alguns comandos do Iptables,
complementando os três comandos anteriores:
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
Página 4 de 7
Extraído do livro: Servidores Linux, Guia Prático, de Carlos Morimoto.
Quer comprar o Servidores Linux, Guia Prático impresso? Clique aqui!
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
O primeiro comando faz com que o seu servidor deixe de responder a pings, o que evita muitos ataques
casuais. Os dois comandos seguintes protegem contra IP spoofing (uma técnica usada em diversos
tipos de ataques, onde o atacante envia pacotes usando um endereço IP falseado como remetente,
tentando assim obter acesso a PCs da rede interna) e contra pacotes inválidos, que são comumente
utilizados em ataques DoS e ataques de buffer overflow.
As duas linhas seguintes autorizam pacotes provenientes da interface de loopback (lo), juntamente com
pacotes provenientes da rede local. Como pode ver, a sintaxe das regras do Iptables segue um padrão
lógico, onde você especifica uma determinada condição e diz o que o firewall deve fazer com os
pacotes que se enquadrarem nela. No caso da regra que autoriza os pacotes da rede local (iptables -A
INPUT -i eth0 -j ACCEPT) usamos os parâmetros "-A INPUT" (pacotes de entrada) e "-i eth0" (recebidos
na interface eth0), seguidos da regra "-j ACCEPT", que diz que os pacotes devem ser aceitos sem
checagem adicional. Não se esqueça de substituir o "eth0" pela interface de rede local correta, caso
diferente.
Continuando, a linha "iptables -A INPUT -p tcp --dport 22 -j ACCEPT" abre a porta 22, usada pelo SSH
para conexões externas, permitindo que você possa administrar o servidor remotamente. Você pode
abrir mais portas simplesmente adicionando mais linhas, com as portas desejadas. Concluindo, temos a
linha "iptables -A INPUT -p tcp --syn -j DROP", que faz o trabalho pesado, bloqueando tentativas de
conexão provenientes da Internet.
Depois de testar o compartilhamento, falta fazer com que os comandos sejam executados durante o
boot, tornando a configuração permanente. A forma mais simples de fazer isso é colocar os comandos
no arquivo "/etc/rc.local", um script próprio para a tarefa, que está disponível tanto em distribuições
derivadas do Debian quanto em distribuições da linhagem do Red Hat. Um exemplo de arquivo
completo, incluindo os comandos para ativar o firewall seria:
#!/bin/sh
# sudo nano /etc/rc.local
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
Esta receita é genérica, deve funcionar em qualquer distribuição. Lembre-se de substituir "eth1" pela
interface de internet e o "eth0" pela interface de rede local, caso diferentes.
Uma segunda opção, mais elegante, porém mais complicada, é criar um serviço de sistema, que pode
ser ativado e desativado. Neste caso, crie o arquivo de texto "/etc/init.d/compartilhar". Dentro dele vão
as linhas a seguir:
#!/bin/bash
# Interface da Internet:
Página 5 de 7
Extraído do livro: Servidores Linux, Guia Prático, de Carlos Morimoto.
Quer comprar o Servidores Linux, Guia Prático impresso? Clique aqui!
ifinternet="eth1"
# Interface da rede local
iflocal="eth0"
iniciar(){
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $iflocal -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
}
parar(){
iptables -F
iptables -F -t nat
}
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parâmetros start ou stop"
esac
Este é um shell script que aceita três funções: start, stop e restart, executando dentro de cada uma os
comandos que compartilham e param o compartilhamento da conexão. Esta estrutura é similar à usada
nos demais scripts de inicialização do sistema, como os do Apache, Samba, Squid e outros serviços.
Veja que em vez de especificar as interfaces de internet e de rede local dentro dos comandos, passei a
usar duas variáveis no início do script, que facilitam a configuração e tornam o script mais elegante.
Quando precisar usar o script em outra máquina, onde as interfaces sejam diferentes, você precisa
apenas se lembrar de alterar as duas variáveis. Note também que os comandos a partir do "iptables -A
INPUT -p icmp --icmp-type echo-request -j DROP" correspondem às proteções e ao firewall e podem
ser removidos caso desejado.
Para usar o script,transforme-o em um arquivo executável, usando o comando:
# chmod +x /etc/init.d/compartilhar
A partir daí, você pode iniciar e parar o compartilhamento usando os comandos:
# /etc/init.d/compartilhar start
# /etc/init.d/compartilhar stop
Página 6 de 7
Extraído do livro: Servidores Linux, Guia Prático, de Carlos Morimoto.
Quer comprar o Servidores Linux, Guia Prático impresso? Clique aqui!
Para que o script seja executado durante o boot, você pode adicionar o comando
"/etc/init.d/compartilhar start" no arquivo "/etc/rc.local", em vez de colocar os comandos diretamente,
como fizemos no exemplo anterior.
Outra opção (mais elegante) é criar um link para ele dentro da pasta "/etc/rc5.d", o que também faz com
que ele seja executado durante o boot:
# cd /etc/rc5.d
# ln -s ../init.d/compartilhar S21compartilhar
Como vimos no primeiro capítulo, o "S" indica que o script deve ser executado com o parâmetro "start" e
o "21" indica a ordem em que deve ser executado durante o boot, em relação aos outros serviços. A
ordem de execução dos serviços muda de distribuição para distribuição, mas nessa posição garantimos
que ele será executado depois da ativação das interfaces de rede e de outros serviços essenciais.
Se você é um administrador paranóico, verifique a configuração dos serviços na distribuição em uso e
altere a ordem de inicialização do script de firewall, de forma que ele seja carregado antes de qualquer
outro serviço que aceite conexões, como o Samba ou o Apache. Com isso você garante que o firewall
será carregado primeiro e não fica com seu servidor vulnerável nem mesmo por um curto espaço de
tempo durante o boot.
Isso nos leva a uma terceira opção para salvar a configuração, utilizando os próprios arquivos de
inicialização do sistema. Ela é a mais "correta" do ponto de vista técnico, embora menos flexível. Nesse
caso, a configuração seria feita em três passos:
A primeira parada seria o arquivo "/etc/modules", onde são listados os módulos carregados pelo sistema
durante o boot. Nele seria adicionada a linha "iptables_nat", ativando o carregamento do módulo. Em
seguida, você adicionaria (ou descomentaria) a linha "net.ipv4.conf.default.forwarding=1" no arquivo
"/etc/sysctl.conf", para ativar o roteamento de pacotes, tornando permanente o comando "echo 1 >
/proc/sys/net/ipv4/ip_forward".
Finalmente, depois de executar o comando "iptables -t nat -A POSTROUTING -o $placa -j
MASQUERADE", que efetivamente ativa o compartilhamento, você usaria o comando"/etc/init.d/iptables
save active" (nas derivadas do Debian) ou "service iptables save" (nas derivadas do Red Hat) para
salvar regra e fazer com que ela passe a ser reativada durante o boot.
No livro, você verá ainda como Compartilhar usando uma única placa de rede
Página 7 de 7
	Capítulo 2: Compartilhamento, DHCP e Proxy
	Compartilhando a conexão
	Ativando o compartilhamento

Outros materiais