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
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