Montando Servidor de Internet com Ubuntu Server

Abordagem deste artigo vai tratar da montagem um servidor para compartilhamento de Internet para uma pequena empresa, utilizando os serviços de DHCP e IPtables.

[ Hits: 153.366 ]

Por: Wagner Souza em 12/09/2014 | Blog: https://medium.com/@souzaw


Configuração dos links



Não vou entrar no mérito da instalação do sistema operacional. Vou levar em consideração que o sistema já esteja instalado.

Os dois links que o cliente possui são de operadoras distintas e o modem da mesma, se encarrega de fazer a discagem PPPoE. Os dois links estão conectados a um Switch e o servidor também.

Essa é uma configuração semelhante em pequenas empresas e escritórios que não têm tantos recursos para manter uma infraestrutura mais adequada.

As informações que nos foram passadas pelo cliente a respeito do link, são:

Link 1 - Primários:
  • IP do modem: 10.0.2.2
  • Máscara: 255.255.255.0
  • Rede: 10.0.2.0
  • Interface: eth0

Link 2 - Secundário:
  • IP do modem: 192.168.1.1
  • Máscara: 255.255.255.0
  • Rede: 192.168.1.0
  • Interface: eth1

Rede local

Com essas informações, já podemos configurar as interfaces de rede do servidor. A máquina possui três interfaces de rede, onde duas são para os links de Internet e a outra para a rede local. O servidor precisa estar com os IPs configurados como fixo. Esta configuração deverá ser feita no arquivo /etc/network/interfaces.

# vi /etc/network/interfaces

E a configuração ficaria da seguinte forma:

# Link Primário
auto eth0
iface eth0 inet static
        address 10.0.2.254
        netmask 255.255.255.0
        network 10.0.2.0
        broadcast 10.0.2.255

# Link Secundário
auto eth1
iface eth1 inet static
        address 192.168.1.254
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255

# Rede Local
auto eth2
iface eth2 inet static
        address 10.10.10.254
        netmask 255.255.255.0
        network  10.10.10.0
        broadcast 10.10.10.255

Salve o arquivo e saia do mesmo.

Para que as interfaces de redes sejam configuradas, execute o comando:

# /etc/init.d/networking restart

Verifique se as três placas subiram com as devidas configurações.

# ifconfig

Se por algum motivo não estiver apresentando informações dos IPs nas placas, ou se elas não subiram, execute o comando abaixo que analisa o conteúdo do arquivo /etc/network/interfaces e reconfigure as mesmas com as informações contidas neste arquivo:

# ifdown eth0
# ifup eth0
# ifdown eth1
# ifup eth1
# ifdown eth2
# ifup eth2

Configurando o FailOver dos links

Este serviço vai permitir que caso haja uma falha no primeiro link, o secundário possa assumir até o retorno do primário.

Neste cenário, há dois gateways:
  • 10.0.2.2 (Primário)
  • 192.168.1.1 (Secundário)

E abaixo, está o script utilizado para fazer o FailOver dos dois links:

#!/bin/bash

#---------------------------#
# CONFIGURAÇÃO DOS GATEWAYS #
#---------------------------#

GW1=10.0.2.2
GW2=192.168.1.1
LOG=/root/rc.firewall.log

#------------------------------#
# INÍCIO DA FUNÇÃO DE FAILOVER #
#------------------------------#

# Aqui optei em por uma função para deixar a estrutura do
# script mais organizada e legível. É de suma importância
# que você esteja familiarizado com o shell script

failover ()
{

# Criação de um loop infinito para testar a disponibilidade
# dos links de internet

while [ 1 ]
do

# Altera sempre para o gateway padrão dentro da tabela
# main de roteamento, ou seja, quando o link primário voltar,
# automáticamente a navegação volta para este

/sbin/ip route replace default via $GW1

# Neste for, o comando dig retornará os dois IPs relacionados
# ao site do UOL. Você poderia por qualquer site aí, porém o UOL
# retorna dois IPs que serão utilizados pelo script para saber
# se o link de internet principal está fora

for i in `dig +short uol.com.br`
do

# Verificando a comunicação do link de internet

        /bin/ping -c 1 $i
done

# Caso o resultado do comando anterior seja 0 (zero), o link
# de internet principal está ok. Se for 1 (um) houve falha no comando
# deduzindo assim ausência de conexão. Quem vai determinar isso é o
# comando echo $?. Mais abaixo, haverá um if para testar as condições

STATUS_CMD_LINK=`echo $?`

if [ $STATUS_CMD_LINK -eq 0 ]; then

# Caso haja sucesso no teste do comando do ping
# as regras para o compartilhamento de internet serão inseridas

        /sbin/iptables -F
        /sbin/iptables -t nat -F

        /sbin/modprobe iptable_nat
        echo 1 > /proc/sys/net/ipv4/ip_forward
        /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
else

# Se o link falhar, os comandos mais abaixo farão a limpeza
# das regras de iptables e irão configurar o segundo link de internet
# e será criado um arquivo de log informando quando houve a queda

        echo "_________________________" >> $LOG
        echo " " >> $LOG
        echo "# LINK SECUNDARIO ATIVO.: `date +%d/%m/%y-%H:%M:%S`">> $LOG
        echo " " >> $LOG
        echo "_________________________" >> $LOG

                /sbin/ip route replace default via $GW2

                /sbin/iptables -F
                /sbin/iptables -t nat -F

                /sbin/modprobe iptable_nat
                echo 1 > /proc/sys/net/ipv4/ip_forward
                /sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

fi

# A cada 2 minutos (120 segundos) será feito um teste no link
# principal para constar se o mesmo encontra-se no ar.

sleep 120

done
}

