Subsections

4.18 PPPOE - PPP über Ethernet

Dieses Paket erlaubt es, PPP-Verbindungen über ein Ethernet-Netzwerk aufzubauen. Dies wird in Deutschland vor allem für die Internet-Anbindung via DSL genutzt, wobei ein externes, über Ethernet angeschlossenes DSL-Modem genutzt wird. Zwischen dem fli4l-Router und dem DSL-Modem wird das Protokoll PPP benutzt, jedoch hier speziell über Ethernet (PPPoE4.21).

4.18.1 Ausgehende PPPoE-Verbindungen

Ein DSL-Zugang via PPPoE oder auch beliebige andere ausgehende PPPoE-Verbindungen werden generell als PPP-Circuit konfiguriert (siehe Circuits vom Typ “ppp”), d. h. es gilt:

    CIRC_x_TYPE='ppp'

Zusätzlich muss das OPT_PPP_ETHERNET aktiviert werden:

OPT_PPP_ETHERNET

Diese Variable aktiviert die Unterstützung für ausgehende PPPoE-Verbindungen. Damit auch tatsächlich eine PPPoE-Verbindung genutzt werden kann, muss mindestens ein PPP-Circuit den Typ “ethernet” besitzen, d. h. es muss zusätzlich gelten

    CIRC_x_TYPE='ppp'
    CIRC_x_PPP_TYPE='ethernet'

(wobei “x” einen gültigen Circuit-Index darstellt).

Standard-Einstellung: OPT_PPP_ETHERNET='no'

Beispiel: OPT_PPP_ETHERNET='yes'

Zu den allgemeinen Circuit-Variablen kommen die folgenden, für PPP-Circuits des Typs “ethernet” spezifischen Variablen hinzu:

CIRC_x_PPP_ETHERNET_DEV

Diese Variable enthält den Namen der Netzwerk-Schnittstelle, über die PPPoE genutzt werden soll. Dabei entspricht eth0 der ersten Ethernet-Karte, eth1 der zweiten Ethernet-Karte u. s. w.

Hat man nur eine Netzwerkkarte im Router, kann man das DSL-Modem ins LAN hängen, etwa indem man das DSL-Modem an den LAN-Switch mit anschließt. Dies ist jedoch nur die zweitbeste Lösung, weil die normalen IP-Pakete dann zusammen mit den PPPoE-Paketen im selben Netzsegment auftauchen und dies die maximale Übertragungsgeschwindigkeit negativ beeinflussen kann. Die beste Lösung ist die Nutzung einer separaten Netzwerkkarte für die Kommunikation mit dem DSL-Modem.

Beispiel: CIRC_1_PPP_ETHERNET_DEV='eth1'

CIRC_x_PPP_ETHERNET_TYPE

PPPoE steht für die Übertragung von PPP-Paketen über Ethernet-Leitungen. Das bedeutet, dass die zu übertragenden Daten im ersten Schritt vom ppp-Dämon in PPP-Pakete und dann in einem zweiten Schritt für die Übertragung übers Ethernet nochmals in PPPoE-Pakete verpackt werden, um dann ans DSL-Modem geschickt zu werden. Das zweite Verpacken kann durch den pppoe-Dämon oder durch den Kern erfolgen. Mittels CIRC_x_PPP_ETHERNET_TYPE wird die Art und Weise der PPPoE-Paketerzeugung definiert, siehe hierzu Tabelle 4.21.


