137 lines
5.3 KiB
Plaintext
137 lines
5.3 KiB
Plaintext
Return-Path: owner-isdn4linux@hub-wue.franken.de
|
|
Return-Path: <owner-isdn4linux@hub-wue.franken.de>
|
|
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
|
id SAA05994; Thu, 15 May 1997 18:44:02 +0200
|
|
Received: from oops.franken.de by rachael.franken.de with smtp
|
|
(Smail3.1.29.1 #8) id m0wS0qb-000oQya; Thu, 15 May 97 15:45 MET DST
|
|
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
|
id m0wS0yX-001IV8a; Thu, 15 May 97 15:53 MET DST
|
|
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
|
(Linux Smail3.1.29.1 #1) id m0wS0yR-001IV7E; Thu, 15 May 97 15:53 MET DST
|
|
Received: from lion.euromedia.nl by hub-wue.franken.de with smtp
|
|
(Smail3.1.29.1 #1) id m0wS0pO-000BnEC; Thu, 15 May 97 15:44 MET DST
|
|
Received: from localhost (barry@localhost)
|
|
by lion.euromedia.nl (8.8.5/8.8.5) with SMTP id OAA01009
|
|
for <isdn4linux@hub-wue.franken.de>; Thu, 15 May 1997 14:44:01 +0100
|
|
Date: Thu, 15 May 1997 15:44:01 +0200 (MET DST)
|
|
From: Barry Lagerweij <barry@euromedia.nl>
|
|
Reply-To: Barry Lagerweij <barry@euromedia.nl>
|
|
To: isdn4linux@hub-wue.franken.de
|
|
Subject: static *AND* dynamic IP addresses
|
|
Message-ID: <Pine.LNX.3.94.970515134954.48A-100000@lion.euromedia.nl>
|
|
MIME-Version: 1.0
|
|
Sender: owner-isdn4linux@hub-wue.franken.de
|
|
Precedence: bulk
|
|
Content-Type: TEXT/PLAIN; charset=US-ASCII
|
|
Content-Length: 4060
|
|
|
|
Hi everyone,
|
|
|
|
I've been running ipppd with isdn4linux very succesful so far, using
|
|
dynamic IP addresses. Just create ippp0 and ippp1 with isdnctrl, and bind
|
|
each of them to a port, and use ifconfig to configure ippp0 and ippp1 to a
|
|
certain IP-address.
|
|
When a call comes in, ipppd will select either ippp0 or ippp1, and use
|
|
that IP address. But now I want all my regular callers to get a dynamic IP
|
|
address, but a few of the callers should be assigned a static IP address.
|
|
|
|
I've been trying everything, and finally I came up with the answer :
|
|
|
|
1) create the interfaces with isdnctrl:
|
|
---cut-here---
|
|
/sbin/ifconfig $DEVICE down
|
|
$ISDNBIN delif $DEVICE # Create new interface 'DEVICE'
|
|
$ISDNBIN addif $DEVICE # Create new interface 'DEVICE'
|
|
$ISDNBIN addphone $DEVICE in \* # Set incoming phone-number
|
|
$ISDNBIN eaz $DEVICE $LOCAL_NUMBER # Set local EAZ ..
|
|
$ISDNBIN l2_prot $DEVICE hdlc # for sync PPP: set Level 2 to HDLC
|
|
$ISDNBIN l3_prot $DEVICE trans # not really necessary, 'trans' is default
|
|
$ISDNBIN encap $DEVICE syncppp # encap the IP Pakets in PPP frames
|
|
$ISDNBIN huptimeout $DEVICE 600 # Hangup-Timeout is 600 sec.
|
|
$ISDNBIN chargehup $DEVICE off # Hangup before next Charge-Info
|
|
$ISDNBIN pppbind $DEVICE 0
|
|
---cut-here---
|
|
|
|
2) Then I start the ipppd :
|
|
---cut-here---
|
|
/sbin/ipppd \
|
|
-vjccomp -ac -pc \
|
|
mru 1524 \
|
|
-bsdcomp \
|
|
-detach \
|
|
debug \
|
|
auth \
|
|
+pap \
|
|
useifip \
|
|
proxyarp \
|
|
login \
|
|
ms-dns $LOCAL_IP \
|
|
domain euromedia.nl \
|
|
ipcp-accept-remote \
|
|
$DEVICE $DEVICE2 &
|
|
---cut-here---
|
|
|
|
Please note the 'useifip' and 'ipcp-accept-remote'. If the client offers a
|
|
IP-address that is acceptable for ipppd, but ipppd does not
|
|
'ipcp-accept-remote', that IP-address is NAK-ed by ipppd (I think this is
|
|
a bug!!!), so I must add 'ipcp-accept-remote'.
|
|
|
|
The nifty stuff is done in 'auth-up' and 'ip-up' :
|
|
auth-up:
|
|
---cut-here---
|
|
#!/bin/sh
|
|
if [ $2 = staticuser ]; then
|
|
/sbin/ifconfig $1 194.183.96.3 pointopoint 194.183.96.227 metric 1
|
|
else
|
|
if [ $1 = ippp0 ]; then
|
|
/sbin/ifconfig $1 194.183.96.3 pointopoint 194.183.96.225 metric 1
|
|
elif [$1 = ippp1 ]; then
|
|
/sbin/ifconfig $1 194.183.96.3 pointopoint 194.183.96.226 metric 1
|
|
fi
|
|
fi
|
|
if [ $2 = routeuser1 ]; then
|
|
/sbin/route del 194.183.120.0
|
|
/sbin/route add -net 194.183.120.0 netmask 255.255.255.252 $1
|
|
elif [ $2 = routeuser2 ]; then
|
|
/sbin/route del 194.183.120.8
|
|
/sbin/route add -net 194.183.120.8 netmask 255.255.255.248 $1
|
|
elif [ $2 = routeuser2 ]; then
|
|
/sbin/route del 194.183.120.16
|
|
/sbin/route add -net 194.183.120.16 netmask 255.255.255.252 $1
|
|
fi
|
|
---cut-here---
|
|
|
|
As you can see, I have one static-IP address user. All other callers are
|
|
assigned a IP-address based on the isdn-device (ippp0 or ippp1).
|
|
Furthermore, I have three callers that need to be assigned a pool of
|
|
IP-addresses. (a subnet of 4 or 8 addresses). This is used for ISDN
|
|
routers, like the Ascend or 3com. All of these routes are configured
|
|
dynamically when that user logs-in, and deleted as soon as the user hangs
|
|
up.
|
|
Since ipppd is started with 'useifip', ipppd will use the IP-address that
|
|
has just been assigned by ifconfig (in auth-up) !!!
|
|
|
|
Finally, the route to the interface itself is made, in ip-up :
|
|
---cut-here---
|
|
#!/bin/sh
|
|
/sbin/route add -host $5 $1
|
|
---cut-here---
|
|
|
|
In auth-down and ip-down the route is deleted. This allows me to have
|
|
static and dynamic IP-addresses, based on the username, and to have extra
|
|
routes added to the device, based on the username.
|
|
|
|
I don't know if this is the correct way to do it, but it works for me !
|
|
|
|
PS: only a few users are allowed ISDN access. So I've modified pathnames.h
|
|
to point to '/etc/ippp' instead of '/etc/ppp'. This way I can have a
|
|
different PPP setup for analog and ISDN callers.
|
|
|
|
Barry Lagerweij
|
|
|
|
---------------------------------------------------
|
|
To remove yourself from this mailing list send
|
|
email to majordomo@hub-wue.franken.de containing
|
|
"unsubscribe isdn4linux <your_email_address>" in
|
|
the message body [-vg]
|