VPN-Server mit Debian
Aus TecArt-CRM Developer-Wiki
Inhaltsverzeichnis |
Hinweise
Die in der Anleitung angegebenen Namen für den Server (im Beispiel gate) müssen durch den Namen des verwendeten Servers ersetzt werden.
Kommt es während der Verbindung zu Problemen, kann in den Optionsdateien in einer neuen Zeile debug eingefügt werden. Dadurch werden erweiterte Informationen zur Verbindung in die Log-Datei /var/log/syslog geschrieben.
WICHTIG: Um die Forwarding-Funktionen des Kernels zu nutzen, muss IPv4-Forwarding aktiviert sein. Dazu muss in der Datei /etc/sysctl.conf die Zeile
net.ipv4.ip_forward=1
eingefügt werden. Außerdem kann die Option auch ohne Reboot temporär mit folgendem Befehl übernommen werden:
root@server~: sysctl -w net.ipv4.ip_forward=1
Sollte es während der Einrichtung zu Problemen kommen kann die Forwarding-Diagnosehilfe unter http://poptop.sourceforge.net/dox/diagnose-forwarding.phtml nützlich sein.
Installation
Zur Installation des VPN-Server-Daemons muss lediglich
root@server~: aptitude install pptpd
eingegeben werden.
Konfiguration
Die erste Anpassung des Servers ist die IP-Konfiguration des VPN-Servers. Dazu wird zuerst die IP und das Netz des lokalen Netzwerks per ifconfig ermittelt und dann in die /etc/pptpd.conf eingetragen. Hierbei steht localip für die IP des Servers, remoteip für die des Clients. Die Anzahl der in remoteip angegebenen IPs (als IP-Range) ist gleichzeitig auch die maximale Anzahl Simultan verbundener Clients.
root@server~: cp /etc/pptpd.conf /etc/pptpd.conf.bak && cat <<CONFIGDATA > /etc/pptpd.conf option /etc/ppp/pptpd-options #debug logwtmp bcrelay eth1 localip 10.10.10.50 remoteip 10.10.10.251-254 CONFIGDATA
Außerdem müssen die Standard-Optionen an die lokale Netzwerkumgebung des VPN-Servers angepasst werden.
root@server~: cp /etc/ppp/pptpd-options /etc/ppp/pptpd-options.bak && cat <<CONFIGDATA > /etc/ppp/pptpd-options name gate chapms-strip-domain refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 10.10.10.2 ms-dns 10.10.10.12 proxyarp lock CONFIGDATA
root@server~: cp /etc/ppp/options /etc/ppp/options.bak && cat <<CONFIGDATA > /etc/ppp/options asyncmap 0 auth crtscts lock hide-password modem #debug domain tecart.local name gate login lcp-echo-interval 30 lcp-echo-failure 4 noipx # ---<End of File>--- CONFIGDATA
Anwenden der neuen Konfiguration
Sind alle Einstellungen gespeichert, muss der pptpd-Server neugestartet werden. Dies erfolgt mit dem folgenden Befehl:
root@server~: /etc/init.d/pptpd restart
Skripts: vpnuseradd und vpnuserdel
Um einfach neue VPN-Nutzer mit einem zufällig erstelltem Passwort erstellen zu lassen, kann wie folgt ein Skript angelegt werden:
root@server~: touch /usr/sbin/vpnuseradd && chmod +x /usr/sbin/vpnuseradd && cat <<VPNSCRIPTDATA > /usr/sbin/vpnuseradd
#!/bin/bash
SERVER="gate"
genpasswd() {
local l=\$1
[ "\$l" == "" ] && l=30
tr -dc A-Za-z0-9_ < /dev/urandom | head -c \${l} | xargs
}
PW=\$(genpasswd)
echo "\$1 \$SERVER \"\$PW\" *" >> /etc/ppp/chap-secrets
useradd --password "\$PW" "\$1"
echo -e "User \$1 added. \n\nNew password is: \$PW\n"
VPNSCRIPTDATA
Dieses Skript legt einen Nutzer für die MSCHAPv2-Authentifizierung an, welcher in der Datei /etc/ppp/chap-secrets mit Passwort hinterlegt wird. Außerdem wird der Nutzer im System mit seinem Passwort registriert, um die Anmeldung per VPN zu ermöglichen.
Das Skript kann dann wie folgt aufgerufen werden:
root@server~: vpnuseradd testuser User testuser added. New password is: bRe4wuWruzanewrethenEcec4epeFa
Um einen User wieder zu entfernen, kann ebenfalls ein Skript verwendet werden. Dieses wird wie folgt angelegt:
root@server~: touch /usr/sbin/vpnuserdel && chmod +x /usr/sbin/vpnuserdel && cat <<VPNSCRIPTDATA > /usr/sbin/vpnuserdel
#!/bin/bash
LINENO=\$(cat /etc/ppp/chap-secrets | grep -nE "^\$1" | head -c1)
LINENO=\$((\$LINENO + 1))
sed \${LINENO}d /etc/ppp/chap-secrets > ~/chap-secrets-tmp && \
mv ~/chap-secrets-tmp /etc/ppp/chap-secrets && \
userdel \$1 && \
rm ~/chap-secrets-tmp && \
echo "User \$1 removed from VPN- and system userlist"
VPNSCRIPTDATA
Dieses kann dann wie folgt verwendet werden:
root@server~: vpnuserdel testuser
