Comment accéder localement (c'est-à-dire. Ssh) à mon serveur domestique une fois qu'il est ouvert une connexion OpenVPN?

1

J'ai configuré chez moi un Raspberry Pi (exécutant Raspbian) en tant que serveur multimédia auquel j'accède de l'extérieur de mon réseau via SSH et d'autres ports (c'est-à-dire en utilisant le client Plex à partir d'un téléphone portable via le port 32400). Récemment, j'ai décidé de m'abonner à un service VPN commercial. J'ai installé et configuré OpenVPN sur Raspbian.

Après de longues heures de recherche, de lecture et de test, j'ai découvert comment ssh à distance sur mon serveur pendant qu'il redirige tout le trafic de eth0 vers tun0. Simplement en exécutant:

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

J'ai ajouté quelques scripts dans /etc/init.d/ pour ouvrir la connexion VPN au démarrage et un autre script qui exécute les deux commandes ci-dessus une fois la connexion VPN établie (semble que ces règles ont été réinitialisées au redémarrage). Donc, avec la configuration ci-dessus, je peux ssh dans mon serveur du travail sans problème.

Mon problème est qu'avec l'environnement décrit ci-dessus, je ne peux pas localiser ssh dans Raspberry Pi. Et donc mon client Plex sur la PlayStation 4 ne peut plus trouver le serveur ... Cependant, si je supprime les scripts rc.d qui ouvrent la connexion VPN et exécutent les deux lignes de commande ci-dessus, je peux me connecter au serveur de la maison et de l'extérieur - mais ne pas utiliser de VPN :)

Je pense que je fais quelque chose de mal avec les routes ip, mais je n'arrive pas à comprendre quoi. Ou peut-être que c'est parce que l'ordre dans lequel les scripts sont exécutés n'est pas correct (bien que les commandes de route ip "Required-Start" vpnconnection soient établies)

J'espère que tout cela a du sens et que vous pouvez me mettre dans la bonne direction en ce qui concerne la possibilité de communiquer avec le réseau local via les réseaux locaux et distants. Je crois que la solution réside dans l’utilisation de la route ou de la transmission, mais je ne suis pas sûr.

Vous trouverez ci-dessous quelques sorties qui pourraient être utiles.

Merci d'avance pour votre aide!

Sortie de route -n à la création de tun0

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

Sortie 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

Fichier de configuration du client 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

Sortie de 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

Sortie de ip route show

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

Sortie du tableau de route ip 10

default via 192.168.0.1 dev eth0
Jafalex
la source
Rasp pi supporte-t-il les conteneurs? Je suppose que c'est possible. Vous voudrez installer un conteneur avec votre erreur torrenting euhh tous vos trucs privés et ensuite l'hôte du conteneur sera accessible à distance de la même manière qu'auparavant. Contrairement à la virtualisation complète, les conteneurs ont très peu de frais généraux.
Dean MacGregor
Merci Dean, je vais faire quelques recherches sur la manière de mettre en place des conteneurs. Cheers
Jafalex

Réponses:

0

En connectant une machine à un réseau VPN, vous "l'isolez" du réseau local, elle ne voit aucune autre machine que celles du réseau VPN.

Donc , je pense que vous avez la configuration VPN arrière - vous voulez exécuter le VPN client sur votre télécommande machine et le VPN serveur sur votre locale LAN - de quitter le réseau local non affecté et faire la machine à distance se sentent connectés.

Dan Cornilescu
la source
Bonjour Dan, merci beaucoup pour votre réponse. Le fait est que je veux que la connexion qui sort du Raspberry pi passe par tun0, afin que tout le trafic qui en sort soit "sécurisé". De plus, je veux pouvoir me connecter à distance au Pi à partir de n'importe quel appareil (par exemple, mon téléphone, mon ordinateur de bureau, une bibliothèque, etc.). Et enfin, je n’ai pas accès au serveur car je paie un abonnement mensuel pour pouvoir accéder au serveur du fournisseur de vpn. À la vôtre
Jafalex
OK - alors vous devez également ajouter au réseau VPN tous les autres périphériques (locaux ou distants, peu importe) à partir desquels vous souhaitez passer de SSH au Pi lorsque vous avez réussi à le "sécuriser" - seuls les périphériques de ce VPN peuvent accéder. it :)
Dan Cornilescu