Homepage Wolfgang Wilhelm :: v 0.9.1 21.02.2006 :: (v.0.9 __ 14.04.03) | ||
LINKWEG ::: inhalt / ISDN Services / ISDN Einwahlserver |
Bei Anruf Netz!
Vorbereitungen
isdn4linux (I4L)
Capi 2.0
Dialin-Server als Router für das interne Netzwerk
ISDN Datenkompression
LZS/Stac
MPPC
Vorbereitungen | |
Linux als Server zur Einwahl
Ein Linux Server eignet sich bestens um eine Einwahlverbindung ins lokale Netzwerk anzubieten. Die Voraussetzung für die weitere Beschreibungen ist ein KernelDas PP-Protokoll und die ISDN Treiber müssen nicht in den Kernel einkompiliert sein, eine Modulversion reicht aus.Kommen wir wieder zum Eingemachten, den Kernelquellen.Um direkt auch alle gängigen Protokolle, die auf ISDN Kanälen zum Einsatz kommen, werden diese in der Konfiguration aktiviert: <M> ISDN support [*] Support synchronous PPP [ ] PPP filtering for ISDN [ ] Use VJ-compression with synchronous PPP [ ] Support generic MP (RFC 1717) <M> Support BSD compression <M> Support LZS compression (module only, LZS Patch [1]) [...] <M> PPP (point-to-point protocol) support [ ] PPP multilink support (EXPERIMENTAL) [ ] PPP filtering <M> PPP support for async serial ports <M> PPP support for sync tty ports <M> PPP Deflate compression <M> PPP BSD-Compress compression <M> Microsoft PPP compression/encryption (MPPC/MPPE Patch [2]) <M> PPP over Ethernet (EXPERIMENTAL)
Um eine Komprimierung [1],[2] zu aktivieren muss eine Kernelerweiterung gepatcht werden, doch dazu mehr im Kapitel ISDN Inhaltsdatenkomprimierung. alias char-major-43 capidrv alias char-major-44 capidrv alias char-major-45 capidrv /sbin/depmod -a /sbin/modprobe capidrv |
ISDN for Linux | |
Die notwendigen Programme zur Konfiguration einer herkömmlichen ISDN Verbindung im Paket isdn4k-utils zusammengefasst. Es empfielt sich mit den in der Distribution anthaltenen Programmen zu arbeiten, sie beherrschen abenfalls alle gängigen Protokolle, synchrones,asynchrones PPP sowie Raw-IP.
Welches Protokoll zum Einsatz kommt ist letztlich egal, Klient und Server müssen nur dieselbe
Das zentrale Werkzeug zur Konfigurationder Verbindungenist /sbin/isdnctrl addif ippp0 /sbin/isdnctrl eaz ippp0 1985 /sbin/isdnctrl huptimeout ippp0 120 /sbin/isdnctrl l2_prot ippp0 hdlc /sbin/isdnctrl l3_prot ippp0 trans /sbin/isdnctrl encap ippp0 syncppp ifconfig ippp0 192.168.5.10 Der Server für synchrones PPP ipppd arbeitet etwas anders als das 'Modem' pppd und bezieht seine Konfiguration aus /etc/ppp/ioptions. Dort werden auch IP-Adressen,Kompression, DNS etc. für die Verbindung eingestellt. /dev/ippp0 # debug # lzs 1:4 192.168.5.10:192.168.5.101 netmask 255.255.255.0 noipdefault -defaultroute mru 1524 mtu 1500 dns-adr 192.168.5.26 dns-adr 192.168.5.90 proxyarp +pap -chap -pc -vj -vjccomp
Ein PPP-Client wickelt seinen gesamten Verkehr über die PPP-Verbindung ab, da der PPP-Server aber gerade zwischen PPP- und Ethernetverbindung vermitteln soll muss die Option #client server secet IP username * my_pass 192.168.5.10
Den Servernamen in der zweiten Spalte benutzt nur ein Linux-Klient (die Datei wird für eingehende und ausgehende Verbindungen gebraucht). Weil die dritte Spalte das Kennwort im Klartext enthält sind für die secret-Dateien besondere Sicherheitsvorkehrungen zu treffen: Aissschließlich der Benutzer root hat Schreib-Leserechte!
Nun ist noch der Serverprozess zu starten und schon kann sich der Benutzer /sbin/ipppd /dev/ippp0 das sieht dann so aus ipppd[32008]: Local number: 1985, Remote number: , Type: incoming ipppd[32008]: PHASE_WAIT -> PHASE_ESTABLISHED, ifunit: 0, linkunit: 0, fd: 7 ipppd[32008]: Check_passwd called with user=XXXXX ipppd[32008]: MPPP negotiation, He: No We: No ipppd[32008]: CCP enabled! Trying CCP. ipppd[32008]: CCP: got ccp-unit 0 for link 0 (protocol: 0x80fd) ipppd[32008]: ccp_resetci! ipppd[32008]: Compressor Stac Electronics LZS loaded! [1] ipppd[32008]: ccp_resetci! ipppd[32008]: Compressor Stac Electronics LZS loaded! [1] ipppd[32008]: local IP address 192.168.5.10 ipppd[32008]: remote IP address 192.168.5.101 ipppd[32008]: ppp not replacing existing default route to eth0[192.168.5.88][1] siehe ISDN Datenkompression |
Capi 2.0 | |
PPP Daemon
Die CAPI Variante braucht keine extra abgewandelte PPP Daemon Version (deshalb auch Common API). Die gängige PPP-Software kann hier eingesetzt werden. Um die eigentliche Verbindung kümmert sich das Programm nodefaultroute 192.168.5.10:192.168.5.101 ms-dns 192.168.5.26 ms-dns 192.168.5.90 ms-wins 192.168.5.26 noipx proxyarp sync plugin capiplugin.so msn 1985 protocol hdlc Die Konfigurationsdateien sehen sich sehr ähnlich, hier sind zusätzlich noch die CAPI Erweiterungen eingetragen die bei I4L durch isdnctrl gesetzt werden müssen. Zum Test kann der PPP-Daemon von Hand gestartet werden: /sbin/pppd file /etc/ppp/peers/dialin Plugin capiplugin.so loaded. capiplugin: $Revision: 1.33 $ capiconn: 1.8 pppd[24458]: pppd 2.4.2 started by wwilhelm, uid 0 pppd[24458]: capiplugin: phase serialconn. pppd[24458]: capiplugin: waiting for incoming call ... kernel: capidrv-1: incoming call 1964,7,0,1985 pppd[24458]: capiplugin: incoming call: "1964" -> "1985" incoming (0x2) kernel: kcapi: appl 3 ncci 0x10101 up pppd[24458]: capiplugin: connected: "1964" -> "1985" incoming pppd[24458]: capiplugin: using /dev/capi/0: "1964" -> "1985" incoming pppd[24458]: Using interface ppp0 pppd[24458]: Connect: ppp0 <--> /dev/capi/0 pppd[24458]: capiplugin: phase establish (was serialconn). pppd[24458]: capiplugin: phase authenticate (was establish). pppd[24458]: capiplugin: phase network (was authenticate). pppd[24458]: kernel does not support PPP filtering pppd[24458]: MPPC compression enabled [1] pppd[24458]: Cannot determine ethernet address for proxy ARP pppd[24458]: local IP address 192.168.5.10 pppd[24458]: remote IP address 192.168.5.101 pppd[24458]: capiplugin: phase running (was network). pppd[24458]: capiplugin: phase network (was running). pppd[24458]: capiplugin: phase establish (was network).
[1] siehe ISDN Datenkompression |
Dialin-Server als Router für das interne LAN | |
ISDN Datenkompression | |
|
KompressionWieso nicht mehr aus der DFÜ-Verbindung herausholen? Provider wie Klientenbetriebssysteme unterstützen die ISDN-Inhaltsdatenkomprimierung. Damit werden die Datenpakete komprimiert bevor sie über die DFÜ-Verbindung versendet werden. Wie bereits bei Modemverbindungen bekannt lassen sich damit je nach Art der übertragenen Daten, Datenübertragungsraten erzielen die über den normalen 8 kbps Limit liegen. Der Prozessor übernimmt dann die De/Kompression,mit gestiegener CPU-Performanz ist dies leicht zu bewerkstelligen. Leider treffen im Laufe der Zeit unterschiedliche Implementierungen in Server/Klient/OS auf, da ist es mit dem Durchblick nicht weit her. Zur Zeit beherrscht Linux die Stac/LZS Komprimierung nach RFC 1974 und das MPPC nach RFC 2118. Was auch immer MS-Stac ist, ich stufe es hier mal als Marketingmittel ein, es ist keine offizielle Bezeichnung, wohl aber isst damit MPPC gemeint :-)
Windows NT und Nachfolger unterstützen ausschließlich MPPC (RFC 2118), Win9x und ME aber STAC/LZS (RFC 1974).
STAC RFC 1974 Win9x, ME
Die meisten deutschen ISPs machen momentan RFC 1974. WinNTx-User haben also ohne Zusatzprogramme (z.B. Fritz!Web) nichts davon, dass
Ihr OS das ?fortschrittlichere? Kompressionsverfahren unterstützt. Ein Zusatzprogramm mit Unterstützung mehrerer Kompressionsarten muß komplett den
PPP-Stack selbst implementieren, kann also nicht auf das DFÜ-Netzwerk aufsetzen. Das macht z.B. Fritz!Web, welches auf fast jedem Capi 2.0 fähigen
ISDN-Controller läuft.
Ein Versuch das LZS Modul im PPP Capi Server zu laden gab zwar einen Verbindungsaufbau, aber die IP Adressen konnten nicht zugewiesen werden. Stac/LZS
Der ipppd muss natürlich Kompression anbieten (lzs 1:4 Direktive). Bei allen halbwegs aktuellen Versionen sollte das der Fall sein, sonst die isdn4k-utils aktualisieren. Für die LZS/Stac Komprimierung wird ein Kernelmodul benötigt, also wieder ans Eingemachte und den Kernel patchen. Frank Elsner ist so freundlich und stelle direkt fertige diff-Dateien zur Verfügung. Die Option /sbin/insmod isdn_lzscomp comp=8 debug=1[/etc/modules.conf] options isdn_lzscomp comp=8 debug=1 /sbin/depmod -a /sbin/modprobe isdn_lzscomp
Der Parameter comp gibt die gewünschte Kompression an (0 bis 9), wobei 0 keine Komprimierung und 9 maximale Komprimierung bedeutet. Je höher die Komprimierung, desto mehr CPU-Last erzeugt das Modul, die Werte 7 oder 8 eignen sich für den Betrieb. PPP Stac/HiFn LZS (De)Compression registered IPPPIn der Konfiguration des IPPP noch die Direktive lzs 1:4einfügen und neu starten. Im SystemLog sollte die Erweiterung auftauchen: ipppd[32008]: Compressor Stac Electronics LZS loaded! Wichtig:Die Option 1:4 gibt nicht das Komprimierungsverhältnis an!
Jetzt kann ein Einwahlversuch stattfinden (Win9x DFÜ) oder eine Verbindung zum ISP aufbauen. ipppd[6536]: [0] LZS (hists 1 check 4) compression enabledVoila! MPPC Neben Stac LZS scheint MPPC ein weit verbreiteter Kompromierungsalghorithmus zu sein. Auf der Klientenseite wird MPPC von M$ NT Produkten unterstützt. Leider ist mir kein Weg bekannt dies in die Serverkomponente des ipppd zu implementieren, daher beschränke ich mich hier auf den pppd-Klienten. Die Kernelpatches, den PPPD-Patch und genauere Anweisungen sind auf hier zu finden.
Die Vorgehensweise ist bekannt, Kernel patchen, PPP Daemon patchen, alle Komponenten übersetzen und testen. Bevor man stolpert, hier noch mal Schritt für Schritt. Das Kernelmodul versteckt sich unter <M> PPP (point-to-point protocol) support [ ] PPP multilink support (EXPERIMENTAL) [ ] PPP filtering <M> PPP support for async serial ports <M> PPP support for sync tty ports <M> PPP Deflate compression <M> PPP BSD-Compress compression <M> Microsoft PPP compression/encryption (MPPC/MPPE) <M> PPP over Ethernet (EXPERIMENTAL)Zur Verschlüsselung noch unter cryptographic options [*] Cryptographic API [ ] HMAC support <M> NULL algorithms <M> MD4 digest algorithm <M> MD5 digest algorithm <M> SHA1 digest algorithm <M> SHA256 digest algorithm <M> SHA384 and SHA512 digest algorithms <M> DES and Triple DES EDE cipher algorithms <M> Blowfish cipher algorithm <M> Twofish cipher algorithm <M> Serpent cipher algorithm <M> AES cipher algorithms die Methoden auswählen. Module übersetzen und in der systermweiten /etc/modules.conf bekannt geben: echo "alias ppp-compress-18 ppp_mppe_mppc" >>/etc/modules.conf /sbin/depmod -a /sbin/modprobe ppp_mppe_mppc Der Ladevorgang wurde im SysLog mit MPPE/MPPC encryption/compression module registered registriert, diese Art der Komprimierung benutzt dann der (gepatchte) PPP per default. |
ISDN Faxserver |
© 2003 by Wolfgang Wilhelm • mail: wwilhelm at rz-online dot de |