Ideal Reality

興味の赴くままに

DD-WRTルーターから楽天ひかりのXpassにつなぐ

実家の回線を1年無料につられて楽天ひかりにしたのですが、楽天ひかりのIPv4 PPPoEは使い物にならないほど遅いです。

IPv4 over IPv6を使えば速くなるのですが、それにはXpass対応のルーターが必要になります。

しかし、残念ながら使っているルーターはDS-Lite非対応。ただ、ルーターを買い換える必要性はそこまで感じていない。

簡易サーバーとしてRaspberry Pi 4が動作しているので、そこにXpassのGWを立てればいいのだが、ネットワーク関連のサービスはなるべくネットワーク機器の中に押し込めておきたい。

そこで、興味本位でDD-WRTを入れて使わなくなっていた古いルーターをXpassのGWとして使ってみました。

IPv4とLinuxについての知識がないとかなり難しい内容になります。あと、ネットワーク環境によって差異のある内容になるので、あまり詳しくも書きません。正直Xpass対応のルーターを新しく買った方が絶対にいいです。なので、この記事はあくまで成功報告・参考程度にお願いします。

Contents
スポンサーリンク

DD-WRTはDS-Liteに非対応

DD-WRTはDS-Liteに対応していません。なのでWebコンソールから簡単に設定することはできません。ですが、DD-WRTのベースはBusyBoxのLinuxなので、自作したLinuxルーターやRaspberry Piと同じ要領でXpassのGWにすることができます。

前提条件

  • IPv6の通信ができる
  • IPv4のプライベートIPアドレスでDD-WRTルーターに接続できる
  • SSHでDD-WRTルーターに接続できる
  • Entwareが使える

IPv4のデフォルトゲートウェイをDD-WRTルーターにして、DD-WRTルーターに届いたIPv4のパケットをIPv6のパケットに包んでXpassに投げる形なので、とりあえずプライベートIPで接続できればDD-WRTルーターはネットワークのどこに配置してもOK。DD-WRTルーターの下にある機器しかXpass使えないってわけではありません。

また、楽天ひかりは実際に開通してからIPv6が使えるようになるまでラグがあり、IPv6開通連絡が来るまでそもそもIPv6通信ができない(DHCPv6でIPが取れない状態)ので、作業はIPv6が接続できるようになってからにしましょう。

スポンサーリンク

ipのインストール

DD-WRTで使えるipコマンドはBusyBox組み込みのもので、一部の機能しか使えず、ip4ip6トンネルを作成できないので、別途Entwareを使ってインストールします。

opkg install ip-full

/opt/sbin/ipにインストールされるので、トンネルの作成にはこちらを使います。

スクリプトの作成

スクリプトはどこに置いてもいいのですが、/opt/usr/local/bin/に置いておくのがいいのではないでしょうか。

mkdir -p /opt/usr/local/bin
vi /opt/usr/local/bin/tunnel.sh

中身は以下のようにします。

#!/bin/sh

REMOTE='2001:f60:0:200::1:1'
LOCAL=`/opt/sbin/ip addr show br0 | grep 'mngtmpaddr' | awk '{print $2}' | awk -F/ '{print $1}'`
echo $LOCAL

/opt/sbin/ip -6 tunnel add ds-lite mode ip4ip6 remote $REMOTE local $LOCAL encaplimit none dev br0
/opt/sbin/ip link set dev ds-lite up

route delete default
route add default dev ds-lite

参考サイトのスクリプトほぼそのままです。保存したら実行権限を与えてテストしてみましょう。

chmod +x /opt/usr/local/bin/tunnel.sh
/opt/usr/local/bin/tunnel.sh

実行が成功するとbr0のIPv6アドレスだけ出力されるはずです。この状態で既にXpassのGWとして機能するので、LAN内のPCでデフォルトゲートウェイをDD-WRTルータのIPに手動設定して繋がるか確認してみましょう。

スポンサーリンク

あとやっておいた方がいいこと

起動時にスクリプトが実行されるようにする

毎回スクリプトを手動で実行するのも大変なので起動時に実行されるようにしましょう。

とはいえ、Entwareを使っていると

sleep 10
/opt/etc/init.d/rc.unslung start

という内容を既に起動時スクリプトとして登録しているはずなので、その下に

/opt/usr/local/bin/tunnel.sh

というのを追加すればOKです。

DHCPサーバーの設定

僕の環境だと、あくまでDD-WRTルーターとは別にルーターがあるので、デフォルトゲートウェイ(ルーターアドレス)をDD-WRTルーターに向けなければいけません。(DD-WRTルーターはルーターとして機能させてないので、ダブルルーターというわけではない)

そのために、DHCPサーバーで配信されるデフォルトゲートウェイをDD-WRTルーターのIPにしましょう。

ただ、ほとんどのルーターはDHCPサーバーの設定を変えられないので、メインのルーターのDHCPサーバーは無効にして、DD-WRTルーターのDHCPサーバーを使うのが簡単だと思います。

注意点

DD-WRTのWeb管理画面から設定を変更したときに、IPv4の経路設定がデフォルトに戻ってしまうことがあります。

まあ一度環境が安定したらルーターの設定はそう変えることないと思いますが、もしルーターの管理画面を操作し終わった時には作成したスクリプトを実行するようにしましょう。

IPv4 PPPoEの扱い

メインのルーターにPPPoEが設定されているままなので、デフォルトゲートウェイをそっちに向ければIPv4 PPPoEで通信できますし、ポートを開けて外部からの接続を受け入れることもできます。

デフォルトゲートウェイを変えるだけで簡単に切り替えできるので、これに関しては結構便利です。

まとめ

とりあえずDD-WRTでもDS-Lite使えるよというお話でした。IPv4 PPPoEのときはPing 50~60ms、下り1~3Mbpsしか出てなかったのが、Ping 10~16の下り300Mbps前後出るようになってよかった。

ただ、今使ってるルーターがXpass使えないからDD-WRT入れて使おうというのは全然お勧めしません。素直に新しいルーター買った方がいいです。なので、この記事もDD-WRT使ってる人なら分かるでしょう程度にしか書いてません。

僕も現在の環境はつなぎ程度にして、折を見てルーターを変えて環境を整えたいと思います。

スポンサーリンク

参考

Raspberry Pi(Linux)を使って楽天ひかりのIPv6(DS-Lite)に繋ぐ方法|OYJ_DANTYO|note

てくろぐ: IIJのエンジニアによる公式blog (てくろぐ=tech・blog)

スポンサーリンク

コメント

投稿されたコメントはありません

名前

メールアドレス(任意)

コメント

関連する投稿

Vagrantでnginx

QEMUにaarch64版のAlpine Linuxをインストールする

FedoraのChromeで表示される”組織によって管理されています”を消す

[SwiftUI]EnvironmentObjectをウィンドウごとに別々のインスタンスにしたい

Final Cut Proでストレージの圧迫を防ぐ

iOS13でViewController上部の隙間をなくす