Ubuntu Server 12.04 LTS - Como Servidor Gateway e DHCP

Uma instalação simples, onde um único Servidor Ubuntu 12.04 irá atuar como Gateway e Servidor de DHCP para
uma rede local. Todas as outras máquinas na rede local, irão receber os seus IPs do servidor DHCP, para facilitar as
coisas.

[ Hits: 209.470 ]

Por: Daniel Lara Souza em 14/05/2012 | Blog: http://danniel-lara.blogspot.com/


Compartilhando Internet



Após a instalação do Ubuntu Server 12.04, vamos configurar para ser um Gateway e um Servidor DHCP em uma pequena rede, onde neste Servidor temos 2 placas de rede: eth0 e eth1
  • eth0 liga o modem ADSL
  • eth1 a rede interna

Já feita a instalação do Ubuntu, vamos atualizar o mesmo:

sudo apt-get update
$ sudo apt-get upgrade


E instale o "Sysv-rc-conf":

sudo apt-get install sysv-rc-conf

Após a atualização, vamos colocar a mão na massa, vamos editar as interfaces de redes:

sudo vim /etc/network/interfaces

E deixar assim:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static

address 172.16.1.254
netmask 255.255.0.0
network 172.16.0.0
broatcast 172.16.255.255


Neste caso, deixei como DHCP a 'eth0', mas se quiser, podes deixar ele fixo também; e minha rede interna fica com a faixa de IP 172.16.1.0.0

E após isso, vamos reiniciar a rede:

sudo /etc/init.d/networking restart

Ou:

sudo invoke-rc.d networking restart

Com a rede já pronta, agora vamos efetuar o compartilhamento da Internet.

Agora vamos habilitar o encaminhamento de IPv4.

Edite o arquivo:

sudo vim /etc/sysctl.conf

Descomentar a linha:

# net.ipv4.ip_forward=1


Onde fica assim:

net.ipv4.ip_forward=1


Vamos agora salvar o arquivo e executar o seguinte comando, para tornar a mudança efetiva sem um Reboot:

sudo sysctl -w net.ipv4.ip_forward=1

Agora vamos criar um Script para o compartilhamento. Crie no "/etc/init.d":

sudo vim /etc/init.d/internet

E adicione:

#!/bin/bash

iniciar(){
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
}

parar(){
iptables -F -t nat
}

case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parâmetros start ou stop"
esac


Salve e saia do arquivo. E dê permissão de execução:

sudo chmod 777 /etc/init.d/internet

* Lembrando que a linha com o 'eth0', é a placa onde está ligado na ADSL.
** Se estiver ligado na 'eth1', só alterar para: eth1

Pronto. Para iniciar e parar o serviço da Internet, use os comandos abaixo:

- Para iniciar:

sudo invoke-rc.d internet start

Ou:

sudo /etc/init.d/internet start

- Para parar:

sudo invoke-rc.d internet stop

Ou:

sudo /etc/init.d/internet stop

E pronto, seu Servidor Gateway já está funcionando.

Use o "Sysv-rc-conf" para adicionar na inicialização do Servidor:

sudo sysv-rc-conf

    Próxima página

Páginas do artigo
   1. Compartilhando Internet
   2. Configurando Servidor Dhcp
Outros artigos deste autor

GlusterFS - Um Sistema de Arquivos Distribuídos (parte 2)

Ansible AWX

AlmaLinux - Sua Alternativa ao CentOS

Monitorix - Ferramenta de Monitoramento de Sistema

Implantando um Servidor de Backup com Bacula - Debian Squeeze

Leitura recomendada

Apollon no Conectiva Linux 10

PHP 6.0 - Você está pronto?

Como configurar um túnel com Vtun

Simulando aplicações simples com TinyOS e Cooja

Ubuntu Completo e Total

  
Comentários
[1] Comentário enviado por ewertonmacedo em 14/05/2012 - 19:41h

