quinta-feira, maio 03, 2007

Compartilhando 2 links no Linux PAT 2

O Script

Vejamos:


# Nesta parte denominamos variáveis para as interfaces como segue.
# Denominamos que o nome LAN seja referente a Interface ETH0 que no nosso
# script é a da rede interna. Verifique no seu Firewall qual é a interface
# correta.

IF_LAN='eth0'


# Aqui denominamos as variáveis dos LINKS 1 e 2, e os chamamos de LINK1 e LINK2
# É claro que você poderá chamá-los do que quiser. Exemplo: ADSL1 e ADSL2,
# mas não esqueça de alterar as variáveis no restante do script.

IF_LINK1='eth1'
IF_LINK2='eth2'

# Aqui colocamos os Gateways dos Links de Internet.
# Geralmente, os Default Gateways dos Links são os IPs dos roteadores de
# Internet.
GW_LINK1='200.70.0.1'
GW_LINK2='200.80.0.1'

# Nesta parte, utilizamos o comando IPTABLES para mascarar os IPs, ou seja,
# fazemos um NAT (Network Address Translation) para que os pacotes que venham da
# Interface ETH0 com IPs da rede interna, ou mesmo pacotes gerados dentro do
# próprio Firewall, possam sair para a Internet com endereços trocados, usando
# os IPs das interfaces ligadas aos Links de Internet.
# O MASQUERADE ao final do comando faz exatamente isto.
# Caso contrário, utilizaria ACCEPT, mas aí os pacotes sairiam para a Internet
# com IPs da rede interna e jamais retornariam ao Firewall.

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

# Aqui começamos a marcar os pacotes diferenciando-os pela porta utilizada.
# Observe que escolhemos os pacotes com destino as portas 80 (HTTP) 443 (HTTPS)
# 25 (SMTP) 110 (POP)
# Todo pacote que passar pelo Firewall com estas particularidades receberão
# uma marca, uma espécie de carimbo. Pacotes destinados a porta 80
# recebem carimbo de número 2, pacotes com destino a porta 25
# recebem carimbo número 3.
# Desta forma, podemos diferenciá-los para que mais a frente no script tenhamos
# controle do que saiu/entrou e por onde saiu/entrou.

iptables -t mangle -A PREROUTING -i -p tcp --dport 80 -j MARK
--set-mark 2

iptables -t mangle -A PREROUTING -i -p tcp --dport 443 -j MARK
--set-mark 2

iptables -t mangle -A PREROUTING -i -p tcp --dport 25 -j MARK
--set-mark 3

iptables -t mangle -A PREROUTING -i -p tcp --dport 110 -j MARK
--set-mark 3

# A diferença entre o PREROUTING e o OUTPUT é que, PREROUTING abrange os
# pacotes que foram originados fora do FIREWALL, por exemplo Interface ETH0
# (), enquanto OUTPUT são os pacotes originados no Firewall, ou seja, na
# própria console.

iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -p tcp --dport 110 -j MARK --set-mark 3

# Aqui montamos as tabelas dinâmicas a partir das marcas (carimbos) que fizemos
# lá em cima no nosso script.
# Pacotes que foram marcados com 2 vão para a tabela table 20 e os marcados
# com 3, vão para a tabela table 21, com a mesma prioridade. Perceba o PRIO 20
# após os comandos.

ip rule add fwmark 2 table 20 prio 20
ip rule add fwmark 3 table 21 prio 20

# se quisermos condicionar esta marcação de outra forma, podemos utilizar o
# comando das seguintes formas:

# Este condiciona que todos os pacotes que vierem da rede 192.160.0.0 vão para
# a tabela 20.
# O comando está comentado. Caso queira utilizá-lo, apenas retire o sinal de
# da frente.

# ip rule add from 192.160.0.0/24 table 20

# Este outro condiciona os pacotes da rede 192.170.0.0 a irem para a tabela 21
# O comando está comentado. Caso queira utilizá-lo, apenas retire o sinal de
# # da frente do comando.

# ip rule add from 192.170.0.0/24 table 21

# Agora sim daremos rumo aos pacotes que foram marcados e cadastrados na tabela
# dinâmica.
# Veja que os pacotes que foram enviados para a tabela 20 têm como DEFAULT
# GATEWAY o LINK1. Sendo assim, os pacotes serão enviados para o LINK1 na
# Interface ETH1 com o IP 200.70.0.1.
# Já os pacotes da tabela 21 serão enviados para o LINK2 na Interface ETH1, com
# o IP 200.80.0.1

ip route add default via dev table 20
ip route add default via dev table 21


# Este último comando limpa a tabela, caso ela já tenha sido utilizada
# anteriormente, ou apenas para termos certeza de que quando você resetar as
# regras todas, o Firewall não guarde nenhum tipo de informação na
# memória (cache). Daí o nome FLUSH CACHE.

ip route flush cache

### FIM DO SCRIPT ######


Nenhum comentário:

mapa

FRASE DO DIA

This free script provided by
JavaScript Kit

RELOGIO

VISITANTE

This free script provided by
JavaScript Kit

TEMPO

This free script provided by
Website Abstraction

Doações

Monte 20/03/2008

MOIP

De VoIP para MoIP: o MSN do pagamento
MoIP Idéias - 30 de abril de 2008
Google
 

Os espinhos que me feriram foram produzidos pelo arbusto que plantei.