LEDE+Softether+VPSでLAN内をデュアルスタック化する


注意点

これは去年書いて、最後まで完成できなかったメモです。
参考情報として閲覧してください。

関連記事
- NAT 配下の IPv4 環境から SoftEther で繋いだ Conoha VPS 経由で IPv6 を使う

はじめに

 試行錯誤の末、特定端末に対する手動設定ではなく、LEDE(OpenWRT)を使ってLAN 内の機器に対してインターネット接続可能なIPv6アドレスを自動配布することができたので、やり方を記録する。

イメージ図

 LEDEの入ったブロードバンドルータからSoftEtherでConoha VPSとVPN接続し、LAN向けにはRAでIPv6アドレスを配布し、NAT6アドレス変換により、IPv6インターネットにアクセスできるようにする。
 なお、IPv4インターネットはVPSを経由せず、今まで通りブロードバンドルータから直接接続する。

PC -----[LEDE]---(IPv4 internet)---[Conoha VPS]---(IPv6 Internet)
iPhone---/

<----lan------><---wan---><--------ipv4-------><---------ipv6--------->

実現したこと

 ISP からは IPv4 プライベートアドレスしか提供されていないNAT配下から、VPS経由でIPv6インターネット接続をLAN向けに提供する。

必要なもの

  • LEDE及びSoftEther入りブロードバンドルータ *1:自分はBuffalo WZR-HP-AG300Hを使った。中古で3000円。
  • Conoha VPS 1GBプラン *2:512MBプランだと、たまにOOM Killerが発動する。

ステップ

  • Conoha VPSにSoftetherをServerモードで導入する。
  • LEDEにkmod-ipt-nat6とSoftEtherモジュールを導入する。
  • LEDEのStartupから、SoftetherClientとSoftetherServerのプロセスをDisableおよびStopする。
  • LEDEとVPSのSoftetherを、それぞれtapでローカルブリッジする。
  • LEDEのWAN6をtapに割り付ける。→LEDEとVPS間が、リンクローカルアドレスで疎通。
  • VPSのLinux KernelのIPv6ルータ機能を有効化する。
  • VPSからIPv6追加アドレスを削除し、そのひとつをVPSのtapに割り当て、LEDEのtapのリンクローカルアドレス向けにIPv6スタティックルートとProxy NDPを設定する。
  • LEDEのWAN6に、先程VPSでスタティックルート設定したIPv6グローバルアドレスと、デフォルトゲートウェイとしてVPSのtapのリンクローカルアドレスを設定する。→LEDEから、IPv6グローバルアドレスで疎通。
  • LEDEのWAN6のIPv6で、RAをServerモードで、Proxy NDPをDisabledに、そして、IPv6 ULA-Prefixの先頭2文字を、ddに変更する。
  • LEDEでNAT6シェルを配置および実行し、LAN内機器の動作確認。→LAN内からIPv6グローバルが疎通。
  • うまくいったら、LEDEのStartupに設定して終了。
  • Wifiを有効にする。最大10dBに設定。
  • 動作確認として、亀やIPv6 testなど。
/root/nat6.sh
#/bin/ash
line=0
while [ $line -eq 0 ]
do
    sleep 10
    line=`route -A inet6 | grep ::/0 | awk 'END{print NR}'`
done
ip6tables -t nat -I POSTROUTING -s `uci get network.globals.ula_prefix` -j MASQUERADE
route -A inet6 add 2000::/3 `route -A inet6 | grep ::/0 | awk 'NR==1{print "gw "$2" dev "$7}'`

参考にしたリンク

http://fefcc.net/archives/202
https://wordpress.tirlins.com/2015/03/setting-up-softether-vpn-on-openwrt/
http://blog.iopsl.com/ipv6-nat-with-openwrt-router/

キャプチャ集