Example of running isdn4linux as a multi-dialin server and dialout router simultaneously


After spending several days and nights to get ISDN running on my Linuxbox I would like to provide my results to others. The most recent version of this page can be found here.

TOC

  1. Plattform
  2. config for rebuilding a new kernel
  3. rc.config
  4. startup script for isdn4linux
  5. startups and results
  6. typical log of a dialin from Windows 95
  7. typical log of a dialout to the internet provider
  8. Windows 95 setup
  9. about


Plattform

description version avaiable from
distibution Suse 2.0.0 http://www.suse.de/
kernel linux-2.0.13 ftp://ftp.uni-stuttgart.de/pub/systems/linux/kernel/v2.0/
programms isdn4k-utils-2.0 ftp.franken.de:/pub/isdn4linux/v2.0



config for rebuilding a new kernel

/usr/src/linux/.config
=====================
...
#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_DUMMY=m
# CONFIG_EQUALIZER is not set
# CONFIG_DLCI is not set
# CONFIG_PLIP is not set
CONFIG_PPP=y
CONFIG_SLIP=y
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
CONFIG_SLIP_MODE_SLIP6=y
# CONFIG_NET_RADIO is not set
CONFIG_NET_ETHERNET=y
CONFIG_NET_VENDOR_3COM=y
CONFIG_EL1=y
CONFIG_EL2=y
CONFIG_ELPLUS=y
CONFIG_EL16=y
CONFIG_EL3=y
# CONFIG_VORTEX is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_EISA is not set
# CONFIG_NET_POCKET is not set
# CONFIG_TR is not set
# CONFIG_ARCNET is not set

#
# ISDN subsystem
#
CONFIG_ISDN=m
CONFIG_ISDN_PPP=y
CONFIG_ISDN_PPP_VJ=y
CONFIG_ISDN_MPP=y
CONFIG_ISDN_AUDIO=y
# CONFIG_ISDN_DRV_ICN is not set
# CONFIG_ISDN_DRV_PCBIT is not set
CONFIG_ISDN_DRV_TELES=m
...


rc.config

....

#
# i4l (Teles) Configuration - 17.05.96
# Author: Klaus Franken <kfr@suse.de>
#
#
# start i4l? ("yes" or "no")
#
I4L_START=yes
#
# which device to use (it is save to leave it untouched)
#
I4L_DEV=ippp0
#
# driver-id for device (it is save to leave it untouched)
#
I4L_TELES_ID=Tel0
#
# idletime before hangup (in seconds)
#
I4L_IDLETIME=
#
# remote station phone number 1 dialout
#
I4L_REMOTE_OUT1=
#
# remote station phone number 2 dialout
#
I4L_REMOTE_OUT2=
#
# remote station phone number 1 dialin
#
I4L_REMOTE_IN1=
#
# remote station phone number 2 dialin
#
I4L_REMOTE_IN2=
#
# my phone number
#
I4L_LOCALMSN=
#
# Debug Level, 4 (some..) to 31 (all messages)
#
I4L_DEBUG=31
#
# Membase of Teles card ('0xd2000' for Teles S0/16, '0' for Teles S0/16.3)
I4L_TELES_MEMBASE=0xd2000
#
# IRQ of Teles Card (12 or 15)
#
I4L_TELES_IRQ=15
#
# Portaddress of Teles card (0xd80)
#
I4L_TELES_PORT=0xd80
#
# D-channel protocol 1=1TR6, 2=EDSS1(Euro-ISDN)
#
I4L_PROTOCOL=2





startup script for isdn4linux

#!/bin/sh
#
# (c) 1996 by Lars Niedermeier
#
# /sbin/init.d/i4l  Version 1.0
#
# Startup script for isdn4linux on a S.u.S.E. distibution.
#

. /etc/rc.config
test "$I4L_START" = yes || exit 0