Muito boa sua explicação.
Gostei muito dela ainda mais para mim que estou iniciando.

Uma pergunta montei um servidor aqui com a versão ubuntu server 11.10
mas ele esta com os seguintes problema:

Lentidão nos sites que possui videos ex: youtube.

e um site esta sempre bloqueado aqui e é um site de pesquisa minha é este aqui www.itapeva.sp.gov.br.
Não estou conseguindo liberar ele.

Teria como me ensinar um passo a passo.
Já procurei aqui mas não entendi bem a ordem dos iptables se possivel me dar uma explicação?

Obrigado danniel-lara,

uma boa noite.

[2] Comentário enviado por AprendiNoLinux em 14/05/2012 - 22:36h

Parabéns @danniel-lara , completo e objetivo ;)

https://twitter.com/#!/GA_Tux/status/202210599420174336

[3] Comentário enviado por danniel-lara em 15/05/2012 - 08:40h

Obrigado , fiz esse pensando no pessoal mais novato

[4] Comentário enviado por danielbirck em 16/05/2012 - 14:35h

@ewertonmacedo, no caso da lentidão no acesso ao youtube, uma boa ideia seria instalar um servidor de proxy, como por exemplo o Squid. Veja o seguinte artigo:

http://www.vivaolinux.com.br/artigo/Instalacao-e-configuracao-do-Squid-2.6-Stable/

Espero ter ajudado.

[5] Comentário enviado por JJSantos em 17/05/2012 - 23:26h

Boa noite Daniel.

A seguinte linha:

Salve e saia do arquivo. E dê permissão de execução:

$ sudo chmod 777 /etc/init.d/internet

Não seria assim?

Salve e saia do arquivo. E dê permissão de execução:

$ sudo chmod +x /etc/init.d/internet

[6] Comentário enviado por ewertonmacedo em 23/05/2012 - 10:39h

Obrigado danielbirck
esta me ajudando muito o link com as informações.
OBrigado.

[7] Comentário enviado por danniel-lara em 23/05/2012 - 11:05h

Que bom que esta ajudando , procurei se o mais simples e objetivo

valeu mesmo

[8] Comentário enviado por lucasdona em 06/06/2012 - 16:51h

Tentei fazer, mas de uma forma diferente, invez de usar a placa de rede recebendo o adsl, tentei redirecionar a conexão do 3g, e como estou usando o ubuntu 10.0, utilizai o pacote dhcp3-server ao isc-dhcp-server, mas as configurações são exatamente iguais. nas configurações do iptables redirecionei pra ppp0 que é a interface de conexão do 3g. Não consegui liberar a interbet dessa forma.
Eu já consegui liberar esse acesso de 2 formas, uma utilizando o próprio wifi para virar um roteador e outra forma, ligando um roteador wireless na eth0 e distribuindo essa conexão. A forma sem o roteador ficou até boa, mas muitos dispositivos com android nem encontravem a rede, e com a opção de ligar o roteador sem fio, todos os dispositivos acessaram perfeitamente, mas as vezes trava o roteador sem fio e tenho que desligá0lo e ligá-lo novamente.

[9] Comentário enviado por lucasdona em 06/06/2012 - 17:38h

Consegui fazer também com essa opção, acho que era prq o dnsmasq tava iniciando tmb, olhei no syslog e ele meio que tava competindo, desinstalei ele e agora ta funcionando, isso eu ligando o roteador nesse servidor e distribuindo essa conexão. :-) ta funcionando até agora sem problemas, inclusive estou escrevendo este comentário utilizando essa conexão. :-)

[10] Comentário enviado por danniel-lara em 06/06/2012 - 19:12h

Parabéns que conseguiu
valeu mesmo

[11] Comentário enviado por perrang em 06/08/2012 - 16:42h

Fiz o tutorial, mas ao usar "/etc/init.d/networking restart" recebi a seguinte mensagem depois de algum tempo: "Failed to bring up eth0". Parei aí.

