# ppp0 does not exist

## Timmer

I'm trying to connect to the VPN at my university, but I have no ppp0 device.  This problem is all over the forums, and I've been going mad trying to figure out how people have fixed it.  There's this uncanny habit of announcing randomly that its fixed, and not suggesting what they did to fix it.

I'm trying to find the kernel option that creates the stupid thing, and not having much success.  I'm running kernel 2.6.22-r5, and so far have tried all sorts of modules.  I've tried following the VPN with mppe doc at gentoo wiki, and the kernel modules listed in the university documentation, and even just compiling all of the ppp options as modules and loading them one at a time.  And i get no ppp0 device.

Currently I have loaded:

ppp_generic

ppp_mppe

pppoe

pppox

ppp_synctty

ppp_deflate

ppp_async

bsd_comp

And i rather expected ppp_generic to do the job, but it didn't. So what is the magical module or combination of modules that creates ppp0?

----------

## mudrii

did you check the wiki ?

http://gentoo-wiki.com/Index:HOWTO#PPP

----------

## Timmer

 *Timmer wrote:*   

> 
> 
> I've tried following the VPN with mppe doc at gentoo wiki ... And i get no ppp0 device.
> 
> 

 

http://gentoo-wiki.com/HOWTO_PPTP_VPN_client_%28Microsoft-compatible_with_mppe%29

I get as far as the Setting up the Connection section, where i'm supposed to know the name of the device to write the file, so the device ought to be listed, right?  But it's not.

----------

## didymos

There is no device file such as /dev/ppp0 or something like that, and nothing you do other than manually creating one (don't) will cause it to appear.  It's a network interface so you have to configure it and then bring it up for it to be usable. And what do you mean by "where i'm supposed to know the name of the device to write the file"?  You just pick one.  Want it to be ppp0? Then that's the name you use. If you mean this:

 *Quote:*   

> 
> 
> VPNNAME: Generic name chosen for this connection
> 
> 

 

then it's pretty self-explanatory.  That's just a generic example.  Pick your own filename. E.g.:

```

 file /etc/ppp/options.my_vpn_stuff

```

or whatever.

----------

## Timmer

I figured I'd have to configure it and bring it up to use it, but in order to do either of those two things, i need to make it exist first.

ifconfig -a lists lo and ra0, and that's it.  (it would list eth0, but i took ethernet support out of my kernel).  the rt2500 module provides ra0.  I've also discovered in the course of all this that ip_gre provides a gre0, and adding ip tunneling support creates tunl0.  So I ask again, what module creates ppp0?  I think I'm being clear here.  I can configure my eth0 til the cows come home, and run a net.eth0 script at boot, and it's either going to do nothing, or throw a fit because there is no eth0 network device.

Or are you saying that there's no way to add pppN to my list of network devices?  And if that's the case, how did everyone else do it?  And why wouldn't that work for me?

----------

## didymos

 *Timmer wrote:*   

> I figured I'd have to configure it and bring it up to use it, but in order to do either of those two things, i need to make it exist first.
> 
> <snip>
> 
>  So I ask again, what module creates ppp0?  I think I'm being clear here.  
> ...

 

You are being clear, but it just doesn't work like that.  It plain doesn't exist until you run pppd.  You tell pppd which "real" device to use as a link, and it will magically create ppp0 for you.

If you read a bit further you'll notice this (I've replaced PPPN with ppp0):

 *Quote:*   

> 
> 
> File: /etc/conf.d/net
> 
> config_ppp0=( "ppp" )
> ...

 

The link_ppp0 is what the ppp0 interface will be attached to.

----------

## Timmer

 *didymos wrote:*   

> 
> 
> It plain doesn't exist until you run pppd.  You tell pppd which "real" device to use as a link, and it will magically create ppp0 for you.
> 
> 

 

ohhhhhh.  I'm sorry, but that didn't seem clear anywhere.  I haven't run across anything that worked that way before. I sort of see how the config works now that you've explained, but I don't see how I was supposed to make that connection with just the line that was there.

So I'll go do that and see if it works.  In the mean time, can we break down that 

```
link_ppp0="pty \"pptp VPNHOST --nolaunchpppd\""
```

 line a little?

I see that link_ppp0 links the "real" device to ppp0.  And there's a call to pptp.  So, what's pty?  The actual device?

----------

## didymos

Well, in this case, even pty isn't a "real" device.  It's a pseudo-terminal.  It behaves like a real terminal device, but it's actually virtual.  But, it'll have a device file, so that's real enough.  See "man pty" for a better description.  Just make sure you've got it enabled this in the kernel:

```

grep CONFIG_UNIX98_PTYS /usr/src/linux/.config

```

You almost certainly do, as on newer kernels it's always enabled unless you selected:

```

General setup  --->

   [*] Configure standard kernel features (for small systems)  --->

```

and then went and disabled it here:

```

Device Drivers  --->

   Character devices  ---> 

       [*] Unix98 PTY support

```

----------

