Outils pour utilisateurs

Outils du site


public:tutorial:vpnpppoverssh

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
public:tutorial:vpnpppoverssh [2011/07/07 21:33] ceric35public:tutorial:vpnpppoverssh [2023/02/13 13:39] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== VPN PPP over SSH ====== ====== VPN PPP over SSH ======
  
-But le client initie une connexion ssh et monte une interface 'ppp0' sur +But le client initie une connexion ssh et monte une interface 'ppp0' sur le serveur.
-le serveur.+
 Le serveur NAT tout ce qui arrive sur cette interface sur le réseau local 'eth0' Le serveur NAT tout ce qui arrive sur cette interface sur le réseau local 'eth0'
 et tout se arrive sur l'interface eth0 vers ppp0. et tout se arrive sur l'interface eth0 vers ppp0.
  
 Dans cette configuration : Dans cette configuration :
- le réseau lan est en 192.168.0.0/24 +  * le réseau lan est en 192.168.0.0/24 
- le réseau ppp est en 192.168.35.0/24 +  le réseau ppp est en 192.168.35.0/24 
- l'adresse 192.168.35.254 ne doit pas être utiliser par les clients (pas compris à quoi elle servait)+  l'adresse 192.168.35.254 ne doit pas être utiliser par les clients (pas compris à quoi elle servait) 
 + 
 +===== Installation ===== 
 + 
 +Les kernel doivent être compilé avec le support de PPP: 
 +  *   CONFIG_PPP: missing PPP support (REQUIRED) 
 +  *   CONFIG_PPP_ASYNC: missing asynchronous serial line discipline (optional, but highly recommended) 
 +  *   CONFIG_PPP_SYNC_TTY: missing synchronous serial line discipline (optional; used by 'sync' pppd option) 
 +  *   CONFIG_PPP_DEFLATE: missing Deflate compression (optional, but highly recommended) 
 +  *   CONFIG_PPP_BSDCOMP: missing BSD-Compress compression (optional, but highly recommended) 
 +  *   CONFIG_PPP_MPPE: missing MPPE encryption (optional, mostly used by PPTP links) 
 +  *   CONFIG_PPPOE: missing PPPoE support (optional, needed by rp-pppoe plugin) 
 + 
 +''net-dialup/ppp'' doit être installé sur les 2 machines.
  
 ===== Serveur ===== ===== Serveur =====
Ligne 26: Ligne 38:
 $IPTABLES -A FORWARD -i ppp0 -o eth0 -m state ! --state INVALID -j ACCEPT $IPTABLES -A FORWARD -i ppp0 -o eth0 -m state ! --state INVALID -j ACCEPT
 $IPTABLES -A FORWARD -i eth0 -o ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT</code> $IPTABLES -A FORWARD -i eth0 -o ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT</code>
 +
 +Il faut egalement autorisé l'utilsateur 'vpn' a pourvoir lancer
 +pppd avec les droit root et sans mot de passe via sudo.
 +
 +Editer les droit sudo via 'visudo' et ajoutez :
 +<code>vpn     ALL=(root)NOPASSWD:/usr/sbin/pppd</code>
  
 ===== Clients ===== ===== Clients =====
Ligne 32: Ligne 50:
  
 <code>#!/sbin/runscript <code>#!/sbin/runscript
-# +Copyright 1999-2011 Gentoo Foundation 
-# This script initiates a ppp-ssh vpn connection. +Distributed under the terms of the GNU General Public License v2 
-see the VPN PPP-SSH HOWTO on http://www.linuxdoc.org for more information. +$Header: $
-+
-# revision history: +
-# 1.6 11-Nov-1996 miquels@cistron.nl +
-# 1.7 20-Dec-1999 bart@jukie.net +
-# 2.0 16-May-2001 bronson@trestle.com +
-# 2.1 23-jan-2006 anthony@nonsenz.org +
- +
-+
-# The rest of this file should not need to be changed. +
-# +
- +
-PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11/: +
- +
-+
-# required commands... +
-+
- +
-PPPD=/usr/sbin/pppd +
-SSH=/usr/bin/ssh +
- +
-if ! test -f $PPPD  ; then echo "can't find $PPPD";  exit 3; fi +
-if ! test -f $SSH   ; then echo "can't find $SSH";   exit 4; fi+
  