Tenho procurando muito por informações que me ajudem a compartilhar internet na minha rede, mas tenho falhado miseravelmente em todas as tentativas de configuração. Sempre que eu tento configurar minhas placas via arquivo "interfaces" os dispositivos ficam "não gerenciáveis". Só consigo fazer isso de maneira efetiva quando uso a janela "Conexões de rede" no Desktop do Ubuntu. Estranho. A sensação que eu tenho é de que um (interfaces) "avacalha" o outro (conexões de rede do desktop).

Meu modem é roteado. Tem um IP para a LAN (192.168.1.1) e um para a conexão com o provedor (189.12.xxx.193). Qual deles devo usar como address da minha eth0 estática? Já tentei ambos e só consigo acessar a internet quando jogo o gateway na eth0 como 192.168.1.1 ou como DHCP.

[12] Comentário enviado por lnredivo em 07/09/2012 - 21:38h

O compartilhamento de internet até que funfou, parabéns pelo post, porém, o DHCP não starta, segue o erro:

Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service isc-dhcp-server start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start isc-dhcp-server
start: Job failed to start

Valeu...

[13] Comentário enviado por fransampa em 08/09/2012 - 04:18h

Meu caro amigo, fiz o tutorial certinho, mas usei uma sequencia de ips no eth1 diferente, mas ate ai tudo certo. O servidor DHCP ta funcionando normal, reconhece ip automaticamente num pc com o windows 7 ultimate, mas nao tenho conectividade, simplesmente nao navego. Ja refiz tudo e paro no mesmo problema. Nao manjo nada de ubuntu Server 12.04. Mas baixei, criei a midia, fiz uma instalacao full, eth0 tem um modem do speedy, eth1 mandei pra um outro pc com windows num cabo cripado paralelo, fiz todo o tutorial. executei o comando "pppoeconf" e tenho conexao certinha no servidor ubuntu, mas no micro com windows .... nao vai. Nao sei o q ta pegando. Pode me ajudar por favor ?

[14] Comentário enviado por marssolinha em 01/11/2012 - 16:47h

E ae Daniel...
Muito bom seu Script, mas quando uso esta linha /etc/init.d/isc-dhcp-server start da um erro.

[15] Comentário enviado por vicvilela em 20/12/2012 - 17:58h

A estação de trabalho recebe o IP pega o ip do gateway mas não consegue pingá-lo nem navegar na Internet. Por sua vez, o servidor também não pinga a estação.

[16] Comentário enviado por danniel-lara em 20/12/2012 - 18:03h


[15] Comentário enviado por vicvilela em 20/12/2012 - 17:58h:

A estação de trabalho recebe o IP pega o ip do gateway mas não consegue pingá-lo nem navegar na Internet. Por sua vez, o servidor também não pinga a estação.


e como esta as suas configurações ?

[17] Comentário enviado por andrejhonny em 24/12/2012 - 09:52h

Valeu...funcionou certinho!

[18] Comentário enviado por viniciusccv em 24/04/2013 - 10:56h

Amigo, falou dizer no finalzinho do seu texto o que marcar lá dentro do SYSV. Você disse apenas "Use o "Sysv-rc-conf" para adicionar na inicialização do Servidor: $ sudo sysv-rc-conf". Eu fiquei confuso sobre qual runlevel marcar, dei uma pesquisada e marquei do 2 ao 5, está correto? Parabéns pelo tutorial, Viva o Linux tem sido de grande valia para todos nós!

[19] Comentário enviado por danniel-lara em 24/04/2013 - 11:01h


[18] Comentário enviado por viniciusccv em 24/04/2013 - 10:56h:

Amigo, falou dizer no finalzinho do seu texto o que marcar lá dentro do SYSV. Você disse apenas "Use o "Sysv-rc-conf" para adicionar na inicialização do Servidor: $ sudo sysv-rc-conf". Eu fiquei confuso sobre qual runlevel marcar, dei uma pesquisada e marquei do 2 ao 5, está correto? Parabéns pelo tutorial, Viva o Linux tem sido de grande valia para todos nós!


