The FreeBSD FAQ - The Power to Help
The FreeBSD FAQ - The Power to Help
This site is Powered by PAR Teleon

S E Ç Õ E S
B U S C A
+
D E S T A Q U E
CONTATO
PÁGINA ANTIGA
TELEON INTERNET
E N Q U E T E
Se apos a conclusao, a traducao da documentacao oficial do FreeBSD, fosse impressa em livro, voce:

Usaria apenas a documentacao na internet como referencia.Faria o download de toda a documentacao na internet e imprimiria eu mesmo.
Compraria o livro, para te-lo em maos, mas usaria a referencia na internet com maior frequencia do que o livro.Compraria o livro, e seria minha unica referencia.
Compraria varias copias do livro e daria de presente a varias pessoas que deveriam ser devidamente catequisadas.







Jean M. Melo © - 2001
Todos os direitos reservados






H O W   T O 


Índice


18/06/03 16:01 - Policy Routing com FreeBSD


Diego Linke


Depois de algumas horas "apanhando" do FreeBSD, de leituras constantes 
nos man pages e inclusive no código do natd e do ipfw, cheguei a solução 
do tão sonhado policy routing no FreeBSD com NAT. 

OBJETIVO

O objetivo é muito simples. Nós temos links de duas* operadoras, que 
chamaremos no artigo de ISP1 e ISP2, e precisamos selecionar que link 
desse cada IP da rede interna irá sair.

Ex:
192.168.0.1 -> ISP1
192.168.0.2 -> ISP1
192.168.0.3 -> ISP2
192.168.0.4 -> ISP1
192.168.0.5 -> ISP2

* Com esta solução descrita abaixo, poderiamos ter quantos links for necessário.

PRÉ-REQUESITOS

Basicamente precisaremos do ipfw e do natd apenas, portanto as seguintes 
opções no kernel:

options IPFIREWALL
options IPFIREWALL_FORWARD
options IPDIVERT

Precisaremos também do IP Forwarding. No /etc/rc.conf:

gateway_enable="YES"


NOSSA REDE

xl0 (Rede Interna): 
IP: 192.168.0.1
REDE: 192.168.0.0 / 255.255.255.0

xl1 (ISP1):
IP: 100.100.100.100
Gateway: 100.100.100.1

xl2 (ISP2):
IP: 200.200.200.200
Gateway: 200.200.200.1

REGRAS DO IPFW E NATD

Primeiramente teremos que definir qual ISP1 terá seu gateway na default 
gateway do FreeBSD. No nosso caso iremos optar pelo ISP1:

route add default 100.100.100.1

Teremos que rodar dois natd. Um na xl1 e outro na xl2:

natd -s -n xl1 -p 8668
natd -s -n xl2 -p 8669

Agora as regras do IPFW:

00010 divert 8669 ip from any to 200.200.200.200 in recv xl2
00020 divert 8669 ip from 192.168.0.8 to any out xmit xl1
00030 fwd 200.200.200.1 ip from 200.200.200.200 to any
00040 divert 8668 ip from any to 100.100.100.100 in recv xl1
00050 divert 8668 ip from 192.168.0.5 to any out xmit xl1
00060 allow ip from any to any
65535 deny ip from any to any

O "segredo" estão nas regras 20 e 30.

Percebam que na regra 20 nós jogamos para o NATD da porta 8669 que esta 
rodando na interface xl2 um pacote que esta saindo pela xl1, e logo após 
na regra abaixo (30) nós estamos dando um forward de todos os pacotes com 
origem do IP da xl2 para a next-hop (gateway) do ISP2.

Isso acontece porque sempre que o FreeBSD recebe um pacote, o IP 
forwading joga na tabela de roteamento que diz que o pacote tem que sair 
pela default gateway (xl1). 

Chegando lá tudo que nós temos que fazer é colocar uma regra de nat só 
que "invertendo" o natd que iremos jogar. Com isso o pacote é reescrito 
com a origem da interface xl2.

Logo após tudo que nós temos que fazer é força-lo a sair pela interface 
certa e com o devido gateway setado (regra 30).

Neste exemplo o IP 192.168.0.8 irá sair pelo ISP2 e o IP 192.168.0.5 pelo 
ISP1.

Agora sinta-se a vontade para fazer a política que quiser, seja ela por 
source-address, porta, protocolo...

Done!!! :-)

Diego Linke - GAMK


Diego Linke




Entrar em contato Enviar este artigo a um amigo Preparar para impressão Índice Topo da página


 

PrincipalBusca AvançadaEnqueteContatoTeleon Internet  
Enquetes antigas | FAQ | FreeBSD Desktop | Informacoes | Links | How To