Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

IRB VPN

History Lesson!
Dieser Artikel spiegelt sehr wahrscheinlich nicht mehr den aktuellen Stand wider, könnte aber trotzdem von Interesse sein.

"Der Dienst IRB-VPN (@home, @prima.cs.tu-berlin.de) für Zugänge aus fremden Netzen wird zum 1.7.2012 eingestellt." --Wilhelm Köhler, IRB



Mit Zugang zum IRB VPN kann man

  • Den IRB-Newsserver von zu Hause nutzen
  • Den Funkzugang im FR nutzen
  • eine statische IP-Adresse bekommen.

Für den Zugang braucht man einen IRB Zugang (beantragen mit dem gelben Zettel in der Einführungswoche). Hat man diesen, beantragt man online

Nun könnt ihr euch mit einem VPN-Client bei prima.cs.tu-berlin.de anmelden. Nach aussen habt ihr dann eure persönliche IP-Adresse, die im Adressraum der TU liegt und könnt so Kontakt zu vielen Uni-Servern aufnehmen, die nur mit Uni-IPs sprechen. Täusche ich mich nicht, werden alle Ports von aussen durchgeleitet, was z.B. Internettelefonie, eingehende FTP-Verbindungen etc ermöglicht.

Anleitungen für die Konfiguration des VPN-Zugangs für verschiedene Betriebssysteme, sowie das Formular zum Freischalten des IRB VPNs findet ihr unten auf der Seite des IRB für Funk- und Festnetzverbindungen. Dort gibt es auch eine ausführlichere Form dieses Textes.

Zugang unter Mac OS X

Im Programm Internet-Verbindung im Menü Ablage>Neue VPN-Verbindung auswählen. Danach in Server-Adresse: prima.cs.tu-berlin.de und bei Benutzername und dem MS-Chap-Kennwort das was ihr beim IRB Beantragt habt (siehe oben).

Viel spaß, das wars!


Zugang unter WindowsXP

Ähnlich wie beim Mac unter Netzwerkverbindungen eine neue Verbindung estellen und im Dialog die VPN Verbindung auswählen. Server-Adresse: prima.cs.tu-berlin.de Benutzername und MS-Chap-Kennwort das was ihr beim IRB Beantragt habt (siehe oben).

Zugang mit Linux

Falls jemand speziell für Fedora Core 3-5 Hilfe sucht, bitte eine Mail an kenhru<aatt>cs.tu-berlin.de Sollte es viele davon geben, wird eine Anleitung dafür erstellt und alle die nachgefragt haben, werden benachrichtigt.

Auf IRB-vpn mit kvpnc ist die Einrichtung von kvpnc auf einem SuSE Linux 10 beschrieben.

Besondere Hürde waren die routen...

halb-automatisch für Distributionen

Erster Anlaufpunkt ist die sehr gut dokumentierte Seite des PPTP Clients für Linux, auf der sowohl allgemeine, wie auch distributionsspezifische Anleitungen zu finden sind. Ich fasse nochmal die wichtigsten Punkte für den Zugang zum IRB zusammen.

Neuerdings gibt es für KDE auch einen allgemeinen VPN client (besser Verbindungsmanager) - KVpnc. Damit kann man die Verbindung selbst einfacher einrichten.

Gentoo

Am einfachsten verwendet man kvpnc:

Beim kernel kompilieren mppe aktivieren:

Device drivers --->
      Network device support ---->
           <M> ppp support
            ...
           <M> PPP MPPE compression
make modules_install

Den pptp-client emergen

 emerge -av pptpclient 

kvpnc emergen

 emerge -av kvpnc

und starten als su:

 sudo kvpnc

