🛜

フレッツ光 クロス + VyOSでインターネットに接続しようとして失敗した話

2023/12/15に公開

この記事はSocial Databank Tech Blog Advent Calendar 2023の15日目の記事です。

タイトルの通りなのですが、フレッツ光クロスを契約している環境でVyOSをルーターとして使う(という逸般の誤家庭的なことをする)にあたって四苦八苦したので、備忘録代わりに記事にしました。

環境

  • フレッツ光 クロス(enひかりクロス with Xpass(DS-Lite))
  • VyOS 1.3
    • Proxmox上でVMとして稼働

    • eth0がWAN側、eth1がLAN側

    • ホストのNICはオンボードの10Gbps対応のものを使用、VMのNICのドライバーはvirtioを指定

設定

  1. IPv6の設定

    set interfaces ethernet eth0 address dhcpv6
    set interfaces ethernet eth0 ipv6 address autoconf
    set interfaces ethernet eth0 ipv6 dup-addr-detect-transmits 1
    set interfaces ethernet eth0 dhcpv6-options duid "00:03:00:01:XX:XX:XX:XX:XX:XX"
    

    ここで重要になるのが4行目のDUIDを設定している部分です。
    フレッツ網ではDHCPv6でPrefix Delegationのリクエストを受け取る際にはDUIDをDUID-LL形式(00:03:00:01:[MACアドレス])の形にする必要があります。(このあたりはNTTの技術参考資料に書いてあります)
    DUIDの設定をしないと割り当てられるPrefix等のインターネットを使うにあたって必要な情報も取得できません。

  2. Prefix Delegationの設定

    set interfaces ethernet eth0 dhcpv6-options pd 1 interface eth1 sla-id 1
    set interfaces ethernet eth0 dhcpv6-options pd 1 length 56
    

    2行目でリクエストするPrefixのサイズをNTTのNGN網からもらえる/56合わせて56にします。これを設定しないとeth1に(家庭で使う分には気持ち悪いと個人的に思っている)サブネットマスクが/56のIPv6アドレスが割り当てられることになります。

  3. Xpass用のtunnelの設定

    このままではIPv6でしか通信ができないため、IPv4でも通信できるようにXpassの設定をします。

    set interfaces tunnel tun0 address 192.0.0.2/32
    set interfaces tunnel tun0 encapsulation ipip6
    set interfaces tunnel tun0 multicast disable
    set interfaces tunnel tun0 remote 2001:f60:0:200::1:1
    set interfaces tunnel tun0 source-address [eth0に割り当てられるIPv6アドレス]
    

    4行目でトンネルの対向ルーターとなるXpass側のIPv6アドレスを設定します。

    Xpassの場合、対向ルーターはdgw.xpass.jpとFQDNで書かれているドキュメントが大半なので、別途nslookupdig等で名前解決したIPv6アドレス(今回の場合は2001:f60:0:200::1:1)を設定します

    市販のルーターだとFQDNで指定できるものがほとんどだと思うので、VyOSでも対向ルーターをFQDNで指定できるようになって欲しいですね。

  4. ルーティングの設定

    set protocols static interface-route 0.0.0.0/0 next-hop-interface tun0
    

    デフォルトゲートウェイを3で作成したtun0をデフォルトゲートウェイに設定します

発生したトラブル

なぜかWAN側のeth0にIPv6アドレスが割り当てられない

上記の設定の2までを流し込んでIPアドレスを確認したところ、LAN側のeth1にはPrefix Delegationによって/64のIPv6アドレスが割り当てられていますが、WAN側のeth0にはIPv6アドレスが割当られていませんでした。

丸1日溶かすくらいネットの色々な記事を見てみて色々いじって見たのですが、全然割当られませんでした。何故...

試しに家に転がっていたIX2105をNECのドキュメント通りに設定してみたところ、無事通信できたのでVyOSの設定が何かおかしいのだろうという見当はついています。
(せっかくの1OGbps出る回線なので、最大でも1Gbpsまでしか出ないIX2105を使うという選択肢は最初から省いています)

最後に

VyOSと同じソフトウェアルーターであるOpenWrtではちゃんとWAN側にIPv6アドレスが割り当てられたので、一時的にOpenWrtを使用しています。
OpenWrtはVyOSに比べてスループットが15〜25%程度低下するというのを経験したりOpenWrtよりVyOSの方が触り慣れているので、できるだけ早くVyOSでインターネットに接続できるようにしたいなと思っています。

もしこの記事を読んだ方でこうしたらいいのではというのがありましたら、ぜひコメントをください🙇‍♂

明日の担当はTKさんです。お楽しみに!

ソーシャルデータバンク テックブログ

Discussion