Configuring and running PPPoE

First, we'll discuss a bit about what PPPoE is, and what you have to do, to configure the beast. PPPoE is a (some say ill-conceived) mechanism that utilizes PPP framing to transmit protocol packets across an ethernet. While the idea sounds silly (there is, after all, a well-defined way to do this already), it has a couple of advantages that the ISP community has latched onto. The main ones are the ability to reuse a well-honed infrastructure to support PPP termination, including serving IP addresses and other configuration information; and a pretty good way of tracking usage for billing purposes. We'll ignore philosophy in the following discussion.

There are two parts to a PPPoE setup: the client and the server. The server end is typically under the control of the ISP, and you won't have to deal with it. However, you can set up a PPPoE (or PPP, for that matter) server, by hand: see below.

PPPoE is designed to work without much effort on the part of the user. In a typical installation, the only information needed would be the device to be used to carry the PPPoE connections. At connection time, the client system sends out an ethernet multicast request for servers. It will choose the first of the responding servers, and initiate communication directly. The user can configure a specific server, if desired, in which case, that server will be contacted and chosen. Note that the PPPoE protocol itself is strictly link-level, which means that it will only run between a client and a server on the same ethernet segment (no IP routers; the protocol is not an IP protocol).

PPPoE on Mac OS X

Support for PPPoE is included in Mac OS X from 10.1.1 on. Configuration of PPPoE involves the use of the Network Preferences panel, and in particular, the operation of duplicating existing ports, as discussed above.

Having duplicated the ethernet device you want to support your PPPoE operation, select this duplicate in the "Show" pop-up. This will display a row of tabs. Select the PPPoE tab. Do not configure the TCP/IP info in this selection. Nothing good will come of it. Next, check the 'connect using' box, and fill in any interesting information you care to. Typically, you won't need to, but your provider may give you instructions to do otherwise. Finally, click 'Apply now' to save the information you've produced.

Now, you are ready to use PPPoE. If you checked the 'show in menu bar' box on the PPPoE tab, there will be a little ethernet icon ("<-->") in the menu bar on the right. Click that for a menu which includes an item to bring up "Internet Connect". Select, and then you can enter your account data and go.

PPPoE on Darwin

On Darwin, you don't really configure for PPPoE as a step separate from actually running it. To get PPPoE going, you choose whether you will be a server or a client. The server end will wait for client connections. Each connection requires a separate server copy running on the server system.

For server operation, use the following command, as root:

    pppd plugin PPPoE.ppp pppoemode noauth listen 100.100.100.1:100.100.100.2

where the argument "A:B" means "local-IP:remote-IP". In this way, the server is able to tell the client what its IP address is for this connection.

Note that you can use this mechanism, as root, from Terminal, in Mac OS X, to provide PPPoE server capability.

To act as a client, use the following command, as root:

    pppd plugin PPPoE.ppp noauth

Normal pppd options such as 'nodetach' apply; consult the pppd man page for details.

In addition, the following two arguments can further refine the operation, if you are running on a multihomed system, or in an environment with multiple PPPoE servers available. The first term can be used for both client and server. The second is client-only.

    pppoeinterface - takes interface name; default 'en0'
    pppoeservice - takes "server name"; default is first responding server