Tchê , isso mesmo mas podia ser do 3 ao 5 também ,
valeu abraço

[20] Comentário enviado por viniciusccv em 25/04/2013 - 10:31h

@danniel-lara, valeu pela dica mais uma vez! Mas não sei se aconteceu com alguém mais, meu serviço só funcionou na inicialização quando coloquei no runlevel 2 também; assim, na tela de login do Ubuntu meu compartilhamento da internet já estava funcionando. Quando deixei do 3 ao 5, não sei porque, tive que dar o sudo /etc/init.d/internet start.

Obrigado a todos mais uma vez, tenham um bom dia!

[21] Comentário enviado por adelsonit em 10/05/2013 - 10:41h

amigo quando eu vo instalar o dhcp server que do o comando " sudo apt-get install isc-dhcp-server " ele me retorna dizendo que o pacote nao existe abr

[22] Comentário enviado por spritwar em 27/05/2013 - 14:49h

Olá,
Segui o tutorial e deu tudo certo. Os Clientes estão funcionando perfeitamente :D
Mas o servidor não está mais carregando as paginas no navegador.
Já testei Chrome, Firefox, Elinks e nada funciona.
Pelo terminal consigo dar ping pra IPs e Nomes tranquilamente.
O que pode ser isso?

[23] Comentário enviado por danniel-lara em 27/05/2013 - 14:53h


[22] Comentário enviado por spritwar em 27/05/2013 - 14:49h:

Olá,
Segui o tutorial e deu tudo certo. Os Clientes estão funcionando perfeitamente :D
Mas o servidor não está mais carregando as paginas no navegador.
Já testei Chrome, Firefox, Elinks e nada funciona.
Pelo terminal consigo dar ping pra IPs e Nomes tranquilamente.
O que pode ser isso?


Por acaso tu instalou o squid também ?

[24] Comentário enviado por spritwar em 28/05/2013 - 13:53h


[23] Comentário enviado por danniel-lara em 27/05/2013 - 14:53h:


Por acaso tu instalou o squid também ?


Percebi que não ta carregando as paginas nos clientes que usam Linux tbm.
Tá funcionando apenas para os windows.
... E não instalei o squid tbm, nem sei como funciona.
tem algum tutorial bom de instalação do squid pra eu seguir?
vlw

[25] Comentário enviado por hudsonghetti em 25/09/2013 - 11:21h


[22] Comentário enviado por spritwar em 27/05/2013 - 14:49h:

Olá,
Segui o tutorial e deu tudo certo. Os Clientes estão funcionando perfeitamente :D
Mas o servidor não está mais carregando as paginas no navegador.
Já testei Chrome, Firefox, Elinks e nada funciona.
Pelo terminal consigo dar ping pra IPs e Nomes tranquilamente.
O que pode ser isso?


Tive o mesmo problema, resolvi alterando o DNS, na realidade apenas retirei um '8', ficando assim: 8.8.8.8


[26] Comentário enviado por ojferracini em 09/10/2013 - 15:04h

Boa tarde, estou seguindo este artigo, mas não sei onde posso estar errando:
Explico:

Após as alterações:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static

address 172.16.1.254
netmask 255.255.0.0
network 172.16.0.0
broatcast 172.16.255.255

e reiniciar a rede:

$ sudo /etc/init.d/networking restart

perco qualquer tipo de rede.
estou com ubunti 13.04 e me logo em modo gráfico.

Grato a atenção

[27] Comentário enviado por livodroc em 17/10/2013 - 10:07h

Ola, fiz tudo direitinho como diz no artigo.
Ta rodando o dhcp e talz ... porém não conecta internet.

[28] Comentário enviado por adriano790 em 24/11/2013 - 17:17h

