>_Gateway de internet no centos

7

Compartilhando Internet e ativando o Servidor DHCP no CentOS

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.

Apesar de ser uma tarefa básica para quem administra redes Linux, o compartilhamento de conexão de Internet pode ser uma questão importante para quem está iniciando e deseja utilizar o Linux como gateway de sua rede local.

A primeira coisa que é preciso compreender é o NAT ou Network Address Translation. Também chamado de masquerading (mascaramento), é o processo de transformar ou traduzir endereços IP de uma rede para outra, no caso de compartilhamento de Internet, o NAT faz a tradução de IPs da rede local em endereço IP da Internet, permitindo assim que máquinas da rede local acessem a Internet.

Ao utilizar um gateway cada pacote de dados é traduzido pelo NAT e é reconhecido como oriundo do IP de Internet, ou seja, independente do IP do computador da rede local, todos os pacotes saem para Internet como sendo do IP de Internet. Quando este pacote retorna, o NAT faz a tradução novamente para direcioná-lo ao computador de origem.

5

Antes de começar a configurar o gateway para o compartilhamento de Internet, é preciso verificar o ambiente que será utilizado. Para isso é preciso:

  • Uma conexão (que esteja funcionando) com um provedor de Internet;
  • Uma máquina com o CentOS instalado;
  • Duas placas de rede instaladas, sendo que uma delas já deve estar com as configurações do provedor de Internet;
  • Um hub ou switch para distribuir o acesso à Internet por vários computadores.

Configurando as placas de redes

Placa de rede 1 (eth0) –> conexão com a Internet

Placa de rede 2 (eth1) –> conexão com a Rede Local

Configurando a interface eth0, com acesso a Internet.

Como estou utilizando o CentOS nesse tópico, então será preciso alterar o arquivo /etc/sysconfig/network-scripts/ifcfg-eth*

vim /etc/sysconfig/network-scripts/ifcfg-eth0

9

10

Após a conclusão da configuração da placa de rede eth0,  estarei dizendo ao sistema que será uma configuração estática e que também deverá ser feita no momento do boot do sistema.

Após a realização da configuração da placa de rede eth0, também será necessário cofigurar o arquivo /etc/sysconfig/network. Onde adicionarei o Gateway, Hostname e a Networking. E também o aquivo /etc/resolv.conf onde será inserido os servidores de DNS.

vim /etc/sysconfig/network

12

13

Configurando o DNS

vim /etc/resolv.conf

16

17

No meu caso, tenho como servidor de DNS o meu próprio modem (10.0.10.1), e também os servidores de DNS OpenDNS. (208.67.222.222, 208.67.220.220)

OBS: Note que neste caso as configurações da placa  de rede eth0, estão seguindo as mesma configurações do modem, conectado com a Internet.

11

15

Realizado este procedimento, já tenho como concluído a minha placa rede eth0 configurada para internet.

OBS: Lembre-se que estas configurações foram feita para minha rede pessoal, apenas servindo de exemplo para outras configurações.

Configurando a interface eth1, com acesso a Rede Local.

vim /etc/sysconfig/network-scripts/ifcfg-eth1

18

19

Note que neste caso a segunda interface eth1, segue um outro range de IP diferente da interface eth0.

Liberando o encaminhamento de pacotes

A primeira configuração à fazer é liberar o encaminhamento de pacotes IP. Para isso terei  três alternativas. A primeira é alterar o arquivo ip_forward inserindo 1 no seu conteúdo e a segundo é alterando o arquivo sysctl.conf e a terceira alternativa é criando um script.

Inserindo 1 no arquivo ip_forward:

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

22

Alterar o arquivo sysctl.conf:

# vim /etc/sysctl.conf

Remova o símbolo # da linha:

20

21

net.ipv4.ip_forward = 1

Salve o arquivo com “:x!.

Usando o IPtables para compartilhamento da conexão com a Internet

O IPTables é o software responsável por configurar regras de filtragem de pacotes. Para utilizar o IPTables para compartilharmos o acesso a Internet, antes precisaremos informar ao Kernel os módulos que deverão ser carregados.

# modprobe ip_tables
# modprobe iptable_nat

O comando modprobe é responsável por, além de outras tarefas, adicionar ou remover módulos no Kernel Linux. Os módulos ip_tables e iptables_nat têm a função de adicionar ao Kernel a habilidade de filtrar os pacotes de dados e fazer a “tradução” dos endereços de IP de uma rede para outra. Agora irei limpar qualquer regra pré-existente no IPTables, para que possa garantir o correto funcionamento do NAT e do encaminhamento de pacotes:

