Como acessar localmente (ou seja, ssh) o meu servidor doméstico uma vez que esteja aberta uma conexão OpenVPN?

1

Eu configurei um Raspberry Pi (executando o Raspbian) em casa como um servidor de mídia que acesse de fora da minha rede via SSH e outras portas (ou seja, usando o cliente Plex do celular através da porta 32400). Recentemente, decidi me inscrever em um serviço de VPN comercial. Eu instalei e configurei o OpenVPN em Raspbian.

Depois de longas horas de pesquisa, leitura e testes, descobri como fazer remotamente o ssh em meu servidor enquanto ele redireciona todo o tráfego de eth0 para tun0. Simplesmente executando:

ip rule add from <internal IP of SSH server/VPN client> table 10
ip route add default via <internal IP of gateway/router> table 10

Eu adicionei alguns scripts em /etc/init.d/ para abrir a conexão VPN na inicialização e outro script que executa os dois comandos acima quando a conexão VPN é estabelecida (parece que essas regras são redefinidas na reinicialização). Então, com a configuração acima, posso ssh no meu servidor do trabalho sem nenhum problema.

O meu problema é que, com o ambiente descrito acima, não consigo fazer o ssh local no Raspberry Pi. E, portanto, meu cliente Plex no PlayStation 4 não pode encontrar o servidor mais ... No entanto, se eu remover os scripts rc.d que 1 / abrir a conexão VPN e 2 / executar as duas linhas de comando acima, posso conectar-se ao servidor de casa e de fora - mas não tem VPN em execução:)

Eu acho que estou fazendo algo errado com ip routes, mas não consigo descobrir o que. Ou talvez seja porque a ordem na qual os scripts são executados não está correta (embora a conexão vpnconnection dos Comandos de Roteamento do IP seja estabelecida)

Espero que tudo faça sentido, e que você possa me colocar na direção certa em relação a ser capaz de ssh para o pi de redes locais e remotas. Acredito que a resposta reside no uso de rota ou push, mas não tenho certeza.

Abaixo estão algumas saídas que podem ser úteis.

Agradecemos antecipadamente por sua ajuda!

Saída da rota -n quando o tun0 foi criado

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.109.1.5      128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
10.109.1.1      10.109.1.5      255.255.255.255 UGH   0      0        0 tun0
10.109.1.5      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.109.1.5      128.0.0.0       UG    0      0        0 tun0
168.1.6.49      192.168.0.1     255.255.255.255 UGH   0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Saída de iptables -L -v

Chain INPUT (policy DROP 44 packets, 5890 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22
  220  143K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID
 7062 1750K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:32400
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:5850
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:4285
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:58846
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8112
    1    64 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:72
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
   92 15173 ACCEPT     all  --  *      *       192.168.0.0/24       0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 8071 packets, 1231K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain fail2ban-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

arquivo de configuração do cliente OpenVPN

client
dev tun
proto udp
remote [xxx.yyy.com] [PORT]
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0
crl-verify crl.pem
auth-user-pass

Saída do sysctl -a | grep \ .rp_filter

net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.tun0.rp_filter = 0

Saída do programa de rotas ip

0:   from all lookup local
32765:   from 192.168.0.170 lookup 10
32766:   from all lookup main
32767:   from all lookup default

Saída da tabela de exibição de rota ip 10

default via 192.168.0.1 dev eth0
    
por Jafalex 29.05.2015 / 06:41

1 resposta

0

Ao conectar uma máquina a uma rede VPN, você está efetivamente "isolando-a" da LAN local, ela não verá nenhuma outra máquina, exceto as da rede VPN.

Então, você acha que a configuração da VPN está para trás - você quer executar o cliente da VPN em sua máquina remota e o servidor VPN sua LAN local - para deixar a LAN local não afetada e fazer com que a máquina remota se sinta conectada a ela.

    
por 29.05.2015 / 19:39