"Dual Homeing source routing com FreeBSD" http://www.gamk.com.br/index.php?type=1&file=sourcert.txt
Gostaria de agradecer ao Patrick pelas id�ias de ipfw fwd. Valeu Patrick!!!
Seguinte Patrick a suas id�ias quase funcionam, por�m o problema � a reescrita do pacote, portanto o natd invertido � necess�rio em qualquer situa��o inclusive um pacote saindo da pr�pria maquina. A sua id�ia funcionaria se tivermos um apache rodando em LISTEN em uma porta do ISP secund�rio, mas n�o um telenet IP 25 por exemplo na console.
Depois se quiser entre em contato em PVT que eu te explico... :D
Abra�os
Hehe o historico das listas (de BSD) nunca mentem, certo? :Pp. Sem problemas, j� entendi o que voc� fez. Mas d� pra simplificar isso ;-) Com certeza. Precisamos abusar desse seu ambiente dual homed pra testar s� o NAT inverso, com unregistered, e -reverse (pensou nisso?). Pena que o ambiente de teste � IPFW1, n�o da pra abusar dos operadores OR pra simplificar ainda mais.
Agora olha s�, a quest�o de next-hop em rede registrada, como eu disse que funciona dual homed por qualquer politica de roteamento (policy routing).
Ambiente, 1 link Wireless (wi0) rede e o segundo link, um ppp (tun0).
Adicionadas as regras "set 1 fwd 200.210.70.1 log logamount 800 ip from 200.210.70.182 to any out xmit tun0" E "set 2 fwd 200.210.42.1 log logamount 800 ip from 200.210.42.5 to any out xmit wi0" depois de um "ipfw -f f"
Depois de um ipfw -f f com
([EMAIL PROTECTED])~# route flush default 200.210.42.1 done route: write to routing socket: No such process got only -1 for rlen ([EMAIL PROTECTED])~# route add default 200.210.42.109 add net default: gateway 200.210.42.109
(uma rota default completamente invalida, essa maquina nem esta no ar).
([EMAIL PROTECTED])~# ipfw -S sh
00100 3 175 set 1 fwd 200.210.70.1 log logamount 800 ip from 200.210.70.182 to any out xmit tun0
00200 0 0 set 2 fwd 200.210.42.1 log logamount 800 ip from 200.210.42.5 to any out xmit wi0
Ent�o como forcar alguma coisa sair pelo link wireless, pra fazer um teste? Sei la, nmap por exemplo.
([EMAIL PROTECTED])~# nmap -S 200.210.42.5 -e wi0 -P0 200.210.70.5 Starting nmap V. 3.00 ( www.insecure.org/nmap/ ) ^Ccaught SIGINT signal, cleaning up
([EMAIL PROTECTED])~# tail -4 /var/log/security
Jun 18 20:07:18 redfield-claire kernel: ipfw: 200 Forward to 200.210.42.1 TCP 200.210.42.5:33402 200.210.70.5:183 out via wi0
Jun 18 20:07:18 redfield-claire kernel: ipfw: 200 Forward to 200.210.42.1 TCP 200.210.42.5:33402 200.210.70.5:327 out via wi0
Jun 18 20:07:18 redfield-claire kernel: ipfw: 200 Forward to 200.210.42.1 TCP 200.210.42.5:33402 200.210.70.5:1389 out via wi0
Jun 18 20:07:18 redfield-claire kernel: ipfw: 200 Forward to 200.210.42.1 TCP 200.210.42.5:33402 200.210.70.5:344 out via wi0
Logou, conclui-se que rolou. Testar uma politica, usufruindo do processamento sequencial das regras.
([EMAIL PROTECTED])~# ipfw add 90 fwd 200.210.42.1 log logamount 10 ip from me to { smtp.uol.com.br or mx1.freebsd.org } smtp,qmtp out xmit wi0
00090 fwd 200.210.42.1 log logamount 10 ip from me to { 200.221.4.40 or dst-ip 216.136.204.125 } dst-port 25,209 out xmit wi0
([EMAIL PROTECTED])~# telnet mx1.freebsd.org 25 Trying 216.136.204.125... Connected to mx1.freebsd.org. Escape character is '^]'. 220 mx1.FreeBSD.org ESMTP Postfix (Postfix Rules!) quit 221 Bye Connection closed by foreign host.
([EMAIL PROTECTED])~# tail -1 /var/log/security
Jun 18 20:15:12 redfield-claire kernel: ipfw: 90 Forward to 200.210.42.1 TCP 200.210.42.5:49187 216.136.204.125:25 out via wi0
Resposta:
([EMAIL PROTECTED])~# tcpdump -i wi0 src mx1.freebsd.org
tcpdump: listening on wi0
20:20:21.787982 mx1.freebsd.org.smtp > redfield-claire.wireless.freebsdbrasil.com.br.49190: S 350957724:350957724(0) ack 3739244552 win 57344 <mss 1460,nop,wscale 0,nop,nop,timestamp 1562961220 417557> (DF)
20:20:22.001920 mx1.freebsd.org.smtp > redfield-claire.wireless.freebsdbrasil.com.br.49190: P 1:53(52) ack 1 win 57920 <nop,nop,timestamp 1562961242 417580> (DF)
Portanto a resposta voltou pela wireless, por onde saiu.
Fora (sem match) da regra:
([EMAIL PROTECTED])~# telnet mail.asernet.com.br qmtp Trying 200.205.142.130... Connected to socorrobsd1.asernet.com.br. Escape character is '^]'.
([EMAIL PROTECTED])~# tail -1 /var/log/security
Jun 18 20:23:22 redfield-claire kernel: ipfw: 100 Forward to 200.210.70.1 TCP 200.210.70.182:49194 200.205.142.130:209 out via wi0
Note que pela porta 209 saiu pela regra "100", portanto pelo gateway da tun0. Portanto � baba criar politicas por servico/destino para origens distintas. Pergunta, com um natd -reverse na interface interna (nat pela unregistered) e com as regras de fwd "antes" da de divert, como origem (from, tipo: divert natd ip from <me ou IP equivalente> to <politica> <...>) sendo o IP real, depois do pacote ja ter sido processado pelo natd (ou seja, quando a origem nao for mais um IP unregistered, e sim o real), rola a politica definida pela regra?
Pra isso rola de continuar os testes (pena q eu perdi a sessao ontem hehe). Pensa comigo, voc� ta usando nat tradicional, mas forcando o divert na interface interna. Se fosse -reverse as regras pra gente tratar o pacote na hora de sair, n�o poderiam ser simplificadas ainda mais?? Com divert na interna, ele da match na regra na interna, mas s� vai processar quando for pra externa, certo? Poupa a volta.
Cansei. Bom feriado :} []s
-- Atenciosamente,
Patrick Tracanelli
FreeBSD Brasil LTDA. The FreeBSD pt_BR Documentation Project http://www.freebsdbrasil.com.br [EMAIL PROTECTED] "Long live Hanin Elias, Kim Deal!"
_______________________________________________________________ Sair da Lista: http://www2.fugspbr.org/mailman/listinfo/fugspbr Historico: http://www4.fugspbr.org/lista/html/FUG-BR/