Ola, deu tudo certo aqui, o dhcp e o compartilhamento, só que toda vez que reinicio o server tenho que estart o compartilhamento de forma manual com o comando /etc/init.d/internet start o que pode ser?

Grato

[29] Comentário enviado por danniel-lara em 25/11/2013 - 12:04h


[28] Comentário enviado por adriano790 em 24/11/2013 - 17:17h:

Ola, deu tudo certo aqui, o dhcp e o compartilhamento, só que toda vez que reinicio o server tenho que estart o compartilhamento de forma manual com o comando /etc/init.d/internet start o que pode ser?

Grato


tu podes colocar no se /etc/rc.local

# vim /etc/rc.local

e adicionar a linha

/etc/init.d/internet start

salva o arquivo e pronto toda vez que iniciar a maquina ele vai executar esse script

[30] Comentário enviado por cleitonsb em 10/12/2013 - 16:31h

Se eu tiver 2 links, eu posso fazer:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

??

Grato.

[31] Comentário enviado por hadres em 18/12/2013 - 19:21h

estou a alguns dias apanhando do iptables no ubuntu 12.0.4 lts, nos testes com instalação limpa e seu tuto por exemplo, o compartilhamento não é interrompido com o stop

mesmo inserindo manualmente pelo shell o iptables -F -t nat ou com iptables --flush nao para o compartilhamento.

Estou tendo este problema com outras regras tambem, a proposta inicial era montar um firewall semelhante ao que tenho rodando em um debian 5 com com vpn, redirecionamento de portas , liberação por ips, etc etc.

se limpo as regras pelo script apos alguma alteração nao funciona mas se reinicio o servidor as regras são carregadas corretamente.

voce ja viu esta situação?

att

[32] Comentário enviado por andrefp0 em 28/01/2014 - 17:50h

Ola Amigo, conseguir fazer funcionar com a maior facilidades através deste seu tutorial, Obrigado!
Gostaria de saber agora como faço para consultar uma lista com os IPS e Macs dos clientes conectados ao servidor, Obrigado!

[33] Comentário enviado por thiagoThid em 14/07/2014 - 20:50h

Amigão eu tenho um duvida, eu posso criar essa REGRA no "vi", "nano", ou só no "VIM"?

Eu tentei no "nano" e no "vi", e não foi hoje, amanhã eu vou tentar no "VIM"!

Mais assim mesmo voce pode tirar essa duvida pra mim eu to montando um servidor e sou novo em linux..

Quero montar com DHCP, FIREWALL, PROXY e tudo que tem direito! kkkkk

La eu entrei assim:

nano /etc/network/interfaces

deixei a configuração assim.

auto eth0
iface eth0 inet static (aqui vou trocar por dhcp)

address 172.168.1.10
netmask 255.255.255.0
network 172.168.1.0
broadcast 172.168.1.255
gateway 172.168.1.1

OBS: Tenho mais ou menos 450 cpu's na rede e wifi ilimitado!

Desde já obrigado!

[34] Comentário enviado por danniel-lara em 15/07/2014 - 08:23h


[33] Comentário enviado por thiagoThid em 14/07/2014 - 20:50h:

Amigão eu tenho um duvida, eu posso criar essa REGRA no "vi", "nano", ou só no "VIM"?

Eu tentei no "nano" e no "vi", e não foi hoje, amanhã eu vou tentar no "VIM"!

Mais assim mesmo voce pode tirar essa duvida pra mim eu to montando um servidor e sou novo em linux..

Quero montar com DHCP, FIREWALL, PROXY e tudo que tem direito! kkkkk

La eu entrei assim:

nano /etc/network/interfaces

deixei a configuração assim.

auto eth0
iface eth0 inet static (aqui vou trocar por dhcp)

address 172.168.1.10
netmask 255.255.255.0
network 172.168.1.0
broadcast 172.168.1.255
gateway 172.168.1.1

OBS: Tenho mais ou menos 450 cpu's na rede e wifi ilimitado!

