Servidor “Gateway” Vários IPs na mesma interface + IP vs MAC + Controle de Banda por IP

Se você tem uma pequena rede e gostaria de colocar um servidor linux para gerenciar ela aqui vai algumas dicas que podem ser útil para você, vamos tratar de como adicionar mais de um IP na mesma interface (IP alias), amarar um IP ao MAC, e criar um controle de banda.

Cenário:
[ SERVIDOR DEBIAN 8]
eth0 ->> WAN
eth1 ->> LAN

d1
Criando alias de ip Para ficar mais organizado, criamos uma pasta em etc onde iremos gravar todos nossos arquivos.

No exemplo  vamos adicionar 3 IPs /24 na nossa mesma placa de rede.

# ifconfig eth1:1 192.168.1.1 netmask 255.255.255.0
# ifconfig eth1:2 172.16.0.1 netmask 255.255.255.0
# ifconfig eth1:3 10.0.0.1 netmask 255.255.255.0

Muito simples adicione eth0:ID IP netmask MASCARA

Confira se os mesmo foram criados:

# ifconfig
eth0:1 Link encap:Ethernet Endereço de HW 00:00:00:00:10:20 
inet end.: 192.168.1.1 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1

Para “baixar” uma interface alias, use o comando:

# ifconfig eth1:2 down

Amarrando IP x MAC:
Primeiramente devemos compartilhar conexão do seu linux:

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

Neste exemplo vou liberar internet (NAT) para os 3 IPs com classes diferente, mas você possivelmente terá apenas uma classe.

Esses comandos irão limpar qualquer regra que já exista do iptables

# iptables -F
# iptables -X
# iptables -F -t nat
# iptables -X -t nat
# iptables -F -t mangle
# iptables -X -t mangle
# iptables -F -t filter
# iptables -X -t filter

Carregamos os módulos necessários

# modprobe iptable_nat
# modprobe ip_conntrack_ftp
# modprobe ip_nat_ftp
# modprobe ipt_LOG
# modprobe ipt_REJECT
# modprobe ipt_MASQUERADE

# iptables -t nat -A POSTROUTING -s 192.168.1.2/32 -j MASQUERADE
# iptables -t filter -A FORWARD -d 0/0 -s 192.168.1.2 -m mac ! --mac-source  08:00:27:18:dc:aa -j DROP

# iptables -t nat -A POSTROUTING -s 172.16.0.2/32 -j MASQUERADE
# iptables -t filter -A FORWARD -d 0/0 -s 172.16.0.2 -m mac ! --mac-source  08:00:27:18:dc:ab -j DROP

# iptables -t nat -A POSTROUTING -s 10.0.0.2/32 -j MASQUERADE
# iptables -t filter -A FORWARD -d 0/0 -s 10.0.0.2 -m mac ! --mac-source  08:00:27:18:dc:ac -j DROP

Neste exemplo estamos liberando apenas os IPs.

Os demais IPs já estão bloqueado, porém digamos que você queira que quando ele abra algum site http ele receba uma página com um alerta.

Vamos fazer NAT apenas para porta 80 (http) e a 53 para ele poder consultar o DNS

# iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 192.168.1.3/32 -j MASQUERADE
# iptables -t nat -A POSTROUTING -p udp --dport 53 -s 192.168.1.3/32 -j MASQUERADE

Aqui vem o segredo você vai direciona-lo para o IP do seu servidor na porta 80.
Você vai precisar ter instalado o Apache e configurado ou outro serviço web. Use a imaginação 😛

# iptables -t nat -A PREROUTING -p tcp -s 192.168.1.3/32 --dport 80 -j DNAT --to 192.168.1.1:80

Agora só para garantir vamos bloquear qlqr outra porta com destinos diferente da 80 e 53.

# iptables -I FORWARD -s 192.168.1.3/32 -p tcp ! --dport 80 -j DROP
# iptables -I FORWARD -s 192.168.1.3/32 -p udp ! --dport 53 -j DROP

Agora vamos fazer um controle de banda para o IP 192.168.1.2 setando 4Mb de Down e 2Mb de Up
Só para garatir limpamos as regras mangle do iptables

# iptables -F -t mangle
# iptables -X -t mangle

Upload

# tc qdisc del dev eth0 root
# tc qdisc add dev eth0 root handle 1: htb default 1
# tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit
# tc class add dev eth0 parent 1: classid 1:10 htb rate 2Mbit
# iptables -t mangle -A FORWARD -o eth0 -p tcp -s 192.168.1.2 -j CLASSIFY --set-class 1:10

Download

# tc qdisc del dev eth1 root
# tc qdisc add dev eth1 root handle 1: htb default 1
# tc class add dev eth1 parent 1: classid 1:1 htb rate 1000mbit
# tc class add dev eth1 parent 1: classid 1:20 htb rate 4Mbit
# iptables -t mangle -A FORWARD -o eth1 -p tcp -d 192.168.1.2 -j CLASSIFY --set-class 1:20

 

Por hoje é isso!

Recomendo o o post SCRIPT IP vs MAC + Controle de Banda por IP no Debian

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

Deixe uma resposta

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