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