Avançar para o conteúdo principal

Roteamento com Centos 6

Este tutorial permite configurar um Servidor em Centos 6 com funções de Router, Firewall.
A configuração abaixo foi feita para sub dividir a rede em 3 sub redes, permitindo partilhar a ligação a Internet entre elas, bloquear e analisar tráfego.
Serviços que serão implementados.
Encaminhamento de Pacotes e Firewall através de IPTABLES
DHCP - Este serviço serve para atribuir Ips dinamicamente ás maquinas que se liguem à rede.
DNS - Este serviço serve para resolver nomes em Ips, sem ele a Internet seria catastrófica porque em vez de escrevermos www.google.pt teríamos que saber o seu endereço de IP http://74.125.224.72/, e como todos nós sabemos é mais fácil decorar nomes do que números.
NO-IP - Este é um serviço permite ter um DNS Dynamico que sempre que a ligação ADSL cai e o nosso ip muda o mesmo é actualizado automaticamente. Ideal para quem não pode comprar um IP Fixo para aceder aos servidores de casa ou trabalho.
Vantagens :
Internet mais rápido pois o nosso pequeno Router que o nosso fornecedor de ISP nos disponibiliza  vai passar a ter menos tarefas a fazer. Isto porque no final da configuração todos estes serviços que estamos a configurar neste computador com Centos devem ser desactivados no nosso antigo Router. 
Desvantagens :
Requer alguns conhecimentos de Linux.
A maquina tem que estar sempre ligada para que possamos trabalhar na rede.
Requisitos do Servidor :
2 ou mais placas de rede "depende do que se pretende" - Neste tutorial estou a usar 3 placas de rede e irei criar 3 redes distintas.
192.168.1.0 - REDE 1 onde irá estar ligada directamente ao modem Adsl.
192.168.100.0 - REDE 2
192.168.200.0 - REDE 3
Bem então vamos começar.
Antes de mais devem fazer o download da distribuição Centos 6 Minimal.
http://www.centos.org/modules/tinycontent/index.php?id=34
Esta instalação apenas irá conter o básico onde não vão encontrar qualquer tipo de ambiente gráfico.
"Apenas iremos ter uma linha de comandos maravilhosa onde o céu é o limite ..."
 Após isto deixo aqui alguns prints da instalação do Centos (nota esta instalação é em modo de texto, podem também ser feita em modo Gráfico)
Dica : se fizerem em modo gráfico não configurem nenhuma placa de rede atreves desse modo, isto porque vamos aprender mais a frente como as podemos configurar através da consola.
Finalmente após reiniciar, estamos prontos para fazer login e começar a instalar e configurar serviços.
Configuração da Firewall básica do Centos
vi /etc/selinux/config
Editar o ficheiro
SELINUX=disabled

Reiniciar o servidor

reboot

 Configuração do ip do servidor de resolução de nomes (DNS)
vi /etc/resolv.conf

Adicionar ao ficheiro
nameserver 8.8.8.8
 Esta configuração é temporário, servirá apenas para podermos instalar os serviços através dos repositórios do Centos.
 Logo que tenhamos o nosso serviço de dns instalado e configurados vamos alterar o 8.8.8.8 para 127.0.0.1
Configuração do nome da máquina e do Default Gateway (router de saída)

vi /etc/sysconfig/network

Adicionar ao ficheiro
HOSTNAME= router.megapc
GATEWAY=192.168.1.254  #ip do seu router adsl

Configuração da placa de Rede eth0 ( Interface de saída para a Internet )

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

Adicionar ao ficheiro
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.1.200
NETMASK=255.255.255.0

Activar a placa de Rede eth0
ifup eth0
 Fazer restart aos interfaces de Redes
service network restart

Actualizar o Sistema Operativo
yum update

Instalação do compilador de C e do comando make “útil para compilar e instalar programas”
yum install gcc make

Configuração das interfaces Internas

Eth2

Editar o ficheiro de configurações da placa de rede eth2
vi /etc/sysconfig/network-scripts/ifcfg-eth2

Adicionar ao ficheiro
ONBOOT=yes
NETWORK=192.168.200.0
IPADDR=192.168.200.254
NETMASK=255.255.255.0
BROADCAST=192.168.200.255

Activar a placa de rede eth2
ifup eth2

Editar o ficheiro de configurações da placa de rede eth1
vi /etc/sysconfig/network-scripts/ifcfg-eth1

Adicionar ao ficheiro
ONBOOT=yes
NETWORK=192.168.100.0
IPADDR=192.168.100.254
NETMASK=255.255.255.0
BROADCAST=192.168.100.255

Activar a placa de rede eth2
ifup eth1

Instalação do editor Vim
yum install vim

Editar o ficheiro de configurações de comportamento da Rede
vim /etc/sysctl.conf

Alterar o valor do  net.ipv4.ip_forward = 0 para net.ipv4.ip_forward = 1 desta forma irão ficar permanente o forward ipv4

Adicionar a linha ao ficheiro
net.ipv4.conf.default.forwarding=1

Activar o IP Forward entre placas de rede
echo 1 > /proc/sys/net/ipv4/ip_forward

Fazer restart as interfaces de rede para carregar as novas definições.

service network restart

-------------------------------- IP TABLES MASQUERADE  -------------------------------

Configuração de iptables para fazer o MASQUERADE, desta forma todas as interfaces de redes tem como saída a interface eth0

service iptables stop
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
service iptables save
service iptables restart

--------------------------------------- DHCP SERVER ----------------------------------------

Vamos criar um scope para atribuição de ip’s automáticos para a rede 192.168.100.0.

Instalar o service dhcp
yum install dhcp

Editar o ficheiro de configuração do serviço
vim /etc/dhcp/dhcpd.conf

Adicionar ao ficheiro
#Novo scope

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

#especificação da rede e mascara
subnet 192.168.100.0 netmask 255.255.255.0 {

# definição de rage de ips irá suportar até 100 maquinas
range dynamic-bootp 192.168.100.100 192.168.100.200;

#definição servidor de dns
option domain-name-servers 192.168.100.254;

# definição de broadcast
option broadcast-address 192.168.200.255;

# definição de gateway
option routers 192.168.200.254;
}

Colocar o dhcp no arranque
chkconfig dhcpd on

--------------------------------------- DNS SERVER ----------------------------------------

O servidor DNS irá ser configurado para resolver nomes do exterior (ex: google.pt) no caso de ele não conhecer alguns nomes irá consultar um Forward (servidor externo á rede).

Instalar o servidor de nomes Bind e as suas ferramentas
yum install bind bind-utils

Colocar o Bind no arranque.chkconfig named on

Editar o ficheiro que contem os ips dos servidores de nomes
vim /etc/resolv.conf

Editar/adicionar na primeira linha
nameserver 127.0.0.1  #será a própria maquia a resolver dns

Editar o ficheiro named.conf
vim /etc/named.conf

Adicionar / comentar as seguintes linhas.

options {

        #abir a porta 53 para as seguinte redes
listen-on port 53 { 127.0.0.1;192.168.200.254;192.168.100.254; };

                listen-on-v6 port 53 { ::1; };
                directory       "/var/named";
                dump-file       "/var/named/data/cache_dump.db";
                statistics-file "/var/named/data/named_stats.txt";
                 memstatistics-file "/var/named/data/named_mem_stats.txt";

        #permitir o acesso das seguintes redes
allow-query     { localhost;192.168.200.0/24;192.168.100.0/24; };

#desactivar a recursividade para que o nosso servidor nao possa ser consultado do lado de fora
#recursion yes;
#permitir recusividade entres as redes internas
allow-recursion {127.0.0.1; 192.168.200.0/24; 192.168.100.0/24; };

#Desactivas as opções de dnssec
 #dnssec-enable yes;
 #dnssec-validation yes;
 #dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

#Carregar os ip’s dos servidores de forward (podem ser adicionados varios terminando sempre com ‘;’
forwarders { 8.8.8.8; };
};

Fazer restart ao serviço de dns
service named restart

Fazer restart ao serviço de Rede
service network restart

------------------------------------------- NO IP -------------------------------------------

A ferramenta no-ip permite que quem não tenha IP fixo para aceder ao servidor do exterior, possa ficar com um DNS dinâmico que actualiza o ip sempre que ele é alterado.
Antes de ser instalado já deve possuir uma conta registada no site http://www.no-ip.com e um host criado do tipoaminhaorganização.no-ip.org.

Ir para a directoria src
cd /usr/src

Fazer download do source da aplicação cliente do no-ip
wget https://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

Descompactar o ficheiro
tar -zxvf noip-duc-linux.tar.gz

Entrar no directório criado após a extracção.
cd noip-2.1.9-1
Fazer um make para recompilar
#make

Fazer make install para criar a configuração e preencher os dados que são pedidos.
#make install

Dar permissões de execução ao script do no-ip
#chmod +x redhat.noip.sh

Copiar o script para a pasta de Daemon’s
#cp redhat.noip.sh /etc/init.d/noip2

Adicionar o dameon do no-ip ao arranque
#chkconfig --add noip2

Iniciar o dameon
# /etc/init.d/noip2 start

----------------------- IP TABLES REGRAS DE NAT -----------------------------

As regras abaixo descritas servem para encaminhar portas que venham do exterior para os vários servidores externos:

Encaminhamento da porta 10000 (webmin) para o servidor com o ip 192.168.200.223 (pc router)
 #iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 10000:10100 -j DNAT --to-destination 192.168.200.223

Encaminhamento da porta 5060 (sip elaxtix) para o servidor com o ip 192.168.200.220 (servidor de voip)
# iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 5060 -j DNAT --to-destination 192.168.200.220

Encaminhamento da porta 3306 (mysql) para o servidor com o ip 192.168.200.240 (servidor de mysql)
#iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 192.168.200.240

#LIMPEZA DE REGRAS
iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
iptables -t nat -F

#STOP A FIREWALL
service iptables stop

#POLICAS
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#MASCARADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#PORTAS QUE PODEM ENTRAR NA MAQUINA FIREWALL
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #SSH
iptables -A INPUT -p udp --dport 53 -j ACCEPT #DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT #DNS
iptables -A INPUT -j REJECT

#PORTAS QUE PODEM ATRAVESSAR A FIREWALL
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT #DNS
iptables -A FORWARD -p udp --dport 53 -j ACCEPT #DNS
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT #HTTP
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT #HTTPS
iptables -A FORWARD -p tcp --dport 3306 -j ACCEPT #MYSQL
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT #POP
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT #SMTP
iptables -A FORWARD -p tcp --dport 22 -j ACCEPT #SSH
iptables -A FORWARD -p tcp --dport 5050 -j ACCEPT #IPCAMCR
iptables -A FORWARD -p tcp --dport 9193 -j ACCEPT #ZONEMINDER
iptables -A FORWARD -p tcp --dport 21 -m state --state ESTABLISHED,NEW -j ACCEPT #FTP
iptables -A FORWARD -p udp --dport 137 -j ACCEPT #SAMBA NAME SERVER
iptables -A FORWARD -p udp --dport 138 -j ACCEPT #SAMBA DATAGRAMA
iptables -A FORWARD -p tcp --dport 139 -j ACCEPT #SAMBA ESTABLECIMENTO DE SESSAO
iptables -A FORWARD -p tcp --dport 902 -j ACCEPT #EXSI
iptables -A FORWARD -p tcp --dport 903 -j ACCEPT #ESXI
iptables -A FORWARD -p tcp --dport 445 -j ACCEPT #NETBIOS
iptables -A FORWARD -p tcp --dport 993 -j ACCEPT #IMAP GMAIL
iptables -A FORWARD -p tcp --dport 465 -j ACCEPT #SMTP GMAIL
iptables -A FORWARD -j REJECT
#PREROUTING ENCAMINHAMENTO DE PORTOS PARA OUTROS SERVIDORES

#SIP (UDP5060)
#iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 5060 -j DNAT --to-destination 192.168.200.220
#iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 5060 -j DNAT --to-destination 192.168.200.220

#IAX2/IAX
#iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 4569 -j DNAT --to-destination 192.168.200.220
#iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 5036 -j DNAT --to-destination 192.168.200.220

