はじめに
時に、PPPoEできるサーバが欲しい時があります。PPPoEをするルータを納品するとき、とりあえず設定したPPPoEの設定が正しいかだけでも分かると、やはり安心できます。そんなときに試した際の記憶です。
注意
個人的にRedHatに触っていた期間があるので、検証ではAlmaLinuxを使うことが多いです。しかし、AlmaLinuxで構築しようとしたところ、途中で挫折しました。どうも、pppoeができるパッケージが配布されなくなったかなんかで、とにかく「dnfを叩いてconfを編集して速攻サービス起動!!」というお手軽なルートでは出来ず。
ということで、Ubuntuで構築しました。バージョンは22.04 LTS。
※半分備忘録みたいなものなので、説明は雑です。お許しを。
構築
pppoeをインストールします。
apt-get install pppoe
/etc/ppp内のファイルを確認。
chap-secretsとoptionsを編集します。
root@pppoe02:/etc/ppp# ll
total 92
drwxr-xr-x 8 root dip 4096 Mar 4 15:15 ./
drwxr-xr-x 98 root root 4096 Mar 4 15:11 ../
-rw------- 1 root root 80 Mar 4 15:11 chap-secrets
-rwxr-xr-x 1 root root 1757 Feb 23 2022 ip-down*
drwxr-xr-x 2 root root 4096 Mar 4 15:11 ip-down.d/
-rwxr-xr-x 1 root root 1807 Feb 23 2022 ip-pre-up*
drwxr-xr-x 2 root root 4096 Feb 24 2022 ip-pre-up.d/
-rwxr-xr-x 1 root root 1898 Feb 23 2022 ip-up*
drwxr-xr-x 2 root root 4096 Mar 4 15:11 ip-up.d/
-rwxr-xr-x 1 root root 834 Feb 23 2022 ipv6-down*
drwxr-xr-x 2 root root 4096 Feb 24 2022 ipv6-down.d/
-rwxr-xr-x 1 root root 974 Feb 23 2022 ipv6-up*
drwxr-xr-x 2 root root 4096 Feb 24 2022 ipv6-up.d/
-rw-r--r-- 1 root root 13207 Mar 4 15:15 options
-rw-r--r-- 1 root root 13209 Feb 23 2022 options.org
-rw------- 1 root root 1628 Mar 4 15:11 pap-secrets
drwxr-s--- 2 root dip 4096 Mar 4 15:11 peers/
optionsを編集します。編集後に有効されている値を示しておきます。
root@pppoe02:/etc/ppp# cat options | grep -v -e "^#" -e "^\s*$"
asyncmap 0
auth
crtscts
lock
hide-password
modem
+pap
+chap
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx
require-chap
chap-secretsを編集します。のちのルータ設定に合わせます。
root@pppoe02:/etc/ppp# tail chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
pppoeuser01 * "password" 1.2.3.4
PPPoEがルータのようにルーティングできるようにします。
長く使う場合は、/etc/sysctl.confを編集して永続化したほうがいいです。
root@pppoe02:/etc/ppp# echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
1
root@pppoe02:/etc/ppp#
root@pppoe02:/etc/ppp# cat /proc/sys/net/ipv4/ip_forward
1
ルータ側の設定を簡単に載せます。Ciscoの891fjで検証してます。
RT01#sh run | section Dialer1
interface Dialer1
ip address negotiated
ip virtual-reassembly in
encapsulation ppp
ip tcp adjust-mss 1314
dialer pool 1
ppp authentication chap callin
ppp chap hostname pppoeuser01
ppp chap password 7 13151601181B0B382F
no cdp enable
RT01#sh run | section Loopback
interface Loopback1
ip address 1.2.3.4 255.255.255.248
RT01#sh run | section GigabitEthernet8
interface GigabitEthernet8
no ip address
duplex full
speed 1000
pppoe enable group global
pppoe-client dial-pool-number 1
あとはルータの1.2.3.4を付与するようにサーバ起動コマンドを実行。
pppoe-server -I ens33 -L 1.2.3.3 -R 1.2.3.4 -N 10 -S myPPPoE -O /etc/ppp/options
うまくいくと、ルータ側でPPPoEが成功していることを確認できます。
RT01#sh ppp all
Interface/ID OPEN+ Nego* Fail- Stage Peer Address Peer Name
------------ --------------------- -------- --------------- --------------------
Vi2 LCP+ IPCP+ LocalT 1.2.3.3 pppoe02
あとはおまけ。サーバ側のtcpdumpコマンドを記載しておきます。
tcpdump -i ens33 -n -vvv ether proto 0x8863
PADI→PADO→PADR→PADSの順にログが出力されていますが、うまくいかないときに、どこで出力が止まるかが分かると、トラシュに役たちます。
細かいことはChatCPTに聞くと答えてくれますので、是非ハマったときは聞いてみてください。
root@pppoe02:/etc/ppp# tcpdump -i ens33 -n -vvv ether proto 0x8863
tcpdump: listening on ens33, link-type EN10MB (Ethernet), snapshot length 262144 bytes
08:02:25.929483 PPPoE PADI [Service-Name] [Host-Uniq 0x5000000900000E0C]
08:02:25.929822 PPPoE PADO [AC-Name "pppoe02"] [Service-Name "myPPPoE"] [AC-Cookie 0xF8044C22A5751D2324882D105EAC894414090000] [Host-Uniq 0x5000000900000E0C]
08:02:25.930744 PPPoE PADO [AC-Name "pppoe02"] [Service-Name "myPPPoE"] [AC-Cookie 0xB4B91E304CF8E71BBA8B1D18105333CEFB080000] [Host-Uniq 0x5000000900000E0C]
08:02:25.931398 PPPoE PADO [AC-Name "pppoe02"] [Service-Name "myPPPoE"] [AC-Cookie 0xBF46FA13AC20DBA0F2A96393358BF0EDB8080000] [Host-Uniq 0x5000000900000E0C]
08:02:27.977357 PPPoE PADR [AC-Name "pppoe02"] [AC-Cookie 0xF8044C22A5751D2324882D105EAC894414090000] [Host-Uniq 0x5000000900000E0C] [Service-Name]
08:02:27.980049 PPPoE PADS [ses 0x3] [Service-Name "myPPPoE"] [Host-Uniq 0x5000000900000E0C]
以上。

