[FUG-BR] PF: Clientes Wireless por tras de um server NAT

Renato Botelho rbgarga em gmail.com
Terça Agosto 25 12:37:47 BRT 2009


2009/8/25 Enio Marconcini -:- www.Enio.Pro.Br -:- <eniorm at gmail.com>:
> Antunes, sim eu entendi, a partir do meu note, eu consigo pingar os ips que
> estão fora do gw nat, porém o inverso não vai,
>
> o gw eu adicionei uma rota, mesmo assim nao vingou
>
> o máximo que eu consigo pingar é o ip da ether que está no server, passou
> disso não vai
>
> só pra detalhar, vou postar aqui o resultado do ifconfig e do netstat -r
>
> ether conectada ao switch principal da LAN, ao qual meu pc está conectado
> # ifconfig vr0
> vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>        options=2808<VLAN_MTU,WOL_UCAST,WOL_MAGIC>
>        ether 00:17:31:27:1c:06
>        inet 192.168.0.13 netmask 0xffffff00 broadcast 192.168.0.255
>        media: Ethernet autoselect (100baseTX <full-duplex>)
>        status: active
>
>
> ether que está conectada ao note
> # ifconfig vge3
> vge3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>        options=1b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
>        ether 00:0c:42:1a:56:17
>        inet 172.16.30.1 netmask 0xfffffff0 broadcast 172.16.30.15
>        media: Ethernet autoselect (1000baseTX <full-duplex>)
>        status: active
>
>
> # netstat -r
> Routing tables
>
> Internet:
> Destination        Gateway            Flags    Refs      Use  Netif Expire
> default            192.168.0.6        UGS         0     1422    vr0
> 10.10.10.0/26      link#2             UC          0        0   vge0
> localhost          localhost          UH          0      118    lo0
> 172.16.30.0/28     link#5             UC          0        0   vge3
> 172.16.30.10       00:1e:4f:fe:31:d5  UHLW        1        5   vge3    941
> 192.168.0.0        link#1             UC          0        0    vr0
> 192.168.0.6        00:08:54:27:3a:8f  UHLW        2        0    vr0   1179
> 192.168.0.42       00:1b:b9:c1:60:1c  UHLW        1     1446    vr0   1120
>
> essas rotas foram adicionadas automaticamente, porem mesmo quando tento por
> manualmente, não funciona

Eu não consegui entender ao certo seu cenário, mas vamos tentar
propor algo.

Imagine o seguinte cenário:

Rede A - 192.168.0.0/24
Rede B - 172.16.0.0/24

Servidor (Gateway):
lan0 - 192.168.0.1
lan1 - 172.16.0.1
wan0 - 200.x.x.x

no pf.conf dele:

nat on wan0 inet from lan0:network to any -> (wan0)
nat on wan0 inet from lan1:network to any -> (wan0)

no rc.conf dele:

gateway_enable="YES"

Isso vai fazer com que as conexões vindas de qualquer uma
das duas redes, com destino a internet sejam mascaradas com
o endereço da wan0.

Estação da Rede A:

IP 192.168.0.10
GW 192.168.0.1

Estação da Rede B:

IP 172.16.0.10
GW 172.16.0.1

Como o ip forwarding está habilitado no GW, uma conexão que
sai da estação da rede A (192.168.0.10) com destino a estação
da rede B (172.16.0.10) seja direcionada para o GW, este por
sua vez já sabe onde se encontra a rede 172.16.0.0/24, pois
ela é a rede de uma das suas interfaces, direcionando o pacote
para lá. Quando o pacote voltar, o GW da mesma maneira conhece
a rede 192.168.0.0/24, portanto o devolverá para lá.

No desenho que você mandou temos um cenário diferente, você
tem uma máquina da rede 192.168.0.0/24 que *não* é o GW da
rede sendo a única máquina que conhece a rede 172.16.x.x.

Portanto, no seu GW você deve adicionar uma rota assim

route add -net 172.16.x.x/24 192.168.0.3

Com isso um pacote que partir da rede 192.168.x.x para a
172.16.x.x usará o 192.168.0.3 como caminho.

Lembrando que, esse servidor 192.168.0.3 precisa ter o
IP forwarding habilitado e *não* pode fazer nat de nada.

Além disso, uma conexão que partir da rede 172.16.x.x para
a internet, terá que ser mascarada no seu GW, portanto, deverá
ter uma regra fazendo nat da rede 172.16.x.x

nat on wan0 inet from 172.16.x.x/24 to any -> (wan0)

Além é claro da regra já existente para fazer nat da rede
192.168.x.x

-- 
Renato Botelho


Mais detalhes sobre a lista de discussão freebsd