case "$1" in
    start)

        DIALOUT=0
        DIALIN=0
        DIALBOTH=0

        case "$2" in
            dialin)
                DIALIN=1
                ;;
            dialout)
                DIALOUT=1
                ;;
            dialboth)
                DIALIN=1
                DIALOUT=1
                DIALBOTH=1
                ;;
            *)
                echo "Usage: mode := $2 = (dialin | dialout | dialboth)"
                echo "using default = dialout"
                DIALOUT=1
                ;;
        esac

        #{this is the non critical part from the original script of S.u.S.E. distibution
        ## turn on isdn
        echo "Starting isdn4linux"
        # load modules
        /sbin/modprobe isdn.o
        /sbin/modprobe teles.o teles_id=${I4L_TELES_ID} \
            io=${I4L_TELES_MEMBASE},${I4L_TELES_IRQ},${I4L_TELES_PORT},${I4L_PROTOCOL}
        /sbin/lsmod | grep teles > /dev/null
        if test $? -eq 1; then
            echo ""
            echo "Initialization of Teles S0/16.x failed!"
            echo "Check that the values in '/etc/rc.config' are correct:"
            echo "I4L_TELES_MEMBASE:  ${I4L_TELES_MEMBASE}"
            echo "I4L_TELES_IRQ:      ${I4L_TELES_IRQ}"
            echo "I4L_TELES_PORT:     ${I4L_TELES_PORT}"
            echo "I4L_PROTOCOL:       ${I4L_PROTOCOL}"
            echo ""
            exit 1
            echo "never here"
        fi
        /sbin/telesctrl ${I4L_TELES_ID} 1 ${I4L_DEBUG}
        /sbin/isdnlog -m16 /dev/isdnctrl0 2>> /var/log/isdncalls &
        #}


        # now it'll get more interesting

        # *********************************************
        echo "configure device ippp0 for dialout"
        /sbin/isdnctrl addif ippp0
        /sbin/isdnctrl eaz ippp0 6770613
        /sbin/isdnctrl addphone ippp0 out 07452885201
        /sbin/isdnctrl addphone ippp0 in 7452885201
        /sbin/isdnctrl l2_prot ippp0 hdlc
        /sbin/isdnctrl l3_prot ippp0 trans
        /sbin/isdnctrl encap ippp0 syncppp
        /sbin/isdnctrl secure ippp0 on
        /sbin/isdnctrl huptimeout ippp0  5
        /sbin/isdnctrl chargehup ippp0 off
        /sbin/ifconfig ippp0 195.180.173.2 pointopoint 195.180.173.1
        /sbin/route add -net 195.180.173.0 ippp0
        /sbin/route add default ippp0

        # *********************************************
        echo "configure device ippp1 for dialin"
        /sbin/isdnctrl addif ippp1
        /sbin/isdnctrl eaz ippp1 6770675
        /sbin/isdnctrl addphone ippp1 in "*"
        /sbin/isdnctrl l2_prot ippp1 hdlc
        /sbin/isdnctrl l3_prot ippp1 trans
        /sbin/isdnctrl encap ippp1 syncppp
        /sbin/isdnctrl secure ippp1 off
        /sbin/isdnctrl huptimeout ippp1  300
        #/sbin/isdnctrl chargehup ippp1 off
        /sbin/ifconfig ippp1 192.168.1.1 pointopoint 192.168.1.2
        /sbin/route add -host 192.168.1.2 ippp1


if test $DIALOUT -eq 1; then
        echo "starting first ipppd for dialout"
        /sbin/ipppd                             \
            user goit remotename toplink        \
            useifip -ip -defaultroute -bsdcomp  \
            /dev/ippp0
fi
# DO NOT USE -ip this causes trouble on win95

if test $DIALIN -eq 1; then
        echo "starting second ipppd for dialin"
        /sbin/ipppd \
            useifip debug \
            auth +pap -bsdcomp -vj -defaultroute debug \
            /dev/ippp1
fi
# without the -ip options no login is possible
# the auth and +pap options prevent login prevent at provider


if test $DIALBOTH -eq 1; then
        echo "binding ipppds explicidly to devices"
        echo `/sbin/isdnctrl pppbind ippp0 0`
        echo `/sbin/isdnctrl pppbind ippp1 1`
fi

        ;;
    stop)
        ## turn off isdn
        echo "Shutting down isdn4linux..."

        echo "killing log demon"
        if [ -e /var/run/isdnlog.pid ] ; then
            /bin/kill `/bin/cat /var/run/isdnlog.pid`
        fi

        echo "killing ipppd"
        echo `killproc -9 /sbin/ipppd`

        echo "shutting down interfaces"
        /sbin/ifconfig ippp0 down
        /sbin/ifconfig ippp1 down

        echo "deleting iterfaces"
        /sbin/isdnctrl delif ippp0
        /sbin/isdnctrl delif ippp1

        #/sbin/rmmod teles.o        vobx etc need this
        #/sbin/rmmod isdn.o
        ;;
    *)
        echo "Usage: $1 (start|stop)"
        exit 1
    ;;