#RTP
#iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 10000:20000 -j DNAT --to-destination 192.168.200.220

#MGCP
#iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 2727 -j DNAT --to-destination 192.168.200.220

#MYSQL
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 192.168.200.240

#ZONEMINDER
iptables -t nat -A PREROUTING -p tcp --dport 9193 -i eth0 -j DNAT --to 192.168.200.210:80

#GUARDAR AS DEFINIÇÕES E FAZER RESTART AO SERVIÇO
service iptables save
service iptables restart
#MODULOS
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_filter
/sbin/modprobe nf_conntrack
/sbin/modprobe nf_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe nf_conntrack_ftp
/sbin/modprobe ip_nat_ftp

----------------------------------------------------------------------------------
Espero ter ajudado :)
Alguma duvida contactem por email brunohorta82@gmail.com

Comentários

Mensagens populares deste blogue

3 Formas de configurar o Wi-Fi no ESP8266

3 Formas de  configurar o Wi-Fi no ESP8266 O nosso famoso ESP8266 veio para ficar, cada vez mais este microcontrolador é utilizado para desenvolver dispositivos fantásticos, é verdade que o ESP pode ser utilizado como um simples MCU , mas é a sua capacidade de se ligar a uma rede Wi-Fi, faz dele a escolha perfeita no que toca dipositivos IoT . Este artigo tem foco em três diferentes soluções que permitem programar o ESP de forma a que este se consiga ligar a uma rede Wi-Fi. É sabido que da primeira vez que o ESP é energizado este tem de conhecer ou vir a conhecer o SSID e a Password configurada no Access Point ao qual o queremos conectar de forma a fazer para da rede e ter acesso à Internet se assim for necessário. Vamos então ver como implementar as três soluções, analisar cada uma delas e ponderar os prós e contras e cada uma delas. Passemos ao caso mais simples, ao qual denomino de “Hard Coded” , esta é a forma mais utilizada por quem começa a utilizar

Instalação do SQLPLUS da ORACLE em LINUX

Bom dia a todos Hoje vou explicar como podemos instalar o SQLPLUS da Oracle em sistemas Linux que utilizem gestão de pacotes RPM, entre eles CENTOS, FEDORA etc.. O SQLPLUS é uma excelente ferramenta de administração de SGDB da Oracle e apresenta-se sob o formato de linha de comandos o que permite aos Administradores de Base de Dados um maior poder sobre o SGDB. Antes de mais é necessário ter uma conta Oracle, esta pode ser feita atraves de um registo no site e é totalmente gratuito. Após termos conta devemos ir à secção de Download -> Databases -> Oracle Instant Client URL:   http://www.oracle.com/technetwork/indexes/downloads/index.html É apresentada uma lista sistemas operativos suportados e no nosso caso vamos escolher    Instant Client for Linux x86-64   para versões 64 Bits Ao escolhermos o Sistema Operativo a Oracle mostra-nos todas aplicações de Cliente para as diversas versões de Base de dados. A ultima versão é a 12 no entanto devemos fazer o downl

Mosquitto MQTT - Como Apagar todas as Mensagem Retain

Olá malta, hoje venho partilhar convosco algo que pode dar muito jeito quando andamos a testar cenários em que temos mensagens MQTT Retained . Um mensagem com a Flag Retain fica guardada no Broker MQTT até que seja subscrita por outra . Uma solução rápida para eliminar a mensagem Retain será publicar no mesmo tópico uma mensagem vazia , no entanto se tivermos muitos tópicos com mensagens Retain pode dar muito trabalho por isso uma forma simples será eliminar a base de dados do Mosquitto e todas as mensagem Retain são perdidas. Este cenário pode parecer uma pouco Brute Force mas se pensar-mos bem, assim que os nossos sensores/atuadores se ligarem novamente ao Broker MQTT vão publicar novamente a mensagem Retain que realmente interessa :) Procedimento sudo service mosquitto stop sudo rm /var/lib/mosquitto/ mosquitto.db sudo service mosquitto start DONE.... Espero ter ajudado :) Grande Abraço