wenn man es lieber etwas mehr manuell macht oder kvpnc nicht funktioniert, kann man mit gentoo auch den normalen net dev support mit pppd ueber pptp verwenden. Mit einem neueren 2.6 kernel geht das alles recht einfach. Bei einem aelteren kernel muss man noch den mppe-patch applizieren und den pptp-client evtl mit mppc-mppe USE flag emergen. Ein neuerer kernel ist also empfehlenswert, im folgenden ist username und passwort IRBUSERNAME/IRBUSERPWD, und fuer prima.cs.tu-berlin.de verwende ich die IP adresse direkt, falls man vorher keinen nameserver zur verfuegung hat:

beim kernel kompilieren mppe aktivieren:

Device drivers --->
      Network device support ---->
           <M> ppp support
            ...
           <M> PPP MPPE compression

Den pptp-client emergen

 emerge -av pptpclient 

das ppp device in /etc/conf.d/net eintragen:

 config_ppp0=( "ppp" )  
 pppd_ppp0=(
   "persist"
   "call irb"
   "holdoff 10"
   "mru 1460"
   "mtu 1460"
   "idle 600"
 )
 link_ppp0="pty \"pptp 130.149.145.10 --nolaunchpppd\""

/etc/ppp/peers/irb anlegen

 pty "pptp 130.149.145.10 --nolaunchpppd"
 name IRBUSERNAME
 require-mschap-v2
 remotename irb
 file /etc/ppp/options.irb
 ipparam irb

/etc/ppp/options.irb anlegen:

   #
   # Lock the port
   #
   lock
   #
   # We don't need the tunnel server to authenticate itself
   #
   noauth
   #
   # Turn off transmission protocols we know won't be used
   #
   nobsdcomp
   nodeflate
   #
   # We want MPPE
   #
   require-mppe-128 # <- use this one for kernel 2.6.15+
   #mppe required,stateless #<- use this one for patched kernel <2.6.15
   #mppe stateless #<- may solve unsupported protocol error
   #
   # We want a sane mtu/mru
   #
   mtu 1000
   mru 1000
   #
   # Time this thing out or it goes poof
   #
   lcp-echo-failure 10
   lcp-echo-interval 10

in /etc/ppp/chap-secrets zwei zeilen eintragen:

 IRBUSERNAME irb IRBPASSWD *
 irb IRBUSERNAME IRBPASSWD *

das ganze testen mit

 pon irb debug dump logfd 2 nodetach 

evtl /etc/init.d/net.ppp0 anlegen (aus z.b. net.eth0):

 cp  /etc/init.d/net.eth0  /etc/init.d/net.ppp0

/usr/local/sbin/irbroute anlegen

 #!/bin/sh
 route add -host 130.149.145.10 dev $(route -n | awk '/^0.0.0.0/ {print $8}') gw $(route -n | awk '/^0.0.0.0/ {print $2}')
 route del default && route add default dev ppp0

und ausfuehrbar machen

 chmod uga+x /usr/local/sbin/irbroute

VPN starten mit

 /etc/init.d/net.ppp0 start

default route umsetzen mit

   /usr/local/sbin/irbroute

wenn ping 130.149.17.8 tut aber nicht nslookup www.google.de, dann nameserver eintragen in /etc/resolv.conf:

nameserver 130.149.17.8

GNOME und network-manager

Außerdem gibt es für GNOME den network-manager-gnome(NMG). Zusammen mit dem network-manager-pptp ist es ein Kinderspiel, den Zugang einzurichten. Ich habe es unter Ubuntu 6.10 (Edgy) ausprobiert. Folgende Pakete müssen dafür installiert werden:

network-manager-gnome
network-manager-pptp

Damit wird dann auch pptp-client, etc. installiert.

Danach hat man ein Applet im Gnome-Panel. Dort klickt man auf den NMG und legt eine neue VPN-Verbindung an. Die Einstellungen in aller Kürze:

Connection

Name: Irgendwas
Type: Windows VPN (PPTP)
Gateway: prima.cs.tu-berlin.de

Authentification

Nichts anwählen

Compression & Encryption

Compression alles aus
Encryption alles an

PPP Options

Use Peer DNS: an
Exclusive device access: an
MTU: 1496 (nach Hinweis in kvpnc Anleitung hier)
MRU: 1416

Routing

Peer DNS trough tunnel: an

Mit den Einstellungen ging bei mir alles sofort und blitzschnell. Der Verbindungsaufbau dauert nicht mal eine Sekunde. Schneller als unter Windows... :)

Ubuntu 9.04 mit network-manager

Da das oben bei mir so nicht ganz funktioniert hat, noch ein paar Ergänzungen für den neuen Networkmanager ab Ubuntu 9.04: Bei Synaptic müssen folgende Pakete installiert sein:

network-manager
network-manager-pptp
pptp-linux


Dann beim Network-Manager unter VPN eine neue Verbindung hinzufügen und PPTP auswählen und auf Erzeugen klicken.

Verbindungsname: egal
Gateway:      prima.cs.tu-berlin.de
Benutzername: MEIN_IRB_ACC_NAME //womit ihr euch auch ins cs-netz einloggt
Passwort:     leer lassen
NT-Domäne:    leer lassen

Auf Erweitert... klicken:

Authentifizierung alle an
Point-to-Point Verschlüsselung verwenden(MPPE) an
Sicherheit: Alle verfügbaren
Erlaube stateful Verschüsselung an
Alle Komprimierung aus (BSD,Deflate,TCP-Header)
Sende PPP-Echo Pakete aus

Bei IPv4-Einstellung:

Automatisch(VPN)

Alles schließen und über linksklick und dann VPN-Verbindungen und eure eben erstellte VPN-Verbindung auswählen Es müsste noch eine Passwort anfrage kommen wo ihr euer MC-Chap Passwort eingebt. Wenn man das bei den Einstellungen eingibt funktioniert die Verbindung nicht. Wenn ein kleines Schloss erscheint seid ihr im IRB-VPN


manuell

Die anschließenden Anweisungen sind in Pseudecode geschrieben und nicht mehr aktuell. Für moderne Linuxdistributionen sollten diese Schritte nicht mehr nötig sein.

if (kernel.version > 2.6.0) {
 if (kernel.version < 2.6.15){
       download(http://www.polbox.com/h/hs001/linux-2.6.9-mppe-mppc-1.1.patch.gz ); /* ... oder passend*/
       exec(patch linux_src);              /* wer das nicht weiß, .... google :) */
   }
   download(http://www.polbox.com/h/hs001/ppp-2.4.2-mppe-mppc-1.1.patch.gz )    /* ... oder passend */
   exec(patch pppd);
   rebuild(kernel, with_PPP, with_MPPE);
   rebuild(pppd);
}
install_pptpclient;
install_pppd(with_mppe_mppc);

Erstelle /etc/ppp/peers/irbvpn mit folgendem Inhalt:

pty "pptp prima.cs.tu-berlin.de --nolaunchpppd"
name MEIN_MSCHAP_BENUTZERNAME
remotename irbvpn
mppe required,stateless
# möglich, dass die vorangeganene Zeile versionsabhängig (>=pppd 2.4.2)
# ersetzt werden muss durch:
# require-mppe
# nomppe-stateful
require-mschap-v2
file /etc/ppp/options.pptp
ipparam irbvpn

Änderung 04.11.05: mtu angepasst, sonst Probleme. Falls es trotzdem Probleme gibt (z.B. Pings zu einer Site kommen an, aber der Seitenaufbau im Web von dieser ist unvollständig; oder andere nicht rational erklärbare Dinge :P ), dann mit der MTU schrittweise runter gehen. 1300 funktioniert ganz gut; auch von zu Hause (DSL).

Als Regel gilt:

Die MTU der VPN-Verbindung muss kleiner als die kleinste MTU auf dem Weg von deinem Rechner zu prima.cs.tu-berlin.de sein, was bei einem ADSL Anschluss höchstens 1492 Bytes/Paket (Ethernet 1500 Bytes/Paket) sein kann. Der Rest ist ein Optimierungsproblem :/ .

Siehe auch Typische MTU-Größen.

Erstelle /etc/ppp/options.pptp:

lock
noauth
nobsdcomp
mtu 1492
nodeflate
lcp-echo-failure 10
lcp-echo-interval 10

Erstelle /etc/ppp/chap-secrets:

MSCHAP_BENUTZERNAME    irbvpn                  MEIN_PASSWORT   *
irbvpn                 MSCHAP_BENUTZERNAME     MEIN_PASSWORT   *

Erstelle /usr/local/bin/irbroute:

#!/bin/sh
route add -host prima.cs.tu-berlin.de dev $(route | awk '/default/ {print $8}')
route add default dev ppp0

Verbindung aufbauen über (als root)

 pppd call irbvpn
 irbroute

Zugang mit FreeBSD

Um mit FreeBSD einen Zugang zum VPN des IRB herstellen zu können, benötigt man das Programm pptpclient. Das muss zuerst außerhalb des IRB-Netzes installiert werden, da man einen Internet-Zugang benötigt.

 pkg_add -r pptpclient

Als nächstes muss die Konfigurationsdatei /etc/ppp/ppp.conf bearbeitet werden. Man fügt folgende Zeilen hinzu:

 irbvpn:
   nat enable yes
   set mppe * stateless
   set authname Benutzername
   set authkey Kennwort
   add! prima 192.168.16.1
   add! default HISADDR

Um die Verbindung zum VPN herzustellen, bezieht man zunächst eine IP mittels DHCP und leitet den Verbindungsaufbau ein:

 dhclient Netzwerkschnittstelle
 pptp prima irbvpn

Das war's auch schon. Bei Fragen und Problemen zum Verbindungsaufbau unter FreeBSD stehe ich gern per E-Mail mit Rat zur Seite. In der Domäne cs.tu-berlin.de lautet meine Nutzerkennung bkoenig. ;-)

Ergänzung: Zum Verbindungsaufbau via WLAN eignet sich das Programm openvpn. Eine Anleitung wird hier noch nachgetragen. Bis dahin rücke ich die auch auf Anfrage raus.

Zugang mit FreeBSD (WLAN)

Ich konnte das bei mir efolgreich wie folgt mit einem Tubit Account einrichten: Da OpenVPN benoetigt wird, sollte dieses vorher installiert werden.

 pkg_add -r openvpn

Bei FreeBSD >=8 muss ein virtuelles WLan Geraet (wlan0) aus dem bestehendem erzeugt werden. Ich habe folgendes Geraet bwi0

 ifconfig wlan0 create wlandev bwi0

Dann verbindet man sich mit dem IRB

 ifconfig wlan0 ssid IRB channel 11 up

Als naechstes holt man sich eine IP via:

 dhclient wlan0

Da es beim openvpn Client Probleme gibt ein tap0 device anzulegen, muss dieses per Hand erfolgen

 ifconfig tap0 create

Jetzt kann man den OpenVPN Client starten

 openvpn --config /root/scripts/tubit.conf --float --auth-user-pass tubit_pass

Die tubit.conf sieht wie folgt aus:

 remote openvpn1.tubit.tu-berlin.de 1194
 remote openvpn1.tubit.tu-berlin.de 1195
 remote openvpn1.tubit.tu-berlin.de 1196
 remote openvpn1.tubit.tu-berlin.de 1197
 remote openvpn1.tubit.tu-berlin.de 1198
 remote openvpn1.tubit.tu-berlin.de 1199
 remote openvpn1.tubit.tu-berlin.de 1200
 remote openvpn1.tubit.tu-berlin.de 1201
 tls-client
 ca tubITChain.crt
 client
 comp-lzo
 auth-user-pass
 verb 3
 remote-random

Die Passwortdatei tubit_pass ist wie folgt aufgebaut:

 <tubit_username> # ohne @mailbox.bla
 <password> 

Beides jeweils ohne die <>


Sollte es diesbezueglich Probleme geben stehe ich auch gerne fuer Fragen zur Verfuegung: patrick.plocke@mailbox.tu-berlin.de