[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