Le moyen le plus simple de configurer Ubuntu en tant que serveur VPN

68

Je sais qu'il existe de nombreux tutoriels sur le net pour configurer un client et un serveur VPN.

Si vous en trouvez un qui est simple / bref , je ne suis intéressé que par la partie serveur.

Pour les clients, je vais utiliser OS X, donc je préfère une solution qui utilise L2TP over IPsecou PPTPparce que je suppose que Cisco IPsec coûterait quelque chose.

Je ne veux pas passer trop d'heures à l'installer. Vous savez, peut-être que quelqu'un a déjà créé un script d'installation :)

Note: J'utilise une micro instance EC2 sur laquelle Ubuntu 12.04 est installé.

sorin
la source
3
Remarque: CISCO IPSec peut être atteint via StrongSwan et beaucoup de configuration, mais c'est délicat. PPTP n'est plus sécurisé. ET L2TP sur IPSec nécessite une configuration L2TP et IPSec. Choisissez à votre guise, bien que ma réponse explique PPTP
Thomas Ward

Réponses:

24

MISE À JOUR : À partir de Sierra, macOS ne prend plus en charge le vpn PPTP. Cette réponse n'est pas valable pour les clients macOS Sierra et au-delà.

PPTP via PoPToP est facile

  1. apt-get install pptpd
  2. modifiez /etc/pptpd.confet définissez l'option remoteip sur une plage de votre réseau qui n'est PAS desservie par votre serveur DHCP.
  3. modifier /etc/ppp/chap-secretset ajouter un nom d'utilisateur et mot de passe

par exemple

vpnuser pptpd vpnpassword *

C’est tout ce qu’il faut pour configurer PPTP. Maintenant, testez-le avec votre client OS X.

Jay _silly_evarlast_ Wren
la source
Je me demande également quelles valeurs localip et remoteip sont les plus sûres, étant donné que je vais me connecter à ce serveur depuis n’importe quel emplacement. Décidément, les valeurs par défaut avec 192.168.0.et 192.168.1.sont probablement l’une des pires possibles.
sorin
12 mai 13:28:06 zork pppd [9447]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so chargé. May 12 13:28:06 zork pppd [9447]: pppd 2.4.5 a commencé par root, uid 0 mai 12 13:28:06 zork pppd [9447]: Utilisation de l'interface ppp0 le 12 mai 13:28:06 zork pppd [9447 ]: Connect: ppp0 <-> / dev / pts / 3 12 mai 13:28:36 zork pppd [9447]: Hangup (SIGHUP) 12 mai 13:28:36 zork pppd [9447]: Hang up modem 12 mai 13 13 : 28: 36 zork pppd [9447]: La connexion est terminée. 12 mai 13:28:36 zork pppd [9447]: Exit.It ne fonctionne pas encore! Votre guide est incomplet (encore);)
sorin
Ouais ça ne marche pas.
Bonjour
1
n'a pas fonctionné pour moi
Tyler Gillies
@SorinSbarnea ces ips sont privés et ne vont jamais sur Internet, donc je ne sais pas ce que vous entendez par "le plus sûr". Vous aurez plus de chance s'ils ne correspondent pas à la même plage d'adresses IP que le café ou le lieu de travail depuis lequel vous vous connectez. Essayez 192.168.42. * :)
Jay _silly_evarlast_ Wren
86

AVERTISSEMENT: PPTP EST UN PROTOCOLE INSECURE! Non seulement le chiffrement a été violé, mais il envoie votre authentification en texte clair et est facilement intercepté. Il a été estimé que le temps nécessaire à la force brute du mot de passe équivaut à peu près au temps nécessaire à la force brute d'une seule touche DES. Pensez à utiliser OpenVPN ou une autre architecture VPN au lieu de PPTP!

J'ai utilisé ce guide pour configurer un serveur VPN PPTP sur mon serveur Ubuntu 12.04.


Pour résumer les points principaux du lien, cependant:

1: Installer pptpdet ufw. iptablespeut être utilisé à la place d'ufw, mais par souci de facilité, il ufwest préférable que vous ne le sachiez pas iptables.

sudo apt-get install pptpd ufw

2: Ouvrez les ports nécessaires. Le guide suggère 22 (SSH) et 1723 pour le VPP PPTP.

sudo ufw permettre 22
sudo ufw permettre 1723
sudo ufw enable

3: Modifier /etc/ppp/pptpd-options. Ouvrez le fichier avec votre éditeur préféré (le mien est nano, donc la commande est pour moi sudo nano /etc/ppp/pptpd-options), et commentez ces lignes en les plaçant #devant, si vous voulez que cela fonctionne universellement sur tous les systèmes d'exploitation:

refuser-pap
refuser-chap
refuser-mschap

Vous pouvez commenter cette ligne si vous souhaitez désactiver le cryptage: require-mppe-128

4: Pendant la modification /etc/ppp/pptpd-options, ajoutez des serveurs DNS pour le VPN. Cet exemple utilise des serveurs OpenDNS:

ms-dns 208.67.222.222
ms-dns 208.67.220.220

