[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Modifying Routing Tables on the fly



On Mon, 2 Mar 1998, Ian Perry wrote:

> I am trying to modify a route table dependant on which user logs in through
> a dial-up connection.
> viz:	route add 192.168.1.1 eth0
> 
> I have already got
> 
> route add -net 192.168.0.0 netmask 255.255.0.0 lo
> to stop other users getting to the local network (other than what they are
> supposed to)

this is what the /etc/ppp/ip-up script is for.  

e.g.

---cut here---
#!/bin/sh
#
# $Id: ip-up,v 1.1 1997/12/16 11:37:26 phil Exp $
#
# This script is run by the pppd after the link is established.
# It should be used to add routes, set IP address, run the mailq 
# etc.
#
# This script is called with the following arguments:
#    Arg  Name               Example
#    $1   Interface name     ppp0
#    $2   The tty            ttyS1
#    $3   The link speed     38400
#    $4   Local IP number    12.34.56.78
#    $5   Peer  IP number    12.34.56.99

case "$5" in
	192.168.0.1)	route add ..blah... ;;

	192.168.0.2)	ipfwadm -I ...... ;;

	192.168.0.3)    blah blah blah
					blah line 2
					blah line 3 ;;
esac
---cut here---

this example executes the "route add...." command if (and only if) the
remote IP address is 192.168.0.1. 

it also has demonstrates a special ipfwadm (firewall/packet filter)
rule for 192.168.0.2. e.g. say you have a service running on one
of your machines which your users have to pay extra to get access
to...actually, you'd probably do this based on user name rather than IP
address - you could use $2 (the tty) to lookup the user name. you'd use
/etc/ppp/ip-down to delete the ipfwadm rule when the interface died.

the third case shows that multiple script lines can be executed for any
case - ";;" is used to end the case.

 


> I have set up the user's login shell to run the file to add the route and 
> ip-down to remove the route.

this wont work.

> I get the error message:
> 
> SIOCADDRT : Operation not permitted.
> 
> I gather this is because the user is not root.

yep.


> Is there a way to safely change the routing table dependant on who logs in
> ?
> 
> Any help would be appreciated.

/etc/ppp/ip-up is executed whenever a ppp interface goes up, and
/etc/ppp/ip-down is executed whenever a ppp interface goes down.  These
files are often shell scripts, but they don't have to be....write them
in perl or C or whatever you like.

the debian ppp package comes with a sample script (similar to the
example above) which doesn't do anything.


craig

--
craig sanders


--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-user-request@lists.debian.org . 
Trouble?  e-mail to templin@bucknell.edu .


Reply to: