Configuração de servidor para compartilhar conexão com a Internet

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar

Configuração de servidor para compartilhar conexão com a Internet

Um servidor com duas placas de rede pode ser configurado como roteador, separando o tráfego proveniente da Internet do tráfego da rede local.

Exemplo de uma configuração típica de um servidor com duas placas
Referência [1].

No exemplo a interface eth0 usa endereços IP privados na faixa 192.168.1.x/24. A interface eth1 é configurada como cliente DHCP, recebendo endereço IP do provedor.

Se o acesso a Internet é provido via ADSL é recomendável manter o modem configurado como bridge, desta forma o servidor recebe a configuração completa do endereçamento IP do provedor e acesso a todas as portas de entrada, permitindo que o servidor seja acessado remotamente via SSH [1].

Exemplo de configuração do arquivo /etc/network/interfaces
auto lo
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

A interface de rede do servidor voltada para a rede interna (eth0) deve receber um endereço IP estático, dentro da faixa de IP privados escolhida para a rede interna. O endereço IP de rede local do servidor será o roteador padrão (gateway) da rede.

Para configurar as demais estações da rede interna pode-se utilizar configuração via DHCP, com o servidor de configuração dinâmica de IP sendo provido pelo servidor.

Ativando o servidor como roteador

Para ativar o roteamento no servidor deve-se executar o comando:

echo 1 > /proc/sys/net/ipv4/ip_forward

Com isto o servidor assume papel de roteador, encaminhando para a Internet pacotes originados na rede local.

NAT

O NAT (Network Address Translation) é um mecanismo que possibilita a uma rede local usar apenas um endereço IP público, no que concerne ao mundo exterior, e utilizar endereços IP privados no que concerne a rede interna.

Configuração do NAT no servidor
Referência: [2].

O NAT no Ubuntu se configura com iptables. Exemplo de comandos:

modprobe iptable_nat
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

O primeiro comando ativa o NAT no módulo iptables.

O segundo comando define a regra para fazer com que todo o tráfego originado em 192.168.1.0/24, e que sai pela interface eth1 deve ser mascarado com o endereço IP dessa interface. Esta regra diz o seguinte: todos os pacotes que passarem (POSTROUTING) por esta máquina com origem de 192.168.1.0/24 e sairem pela interface eth1 serão mascarados, ou seja sairão desta máquina com o endereço de origem como sendo da eth1. O alvo MASQUERADE foi criado para ser usado com links dinâmicos (tipicamente discados ou ADSL), pois os mapeamentos se perdem se o link sair do ar.


Configuração permanente ativada no boot do sistema
Depois de realizada a configuração do servidor como roteador para a rede interna deve-se fazer com que os comandos sejam ativados no boot do sistema.

Uma forma de fazer isto é inserir os comandos no arquivo /etc/rc.local:

#!/bin/sh 
# rc.local

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

Servidor DHCP

Um servidor DHCP permite configurar automaticamente as interfaces de rede de máquinas em uma rede local.

Dentre os parâmetros que podem ser configurados automaticamente pelo servidor DHCP estão: endereço IP, máscara de rede, roteador padrão, servidores DNS, nome de host e nome de domínio, entre outros.

O serviço de configuração automática utiliza o Protocolo DHCP, o qual define as regras de negociação entre cada interface de rede e o servidor DHCP.

Cliente DHCP

O cliente DHCP (dhclient)vem instalado por padrão nas estações Ubuntu. Este serviço é acionado automaticamente quando a estação é configurada para obter endereço IP automaticamente.

Também é possível chamar o serviço para obter a configuração IP automática para uma dada interface de rede, por exemplo, o comando:

dhclient eth0

Instalação e configuração do servidor DHCP

Instalação do servidor DHCP
Para instalação do servidor DHCP usa-se o comando:
apt-get install -y dhcp3-server
A opção -Y responde yes automaticamente aos avisos e corre não-interactivamente.

Quando instalado o servidor DHCP o mesmo fica disponível através do serviço dhcpd.

Configuração do servidor DHCP
A configuração do servidor DCHP é realizada através do arquivo /etc/dhcpd.conf:

Exemplo de configuração:

ddns-update-style none;

default-lease-time 600;
max-lease-time 7200;

authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.100 192.168.1.150;
   option broadcast-address 192.168.1.255;
   option routers 192.168.1.1;
   option domain-name-servers 200.17.101.9;
}

Opções usadas na configuração:

  • lease-time controla o tempo de renovação cada 10 minutos (600 segundos);
  • max-lease-time controla o tempo máximo que uma estação pode usar o endereço IP. Usado quando existe mais clientes que endereços IP disponíveis para aluguel;
  • range indica a faixa de IP que será usada para aluguel;
  • routers indica o endereço do roteador padrão;
  • domain-name-servers indica os servidores DNS que serão usados pelas estações.
Interface que será servida pelo serviço DHCP
Deve ser indicada editando o arquivo:
/etc/default/isc-dhcp-server
Conteúdo:
INTERFACES="eth0"
Esta configuração provê aluguel de endereços IP na faixa 192.168.1.100 a 192.168.1.150.
Iniciar o servidor DHCP
service isc-dhcp-server restart
Arquivo de log
No arquivo /var/log/syslog ficam gravadas as trocas de mensagens entre o cliente e o servidor DHCP:
tail /var/log/syslog
Aluguéis no servidor DHCP
São visíveis no arquivo:
cat /var/lib/dhcp/dhcpd.leases

IP alias

Pode-se associar mais de um endereço a uma mesma interface de rede, os chamados IP alias. Isto pode ser útil em configurações especiais, por exemplo, quando temos duas sub-redes compartilhando o mesmo domínio de colisão [3].

ifconfig eth0:0 192.168.10.100 netmask 255.255.255.0

ifconfig eth0:1 192.168.20.100 netmask 255.255.255.0

evandro@ubuntuServer:~$ ifconfig
eth0     Link encap:Ethernet  Endereço de HW 08:00:27:44:99:83  
         inet end.: 192.168.1.67  Bcast:192.168.1.255  Masc:255.255.255.0
         endereço inet6: fe80::a00:27ff:fe44:9983/64 Escopo:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
         pacotes RX:480 erros:0 descartados:0 excesso:0 quadro:0
         Pacotes TX:296 erros:0 descartados:0 excesso:0 portadora:0
         colisões:0 txqueuelen:1000 
         RX bytes:50458 (50.4 KB) TX bytes:38253 (38.2 KB)

eth0:0   Link encap:Ethernet  Endereço de HW 08:00:27:44:99:83  
         inet end.: 192.168.10.100  Bcast:192.168.10.255  Masc:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1

eth0:1   Link encap:Ethernet  Endereço de HW 08:00:27:44:99:83  
         inet end.: 192.168.20.100  Bcast:192.168.20.255  Masc:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1

lo       Link encap:Loopback Local  
         inet end.: 127.0.0.1  Masc:255.0.0.0
         endereço inet6: ::1/128 Escopo:Máquina
         UP LOOPBACK RUNNING  MTU:65536  Métrica:1
         pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
         Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
         colisões:0 txqueuelen:0 
         RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

evandro@ubuntuServer:~$ route -n
Tabela de Roteamento IP do Kernel
Destino         Roteador        MáscaraGen.    Opções Métrica Ref   Uso Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

Para tornar o IP alias permanente deve editar o arquivo

/etc/network/interfaces
e acrescentar as seguintes informações:
auto eth0:1
iface eth0:1 inet static
address 192.168.10.100
netmask 255.255.255.0
broadcast 192.168.10.255
network 192.168.10.0
Salvar o arquivo e reiniciar a configuração de rede com o comando:
/etc/init.d/networking restart

Referências

  1. 1,0 1,1 MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.
  2. VALLE, O. T. Gerência de Redes, Diário Aula, 2014. http://wiki.sj.ifsc.edu.br/wiki/index.php/GER20706-2014-1
  3. VALLE, O. T. Adminstração de Redes com Linux: Fundamentos e práticas, IFSC, Florianópolis, 2010.

--Evandro.cantu (discussão) 18h43min de 22 de novembro de 2015 (BRST)