# iptables -F INPUT
# iptables -F OUTPUT
# iptables -F FORWARD
# iptables -F -t nat
# iptables -F -t mangle

As linhas acima limpam informações de entrada, saída, encaminhamento, “tradução” e alteração de pacotes.

Por fim,  habilitei o encaminhamento de pacotes via IPTables:

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

Entendendo os parâmetros passados para o IPTables na linha acima:

  • -t nat – utiliza a tabela de “tradução” de endereços IP;
  • -A POSTROUTING – adiciona a regra para saída de pacotes;
  • -o eth0 – especifica que a interface de saída utilizada é eth0;
  • -j MASQUERADE – informa que o foco (target) da regra é o mascaramento de IP.

Criando um Script para o compartilhamento com a internet.

Bom, agora será preciso criar um script, para compartilhar a internet definitivamente. Com um editor de texto qualquer, adicione os seguintes dados abaixo:

24

Criando o Script

#!/bin/bash

# liberando encaminhamento de pacotes
echo "1" > /proc/sys/net/ipv4/ip_forward

# adicionando módulos no kernel
modprobe ip_tables
modprobe iptable_nat

# limpando todas as regras pré-existentes no iptables

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F
iptables -t mangle -F

# habilitando o encaminhamento de pacoes via iptables
# lembre-se que se estiver usando uma outra interface troque a eth0 pela qual estiver você estiver usando no momento da configuração
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Feito o script salve o arquivo com o nome de  compartilhamento, no diretório ~ (home).

Colocando o script na inicialização do sistema.

Com o usuário root, é preciso mover o arquivo compartilhamento para o diretório /etc/init.d

mv compartilhamento /etc/init.d/

Feito isso, agora terei que conceder a permissão de execução ao arquivo compartilhamento, então usei o comando abaixo:

chmod +x /etc/init.d/compartilhamento

feito isso, é preciso criar uma chamada para ele na inicialização. Com isso, irei até o diretŕio /etc/rc3.d usando o comando abaixo:

cd /etc/rc3.d/

e usei o seguinte comando para criar a chamada (link)

ln -s /etc/init.d/compartilhamento /etc/rc3.d/S20compartilhamento

Realizado todas as estas configurações com sucesso, reinicie o sistema e verifique se está pingando para fora da rede interna.

Configurando o servidor DHCP para forncer ips para os clientes

O DHCP, Dynamic Host Configuration Protocol, é um protocolo de serviço TCP/IP que oferece configuração dinâmica de terminais, com concessão de endereços IP de host e outros parâmetros de configuração para clientes de rede.

Resumidamente, o DHCP opera da seguinte forma:

  • Um cliente envia um pacote UDP em broadcast (destinado a todas as máquinas) com um pedido DHCP
  • Os servidores DHCP que capturarem este pacote irão responder (se o cliente se enquadrar numa série de critérios — ver abaixo) com um pacote com configurações onde constará, pelo menos, um endereço IP, uma máscara de rede e outros dados opcionais, como o gateway, servidores de DNS, etc.

pag_136a

O DHCP usa um modelo cliente-servidor, no qual o servidor DHCP mantém o gerenciamento centralizado dos endereços IP usados na rede.

Instalando o servidor dhcp no CentOS.

yum install dhcp

22

Arquivos de configuração do servidor DHCP

25

O DHCP também usa o arquivo /var/lib/dhcp/dhcpd.leases para armazenar o banco de dados de aluguel de clientes.

1

Arquivo de Configuração dhcpd.conf

O primeiro passo para configurar um servidor DHCP é criar o arquivo de configuração que armazena as informações de rede dos clientes. É possível declarar opções globais para todos os clientes, e também declarar opções para cada sistema cliente separadamente.