5: Modifier /etc/pptpd.conf. Ouvrez le fichier avec votre éditeur préféré (le mien est nano, donc la commande est pour moi sudo nano /etc/pptpd.conf). Vous devez ajouter les adresses IP VPN locales du système. Ajoutez donc:

localip 10.99.99.99
remoteip 10.99.99.100-199

Si votre système est un SMV, utilisez l'adresse IP publique pour "localip". Si ce n'est pas le cas et s'il se trouve sur un réseau local, utilisez l'adresse IP du réseau de votre ordinateur. Utilisez différentes adresses IP et plages si ces adresses IP existent sur votre sous-réseau! Si vous ne connaissez pas votre adresse IP publique de votre VPS, trouvez-la en exécutantdig +short myip.opendns.com @resolver1.opendns.com

6: Modifier /etc/ppp/chap-secrets. Ouvrez le fichier avec votre éditeur préféré (le mien est nano, donc la commande est pour moi sudo nano /etc/ppp/chap-secrets), et ajoutez les données d'authentification.
Le format pour /etc/ppp/chap-secretsest:

[Nom d'utilisateur] [Service] [Mot de passe] [Adresse IP autorisée]

Un exemple serait: sampleuser pptpd samplepassword *

7: Redémarrez pptpd. Exécutez cette commande dans le terminal:sudo /etc/init.d/pptpd restart

8: Modifier /etc/sysctl.conf. Ouvrez le fichier avec votre éditeur préféré (le mien est nano, donc la commande est pour moi sudo nano /etc/sysctl.conf). Décommentez la ligne suivante (en supprimant #le début) dans /etc/sysctl.conf: net.ipv4.ip_forward=1
Rechargez la configuration: sudo sysctl -p

9: Cette étape suppose que vous avez ufw.
Modifier /etc/default/ufwet changer l'option DEFAULT_FORWARD_POLICYde DROPàACCEPT

10: Cette étape suppose que vous avez ufw.
Modifiez /etc/ufw/before.ruleset ajoutez les éléments suivants au début /etc/ufw/before.rulesou juste avant les *filterrègles (recommandé):

# Règles de table NAT
* nat

: POSTROUTING ACCEPT [0: 0]
# Autoriser le trafic en avant vers eth0
-A POSTROUTING -s 10.99.99.0/24 -o eth0 -j MASQUERADE

# Traite les règles de la table NAT
COMMETTRE

Si vous avez la version 3.18 et ultérieure du noyau (vous pouvez le vérifier en le lançant uname -r), ajoutez également les lignes suivantes avant la # drop INVALID packets ...ligne:

-A ufw-before-input -p 47 -j ACCEPT

11: Redémarrez le pare-feu pour actualiser les jeux de règles et appliquer les règles ajoutées aux /etc/ufw/*.rulesfichiers: sudo ufw disable && sudo ufw enable

Avertissement: Si vous avez d'autres ports à ouvrir, par exemple pour HTTPS si votre serveur héberge un site Web, vous devez ajouter individuellement ces ports à la liste des applications autorisées avecsudo ufw allow <PORT>

Thomas Ward
la source
4
Bon, que diable dois-je faire: D Je travaille sur le serveur, je ne sais pas comment me connecter. Lol
Jamie Hutber
1
@Jamie Il y a une tonne d'autres documents et entrées ici sur Ask Ubuntu sur la connexion à un VPN, sans parler de la documentation dans Network Manager. Cette question ne concerne que la configuration du VPN et du côté serveur. PAS la connexion à cette partie.
Thomas Ward
: D réponse super rapide: Je pense avoir peut-être résolu le problème, je dois avoir réglé quelque chose de manière incorrecte. Cela dit, ufw est actif et autorise la plupart des ports. Je vais jouer avec iptables et voir si ça m'arrive quand même.
Jamie Hutber
@Jamie Je peux vous donner des commandes iptables à utiliser lorsque je rentre chez vous, préférez iptables à ufw.
Thomas Ward
1
iptables / netfilter est utilisé avec ufw, ufw est simplement plus sympa avec la gestion des règles et des commandes pour les utilisateurs finaux.
Thomas Ward
19

PPTP VPN sur Ubuntu 12.04 Exemple

Voici un tutoriel rapide pour configurer un serveur VPN PPTP de base sur Ubuntu 12.04.

Installer les paquets nécessaires

                          sudo apt-get install ppp pptpd

Configurer les plages IP PPTP sur le serveur

                          sudo nano /etc/pptpd.conf

Ajouter les lignes suivantes en fin

                          localip 10.89.64.1
                          remoteip 10.89.64.100-150

Ceci configure le serveur PPTP pour utiliser IP 10.89.64.1 lors de la distribution de la plage d'adresses IP 10.89.64.100 à 10.89.64.150 aux clients PPTP. Modifiez-les comme vous le souhaitez tant qu'elles sont des adresses IP privées et n'entrent pas en conflit avec les adresses IP déjà utilisées par votre serveur.

Configurer les serveurs DNS à utiliser lorsque les clients se connectent à ce serveur PPTP

                          sudo nano /etc/ppp/pptpd-options

Modifier OU Ajouter les lignes suivantes en fin

                          ms-dns 8.8.8.8
                          ms-dns 8.8.4.4

Créer un utilisateur PPTP

                          sudo nano /etc/ppp/chap-secrets

Ajoutez une ligne en bas pour que votre fichier ressemble à quelque chose comme:

                          # client    server  secret          IP addresses
                          test        pptpd   abcd1234        *

Configurer NAT pour les connexions PPTP

Sans cette étape, vous pourrez vous connecter mais votre connexion ne pourra charger aucune connexion Web à partir de ce serveur.

                          sudo nano /etc/rc.local

Ajoutez ce qui suit en bas à droite avant la ligne «exit 0»:

                          iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

En supposant que eth0, vous pouvez utiliser ifconfigpour vérifier le nom du réseau.

Activer le passage IPv4:

                          sudo nano /etc/sysctl.conf

Décommentez la ligne suivante:

                          net.ipv4.ip_forward=1

Rechargez ensuite la configuration:

                          sudo sysctl -p

Redémarrez votre VPS et tout devrait fonctionner à merveille depuis n'importe quel client PPTP.


Configuration côté client

Pour Mac, assurez-vous d'avoir ajouté une connexion VPN PPTP. En outre, vous devez uniquement configurer l'adresse du serveur, le nom du compte et le mot de passe dans les paramètres d'authentification. Pas de douleur ici.

Pour Linux, NetworkManager ajoute des connexions VPN. Assurez-vous d'avoir ajouté une connexion VPN PPTP. Et la configuration que j'utilise est ici:

Comment déboguer et réparer la connexion client PPTP / VPN

entrez la description de l'image ici

Et pour Windows

entrez la description de l'image ici

Qasim
la source
Est-ce que cette méthode fonctionne aussi avec Ubuntu 12.04 non-server edition? Quel numéro IP le client doit-il utiliser pour se connecter à ce réseau VPN?
Rasoul
Oui, c'est également pour l'édition non-serveur, vous devez utiliser l'adresse IP du serveur sur le client pour vous connecter à vpn @Rasoul
Qasim
Ne fonctionne pas, serveur Ubuntu 13.04. Client bloqué à la recherche de DNS.
knutole
@knutole vérifie que vos règles IPTables routent correctement. Assurez-vous que vous avez l'interface en0 et qu'elle n'est pas nommée autrement. Vous devriez voir une adresse IP publique listée.
Nick Woodhams
ok, alors, dans votre exemple, quelle adresse IP est l'adresse IP du serveur? 10.89.64.1? Ensuite, dans le gestionnaire de réseau Ubuntu, le client listerait 10.89.64.1 comme passerelle?
dranxo
9

Les autres réponses sur ce fil n'étaient que des réponses partielles dans mon cas. Voici ce qui a fonctionné pour moi sur Ubuntu 12.04.3

sudo apt-get install pptpd

Ajoutez ce qui suit à /etc/pptpd.conf (l'adresse IP n'a pas d'importance, il s'agit uniquement d'adresses IP pour votre interface ppp0.)

localip 10.0.0.1
remoteip 10.0.0.100-200

Ajouter des serveurs DNS à / etc / ppp / pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Activer le transfert IP

sudo vim /etc/sysctl.conf

Ne commentez pas cette ligne

net.ipv4.ip_forward=1

Sauvegarder les modifications

sudo sysctl -p /etc/sysctl.conf

Éditez / etc / ppp / chap-secrets, ajoutez un utilisateur VPN au format suivant:

# Secrets for authentication using CHAP
# client    server  secret          IP addresses
username pptpd supersecretpassword *

Redémarrer PPTP

service pptpd restart

Exécuter ifconfiget trouver votre interface par défaut, dans mon cas, il s'agissait de br0 (je l'ai modifiée pour permettre aux machines virtuelles de ma machine physique de partager l'interface. La vôtre sera probablement en0 )

entrez la description de l'image ici

Sauvegarder iptables

iptables-save > ~/iptables.save

Maintenant, apportez vos modifications à iptables, utilisez votre interface par défaut telle que révélée par ifconfig.

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface br0 -j ACCEPT

Pour le garder persistant au redémarrage de votre système;

sudo apt-get install iptables-persistent

Ajouter un VPN sur un ordinateur client (Mac)

Préférences Système> Réseau> [+]> VPN

entrez la description de l'image ici

entrez la description de l'image ici

Choisissez ensuite Paramètres d’authentification> Mot de passe, puis entrez votre mot de passe ici.

entrez la description de l'image ici

Nick Woodhams
la source
7

Voici un joli projet qui élimine la douleur d'OpenVPN:

https://github.com/Nyr/openvpn-install

Il suffit de le lancer pour installer vpn ouvert et le configurer. À la fin, un fichier client.ovpn apparaît pour vous permettre de configurer votre client. Semble travailler assez bien.

HappyCoder86
la source
Vache sacrée. Ça fonctionne. Je me demande pourquoi il n'est pas largement reconnu.
Marcus