[FUG-BR] Dois links de internet, um inacessível de fora

Aline de Freitas aline em bsd.com.br
Quinta Agosto 21 11:39:42 BRT 2008


Citando Giancarlo Rubio <gianrubio em gmail.com>:

> 2008/8/20 Aline de Freitas <aline em bsd.com.br>:
>> Citando Gule # <gule.cps em gmail.com>:
>>
>>> 2008/8/20 Aline de Freitas <aline em bsd.com.br>
>>>
>>>> Boa tarde!
>>>>
>>>> Estou com dois links de internet:
>>>>
>>>> (bge1) Virtua = 12 megas, IP Dinâmico
>>>> (bge2) Ajato = 2 megas, IP fixo
>>>>
>>>> (bge0) Rede interna
>>>>
>>>> A prioridade para uso interno é a bge2, por conta da banda alta.
>>>> Apenas para alguns
>>>> acessos que exigem autenticação por IP criei rotas via bge1. Pela rede
>>>> interna tenho os
>>>> dois gateways das duas interfaces acessíveis, mas o gateway default é
>>>> o via bge2. O
>>>> problema é que externamente, apenas o IP da bge2 (dinâmico) é
>>>> acessível. O IP da bge1
>>>> (fixo) nem pinga. Quando eu seto a bge2 como default, então ela passa
>>>> a ser acessível
>>>> externamente. Alguém conhece alguma forma de fazer com que ambas as
>>>> interfaces sejam
>>>> acessíveis externamente?
>>>>
>>>> Aline
>>>> -------------------------
>>>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>>>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>>>
>>>
>>> Firewall ? PF ?
>>> Caso seja, basta liberar a porta que quer que seja acessivel na interface
>>> desejada.
>>> -------------------------
>>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>>
>>
>> Não me parece ser uma questão de portas, uma vez que de fora o IP nem pinga.
>>
>> Minhas regras no pf.conf:
>>
>> # Interfaces
>> EXT_IF1 = "bge1"
>> EXT_IF2 = "bge2"
>> INT_IF = "bge0"
>> VPN_IF = "tun0"
>>
>> # Redes
>> LAN_NETWORK = "192.168.0.0/24"
>> VPN_NETWORK = "10.8.0.0/24"
>>
>> # Portas publicas (abertas para Internet)
>> # 4222 = SSH
>> # 4280 = Apache (HTTP)
>> # 42443 = Apache (HTTPS)
>> # 8180 = Tomcat (HTTP)
>> # 8443 = Tomcat (HTTPS)
>> # 41194 = OpenVPN
>> PUB_PORTS = "{ 4222, 4280, 42443, 8180, 8443, 41194 }"
>>
>> # Logar eventos em interface externa
>> set loginterface $EXT_IF1
>> set loginterface $EXT_IF2
>>
>> # Politica padrao de envio de rst em block
>> set block-policy return
>>
>> # Ignorando loopback
>> set skip on lo
>>
>> # Normalizacao
>> scrub in all
>>
>> # NAT de VPN
>> nat on $EXT_IF1 from $VPN_NETWORK to any -> ($EXT_IF1)
>>
>> # NAT de LAN
>> nat on $EXT_IF1 from $LAN_NETWORK to any -> ($EXT_IF1)
>> nat on $EXT_IF2 from $LAN_NETWORK to any -> ($EXT_IF2)
>>
>> # Bloqueando toda entrada por padrao
>> block in
>>
>> # Saida livre
>> pass out keep state
>>
>> # Comunicacao livre com VPN
>> pass quick on $VPN_IF keep state
>>
>> # Comunicacao livre com LAN
>> pass quick on $INT_IF keep state
>>
>> # Permitiondo acesso a portas publicas
>>                                        pass in on $EXT_IF1 proto tcp
>> from any to
>> ($EXT_IF1)
>>     port $PUB_PORTS flags S/SA keep state
>> pass in on $EXT_IF2 proto tcp from any to ($EXT_IF2)
>>     port $PUB_PORTS flags S/SA keep state
>>
>> # Permitindo Ping
>> pass in inet proto icmp all icmp-type echoreq keep state
>>
>> # Faz balanceamento de carga no trafego da rede interna
>> pass in on $INT_IF route-to { $EXT_IF1, $EXT_IF2 } round-robin   
>> proto tcp from
>> $LAN_NETWORK to any flags S/SA modulate state
>> pass in on $INT_IF route-to { $EXT_IF1, $EXT_IF2 } round-robin proto {
>> udp, icmp } from
>> $LAN_NETWORK to any keep state
>>
>> # Regras gerais "pass out" para as interfaces externas
>> pass out on $EXT_IF1 proto tcp from any to any flags S/SA modulate state
>> pass out on $EXT_IF1 proto { udp, icmp } from any to any keep state
>> pass out on $EXT_IF2 proto tcp from any to any flags S/SA modulate state
>> pass out on $EXT_IF2 proto { udp, icmp } from any to any keep state
>>
>> # Roteia pacotes de qualquer IP na $EXT_IF1 para $EXT_Gw1 e o mesmo para
>> # $EXT_IF2 e $EXT_GW2
>> pass out on $EXT_IF1 route-to ( $EXT_IF2 ) from $EXT_IF2 to any
>> pass out on $EXT_IF2 route-to ( $EXT_IF1 ) from $EXT_IF1 to any
>> -------------------------
>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>
>
> O que seu pflog diz quando é bloqueado o ping por exemplo?
>
> --
> Giancarlo Rubio
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>

Eu ainda não estou certa de que seja uma questão de firewall. Não se  
trata de bloqueio de pings, no meu entender, mas de invisibilidade  
total do IP por fora (100% packet loss)

Digamos que
ip_bge1 = aaa.aaa.aaa.aaa
ip_bge2 = bbb.bbb.bbb.bbb

gw_bge1 = xxx.xxx.xxx.xxx
gw_bge2 = yyy.yyy.yyy.yyy

Como minha prioridade é pela bge2 eu tenho o gateway yyy.yyy.yyy.yyy  
como default na
tabela de rotas (netstat -rn)

Se eu fizer

route change default yyy.yyy.yyy.yyy

então de fora eu pingo e acesso os serviços pelas portas externas via  
$ip_bge1 mas não
pingo $ip_bge2, e vice-versa. Não existiria uma forma de solucionar  
isso (tornar
acessível externamente os dois IPs de ambas interfaces) por meio de rotas?

No meu netstat -rn o que eu tenho de relevante é (sendo abc, cba e bca  
são rotas que
exigem o $ip_bge1 (IP fixo):

default            yyy.yyy.yyy.yyy       UGS         0  4451783   bge2
yyy.yyy.yyy/20      link#3             UC          0        0   bge2
yyy.yyy.yyy.yyy    00:01:5c:24:f8:42  UHLW        2        0   bge2   1200
xxx.xxx.xxx/23      link#2             UC          0        0   bge1
xxx.xxx.xxx.xxx       00:14:f1:e4:6c:5d  UHLW        3        6   bge1   1200
abc.abc.abc.abc      xxx.xxx.xxx.xxx       UGHS        0       10 bge1
bca.bca.bca.bca      xxx.xxx.xxx.xxx      UGHS        0      914   bge1
cab.cab.cab.cab      xxx.xxx.xxx.xxx       UGHS        0    18591   bge1


Mais detalhes sobre a lista de discussão freebsd