esac


startups and results

goit_s2:/sbin/init.d # ./i4l start dialboth
Starting isdn4linux
configure device ippp0 for dialout
ippp0 added
EAZ/MSN for ippp0 is 6770613
Layer-2-Protocol for ippp0 is hdlc
Layer-3-Protocol for ippp0 is trans
Encapsulation for ippp0 is syncppp
Security for ippp0 is on
Hangup-Timeout for ippp0 is 5 sec.
Charge-Hangup for ippp0 is off
configure device ippp1 for dialin
ippp1 added
EAZ/MSN for ippp1 is 6770675
Layer-2-Protocol for ippp1 is hdlc
Layer-3-Protocol for ippp1 is trans
Encapsulation for ippp1 is syncppp
Security for ippp1 is off
Hangup-Timeout for ippp1 is 300 sec.
starting first ipppd for dialout
starting second ipppd for dialin
binding ipppds explicidly to devices
ippp0 bound to 0
ippp1 bound to 1
goit_s2:/sbin/init.d #

goit_s2:/sbin/init.d # ./i4l stop
Shutting down isdn4linux...
killing log demon
killing ipppd
SIGKILL ipppd
shutting down interfaces
deleting iterfaces
ippp0 deleted
ippp1 deleted
goit_s2:/sbin/init.d #


goit_s2:/sbin/init.d # ./i4l start dialin
Starting isdn4linux
configure device ippp0 for dialout
ippp0 added
EAZ/MSN for ippp0 is 6770613
Layer-2-Protocol for ippp0 is hdlc
Layer-3-Protocol for ippp0 is trans
Encapsulation for ippp0 is syncppp
Security for ippp0 is on
Hangup-Timeout for ippp0 is 5 sec.
Charge-Hangup for ippp0 is off
configure device ippp1 for dialin
ippp1 added
EAZ/MSN for ippp1 is 6770675
Layer-2-Protocol for ippp1 is hdlc
Layer-3-Protocol for ippp1 is trans
Encapsulation for ippp1 is syncppp
Security for ippp1 is off
Hangup-Timeout for ippp1 is 300 sec.
starting second ipppd for dialin
goit_s2:/sbin/init.d #

goit_s2:/sbin/init.d # ./i4l start
Usage: mode :=  = (dialin | dialout | dialboth)
using default = dialout
Starting isdn4linux
configure device ippp0 for dialout
addif: No such device
EAZ/MSN for ippp0 is 6770613
Layer-2-Protocol for ippp0 is hdlc
Layer-3-Protocol for ippp0 is trans
Encapsulation for ippp0 is syncppp
Security for ippp0 is on
Hangup-Timeout for ippp0 is 5 sec.
Charge-Hangup for ippp0 is off
configure device ippp1 for dialin
addif: No such device
EAZ/MSN for ippp1 is 6770675
Layer-2-Protocol for ippp1 is hdlc
Layer-3-Protocol for ippp1 is trans
Encapsulation for ippp1 is syncppp
Security for ippp1 is off
Hangup-Timeout for ippp1 is 300 sec.
starting first ipppd for dialout
goit_s2:/sbin/init.d #


typical log of a dialin from Windows 95