####### CHAMA A FUNÇÃO ########

failover

Lembre-se de salvar o seu script e dar permissão de execução ao mesmo:

# chmod +x failover.sh

É interessante deixar o script sendo executado em segundo plano, para liberar o terminal para outras atividades.

# ./failover.sh

Não esqueça de pôr a execução do script na inicialização do sistema operacional. Edite o arquivo /etc/rc.local e insira o caminho do script:

# vi /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/root/failover.sh &

exit 0

Após salvar o arquivo, reinicie a máquina e veja se o script estará rodando com o comando:

# ps -auxf | grep failover

Pronto! Os links já estão configurados e liberando a Internet para a rede local. Vamos agora configurar o serviço de DHCP e, por último, acrescentar mais algumas regras às tabelas do IPtables.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Configuração dos links
   3. Configurando o servidor DHCP
   4. Configurações de Firewall
Outros artigos deste autor

Resetando senha de usuário root em sistemas Debian e Red Hat

Teste de Intrusão com Metasploit

Shell Script nosso de cada dia - Episódio 3

Elastic SIEM - Instalação e Configuração do LAB (Parte I)

Exploração de Falhas em Servidores FTP

Leitura recomendada

Instalando e configurando modem SpeedTouch 330 USB no Slackware 10

Instalando drivers para placas de vídeo SiS

Colinux com Debian - Linux Rodando Dentro do Windows

Configurando o CACIC (parte 1)

Configuração de servidor DHCP no Debian Linux

  
Comentários
[1] Comentário enviado por danniel-lara em 12/09/2014 - 09:43h

Parabéns pelo Artigo principalmente pela parte de Configuranção do FailOver

[2] Comentário enviado por kciolucio em 12/09/2014 - 09:58h

Muito bom artigo Wagner, parabéns!

[3] Comentário enviado por konishi em 15/09/2014 - 19:08h

Muito bom!

[4] Comentário enviado por thalesx em 29/09/2014 - 16:09h

Excelente!

[5] Comentário enviado por kaique-rangel em 30/10/2014 - 16:23h

Muito Bom!

[6] Comentário enviado por removido em 04/11/2014 - 15:48h

Excelente material!

[7] Comentário enviado por fbocosta em 13/11/2014 - 10:41h

SHow !! Mais e o controle de banda ?

[8] Comentário enviado por metzjuarez em 11/12/2014 - 09:05h

Bom dia, preciso de uma ajuda, fiz todos os passos descritos, mas não consigo navegar na internet nos clientes.

O servidor é Ubuntu Server 14.04 LTS.
Tem 3 placas de redes.
2 entra a internet, estão fucionando.
1 sai a rede local, está distribuindo os endereços de rede, porem não navegam.

O que pode ser que está faltando?

[9] Comentário enviado por MAPOGOS em 20/12/2014 - 19:44h

Muito bom este arquivo.

[10] Comentário enviado por augusto.jcs em 13/01/2015 - 18:24h

Wagner Souza, gostaria de saber se nessa configuração de servidor fica só um gateway pra toda a rede mesmo com dois links de conexão ??? Pois tenho uma pequena rede de 30 Pcs, tenho dois links de acesso a internet e gostaria das mesmas configurações do seu artigo acima só que um link distribuísse para 15 pcs e o outro para os outros 15... se e que você me entendeu!!!??? Desde já agradeço se me ajudar!!!

[11] Comentário enviado por andressa.moura em 29/04/2015 - 14:00h

Excelente artigo! Muito fácil de entender. Parabéns!

Nesse caso você tem um link como reserva. Mas se quiser ter os dois links funcionando juntos porém em redes diferentes, como faria? Ex: 10 pcs usam o primeiro link e 10 usam o segundo link.
Acho que é semelhante a situação do colega augusto.jcs que perguntou aí em cima...
Seriam duas redes e dois gateways diferentes.

