L, because I never get Ws. A PPPoE client for Linux.
May be used as drop-in replacement for pppd.
- Doesn't recreate PPP interface each time it reconnects, because I wanted it.
- Can reconnect each IPv4 and IPv6 individually without reconnecting the session itself, but why.
- Sets ppp interface operstate, so on the
ipcommand, the PPP interface will have green "UP" state instead of gray "UNKNOWN". - Will send echo replies anyway when it's expected, so ISP will not disconnect halfway through game downloading from Steam, because their echo requests didn't make it.
pppoe-macnow sends initiation requests straight to that server, rather than waiting for offer, speeding up connecting to favorite server.- Supports
Type=notify-reloadfor systemd service. Thesystemctl reload ispcommand now waits before session reconnects or fails. - Adds default route with
proto kernelflag, so it will survivesystemd-networkdreload withoutManageForeignRoutes=nooption set.
It supports some pppd options. To connect you will need to provide the interface and auth details:
./pppoe-l nic-wan user test password hunter2
| Option | Default | Description |
|---|---|---|
nic-wan |
Use the specified interface wan to connect PPPoE. |
|
pppoe-mac |
ff:ff:ff:ff:ff:ff |
PPPoE Server MAC address to connect to. Will fallback to any server if no response was received. |
pppoe-padi-timeout |
5 |
Time in seconds between discovery request retransmissions. |
pppoe-padi-attempts |
5 |
Number of discovery attempts before fallback to any server. |
user |
(none) |
Username for authentication. |
password |
(none) |
Password for authentication. |
mru |
0 |
Set MRU (maximum received packet size) for negotiation. 0 means interface MTU - 8. |
mtu |
0 |
Set PPP interface MTU. 0 means use negotiated MRU. |
lcp-echo-interval |
0 |
Time in seconds between LCP echo requests. |
lcp-echo-failure |
0 |
Number of consecutive echo requests without reply before reconnecting. |
lcp-echo-adaptive |
0 |
Don't send echo requests when echo requests from the server are received. |
lcp-echo-expected |
1 |
Always send echo reply when an echo request from the server was expected, but wasn't received. |
lcp-restart |
3 |
Time in seconds between retransmissions. |
lcp-max-terminate |
2 |
Number of terminate-request attempts before reconnecting. |
lcp-max-configure |
10 |
Number of configure-request attempts before reconnecting. |
noip |
0 |
Disable IPv4. |
-ip |
0 |
Same as noip. |
defaultroute |
1 |
Add default route for IPv4. |
nodefaultroute |
0 |
Don't add default route for IPv4. |
+defaultroute |
1 |
Same as defaultroute. |
-defaultroute |
0 |
Same as nodefaultroute. |
defaultroute-metric |
100 |
IPv4 default route metric. |
ipv6 |
1 |
Enable IPv6. |
+ipv6 |
1 |
Same as ipv6 |
noipv6 |
0 |
Disable IPv6. |
-ipv6 |
0 |
Same as noipv6. |
defaultroute6 |
0 |
Add default route for IPv6. |
nodefaultroute6 |
1 |
Don't add default route for IPv6. |
+defaultroute6 |
0 |
Same as defaultroute6 |
-defaultroute6 |
1 |
Same as nodefaultroute6 |
defaultroute6-metric |
100 |
IPv6 default route metric. |
call |
(file name) |
Take options from a /etc/ppp/peers file. |
file |
(file name) |
Same as call. |
-f |
(file name) |
Take options from a file. |
kill -s (signal) $(pidof pppoe-l)
SIGINT- disconnect and exit.SIGTERM- disconnect and exit.SIGHUP- reload configuration and reconnect the session.SIGUSR1- reconnect IPv4 without reconnecting the session.SIGUSR2- reconnect IPv6 without reconnecting the session.SIGPWR- disconnect IPv4.SIGSYS- disconnect IPv6.
cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build