Table 4.21: Arten der PPPoE-Paketerzeugung
Wert Beschreibung
kernel Die PPP-Pakete werden direkt an den Linux-Kern gereicht, der daraus PPPoE-Pakete macht. Dadurch entfällt die Kommunikation mit einem zweiten Prozess und damit eine Menge Kopier- und Scheduling-Aufwand, was wiederum zu geringerer Prozessorlast führt. Dies ist die Standard-Methode, wenn nichts angegeben wurde.
daemon Die Pakete werden durch den pppoe-Dämon erzeugt; die Kommunikation zwischen pppd und pppoe erfolgt asynchron. Das bedeutet, dass der Datenstrom mit Anfang- und Ende-Markern versehen wird, damit der pppoe-Dämon die einzelnen Pakete auseinanderhalten kann. Aufgrund des zweiten Prozesses und der zusätzlichen Markierungen ist diese Methode aufwändiger als die Methode “kernel” und sollte in der Regel nicht verwendet werden.


Standard-Einstellung: CIRC_x_PPP_ETHERNET_TYPE='kernel'

Beispiel: CIRC_1_PPP_ETHERNET_TYPE='daemon'

4.18.2 Eingehende PPPoE-Verbindungen

Der fli4l kann auch konfiguriert werden, eingehende PPPoE-Verbindungen anzunehmen, also als ein Server zu fungieren. Solche PPPoE-Verbindungen werden ebenfalls als PPP-Circuit konfiguriert (siehe Circuits vom Typ “ppp”), d. h. es gilt:

    CIRC_x_TYPE='ppp'

Zusätzlich muss das OPT_PPP_ETHERNET_SERVER aktiviert werden:

OPT_PPP_ETHERNET_SERVER

Diese Variable aktiviert die Unterstützung für eingehende PPPoE-Verbindungen. Damit auch tatsächlich PPPoE-Verbindungen angenommen werden können, muss mindestens ein PPP-Circuit den Typ “ethernet-server” besitzen, d. h. es muss zusätzlich gelten

    CIRC_x_TYPE='ppp'
    CIRC_x_PPP_TYPE='ethernet-server'

(wobei “x” einen gültigen Circuit-Index darstellt).

Standard-Einstellung: OPT_PPP_ETHERNET_SERVER='no'

Beispiel: OPT_PPP_ETHERNET_SERVER='yes'

Zu den allgemeinen Circuit-Variablen kommen die folgenden, für PPP-Circuits des Typs “ethernet-server” spezifischen Variablen hinzu:

CIRC_x_PPP_ETHERNET_SERVER_DEV

Diese Variable enthält den Namen der Netzwerk-Schnittstelle, über die PPPoE genutzt werden soll. Dabei entspricht eth0 der ersten Ethernet-Karte, eth1 der zweiten Ethernet-Karte u. s. w.

Beispiel: CIRC_1_PPP_ETHERNET_SERVER_DEV='eth1'

CIRC_x_PPP_ETHERNET_SERVER_TYPE

PPPoE steht für die Übertragung von PPP-Paketen über Ethernet-Leitungen. Das bedeutet, dass die zu übertragenden Daten im ersten Schritt vom ppp-Dämon in PPP-Pakete und dann in einem zweiten Schritt für die Übertragung übers Ethernet nochmals in PPPoE-Pakete verpackt werden. Das zweite Verpacken kann durch den pppoe-Dämon oder durch den Kern erfolgen. Mittels CIRC_x_PPP_ETHERNET_SERVER_TYPE wird die Art und Weise der PPPoE-Paketerzeugung definiert, siehe hierzu Tabelle 4.21.

Standard-Einstellung: CIRC_x_PPP_ETHERNET_SERVER_TYPE='kernel'

Beispiel: CIRC_1_PPP_ETHERNET_SERVER_TYPE='daemon'

CIRC_x_PPP_ETHERNET_SERVER_SESSIONS

Diese Variable enthält die Anzahl der Verbindungen, die dieser PPPoE-Server maximal gleichzeitig verwalten kann.

Standard-Einstellung: CIRC_x_PPP_ETHERNET_SERVER_SESSIONS='64'

Beispiel: CIRC_1_PPP_ETHERNET_SERVER_SESSIONS='100'

4.18.3 Beispiele

Beispiel 1 (Internet-Zugang über PPPoE):

    OPT_PPP='yes'                       # PPP-Circuits aktivieren
    OPT_PPP_ETHERNET='yes'              # PPPoE-Client-Circuits aktivieren
    #
    CIRC_N='1'
    CIRC_1_NAME='DSL-Telekom'           # beliebig, aber eindeutig
    CIRC_1_TYPE='ppp'                   # das ist ein PPP-Circuit
    CIRC_1_ENABLED='yes'
    CIRC_1_NETS_IPV4_N='1'
    CIRC_1_NETS_IPV4_1='0.0.0.0/0'      # Default-Route ins Internet
    CIRC_1_CLASS_N='1'
    CIRC_1_CLASS_1='internet'           # Klasse für Internet-Anbindung
    CIRC_1_UP='yes'                     # beim Booten aktivieren
    CIRC_1_TIMES='Mo-Su:00-24:0.0:Y'
    CIRC_1_USEPEERDNS='yes'             # DNS-Server des Providers nutzen
    CIRC_1_PPP_TYPE='ethernet'          # PPPoE-Client
    CIRC_1_PPP_USERID='anonymer'        # Benutzername zur Authentifizierung
    CIRC_1_PPP_PASSWORD='surfer'        # Passwort zur Authentifizierung
    CIRC_1_PPP_ETHERNET_TYPE='kernel'   # Kernel soll PPPoE-Pakete packen
    CIRC_1_PPP_ETHERNET_DEV='eth1'      # Karte, an der das DSL-Modem hängt
    #
    CIRC_CLASS_N='1'
    CIRC_CLASS_1='internet'             # Klasse aller Internet-Circuits

Beispiel 2 (PPPoE-Server):

    OPT_PPP='yes'                       # PPP-Circuits aktivieren
    OPT_PPP_ETHERNET_SERVER='yes'       # PPPoE-Server-Circuits aktivieren
    OPT_PPP_PEERS='yes'                 # zum Speichern der Anmeldedaten
    PPP_PEER_N='1'                      # 1x Anmeldedaten hinterlegen
    PPP_PEER_1_USERID='user'            # Benutzername vom Client
    PPP_PEER_1_PASSWORD='pass'          # Passwort vom Client
    PPP_PEER_1_CIRCUITS='pppoe-eth1'    # Anmeldedaten gelten für PPPoE-Circuit
    #
    CIRC_N='1'
    CIRC_1_NAME='pppoe-eth1'            # beliebig, aber eindeutig
    CIRC_1_TYPE='ppp'                   # das ist ein PPP-Circuit
    CIRC_1_ENABLED='yes'
    CIRC_1_UP='yes'                     # beim Booten aktivieren
    CIRC_1_TIMES='Mo-Su:00-24:0.0:Y'
    CIRC_1_PROTOCOLS='ipv4'             # IPv4 soll über die Verbindung laufen
    CIRC_1_PPP_TYPE='ethernet-server'   # PPPoE-Server
    CIRC_1_PPP_PEER_AUTH='yes'          # Client-Authentifizierung ist Pflicht
    CIRC_1_PPP_LOCALIP='192.168.222.1'  # IP-Adresse des Servers
    CIRC_1_PPP_REMOTEIP='192.168.222.2' # Start-IP-Adresse der Clients
    CIRC_1_PPP_ETHERNET_SERVER_TYPE='kernel'  # Kernel soll PPPoE-Pakete packen
    CIRC_1_PPP_ETHERNET_SERVER_DEV='eth1'     # Ethernet-Karte für PPPoE
    CIRC_1_PPP_ETHERNET_SERVER_SESSIONS='10'  # max. 10 Clients

In der Dokumentation des PPP-Pakets im Abschnitt “Multilink PPP” finden Sie ein Beispiel gebündelter PPPoE-Server-Verbindungen.


Footnotes

... (PPPoE4.21
“Point-to-Point Protocol over Ethernet”, siehe RFC 2516