Aug 29 00:28:58 goit_s2 kernel: ippp1: call from 7116770612 -> 6770675 accepted
Aug 29 00:28:58 goit_s2 pppd[91]: sel2: lcp_open, ifunit: 1, linkunit: 0, fd: 5
Aug 29 00:28:58 goit_s2 pppd[91]: sent [0][LCP ConfReq id=0x1 <mru 1500> <auth pap> <magic 0xa20b4c68> <pcomp> <accomp> <MPdiscr: 0x4 [ 25 b7 7e 65 96 0c 2a d7 ]>]
Aug 29 00:28:58 goit_s2 kernel: modehscx hscx 1 mode 2 ichan 0
Aug 29 00:28:59 goit_s2 kernel: isdn_net: ippp1 connected
Aug 29 00:28:59 goit_s2 pppd[91]: rcvd [0][LCP ConfReq id=0x1 <asyncmap 0xa0000> <magic 0x45e4f> <pcomp> <accomp> < 0d 03 06>]
Aug 29 00:28:59 goit_s2 pppd[91]: sent [0][LCP ConfRej id=0x1 < 0d 03 06>]
Aug 29 00:28:59 goit_s2 pppd[91]: rcvd [0][LCP ConfReq id=0x2 <asyncmap 0xa0000> <magic 0x45e4f> <pcomp> <accomp>]
Aug 29 00:28:59 goit_s2 pppd[91]: sent [0][LCP ConfAck id=0x2 <asyncmap 0xa0000> <magic 0x45e4f> <pcomp> <accomp>]
Aug 29 00:29:01 goit_s2 pppd[91]: sent [0][LCP ConfReq id=0x1 <mru 1500> <auth pap> <magic 0xa20b4c68> <pcomp> <accomp> <MPdiscr: 0x4 [ 25 b7 7e 65 96 0c 2a d7 ]>]
Aug 29 00:29:01 goit_s2 pppd[91]: rcvd [0][LCP ConfRej id=0x1 <MPdiscr: 0x4 [ 25 b7 7e 65 96 0c 2a d7 ]>]
Aug 29 00:29:01 goit_s2 pppd[91]: sent [0][LCP ConfReq id=0x2 <mru 1500> <auth pap> <magic 0xa20b4c68> <pcomp> <accomp>]
Aug 29 00:29:01 goit_s2 pppd[91]: rcvd [0][LCP ConfAck id=0x2 <mru 1500> <auth pap> <magic 0xa20b4c68> <pcomp> <accomp>]
Aug 29 00:29:01 goit_s2 pppd[91]: rcvd [0][PAP AuthReq id=0x1 user="*****" password="*****"]
Aug 29 00:29:01 goit_s2 pppd[91]: sent [0][PAP AuthAck id=0x1msg="Login ok"]
Aug 29 00:29:01 goit_s2 pppd[91]: bundle, he: 0 we: 0
Aug 29 00:29:01 goit_s2 pppd[91]: sent [0][IPCP ConfReq id=0x1 <addr 192.168.1.1>]
Aug 29 00:29:01 goit_s2 pppd[91]: rcvd [0][IPCP ConfReq id=0x1 <addr 192.168.1.2> < 81 06 00 00 00 00> < 82 06 00 00 00 00> < 83 06 00 00 00 00> < 84 06 00 00 00 00>]
Aug 29 00:29:01 goit_s2 pppd[91]: sent [0][IPCP ConfRej id=0x1 < 81 06 00 00 00 00> < 82 06 00 00 00 00> < 83 06 00 00 00 00> < 84 06 00 00 00 00>]
Aug 29 00:29:01 goit_s2 pppd[91]: rcvd [0][IPCP ConfAck id=0x1 <addr 192.168.1.1>]
Aug 29 00:29:02 goit_s2 pppd[91]: rcvd [0][IPCP ConfReq id=0x2 <addr 192.168.1.2>]
Aug 29 00:29:02 goit_s2 pppd[91]: sent [0][IPCP ConfAck id=0x2 <addr 192.168.1.2>]
Aug 29 00:29:02 goit_s2 pppd[91]: local  IP address 192.168.1.1
Aug 29 00:29:02 goit_s2 pppd[91]: remote IP address 192.168.1.2
Aug 29 00:29:10 goit_s2 pppd[91]: rcvd [0][LCP TermReq id=0x3]
Aug 29 00:29:10 goit_s2 pppd[91]: LCP terminated at peer's request
Aug 29 00:29:10 goit_s2 pppd[91]: sent [0][IPCP TermReq id=0x2]
Aug 29 00:29:10 goit_s2 pppd[91]: sent [0][LCP TermAck id=0x3]
Aug 29 00:29:11 goit_s2 kernel: modehscx hscx 1 mode 0 ichan 0
Aug 29 00:29:11 goit_s2 kernel: modehscx hscx 1 mode 0 ichan 0
Aug 29 00:29:11 goit_s2 kernel: ippp1: remote hangup
Aug 29 00:29:11 goit_s2 kernel: ippp1: Chargesum is 0
Aug 29 00:29:11 goit_s2 pppd[91]: Modem hangup
Aug 29 00:29:11 goit_s2 pppd[91]: Connection terminated.


typical log of a dialout to the internet provider

