The Rank of F

六本木で働く無能のブログ

Raspberry Pi 4 + Raspberry Pi OS (arm64) で IPoE + PPPoE 接続 / DDNS 設定

最終的には Ansible Playbook あたりにまとめたいので手順のメモ。

PPPoE 接続

パッケージのインストールと構成

とりあえず必要なパッケージというか NetworkManager と ppp を入れる。

$ sudo apt-get install -y network-manager ppp

標準で接続に使用している dhcpcd5 はいらないので削除する。

$ sudo apt-get remove -y dhcpcd5 

/etc/network/interfaces を空にする。

$ sudo sh -c 'echo "" > /etc/network/interfaces'

再起動

$ sudo reboot -h now
NetworkManager 設定

面倒なので root になる。

$ sudo su -

不要な Wired connection 1 を削除

# nmcli connection delete 'Wired connection 1'

PPPoE 接続先を設定。

# nmcli connection add \
    connection.id "PPPoE" \
    connection.type pppoe \
    connection.interface-name ppp1 \
    connection.autoconnect yes \
    ipv4.method auto \
    ipv6.method ignore \
    pppoe.parent eth0 \
    pppoe.username "プロバイダのユーザー名" \
    pppoe.password "プロバイダのパスワード" \
    ppp.mru 1454 \
    ppp.mtu 1454

ルーティングテーブル上 eth0 が最上位になってしまうので適切に変更するスクリプト/etc/network/if-up.d/static-routes として作成

#!/bin/sh
/usr/sbin/ip route del default via 192.168.1.1 dev eth0 || /usr/bin/true

権限付与。

# chmod +x /etc/network/if-up.d/static-routes

再起動。

# reboot -h now
接続確認

外への IPv4 アドレスと ppp1 の IPv4 アドレスが同じか確認する。

# ip address show ppp1
# curl -4 ifconfig.io

DDNS

MyDNS に移行した

Google Domains で取得しているのでそれに合わせて設定。

どうやら DDNS でデュアルスタック登録できないようなので IPv6 については静的に指定し、後は curl で 10 分毎回に設定するよう cron に設定

$ sudo crontab -e
*/10 * * * * /usr/bin/curl --silent "https://XXXX:YYYY@domains.google.com/nic/update?hostname=ZZZZ&myip=$(/usr/bin/curl -4 https://domains.google.com/checkip)"