-case "$1" in +#PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11/
-  start) +PPPD=${PPPD:-/usr/sbin/pppd} 
-    echo -n "Starting vpn to $SERVER_HOSTNAME" +SSH=${SSH:-/usr/bin/ssh}
-    ${PPPD} updetach noauth passive pty "sudo -u ${SERVER_USERNAME${SSH} ${LOCAL_SSH_OPTS} ${SERVER_HOSTNAME} -p ${SERVER_PORT} -l ${SERVER_USERNAME} -o Batchmode=yes sudo ${PPPD} nodetach notty noauth" ${CLIENT_IFIPADDR}:${SERVER_IFIPADDR} +
-    route add -net ${LAN_NETWORKnetmask ${LAN_NETMASK} gw ${SERVER_IFIPADDR} dev ppp0 +
-    echo " vpn connected." +
-    ;;+
  
-  stop) +depend() { 
-        echo -n "Stopping vpn to $SERVER_HOSTNAME:+ need net 
-        PID=`ps ax | grep "${SSH} ${LOCAL_SSH_OPTS} ${SERVER_HOSTNAME} -p ${SERVER_PORT} -l ${SERVER_USERNAME} -o" | grep -v ' passive ' | grep -v 'grep ' | awk '{print $1}'` + after sshd 
-        if [ "${PID}" != "" ]; then + use logger dns 
-          kill $PID +}
-          echo "disconnected." +
-        else +
-          echo "Failed to find PID for the connection" +
-        fi +
-    ;;+
  
-  config+start({ 
-    echo "SERVER_HOSTNAME=$SERVER_HOSTNAME" + echo -n "Starting vpn to $SERVER_HOSTNAME
-    echo "SERVER_USERNAME=$SERVER_USERNAME+ #echo ${PPPD} updetach noauth passive pty \"${SSH} ${LOCAL_SSH_OPTS} ${SERVER_HOSTNAME} -p ${SERVER_PORT} -l ${SERVER_USERNAME} -o Batchmode=yes sudo ${PPPD} nodetach notty noauth\${CLIENT_IFIPADDR}:${SERVER_IFIPADDR} 
-    echo "SERVER_IFIPADDR=$SERVER_IFIPADDR+ ${PPPD} updetach noauth passive pty "${SSH} ${LOCAL_SSH_OPTS} ${SERVER_HOSTNAME} -p ${SERVER_PORT} -l ${SERVER_USERNAME} -o Batchmode=yes sudo ${PPPD} nodetach notty noauth${CLIENT_IFIPADDR}:${SERVER_IFIPADDR} 
-    echo "CLIENT_IFIPADDR=$CLIENT_IFIPADDR+ route add -net ${LAN_NETWORK} netmask ${LAN_NETMASK} gw ${SERVER_IFIPADDR} dev ppp0 
-  ;;+ echo " vpn connected.
 +}
  
-  *+stop({ 
-    echo "Usage: vpn {start|stop|config}" + echo -n "Stopping vpn to $SERVER_HOSTNAME:
-    exit 1 + PID=`ps ax | grep "${SSH} ${LOCAL_SSH_OPTS} ${SERVER_HOSTNAME} -p ${SERVER_PORT} -l ${SERVER_USERNAME} -o" grep -v ' passive ' grep -v 'grep ' | awk '{print $1}'` 
-    ;; + if [ "${PID}" != "" ]; then 
-esac+ kill $PID 
 +         echo "disconnected." 
 + else 
 +         echo "Failed to find PID for the connection" 
 + fi 
 +}
  
-exit 0</code>+restart() { 
 + stop 
 + start 
 +}</code>
  
 et ''/etc/conf.d/vpnpppssh'' et ''/etc/conf.d/vpnpppssh''
Ligne 96: Ligne 92:
 <code># The host name or IP address of the SSH server that we are <code># The host name or IP address of the SSH server that we are
 # sending the connection request to: # sending the connection request to:
-SERVER_HOSTNAME=ceric35.homelinux.org+SERVER_HOSTNAME=ceric35.net
  
 # The TCP port used by sshd (usually 22) # The TCP port used by sshd (usually 22)
Ligne 104: Ligne 100:
 # For security reasons, this should NOT be root.  (Any user # For security reasons, this should NOT be root.  (Any user
 # that can use PPP can intitiate the connection on the client) # that can use PPP can intitiate the connection on the client)
-SERVER_USERNAME=vpnuser+SERVER_USERNAME=vpn
  
 # The VPN network interface on the server should use this address: # The VPN network interface on the server should use this address:
public/tutorial/vpnpppoverssh.1310074425.txt.gz · Dernière modification : 2023/02/13 13:39 (modification externe)