Sep  5 22:10:18 goit_s2 kernel: ippp0: dialing 0 07452885201...
Sep  5 22:10:18 goit_s2 kernel: ph_command 1
Sep  5 22:10:18 goit_s2 kernel: l1state 6
Sep  5 22:10:18 goit_s2 kernel: ph_command 0
Sep  5 22:10:18 goit_s2 kernel: l1state 7
Sep  5 22:10:18 goit_s2 kernel: ph_command 9
Sep  5 22:10:18 goit_s2 kernel: l1state 4
Sep  5 22:10:18 goit_s2 kernel: l1state 8
Sep  5 22:10:18 goit_s2 kernel: l1state 13
Sep  5 22:10:18 goit_s2 kernel: ph_command 9
Sep  5 22:10:20 goit_s2 kernel: modehscx hscx 1 mode 2 ichan 0
Sep  5 22:10:20 goit_s2 kernel: isdn_net: ippp0 connected
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: sent [0][LCP ConfReq id=0x1 <mru 1500> <magic 0xfa48f70c> <pcomp> <accomp>]
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: rcvd [0][LCP ConfReq id=0x78 <auth pap> <magic 0x2ffc0275>]
Sep  5 22:10:21 goit_s2 pppd[8460]: sent [0][LCP ConfAck id=0x78 <auth pap> <magic 0x2ffc0275>]
Sep  5 22:10:21 goit_s2 pppd[8460]: rcvd [0][LCP ConfRej id=0x1 <pcomp> <accomp>]
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: sent [0][LCP ConfReq id=0x2 <mru 1500> <magic 0xfa48f70c>]
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: rcvd [0][LCP ConfAck id=0x2 <mru 1500> <magic 0xfa48f70c>]
Sep  5 22:10:21 goit_s2 pppd[8460]: sent [0][PAP AuthReq id=0x1 user="*****" password="*****"]
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: rcvd [0][PAP AuthAck id=0x1msg=""]
Sep  5 22:10:21 goit_s2 pppd[8460]: Remote message:
Sep  5 22:10:21 goit_s2 pppd[8460]: bundle, he: 0 we: 0
Sep  5 22:10:21 goit_s2 pppd[8460]: sent [0][IPCP ConfReq id=0x1 <compress VJ 0f 01>]
Sep  5 22:10:21 goit_s2 pppd[8460]: rcvd [0][IPCP ConfReq id=0x63 <addr 195.180.173.1>]
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: sent [0][IPCP ConfRej id=0x63 <addr 195.180.173.1>]
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: rcvd [0][IPCP ConfRej id=0x1 <compress VJ 0f 01>]
Sep  5 22:10:21 goit_s2 pppd[8460]: sent [0][IPCP ConfReq id=0x2]
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: rcvd [0][IPCP ConfReq id=0x64]
Sep  5 22:10:21 goit_s2 pppd[8460]: sent [0][IPCP ConfAck id=0x64]
Sep  5 22:10:21 goit_s2 kernel: ippp0: IP frame delayed.
Sep  5 22:10:21 goit_s2 pppd[8460]: rcvd [0][IPCP ConfAck id=0x2]
Sep  5 22:10:21 goit_s2 pppd[8460]: local  IP address 195.180.173.2
Sep  5 22:10:21 goit_s2 pppd[8460]: remote IP address 195.180.173.1
Sep  5 22:10:26 goit_s2 kernel: isdn_net: local hangup ippp0
Sep  5 22:10:26 goit_s2 kernel: modehscx hscx 1 mode 0 ichan 0
Sep  5 22:10:26 goit_s2 kernel: modehscx hscx 1 mode 0 ichan 0
Sep  5 22:10:26 goit_s2 kernel: ippp0: Chargesum is 0
Sep  5 22:10:26 goit_s2 pppd[8460]: Modem hangup
Sep  5 22:10:26 goit_s2 pppd[8460]: Connection terminated.






Windows 95 setup

To take a look at the dialup configuration of Windows95 follow this link:

  http://www.goit.de/i4l/ppp.html


(c) 1996 by Lars Niedermeier

Lars Niedermeier may be contacted via email at: ln@goit.de

Special thangs to people supported me to get ISDN running: Christian Kratzer, Friedemann Baitinger, Jürgen Weiß, Michael Hipp, Michael Herold and all from isdn4linux@franken.de.

PS: Never forget to keep smiling, else there could exist such photos as obove of yourself ;-)