ISDN unter FreeBSD

 ISDN unter FreeBSD 4.x
 ======================
 (http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/network-isdn.html)


 Als erstes muss der Kernel mit der Unterstuetzung der ISDN-Karte neu uebersetzt
 werden. Siehe unter Kernel bauen!

 Dazu fuegen Sie die folgenden Zeilen an ihre Kernelkonfigurationsdatei an:

 ###############################################################################
 #
 #
 pseudo-device   sppp                    #Generic Synchronous PPP
 #
 #
 #
 # ISDN4BSD section
 # ----------------
 #
 # AVM A1 or AVM Fritz!Card
 #options        AVM_A1
 #device         isic0   at isa? port 0x240 irq 11 flags 4
 #
 # PCI bus Cards:
 # --------------
 #
 # ELSA MicroLink ISDN/PCI (same as ELSA QuickStep 1000pro PCI)
 options         ELSA_QS1PCI
 device          isic
 #
 # AVM Fritz!Card PCI
 options         AVM_A1_PCI
 #device         isic
 #
 # ISDN Protocol Stack
 # -------------------
 #
 # Q.921 / layer 2 - i4b passive cards D channel handling
 pseudo-device   "i4bq921"
 #
 # Q.931 / layer 3 - i4b passive cards D channel handling
 pseudo-device   "i4bq931"
 #
 # layer 4 - i4b common passive and active card handling
 pseudo-device   "i4b"
 #
 # ISDN devices
 # ------------
 #
 # userland driver to do ISDN tracing (for passive cards only)
 pseudo-device   "i4btrc"        4
 #
 # userland driver to control the whole thing
 pseudo-device   "i4bctl"
 #
 # userland driver for access to raw B channel
 pseudo-device   "i4brbch"       4
 #
 # userland driver for telephony
 pseudo-device   "i4btel"        2
 #
 # network driver for IP over raw HDLC ISDN
 pseudo-device   "i4bipr"        4
 # enable logging of the first n IP packets to isdnd (n=32 here)
 options IPR_LOG=3
 #
 # network driver for sync PPP over ISDN; requires an equivalent
 # number of sppp pseudo-devices to be configured
 pseudo-device   "i4bisppp"      4


 options         IPFIREWALL              #firewall
 options         IPFIREWALL_VERBOSE      #print information about
 options         IPFIREWALL_DEFAULT_TO_ACCEPT    #allow everything by default
 options         IPDIVERT                #divert sockets

 ###############################################################################
 #

 Damit auch die richtige ISDN-Karte unterstuetzt wird sollten Sie die
 eingefuegten Zeilen durchgehen und die Zeilen fuer Ihre Karte aktivieren.
 In diesem Beispiel wird die AVM-Fritz-PCI-Card und die
 ELSA-QuickStep1000pro-PCI unterstuetzt. Wollen Sie andere Karten benutzen,
 suchen Sie sich die noetigen Zeilen aus der Datei LINT.
 Je Karte sind max. drei Zeilen noetig.
 zum Beispiel:
         # ELSA MicroLink ISDN/PCI (same as ELSA QuickStep 1000pro PCI)
         options         ELSA_QS1PCI
         device          isic


 Danach dann folgende Schritte abarbeiten:

 Sinnvollerweise werden jetzt die BOOT-Meldungen nachgesehen:

 z.B.: dmesg | grep i4b

 Es sollten in den Bootmeldungen folgende 7 Zeilen auftauchen:

 i4b: ISDN call control device attached
 i4bisppp: 4 ISDN SyncPPP device(s) attached
 i4bctl: ISDN system control port attached
 i4bipr: 4 IP over raw HDLC ISDN device(s) attached (VJ header compression)
 i4btel: 4 ISDN telephony interface device(s) attached
 i4brbch: 4 raw B channel access device(s) attached
 i4btrc: 4 ISDN trace device(s) attached

 Wenn sie nach Eingabe der folgenden Befehlszeile den Hinweis bekommen,
 das kein Zugriff auf den IRQ der ISDN-Karte moeglich war sollten Sie
 (z.B. bei der AVM Fritz Classic) den entsprechenden IRQ
 (Sie haben den IRQ beim Kernel bauen festgelegt)
 im BIOS des PC's fuer die Nutzung per ISA reservieren!
 dmesg | grep isic

 Jetzt sollten, mit den folgenden Befehlen,
 die noetigen Geraetedateien erzeugt werden:
 cd /dev
 ./MAKEDEV all

 Wenn bis jetzt alles nach Plan gelaufen ist,
 dann muss die ISDN-Karte nur noch konfiguriert werden!



 Eintragungen in der "/etc/rc.conf":

 natd_program="/sbin/natd"       # path to natd, if you want a different one.
 natd_enable="YES"               # Enable natd (if firewall_enable == YES).
 natd_interface="isp0"           # Public interface or IPaddress to use.
 natd_flags="-dynamic"           # Additional flags for natd.
                                 # ist bei dynamischer IP-Zuweisung wichtig

 ifconfig_isp0="inet 0.0.0.0   0.0.0.1 netmask 0xffffffff link1 debug"

 sppp_interfaces="isp0"          # example: sppp over ISDN
 spppconfig_isp0="myauthproto=pap myauthname=loginname myauthsecret=passwort hisauthproto=none callin"

 defaultrouter="0.0.0.1"

 gateway_enable="YES"

 ### ISDN interface options: ###
 isdn_enable="YES"               # Enable the ISDN subsystem (or NO).
 isdn_fsdev="/dev/ttyv4"         # Output device for fullscreen mode
                                 # (or NO for daemon mode).
 isdn_flags="-dn -d0x1ff"        # Flags for isdnd
 isdn_trace="NO"                 # Enable the ISDN trace subsystem (or NO).

 hostname="wache.privatesnetzwerk.de"   # Set this!
         # Der Rechner sollte einen Namen MIT einer Domain
         # (die es im Internet NICHT gibt)
         # benannt werden, damit der folgende Befehl funktioniert!



 Jetzt wird der Rechner zum DNS im privaten Netzwerk.
 Damit das folgende Script richtig arbeiten kann,
 muss der Rechner einen Namen wie oben beschrieben haben!
 Dazu folgende Befehle ausfueren:
 cd /etc/namedb/
 ./make-localhost


 Durch diesen Befehl wird es Moeglich sein, das alle Rechner im
 privaten (localen) Netz nur drei Sachen konfiguriert bekommen
 mussen:
 1. die eigene IP (z.B.: 192.168.0.11)
 2. den GateWay   (z.B.: 192.168.0.10)
 3. den DNS       (z.B.: 192.168.0.10)


 In der Datei "/etc/hosts" sollten
 alle Rechner cwaus dem privaten Netz eingetragen werden:
 192.168.0.10   wache.privatesnetzwerk.de        wache
 192.168.0.11   meinpc.privatesnetzwerk.de       meinpc
 192.168.0.12   susispc.privatesnetzwerk.de      susispc
 192.168.0.13   georgspc.privatesnetzwerk.de     georgspc


 In der Datei "etc/ttys" folgende Aenderung vornehmen:
 ttyv4 "/usr/libexec/getty Pc" cons25 on secure
 in
 ttyv4 "/usr/libexec/getty Pc" cons25 off secure


 Die Datei "etc/isdn/isdnd.rc" konfigurieren:
 siehe Beispiel:
 "/etc/isdn/isdnd.rc.sample" Sektion (# entry section: PPP example)

 Am besten die Datei "/etc/isdn/isdnd.rc.sample" nach "/etc/isdn/isdnd.rc"
 umkopieren und anschliessend editieren.

 cp  /etc/isdn/isdnd.rc.sample  /etc/isdn/isdnd.rc

 vi  /etc/isdn/isdnd.rc


 Loeschen Sie die uebrigen Zeilen aus der Datei "/etc/isdn/isdnd.rc" und
 aendern Sie mindestens die fett gedruckten Eintraege!


 #==============================================================================
 # SYSTEM section: isdnd global configuration parameters
 #==============================================================================
 system

 # accounting
 # ----------

 acctall         = on                     # generate info for everything
 acctfile        = /var/log/isdnd.acct    # name & location of accounting file
 useacctfile     = yes                    # generate accouting info to file

 # monitor
 # -------

 monitor-allowed = no                     # global switch: monitor on/off

 # ratesfile
 # ---------

 ratesfile       = /etc/isdn/isdnd.rates.D # name & location of rates file

 # realtime priority section
 # -------------------------

 rtprio          = 5                      # modify isdnd's process priority

 #======================================================================
 # entry section: PPP example
 #======================================================================
 entry
 name                    = I4BPPP
 usrdevicename           = isp
 usrdeviceunit           = 0
 isdncontroller          = 0
 isdnchannel             = -1
 local-phone-incoming    = 1234           # Ihre eigene Telefonnummer (MSN)
 remote-phone-incoming   = 9999           # oder "*", fuer jeder
 local-phone-dialout     = 1234           # Ihre eigene Telefonnummer (MSN)
 remote-phone-dialout    = 0191011        # z.B. (T-online)  : "0191011"
                                          # z.B. (GMX-online): "019102345"

 remdial-handling        = first
 dialin-reaction         = reject
 dialout-type            = normal
 b1protocol              = hdlc
 idletime-incoming       = 200
 idletime-outgoing       = 30             # wenn die Verbindung ungenutzt
                                          # ist, wird die Verbindung nach
                                          # dieser Zeit (in Sekunden)
                                          # getrennt
 ratetype                = 0
 unitlength              = 60             # Telefoneinheitenlaenge in
                                          # Sekunden, wird hier definiert
 unitlengthsrc           = conf           # Telefoneinheitenlaenge wird
                                          # hier konfiguriert
 dialretries             = 3
 dialrandincr            = on
 recoverytime            = 25
 usedown                 = off
 downtries               = 7
 downtime                = 30
 #connectprog            = "ip-up"       # startet /etc/isdn/ip-up beim verbinden
 #disconnectprog         = "ip-down"     # startet /etc/isdn/ip-down beim trennen


 # EOF #########################################################################


 Jetzt muss nur noch der (oder die) Nameserver (DNS-Server)
 in die Datei "/etc/resolv.conf" eingetragen werden!
 (Die richtigen vom Internet-Provider! Im Notfall weis die Hottline bescheid.)
 Es macht keinen Sinn mehr als drei DNS in dieser Datei stehen zu haben,
 da sowieso nur die 1. drei abgefragt werden!
 In diesem Beispiel (GMX):
 hat der 1.DNS die IP 194.25.2.129
 und der 2.DNS die IP 195.20.224.234

 Erster DNS-Server:

 echo "nameserver 194.25.2.129" >> /etc/resolv.conf

 Zweiter DNS-Server:

 echo "nameserver 195.20.224.234" >> /etc/resolv.conf


 Wir haben zwar kein Windows,
 aber nur um zu sehen ob alles nach Plan funktioniert,
 starten Sie bitte das System neü
 reboot

 Jetzt sollten Sie auf der Konsole "F5" den Status der ISDN-Verbindungen und alle
 Aktivitaeten auf dem S0-Bus sehen koennen.

 Wenn Ihnen das nicht genug ist tragen Sie in die Datei "/etc/rc.conf" noch
 folgendes ein:
 isdn_trace="YES"                # Enable the ISDN trace subsystem (or NO).
 isdn_traceflags="-f /var/tmp/isdntrace0"        # Flags for isdntrace

 Dann koennen Sie mit dem Befehl
 # tail -f /var/tmp/isdntrace0
 alles weitere sehen...   ;-)


 Weitere Quellen im Internet sind:

 http://www.shuttle.de/infos/anleitungen/bsd/einwahl.html
 http://www.freebsd-support.de/i4b/
 http://www.ruhr.de/home/nathan/FreeBSD/tdsl-freebsd.html
 http://www.de.freebsd.org/de/i4b-t-error.html
 http://www.cul.de/data/freex12001inh.pdf
 http://docs.freebsd.org/mail/archive/1999/freebsd-isdn/19990711.freebsd-isdn.html
 http://lists.openresources.com/FreeBSD/freebsd-isdn/msg00824.html
 http://support.prima.de/bsd/bsd-isdn.html
 http://www.ruhr.de/home/nathan/FreeBSD/tdsl-freebsd.html


 VIEL SPASS