16.4. Using PPP over Ethernet (PPPoE)

Contributed (from http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) by Jim Mock.

This section describes how to set up PPP over Ethernet (PPPoE).

16.4.1. Configuring the kernel

No kernel configuration is necessary for PPPoE any longer. If the necessary netgraph support is not built into the kernel, it will be dynamically loaded by ppp.

16.4.2. Setting up ppp.conf

Here is an example of a working ppp.conf:

    default:
      set log Phase tun command # you can add more detailed logging if you wish
      set ifaddr 10.0.0.1/0 10.0.0.2/0
    
    name_of_service_provider:
      set device PPPoE:xl1 # replace xl1 with your ethernet device
      set authname YOURLOGINNAME
      set authkey YOURPASSWORD
      set dial
      set login
      add default HISADDR

16.4.3. Running PPP

As root, you can run:

    # ppp -ddial name_of_service_provider

16.4.4. Starting PPP at Boot

Add the following to your /etc/rc.conf file:

    ppp_enable="YES"
    ppp_mode="ddial"
    ppp_nat="YES"	# if you want to enable nat for your local network, otherwise NO
    ppp_profile="name_of_service_provider"

16.4.5. Using a PPPoE Service tag

Sometimes it will be necessary to use a service tag to establish your connection. Service tags are used to distinguish between different PPPoE servers attached to a given network.

You should have been given any required service tag information in the documentation provided by your ISP. If you cannot locate it there, ask your ISP's tech support personnel.

As a last resort, you could try the method suggested by the Roaring Penguin PPPoE program which can be found in the ports collection. Bear in mind however, this may de-program your modem and render it useless, so think twice before doing it. Simply install the program shipped with the modem by your provider. Then, access the System menu from the program. The name of your profile should be listed there. It is usually ISP.

The profile name (service tag) will be used in the PPPoE configuration entry in ppp.conf as the provider part of the set device command (see the ppp(8) manual page for full details). It should look like this:

    set device PPPoE:xl1:ISP

Do not forget to change xl1 to the proper device for your Ethernet card.

Do not forget to change ISP to the profile you have just found above.

For additional information, see:

16.4.6. PPPoE with a 3Com HomeConnect ADSL Modem Dual Link

This modem does not follow RFC 2516 (A Method for transmitting PPP over Ethernet (PPPoE), written by L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone, and R. Wheeler). Instead, different packet type codes have been used for the Ethernet frames. Please complain to 3Com if you think it should comply with the PPPoE specification.

In order to make FreeBSD capable of communicating with this device, a sysctl must be set. This can be done automatically at boot time by updating /etc/sysctl.conf:

    net.graph.nonstandard_pppoe=1

or can be done for immediate effect with the command sysctl -w net.graph.nonstandard_pppoe=1.

Unfortunately, because this is a system-wide setting, it is not possible to talk to a normal PPPoE client or server and a 3Com HomeConnect ADSL Modem at the same time.