O arquivo de configuração pode conter espaços tab ou linhas em branco para uma formatação mais fácil. As palavras-chave são sensíveis a caixa alta e baixa, e as linhas iniciadas com a marca do jogo da velha (#) são consideradas comentários.

Para usar o modo recomendado, adicione as seguintes linha no topo do arquivo de configuração:

ddns-update-style ad-hoc;

ddns-update-style interim;

OBS: Consulte a página man do dhcpd.conf para detalhes sobre os diferentes modos.

Há dois tipos de declarações no arquivo de configuração:

•          Parâmetros — determinam como executar uma tarefa, se deve-se executar a tarefa, ou quais opções de configuração de rede devem ser enviadas ao cliente.

•          Declarações — descrevem a topologia da rede e os clientes, provêm endereços para os clientes, ou aplicam um grupo de parâmetros a um grupo de declarações.

Alguns parâmetros devem iniciar com a palavra-chave option e são referidos como opções. Elas configuram as opções DHCP; enquanto os parâmetros configuram os valores não-opcionais ou controlam o modo como o servidor DHCP se comporta.

Os parâmetros (incluindo as opções) declarados antes do fechamento de uma seção com chaves ({ }) são considerados globais. Os parâmetros globais são aplicados a todas as seções abaixo deles.

Importante saber

Se o arquivo de configuração é alterado, as alterações não terão efeito até que o daemon DHCP seja reiniciado com o comando service dhcpd restart. as opções routers, subnet-mask, domain-name, domain-name-servers e time-offset são usadas para qualquer declaração de host abaixo delas. Uma declaração da subnet deve ser inclusa para cada sub-rede na rede.

3

Exemplo do arquivo de configuração seguindo a configuração da  placa de rede eth1, para o compartilhamento de Internet.

ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers                  192.168.0.2;
option subnet-mask        255.255.255.0;

option nis-domain                      "seu-domínio";
option domain-name                  "seu-domínio";
option domain-name-servers       208.67.222.222, 208.67.220.220;

option time-offset              -18000; # Eastern Standard Time
option ntp-servers              192.168.0.2;

#       option netbios-name-servers     192.168.0.2;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#       option netbios-node-type 2;

range dynamic-bootp 192.168.0.10 192.168.0.25;
default-lease-time 21600;
max-lease-time 43200;

OBS: neste caso, como ainda não tenho um servidor de DNS, eu informei ao servidor de DHCP na seguinte opção:  option domain-name-server, os servidor da OpenDNS.

Parâmetro de Escala

Para atribuir um endereço IP a um cliente, baseado no endereço MAC da placa de interface da rede, use o parâmetro hardware ethernet em uma declaração host. Conforme mostra  a declaração host apex especificando que a placa de interface de rede com o endereço MAC 12:34:56:78:AB:CD sempre recebe o endereço IP 207.175.42.254.

Note que o parâmetro option host-name pode ser usado para atribuir um nome de máquina para o cliente.

4

# we want the nameserver to appear at a fixed address
host ns {
#next-server marvin.redhat.com;
#hardware ethernet 12:34:56:78:AB:CD;
#fixed-address 207.175.42.254;
}
}

A amostra do arquivo de configuração provido pode ser usada como um ponto de partida. Opções personalizadas de configuração podem ser adicionadas a ele. Para copiá-lo à localidade apropriada, use o segunte comando:

cat /usr/share/doc/dhcp-<version-number>/dhcpd.conf.sample >>  /etc/dhcpd.conf

(onde <version-number> é o número da versão do DHCP).

Para uma lista completa das opções de declaração e suas funções, consulte a página man dhcp-options.

Iniciando e Parando o Servidor

Quando o servidor DHCP é iniciado pela primeira vez, ele falhará a não ser que o arquivo dhcpd.leases exista. Use o comando touch /var/lib/dhcp/dhcpd.leases para criar este arquivo se ainda não existir.

Para iniciar o serviço DHCP, use o comando /sbin/service dhcpd start

Para parar o servidor DHCP, use o comando /sbin/service dhcpd stop

Importante saber

O servidor DHCP deve ser iniciado em apenas uma das interfaces,  por isso é necessário  que que adicione no arquivo /etc/sysconfig/dhcpd a interface correta.

No /etc/sysconfig/dhcpd, adicione o nome da interface à lista de DHCPDARGS:

6

# Command line options here

DHCPDARGS=eth1

OBS: Isto é útil para uma máquina firewall com duas placas de rede, “que está sendo o meu caso”. Uma placa de rede pode ser configurada como um cliente DHCP para recuperar um endereço IP para a Internet. A outra placa de rede pode ser usada como um servidor DHCP da rede interna por trás do firewall. Especificar somente a placa de rede ligada à rede interna torna o sistema muito mais seguro.

Por fim, basta reiniciar o servidor DHCP.

5

Realizado todo este procedimento com sucesso, todos os cliente poderão receber IPs dinâmicos e navegar pela Internet através do Servidor de Internet e DHCP.

OBS: Está configuação foi dedicada para iniciantes, feita de forma simples sem nenhuma regra de firewall.

até!

>_Gateway de internet no centos
Tagged on:

4 thoughts on “>_Gateway de internet no centos

  • 7 de outubro de 2014 at 16:41
    Permalink

    Muito bom..funcionou direitinho aqui.. utilizei o Centos 6.5…valeu

    Reply
  • 21 de fevereiro de 2015 at 20:55
    Permalink

    o meu ta dando esse erro:
    No subnet declaration for eth0 (192.168.27.129).
    ** Ignoring requests on eth0. If this is not what
    you want, please write a subnet declaration
    in your dhcpd.conf file for the network segment
    to which interface eth0 is attached. **

    Reply
  • 4 de julho de 2016 at 14:08
    Permalink

    Amigão, de antemão eu gostaria de parabeniza-lo pelo tutorial, com base nele consegui fazer as minhas configurações.
    Infelizmente estou com um problema que não consigo resolver, se possivel gostaria de uma dica sua. Tenho um servidor
    onde instalei um CentOs 6.8 com Squid Ver.3.1.23 as estações windows 7 com ip fixo e o gateway que eu inseri nelas foi o ip da
    interface eth0 do meu centos (192.168.1.100) uso também nas estações esse mesmo ip como DNS primário, como DNS
    secundario uso 8.8.8.8. Depois de tudo configurado, percebo que no servidor eu consigo pingar qualquer endereço na internet tanto
    por nome como por ip, porém, eu não consigo acessar a internet através das estações, o maximo que consigo é pingar o ip da
    interface eth0 do servidor Squid a minha interface eth1 que sai pra internet tem ip fixo,em fim, como iniciante no mundo linux
    estou passando o maior aperto e se possivel gostaria de uma ajuda. Abaixo sequem algumas configurações:

    ###>>> CONFIGURAÇÃO DA INTERFACES ETH0
    DEVICE=eth0
    BOOTPROTO=static
    BROADCAST=192.168.1.255
    HWADDR=00:18:8B:E2:B1:52
    IPADDR=192.168.1.100
    NETMASK=255.255.255.0
    NETWORK=192.168.1.0
    ONBOOT=yes

    ###>>> CONFIGURAÇÃO DA INTERFACES ETH1
    DEVICE=eth1
    BOOTPROTO=static
    BROADCAST=189.3.141.127
    HWADDR=00:E0:7D:8C:EE:A5
    IPADDR=189.3.141.122
    NETMASK=255.255.255.248
    GATEWAY=189.3.141.121
    NETWORK=189.3.141.120
    ONBOOT=yes

    Configuração do Iptables
    #!/bin/bash

    # liberando encaminhamento de pacotes
    echo “1” > /proc/sys/net/ipv4/ip_forward

    # adicionando módulos no kernel
    modprobe ip_tables
    modprobe iptable_nat

    # limpando todas as regras pré-existentes no iptables

    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -t nat -F
    iptables -t mangle -F

    # habilitando o encaminhamento de pacoes via iptables

    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    #iptables -t nat -A POSTROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to -port 3128 ### FIZ ESSE TESTE MAS NÃO DEU CERTO

    #—————————————–#
    # CONFIGURACAO SQUID TRANSPARENTE #
    #—————————————–#

    # Mensagens de erro em Portugues
    error_directory /usr/share/squid/errors/pt-br

    cache_mem 100 MB
    http_port 3128 intercept
    visible_hostname srvlinux
    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin ?
    cache deny QUERY
    access_log /var/log/squid/access.log squid
    #Suggested default:
    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern . 0 20% 4320
    #Recommended minimum configuration:
    # acl all src all
    acl manager proto cache_object
    acl localhost src 127.0.0.1
    acl to_localhost dst 127.0.0.0/8
    acl SSL_ports port 443 563
    acl Safe_ports port 80 # http
    acl Safe_ports port 8080 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl CONNECT method CONNECT

    ### criando uma regra de excecao
    #—————————–
    acl chefe src 192.168.1.1
    http_access allow chefe
    acl gerente src 192.168.1.51
    http_access allow gerente
    #—————————–
    # Regras leaodonorte
    acl leaodonorte src 192.168.1.0/24
    acl total src “/etc/squid/regras/total”
    acl rest src “/etc/squid/regras/rest”
    #————————————————————
    # Destino
    acl download urlpath_regex “/etc/squid/regras/download”
    acl bad_sites url_regex -i “/etc/squid/regras/bad_sites”
    acl lst_rest url_regex “/etc/squid/regras/lst_rest”
    #————————————————————-
    # Fim Regras leaodonorte Acl
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports

    #————————————————————–
    # Regras leaodonorte access
    http_access deny !leaodonorte
    #http_access deny BARRAR
    http_access deny bad_sites
    http_access allow total
    http_access allow rest lst_rest !download
    #—————————————————————
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localhost
    http_reply_access allow all
    icp_access allow all
    coredump_dir /var/spool/squid
    always_direct allow all

    Reply

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: