SSブログ

pppoeセッションをsystemdに任せる [v6プラス]

v6プラスを用いて自宅サーバを運用する場合、ipv4用に独自のpppoeセッションを張ることでipv4の任意のポートをlistenできるようになる。debianのサーバにて、今まで/etc/network/interfacesにpppoeセッションを記述してきたが、ネットワークインターフェース(NIC)の管理をsystemdで行うことが有力かつ一般的になってきたので、pppoeセッションもsystemdに任せる設定を行ってみた。以下、その方法について説明する。

まず、pppoeを通常の方法で接続できるように設定する。これは、pppoeconfパッケージに入っているpppoeconfというプログラムを用いる。pppoeconfを起動すると質問形式に答える形で設定ファイルが作成される。プロバイダーから指定されるppp接続のアカウントIDとパスワードや、pppoe接続に用いるネットワークインターフェース(NIC)を指定する。デフォルトで作成される接続名は、dsl-connectである。

pppoeの設定ファイルは、/etc/pppディレクトリの下に作成される。
/etc/ppp/options ppp接続オプションのデフォルト
/etc/ppp/peers 個別のppp接続のスクリプトが接続名ごとのファイルになっている
/etc/ppp/pap-secrets pap方式のIDごとのパスワード
/etc/ppp/chap-secrets chap方式のIDごとのパスワード

pppoeは、pppと同様の仕組みで動作することから、pppの設定ファイルが用いられるわけである。

pon 接続名で接続できるので、pppoeconfで作成した接続名dsl-connectを用いて接続できることを確認する。

systemdは、各種ネットワークインターフェースの管理に用いることができるが、pppのための仕組みは用意されていなく、*.networkファイルによってpppoeの設定が行えない。
そのため、次の2つを行う。
1. ppp接続スクリプトを改変し、systemdが監視できるようにする。
ppp接続スクリプトにnodetachを加え、ppp接続プロセスがdetachすることを避ける。
これにより、systemdの起動スクリプトを簡素化することができる。

https://github.com/systemd/systemd/issues/481#issuecomment-640060544

2. systemd用のserviceファイルを作成する。
次のファイルを作成した。

/etc/systemd/system/pppoe-client.service

[Unit]
Description=PPPoE Client on eno1
Requires=sys-subsystem-net-devices-eno1.device
After=sys-subsystem-net-devices-eno1.device

[Service]
Type=simple
ExecStart=/usr/sbin/pppd call dsl-provider
Restart=always
StandardOutput=null

[Install]
WantedBy=network-pre.target



参考文献
https://wiki.debian.org/PPPoE
https://github.com/Distrotech/rp-pppoe/
https://tex2e.github.io/rfc-translater/html/rfc2516.html
https://github.com/systemd/systemd/issues/481
https://enakai00.hatenablog.com/entry/20130914/1379146157
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

linuxのルートパーティションをHDD..|- ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。