[FUG-BR] Proxy com 2 links pppoe

Gelsimauro Batista dos Santos gbs em pollynet.com.br
Qua Nov 16 16:49:33 BRST 2005


A Solução abaixo funciou, implementando em um provedor que tinha dois links 
no mesmo Servidor.

Essa solução é para quem tem dois links e deseja fazer a NAT dos mesmos em 
um único servidor.
Primeiro Vamos compilar o Kernel para utilizarmos como servidor gateway.


Compilando o Kernel do FreeBSD

1- Configurando o Kernel
cd /usr/src/sys/i386/conf
cp GENERIC NOVOKERNEL
ee NOVOKERNEL

2 - Digite no arquivo copiado as linhas abaixo, use o editor "ee", "ee 
NOVOKERNEL"
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE_LIMIT=300
options IPDIVERT
options IPsTEALTH
options DUMMYNET
options TCP_DROP_SYNFIN
options IPFIREWALL_FORWARD 

3- Execute os seguintes comandos:
config NOVOKERNEL
cd ../../compile/SEUKERNEL
make depend
make
make install
fastboot
Quando o sistema carregar ira subir com o novo kernel. 

Configurações das interfaces de rede

Vamos configura as interfaces de acordo com as faixas abaixo.

LINK1 Faixa - 100.100.100.0/255.255.255.252, gateway 100.100.100.1, 
interface rl0

LINK2 Faixa - 200.200.200.0/255.255.255.252, gateway 200.200.200.1, 
interface rl1

Rede Interna - Faixa 10.0.0.0/255.255.255.0, interface rl2


-----------------------------------------------------------------------------
---

Alterando o /etc/rc.conf

Veja que os IPs das interfaces foram escolhidas dentro das faixas dadas 
acima.

Configure a rede no arquivo /etc/rc.conf 

ee /etc/rc.conf
ifconfig_rl0="inet 100.100.100.2 netmask 255.255.255.252"
ifconfig_rl1="inet 200.200.200.2 netmask 255.255.255.252"
ifconfig_rl2="inet 10.0.0.1 netmask 255.255.255.0"
defaultrouter="100.100.100.1"
hostname="servidor"
gateway_enable="YES"
sshd_enable="YES"
sh /etc/gbs/iniciar.gbs

É logico que com o comando "ifconfig" você esta configurando os IPs para as 
interfaces de rede.
Veja que no caso nos só utilizamos um gateway o 100.100.100.1 que e o 
padrão. Nesse caso o LINK1 é a saída padrão para Internet. Não tem 
necessidade de apontar o outro gateway nesse arquivo.
hostname="servidor" - Nome da maquina.
gateway_enable="YES" - Ativa o roteamento. Lembre-se sem essa opção a NAT 
não vai funcionar.
sshd_enable="YES" - Ativa o acesso remoto por SSH a esse servidor.
sh /etc/gbs/iniciar.gbs - Iremos criar logo mais para iniciar determinados 
arquivos boot do sistema.

Na Proxima vez que você reiniciar o servidor as novas configurações terão 
efeito.


-----------------------------------------------------------------------------
---

Duas interfaces de NAT

Veja que a configuração acima determina que temos duas interface de rede 
cada uma dedicada a um link para fazer NAT.

Crie um diretório com o nome “gbs” dentro de /etc/ ou o nome que melhor lhe 
convier "mkdir /etc/gbs", depois crie os seguintes arquivos de configurações 
detro desse diretorio. 

1- "ee /etc/gbs/natd.conf" com o conteúdo abaixo
dynamic yes
same_ports yes
use_sockets yes

2- "ee /etc/gbs/rc.filters" com o conteúdo abaixo
#!/bin/sh
/sbin/ipfw -f flush
/sbin/ipfw add 51 allow ip from any to any via lo0
/sbin/ipfw add 52 deny ip from any to 127.0.0.0/8

/sbin/natd -s -n rl0 -p 8668
/sbin/natd -s -n rl1 -p 8669 

/sbin/ipfw add 53 divert 8668 all from any to 100.100.100.2 in
/sbin/ipfw add 54 divert 8668 all from 10.0.0.30 to any out
/sbin/ipfw add 55 fwd 200.200.200.1 all from 200.200.200.2 to any
/sbin/ipfw add 56 divert 8669 all from any to 200.200.200.2 in
/sbin/ipfw add 57 divert 8669 all from 10.0.0.15 to any out

A regra 51 em questão, permite todo tráfego proveniente da interface de 
loopback (a lo0).
A regra 52 bloqueia todo o tráfego direcionado à rede localhost (127.0.0.0).
A regra 51 é necessária pra permitir comunicação inter-processos locais 
(local IPC), e a regra 52 evita que qualquer pacote externo adentre o 
endereço de host local (localhost address), que é o endereço de loopback, 
protegendo assim o tráfego local.

As linhas "/sbin/ natd -s -n rl0 -p 8668" e "/sbin/ natd -s -n rl1 -p 8669" 
indica que a porta NAT da rl0 será 8668 e 8669 para a rl1.

Já a regra 53 enviará todos os pacotes que irão ser recebidos de algum pela 
porta 8668 que a rl0 entrarão pelo IP 100.100.100.2. E a 54 que o IP 
10.0.0.3 fará NAT pela porta 8668 nesse caso a rl0 será a interface de saída 
dos pacotes.

A regra 55 diz que todos os pacotes destinados a 200.200.200.2 serão 
enviados para 200.200.200.1. Essa regra que trabalhara como segundo gateway 
direcionara os pacotes para LINK2.
A regra 56 que enviará todos os pacotes que irão ser recebidos de algum pela 
porta 8669 que a rl1, entrarão pelo IP 200.200.200.2. e a 57 que o IP 
10.0.0.4 fará NAT pela porta 8669 nesse caso a rl1 será a interface de saída 
dos pacotes.


3 - "ee /etc/gbs/iniciar.gbs" dentro contem os comando que irão iniciar os 
outros arquivos
/sbin/natd -f /etc/gbs/natd.conf
/bin/sh /etc/gbs/rc.filters



On Mon, 14 Nov 2005 22:23:31 -0300, Celso Viana wrote
> Veja se o link abaixo ajuda.
> 
> http://www.free.bsd.com.br/noticia.php3?CAD=1&NOT=172
> 
> Celso
> 
> Em 14/11/05, Marck<debianpython em gmail.com> escreveu:
> > Olá amigos,
> >
> > Estou com a seguinte situação:
> > Meu primo tem uma lan house com 20 micros e precisava colocar
> > internet, mas a companhia telefônica não dispõe de velocidade ADSL
> > acima de 512 e por isso ele precisou colocar 2 links pppoe.
> > Eu preciso fazer um proxy pra ele e estou meio perdido.
> > Teria que ter controle de banda para que uma máquina não use tudo e as
> > outras fiquem sem nada e também um proxy para que as crianças não
> > acessem sites impróprios.
> > Estive garimpando como fazer isso no FreeBSD e achei essas matérias
> > falando sobre isso:
> > http://infsr.unijui.tche.br/~heini/freebsd/dummynet.html
> > http://www.free.bsd.com.br/noticia.php3?CAD=1&NOT=172
> > http://www.free.bsd.com.br/noticia.php3?CAD=1&NOT=143&PARA=topo
> > http://www.free.bsd.com.br/noticia.php3?CAD=1&NOT=81&PARA=topo
> >
> > Agora o que estou querendo saber como fazer:
> > Separo 10 máquinas pra cada link de 512 e crio as regras com o ipfw?
> > Ou tem como juntar os 2 links e deixar as 20 máquinas na mesma rede?
> > O Squid vai fucionar com 2 links pppoe? Ou eu teria que criar um proxy
> > alternativo para o segundo link?
> > Não terei nenhum servidor Apache ou de E-mail interno que precise de
> > acesso externo.
> > Preciso de acesso externo apenas de SSH no servidor principal que é
> > onde irá  rodar esses serviços.
> > Disponho de um Pentium III 600 com 256mb de memória HD de 10GB e 3
> > placas de rede. É possível montar um servidor desses com essa modesta
> > máquina?
> >
> > Desculpem tantas perguntas, estou iniciando agora e conto com a boa
> > vontade de todos que puderem me ajudar. Tenho pouco de conhecimento de
> > FreeBSD, Squid e redes.
> >
> > Agradeço antecipadamente.
> >
> > Marck
> >
> > _______________________________________________
> > Freebsd mailing list
> > Freebsd em fug.com.br
> > http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br
> >
> 
> --
> Celso Vianna
> BSD User: 51318
> Palmas/TO
> 
> _______________________________________________
> Freebsd mailing list
> Freebsd em fug.com.br
> http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br


Gelsimauro Batista dos Santos


_______________________________________________
Freebsd mailing list
Freebsd em fug.com.br
http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br




Mais detalhes sobre a lista de discussão freebsd