permite que o SSH ignore a VPN em mavericks do OSX, openvpn, pf

0

Meu computador doméstico se conecta à internet por meio de uma conexão OpenVPN. No entanto, eu gostaria de poder me conectar ao meu computador de fora do ssh. O ssh está configurado e funcionando, mas quando eu me conecto ao vpn, o ssh é acessível somente dentro da minha rede doméstica.

Eu acho que o que está errado é o meu roteador encaminha conexões ssh de entrada para o meu mac, mas então o meu mac responde pela vpn, então a conexão do lado de fora atinge o tempo limite. Eu tenho pf configurado para um par de outras coisas, mas não consigo descobrir como deixar as respostas ssh ignorar a vpn usando pf. Eu me deparei com outras soluções que usam tabelas ip, tabelas de roteamento e regras, mas não consigo descobrir como configurar isso em dissidentes.

Estou procurando por isso há algum tempo, mas não encontrei uma solução de trabalho. Qualquer ajuda seria muito apreciada!

Atualização: adicionarei (parte de) meu atual pf.conf para maior clareza, com regras adicionais graças ao MariusMatutiae

#
# Macros
#
vpn_if = "tun0"
lan_if = "en0"
lan_gw = "x.x.x.x"
vpn_gw = "y.y.y.y"

#
# Ruleset
#
pass out on $lan_if route-to ($vpn_if $vpn_gw) from $vpn_if
pass out on $vpn_if route-to ($lan_if $lan_gw) from $lan_if

Atualização # 2: aqui estão algumas das regras que eu tentei fazer com que isso funcionasse (sem sucesso)

# Nat to make replies seem to come from my external ip address
nat on $lan_if -> $ext_ip

# Redirect incoming requests on the lan interface back to the lan interface
rdr pass on $lan_if from ! $lan to any -> ($lan_if)

# Make pf reply to lan interface 
pass in quick on $lan_if reply-to ($lan_if $lan_gw)

Espero que alguém possa me ajudar!

    
por zycho42 07.06.2014 / 22:35

1 resposta

0

Seu diagnóstico está correto: o contato inicial é através de seu roteador doméstico, a resposta através do OpenVPN, seu computador o descarta por razões de segurança óbvias.

O que você está pedindo é chamado de Policy-based- ou Source-based- de roteamento. Basicamente, isso significa ter duas (ou mais) tabelas de roteamento distintas e alternar entre elas de acordo com algumas regras predefinidas. Ele existe no Linux e existe no FreeBSD / OpenBSD graças ao PF, veja este artigo da Wikipedia . No entanto, o PF existe no Mac ( veja aqui as instruções sobre como configurá-lo ), pensei em dizer como fazer isso no PF, embora, estritamente falando, eu tenha feito isso apenas no OpenBSD (e Linux, é claro).

Basicamente, a referência citada acima diz que você tem duas opções para onde colocar as regras para o seu FP. Seja qual você escolher, adicione essas regras ao arquivo:

 ext_if1 = "ether"
 ext_if2 = "tun"
 ext_gw1 = "192.168.1.100"
 ext_gw2 = "10.0.0.3"
 pass out on $ext_if1 from $ext_if2 route-to ($ext_if2 $ext_gw2)
 pass out on $ext_if2 from $ext_if1 route-to ($ext_if1 $ext_gw1) 

Aqui * ext_if1 "é sua conexão ethernet via seu roteador, e 192.168.1.100 seu endereço IP, enquanto ext_if2 é sua interface virtual (tun ou tap, o que for) , com endereço IP 10.0.0.3 . Você deve substituir os endereços apropriados de acordo com suas necessidades.

BTW, isso é retirado diretamente do manual do usuário do PF, aqui , exceto que simplifiquei para acomodar sua solicitação (mais simples).

    
por 08.06.2014 / 09:11