Here are just a few of the snags that I've run into while using this system. I put them here so that you can hopefully avoid them. If you run into any new ones, please so that I can keep track, and help others avoid them.
This error apparently comes from pppd. It's associated with mis-matched versions off pppd. If you get it, try upgrading both ends of the connection to the latest version of pppd. I've found that pppd version 2.2 has this problem, and use version 2.3.7 or 2.3.8 instead.
This error is generated by route
. I've seen it happen when the sleep time between ssh
and pppd
is not long enough. If you get this error, run ifconfig
, you may see that there is no pppX interface. This means that ssh
was not done authenticating before pppd
was launched, and therefore pppd
did not make the connection. just increase the delay, and your problems will be solved.
I wonder however if there might be some pppd option that will fix this problem.
In the new 2.2 kernel, you must specifically enable IP forwarding in the kernel at boot up. This with the following command:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Without this, the kernel will not forward any packets, and hence the server will not work, nor will any of the gatewaying clients.
it should go without saying, but be careful when you are routing real numbers that you don't route traffic destined for the VPN server's external address through the tunnel. It won't make it. (yes, this is from personal experience.)
Believe it or not, this system has been run on a 486SX33 with 8 megabytes of RAM. It didn't run very well though, it had trouble handling heavy traffic.
It doesn't take much more to make it work though. This system does work very well on a Pentium 75 with 16 megs of RAM, using an LRP distribution running off of a floppy, with a 6 meg ramdisk, and 10 megs of main memory. I've tested this setup by running a 700kbit RealVideo stream through it for over an hour.
I now typically run it on Pentium 90's, as their PCI clocking plays nicer with cheap 100Mbit Ethernet cards.
This system works with both the 2.0 and 2.2 kernels. The script to keep the tunnel up requires a reasonably modern bash. I have however noticed that certain distribution's versions of bash don't play too well with the script.
Also, if someone could help me refine my scripts (or even write an executable?) that would helps things a lot. I'm not sure why, but even my own bash doesn't follow the rules and doesn't seem to interpret signals correctly. If you do make any improvements, please email me at