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
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)"