Package: ppp
Version: 2.4.4rel-9
Severity: normal

This is really an upstream bug, but as I have a workaround including 
new support code for split-tunnel VPNs which is currently not available 
under linux, I am filing it here and suggest that the "splitp" script
included here be included in /usr/doc/ppp/examples/scripts/ so that 
Debian users have it handy until support for these features appears.

This bug occurs when using Linux as a client to a VPN.  Specifically
I have seen it occur under racoon/ipsec-tools, but it probably affects
any ppp session that is tunnelled through an IP-based tunnel.

When connecting to a remote access server, the address handed to a 
client (in our case a Debian box) is sometimes meaningless for layer 3
routing purposes, and can be arbitrary.  VPNs sometimes will hand out 
the same address via LCP as they use for the encapsulating IP tunnel 
endpoint.

When LCP completes, PPP will install a host route sending all
traffic to the LCP-obtained RAS address into the ppp interface.  There 
seems to be no option available to prevent this from happening.  This 
means all PPP packets enter the PPP tunnel, are encapsulated, and if
the tunnel endpoint address is routed into the ppp interface as 
described above, instead of sending the encapsulated packet by IP, it is 
sent back into the PPP tunnel and encapsulated a second time, and so 
on.  This quickly maxes CPU for the ppp process or the process driving 
it (e.g. xl2tpd) though Linux seems to be pretty good at not allowing this 
condition to bring the system to its knees.

It can be argued that such VPNs are misconfigured, but even as such
they are not unusable and this sort of stuff happens in real life.

Attached is a script intended to remove this host route immediately
after a ppp session is established, which can be installed in 
/etc/ppp/ip-up.d/.  In addition, this script performs all the functions
needed to acquire split tunnel static network routes from a VPN/RAS 
which implements this option (Windows XP clients use this mechanism.)  
Failing that, the script will use classful routing to determine a 
network route to install, which is how OSX and Windows Vista/2000/ME 
behave when connecting to a split tunnel, and how XP behaves when there
is no static route information offered.

At minimum, upstream needs to add an option to completely prevent
pppd from meddling with routes.  Better would be a ppp plugin which
does what the attached script does, before any routes are installed.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.18charon (PREEMPT)
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash

Versions of packages ppp depends on:
ii  libc6                        2.6.1-5     GNU C Library: Shared libraries
ii  libpam-modules               0.99.7.1-4  Pluggable Authentication Modules f
ii  libpam-runtime               0.99.7.1-4  Runtime support for the PAM librar
ii  libpam0g                     0.99.7.1-4  Pluggable Authentication Modules l
ii  libpcap0.8                   0.9.7-1     System interface for user-level pa
ii  netbase                      4.30        Basic TCP/IP networking system
ii  procps                       1:3.2.7-4.1 /proc file system utilities

ppp recommends no packages.

-- no debconf information



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to