[FUG-BR] Dual Nic na mesma subnet.

Marcelo Araujo araujobsdport em gmail.com
Quarta Fevereiro 27 05:03:35 BRT 2013


Em 25 de fevereiro de 2013 19:13, <freebsd-request em fug.com.br> escreveu:

>
>    4. Re: Digest freebsd, volume 83, assunto 43 (Luiz Gustavo Costa)
>
> Message: 4
> Date: Mon, 25 Feb 2013 00:12:29 -0300
> From: Luiz Gustavo Costa <luizgustavo em luizgustavo.pro.br>
> Subject: Re: [FUG-BR] Digest freebsd, volume 83, assunto 43
> To: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)
>         <freebsd em fug.com.br>
> Message-ID: <20130225031229.GA2207 em desktop.luizgustavo.pro.br>
> Content-Type: text/plain; charset=iso-8859-1
>
> * Marcelo Araujo (araujobsdport em gmail.com) wrote:
> >
> > A razão é bem simples.
> > Tenho duas iface, ix0 e ix1, CIFS rodando em ambas. Porém a iface ix0
> têm a
> > rota para a rede 172.17.22.0/16. Qualquer tráfego que entrar pela ix1,
> vai
> > sair pela ix0.
> >
> > Agora imagine que tenho usuários acessando o samba no ip da iface ix0 e
> > também no ip da ix1, todo o tráfego outgoing vai sair únicamente pela
> ix0.
> >
> > Esse é um problema antigo no FreeBSD até onde sei.
> >
> >
> > >
> > > Se isso não for possível, o meu conselhor é: vá pro linux ou pro
> windows.
> > > :)
> > >
> > >
> > Não posso ir para o Linux ou para o Windows! ;)
> >
>
> Buenas Marcelo.
>
> Eu to tentando entender a salada, entendi mais ou menos (na mente) :)
>
> Fazer o samba rodar por interface não rola ? (parametro interfaces no
> smb.conf)
>
> um "route-to" / "reply-to" no pf também não rola ? sei que é complicado
> porque se não me engano, ele não vai conseguir em uma rota vindo
> internamente do sistema ?!?!
>
> sei lá.. é chute !
>
> não sei se daria certo... mas eu normalmente já fiz isso com jail,
> colocar pra escutar em uma interface tap e em outra classe de rede e
> manipular via pf com route-to/reply-to ... com Jail vai de boa.
>
> Não sei com daemons....  vê ai e nos fale !
>
> Abraços !
>
>
>
Olá,

Sim, fazer o samba rodar por interface rola sim, o problema não está
relacionado diretamente com o samba, mas sim com a tabela de rotas no
sistema.
Segue abaixo mais um exemplo, que acredito agora deve ficar mais fácil para
entender. Lembrando que falei SAMBA, apenas como exemplo, isso vai
acontecer com qualquer serviço de rede.

[root em ESSD46B70 ~]# ifconfig ix1
ix1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO>
ether 00:08:9b:d4:6b:72
inet 172.17.22.113 netmask 0xfffffe00 broadcast 172.17.23.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (10Gbase-T <full-duplex>)
status: active

[root em ESSD46B70 ~]# ifconfig ix0
ix0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO>
ether 00:08:9b:d4:6b:71
inet 172.17.22.106 netmask 0xfffffe00 broadcast 172.17.23.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (10Gbase-T <full-duplex>)
status: active

Agora vamos dar uma olhada na tabela de roteamento:
[root em ESSD46B70 ~]# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
127.0.0.1          link#8             UH          0      525    lo0
169.254.0.1        link#9             UHS         0        0    lo0
169.254.0.2        link#9             UH          0        0   tun0
172.17.22.0/23     link#1             U           0       73    ix0
172.17.22.106      link#1             UHS         0        0    lo0
172.17.22.113      link#2             UHS         0        0    lo0

Como podemos ver, a rede 172.17.22.0/23 a interface ix0 é quem vai
responder por essa subnet.
Se um pacote entrar pela ix1 ele automáticamente vai sair pela ix0.

O que eu quero fazer é, se um pacote entrar pela ix1 que ele saia pela ix1.
É fácil testar isso, se você tiver 2 placas de rede, adicione as duas na
mesma subnet, olhe qual placa vai ter a rota para a subnet e então ping na
outra placa de rede, você vai ver que a resposta vai vir da placa que têm a
rota para a rede e não da placa que você executou o ping request.

Dei uma olhada no Linux e lá, eu vou ter duas rotas para a mesma subnet,
uma rota para cada placa de rede.

NOTA: Não testei ainda com o PF, se você tiver um exemplo, seria legal!

Atenciosamente,
-- 
Marcelo Araujo
araujo em FreeBSD.org


Mais detalhes sobre a lista de discussão freebsd