Ubuntu 20.04を使って、プロバイダのIPv6 PPPoEサービスに接続してみた時のメモ。
# apt-get install pppoe pppoeconf
設定ツールを起動
# pppoeconf
いろいろ聞かれますが、以下のよう設定しました。
一般的なダイヤルアッププロバイダを使っているほとんどの人は、 'noaut'オプションと'defaultroute'オプションを設定に選び、 'nodetach'オプションを削除するのがよいでしょう。あなたの設定 ファイルを確認して、これらの設定を必要に応じて変更しますか?
⇒ はいを選択
以下の入力ボックスに、あなたのプロバイダへのPPPログインに通常 必要となるユーザ名を入力してください。もしヘルプ画面を見たいの であれば、ユーザ名を削除して「OK」を押してください。
⇒ プロバイダから提供された接続ユーザ名を入力して了解を選択。今回はmyusernameと想定。
以下の入力ボックスに、あなたのプロバイダへの PPPログインに 通常必要となるパスワードを入力してください。
⇒ プロバイダから提供された接続パスワードを入力して了解を選択
通常のホスト名を解決するためには、少なくとも1つのDNSIPアド レスが必要です。通常、あなたのプロバイダは、接続確立時に 利用可能なサーバのアドレスを送ってきているはずです。これら のアドレスを自動的にローカル/etc/resolv.confファイルのネー ムサーバのリストに追加しますか? (推奨します)
⇒ はいを選択
ほとんどのプロバイダは 1460 以上の MSS の IPケットをサポー トしないルータを持っています。 ~略~ pppoe で MSS を 1452 バイトに制限しますか?
⇒ はいを選択
PPPDが設定されました。ブート時に接続を開始するようにしますか?
⇒ はいを選択
これで、"pon dsl-provider" で DSL 接続を行い、"poff"で切断 できるようになりました。今接続を開始しますか?
⇒ 今接続しないので、いいえを選択
ここまで設定すると、/etc/ppp/peers/dsl-provider というファイルにこのような設定が書き込まれます。
noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth0
user "myusername"
usepeerdns
なお、パスワードは、/etc/ppp/chap-secrets や /etc/ppp/pap-secrets に保存されています。
ただし上記設定だと、IPv6でうまく繋がりません。設定パラメータの解説は、man pppd コマンドや http://man.he.net/man8/pppd , https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477245辺りを参考にしながら、以下2行を追記しました。
+ipv6
ipparam ipv6default
そして、/etc/ppp/ipv6-up.d/routing ファイルを作ります。この設定により、接続時にIPv6のルートが自動で追加されるようになります。(ファイルに実行を付けてください)
#!/bin/sh
if [ -z "${CONNECT_TIME}" ]; then
if [ "${PPP_IPPARAM}" = "ipv6default" ]; then
ip -6 route add default dev ${PPP_IFACE}
fi
fi
その他、にろきのメモ帳 や ももいろテクノロジー を参考に、/etc/sysctl.conf に以下を追加
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.ens160.accept_ra = 0
設定を反映
# sysctl -p
次に、IPv6接続時にDHCPを使う設定をします。dhcpcdをインストール
# apt-get install dhcpcd5
/etc/dhcpcd.conf に以下を追記
noipv6rs
interface ppp0
ipv6rs
iaid 1
ia_pd 1 eth0
dhcpcdを起動
# systemctl start dhcpcd.service
最後にPPPoEで接続します。
※ dsl-provider は、/etc/ppp/peers ディレクトリに作られるファイル名になります。pon時の名前を変更したい場合、ファイル名を変更するだけでいけます。
# pon dsl-provider
接続が完了すると、eth0の情報を見るとこんな感じになりました。
※下記は実際のIPではないです
※黄色の箇所が接続後に追加で表示された箇所です。
# ip address show 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether b8:27:aa:bb:cc:dd brd ff:ff:ff:ff:ff:ff inet 172.16.0.1/16 brd 172.16.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 2001:aaaa:bbbb:cccc:1/64 scope global dynamic noprefixroute valid_lft 14379sec preferred_lft 14379sec inet6 fe80::aaaa:bbbb:cccc:dddd/64 scope link valid_lft forever preferred_lft forever 49: ppp0: mtu 1454 qdisc fq_codel state UNKNOWN group default qlen 3 link/ppp inet6 fe80::aaaa:bbbb:cccc:dddd/10 scope link valid_lft forever preferred_lft forever
試しに google に ping を実行してみます。以下のようにIPv6で通信できました。
# ping www.google.co.jp PING www.google.co.jp(nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003)) 56 データ長(byte) 64 バイト応答 送信元 nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003): icmp_seq=1 ttl=116 時間=5.39ミリ秒 64 バイト応答 送信元 nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003): icmp_seq=2 ttl=116 時間=6.03ミリ秒
ちなみに、接続を切るのはpoffです。
# poff dsl-provider