[12] Comentário enviado por wagnerfs em 29/04/2015 - 21:27h

Boa noite.

Prezado, andressa.moura neste caso seria um outro artigo a parte. Mas caso queria se antecipar, aqui mesmo no VOL já foram publicados alguns temas sobre o assunto. Para fazer isso é preciso criar tabelas com as devidas rotas com o comando ip router.

_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782

[13] Comentário enviado por hwrbet em 27/09/2015 - 21:58h

Excelente didática, parabens!!!

[14] Comentário enviado por wagnerfs em 28/09/2015 - 21:58h


[13] Comentário enviado por hwrbet em 27/09/2015 - 21:58h

Excelente didática, parabens!!!


Obrigado pelo incentivo.

[15] Comentário enviado por leofernandesms em 06/11/2015 - 12:57h

Olá! Eu instalei o linux (distro Ubuntu) agora, versão para desktop. É possível aplicar esse tutorial nele? ou Vai ser necessário instalar uma versão para servidor? Desculpe se falei alguma bobagem, mas to começando a usar linux agora, e tenho interesse em ser adm de rede. A propósito, o artigo é muito bom, excelente didática.

[16] Comentário enviado por wagnerfs em 09/11/2015 - 10:42h


[15] Comentário enviado por leofernandesms em 06/11/2015 - 12:57h

Olá! Eu instalei o linux (distro Ubuntu) agora, versão para desktop. É possível aplicar esse tutorial nele? ou Vai ser necessário instalar uma versão para servidor? Desculpe se falei alguma bobagem, mas to começando a usar linux agora, e tenho interesse em ser adm de rede. A propósito, o artigo é muito bom, excelente didática.


Você pode usar a versão desktop sim, porém, esta possui uma interface gráfica bem como aplicativos desnecessários para um servidor.

[17] Comentário enviado por bruninhocielo em 12/11/2015 - 22:57h

Olá realmente muito boa a dinamica ...porem nao obtive sucesso estou tendo o mesmo problema q o amigo ,,,::
Bom dia, preciso de uma ajuda, fiz todos os passos descritos, mas não consigo navegar na internet nos clientes.

O servidor é Ubuntu Server 14.04 LTS.
Tem 3 placas de redes.
2 entra a internet, estão fucionando.
1 sai a rede local, está distribuindo os endereços de rede, porem não navegam.
que pode ser que está faltando?

no meu caso eth0 é a rede local ( dhcpd)
eth1 é a net ( dhcp)
eth2 vivo fibra pppoe

servidor navega...quando desligo o modem da vivo apos 2 minutos funciona a net automaticamente..
as maquinas recebem os ips...mas nao navegam...

usei a versao desktop ( pois a maquina é um i3 4gb 500) ...e me acho mais facilmente no modo grafico...kkkk
Fatos estranhos:
com a vivo conectada parece q navegacao fica mais lenta mesmo sendo 100mb ...e no teste de velocidade bate 108mb...
qdo ligo a maquina aprece uma msg de aguarde preparando rede....depois pede mais 60 segundos...depois da um erro que o sistema esta inicializando porem sem configuracao de rede completa....( porem no servidor ambas conexoes funcionam e as maquinas recebem os ips)
outro fato estranho qdo mando rodar o firewall.sh ...da algumas msg de no match chain....algo assim...
porem mesmo com o servico "parado" ..nao muda nada...

acho estranho o fato da configuracao da placa da rede local ficar com o gateway semlhante ao ip principal...nao testei colocar o gateway da net por exemplo na principal...porem se fosse assim só funcionaria a net nao é isso ?

Desde já agradeco !! a ajuda !!! li reli refiz...e nada...abs

[18] Comentário enviado por mastermoral em 29/05/2016 - 14:38h

Muito bom, simples e claro.
Obrigado

[19] Comentário enviado por guto__007 em 30/06/2018 - 14:27h

boa tarde,
Estou tentando montar um servidor de internet aqui no meu comercio, tenho dois links
link1 192.168.0.1
link2 192.168.02

e estou tentando configurar o ubuntu no virtual box, e estou com dificuldades bem no começo ja, porque nao consigo colocar os ip fixo, acho que é alguma configuração nas placas do virtual box, alguem poderia por favor me dar uma ajuda, em arrumar as placas do vb, e sobre minha classe de ip, se eu devo mudar o ips dos modem ou deixo assim mesmo?

Desde ja agradeço a todos, e essa comunidade e 100%..

[20] Comentário enviado por guto__007 em 01/07/2018 - 16:28h

boa tarde, resolvi a situação mundando o comando de eth0 para enp0s3, mas meu script continua dando erro de sintaxe, algum pode dar uma ajuda?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts