Web hosting derriere un VPN

Salut,

J’ai chez moi un serveur web (lamp) connecte au travers d’un VPN

Serveur VPN <—> BOX internet <—> Serveur web

Le problème c’est qu’une fois connecte au VPN je ne peux plus accéder a mon serveur.
Idéalement je souhaite pouvoir me connecter sur mon serveur web a partir de l’ip du VPN (je ne souhaite pas que tout le monde connaisse mon ip publique).

Quelqu’un sait comment renvoyer le trafic du serveur vpn vers mon serveur web (apache2)?




Pour info voila les iptables :

Cote serveur web (client vpn)

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  192.168.3.0/24       anywhere             ctstate NEW /* Block traffic from clients to eth0 */ reject-with icmp-port-unreachable
ACCEPT     all  --  192.168.3.0/24       anywhere             ctstate NEW /* Allow only traffic from clients to tun0 */

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
  
# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  anywhere             anywhere             /* Use VPN IP for eth0 */
MASQUERADE  all  --  anywhere             anywhere             /* Use VPN IP for tun0 */

Cote serveur VPN

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:openvpn

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  10.8.0.0/24          anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Y a du boulot de clarification à faire.

Connecté à quoi ?

Qui est connecté au VPN, toi ou le serveur web ?
Depuis où essaies-tu d’accéder au serveur ?

Depuis où ? Par quel chemin ?
Qu’appelles-tu l’IP du VPN ?
En tant qu’adresse IP source ou destination ?

Comment tout le monde pourrait-il connaître ton adresse IP si tu te connectes à ton propre serveur ?

Question vague. Qu’appelles-tu “le trafic du VPN” ? Venant d’où, entrant dans le VPN par où ?

Salut Pascal et désolé pour le manque de clarté, je vais essayer de remédier a ca.

Connecté à quoi ?

Mon serveur web est connecté a ma box internet, et se connecte a un serveur vpn que j’ai mis en place sur un VPS.
J’espère qu ca répond a ta question. A savoir que mon serveur web sert également de hotspot wifi pour redistribuer ma connexion vpn chez moi.

Qui est connecté au VPN, toi ou le serveur web ?
Depuis où essaies-tu d’accéder au serveur ?

Mon serveur web est connecté au VPN et je m’y connecte moi aussi (au travers du hotspot).
Je viens de réaliser aujourd’hui que je ne pouvais pas joindre le site quand je suis connecter au VPN étant donne que (si je me trompe pas) je contacte “ma propre ip”.
Pour le reste j’ai ajoute une règle iptables:
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 80 -j DNAT --to 10.8.0.6:80
Et le site est maintenant accessible de l’extérieur sur l’ip de mon VPN/VPS.

Depuis où ? Par quel chemin ?
Qu’appelles-tu l’IP du VPN ?
En tant qu’adresse IP source ou destination ?

Par adresse IP du VPN je parle de l’adresse du VPS (qui devient la mienne une fois connecté en wifi a mon serveur/hotspot).
Du coup je souhaite pouvoir m’y connecte en adresse de destination (quand je cherche a atteindre le site hébergé sur mon serveur maison).

Comment tout le monde pourrait-il connaître ton adresse IP si tu te connectes à ton propre serveur ?

Si j’ai bien comprit, une fois mon serveur en ligne, les gens ont besoin de son IP pour s’y connecter. C’est ce que j’entends par “connaître mon ip publique”, je ne souhaite pas que les utilisateurs de mon site puissent avoir accès a mon ip publique. D’ou l’intérêt de les faire se connecter au travers du VPS et de les rediriger ensuite vers mon serveur maison.

Question vague. Qu’appelles-tu “le trafic du VPN” ? Venant d’où, entrant dans le VPN par où ?

Du coup je parlais des requêtes envoyés sur le port 80 de mon VPS, pour accéder a mon serveur web chez moi, c’est ca que je voulais rediriger. J’ai réglé le problème avec la règle cite plus haut.

Encore navré pour le manque de clarté je suis pas encore très familier avec tous ces concepts, d’ou l’intérêt de ce projet pour moi. En tout cas merci beaucoup pour ta réponse.
Si jamais tu connais une solution pour pouvoir accéder a mon site web par l’ip du VPS/VPN même quand je suis connecte derrière l’adresse du VPS/VPN je suis preneur.
A défaut je me suis dis que j’attendrais d’avoir un nom de domaine et que je paramétrerais une redirection sur l’ip locale de mon serveur si l’adresse web ne répond pas (en espérant que c’est possible, mais j’imagine qu’on peux définir des ip multiples pour les noms de domaines ?).

Encore merci.

Moi je fais des schémas avec les machines et les liaisons réseau, et je flèche le chemin des paquets dans les deux sens (on oublie toujours le sens retour). Ça rend les choses beaucoup plus claires.

Pour ton histoire, il suffit de créer une règle REDIRECT sur le serveur pour rediriger les paquets HTTP entrants par l’interface LAN vers sa propre adresse puisque c’est lui qui reçoit les paquets. Pas besoin de les envoyer dans le VPN et les faire revenir. Exemple :

iptables -t nat -A PREROUTING -i $INTERFACE_LAN -d $ADRESSE_IP_VPS -p tcp --dport 80 -j REDIRECT

1 J'aime