Desde já obrigado!

Opa tu podes criar em qualquer editor de texto , já que tu tem mais de 450 cpus na rede
tu vai ter que dar uma olhada na sua rede internet na configuração , acho que se tu usar uma mascara /24 não vai ajudar , use /8 que vai ajudar .


[35] Comentário enviado por thiagoThid em 31/07/2014 - 19:38h

Nossa man roda bonitinho mesmo essa conf....
Mais só ip estatico nas maquinas windows e linux, como faço pra ele liberar automaticamente (dinamicamente) os ips?
E se eu precisar colocar mais de 255 maquinas na rede como eu faço?

[36] Comentário enviado por deathnotecx em 03/03/2015 - 17:12h

Olá amigo, excelente ajuda sua.
tive um problema no ultimo comando
/etc/init.d/isc-dhcp-server start
apresentou um erro.
aparece
"dhcpd self-test failed. Please fix /etc/dhcp/dhcpd.conf.
The error was:
Internet Systems Consortium DHCP Server 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
/etc/dhcp/dhcpd.conf line 3: semicolon expected.
option
^
Configuration file errors encountered -- exiting"

vou colocar o conteúdo do arquivo.
"ddns-update-style none;
option domain-name "vagner.com"
option domain-name-server 200.175.5.139 10.1.1.10
default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 10.0.0.0 netmask 255.0.0.0 {
range 10.1.1.100 10.1.1.200;
option routers 10.1.1.10;
}"

Alguém pode me ajudar?

[37] Comentário enviado por thiagothid em 09/03/2015 - 20:53h


[36] Comentário enviado por deathnotecx em 03/03/2015 - 17:12h

Olá amigo, excelente ajuda sua.
tive um problema no ultimo comando
/etc/init.d/isc-dhcp-server start
apresentou um erro.
aparece
"dhcpd self-test failed. Please fix /etc/dhcp/dhcpd.conf.
The error was:
Internet Systems Consortium DHCP Server 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
/etc/dhcp/dhcpd.conf line 3: semicolon expected.
option
^
Configuration file errors encountered -- exiting"

vou colocar o conteúdo do arquivo.
"ddns-update-style none;
option domain-name "vagner.com"
option domain-name-server 200.175.5.139 10.1.1.10
default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 10.0.0.0 netmask 255.0.0.0 {
range 10.1.1.100 10.1.1.200;
option routers 10.1.1.10;
}"

Alguém pode me ajudar?


PELO BASICO QUE EU VI AQUI ESTÁ FALTANDO O " ; " DEPOIS DO VAGNER.COM E NO FINAL DO:
option domain-name-server 200.175.5.139 10.1.1.10

[38] Comentário enviado por AndreBatista96 em 02/02/2016 - 17:59h

Boa tarde danniel-lara.

Cara muito obrigado por compartilhar seu conhecimento.

Estava a quatro dias procurando uma forma de deixar eth0 = WAN e eth1 = LAN distribuindo DHCP.

Continue assim irmão!

Abraço!

[39] Comentário enviado por LucasOliveiraS em 08/03/2016 - 23:23h

Parabéns pelo artigo, excelente!! me ajudou muito no trabalho!

[40] Comentário enviado por Isaiasfreitas em 25/08/2016 - 13:54h

$ sudo vim /etc/network/interfaces
[sudo] senha para isaias:
sudo: vim: comando não encontrado
isaias@Ubuntu-PC:

dESANIMO.




[41] Comentário enviado por Isaiasfreitas em 27/05/2017 - 19:18h

No caso a net ta funcionando pelo iptables, botando IP fixo, instalei o dhcp mas nao funciona, no start da OK Starting, mas no status da FAILED, precisa do servidor fazer a primeira parte do tutorial ou nao, eles seriam independentes?

[42] Comentário enviado por removido em 29/10/2018 - 16:06h


OBS:

Cuidado com => chmod 777 /etc/init.d/internet



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts