赤鯖にVyos入れて最高のインターネッツを手に入れた

この記事は OIC ITCreate Club Advent Calendar 2017 5日目の記事ですが、投稿日は6日です。謹んでお詫びします。

表: https://adventar.org/calendars/2640
裏: https://adventar.org/calendars/2563

登場人物

  • Rad Beagle
  • Vyos
  • Netgear GS116E

あらすじ

  • EdgeRouter-Liteに飽き飽きとし、x86鯖にVyosを入れて爆速にする。

ことの始まり

界隈である程度有名だった通称「赤鯖」。前回はi7モデル・Core2Duoモデルが販売されていたが、今回はi5モデルが秋葉で売られたらしい。50台在庫は有ると書いているが心配なので、すぐに優秀な学生を派遣し、2台確保。翌日には売り切れていたようだ。

届いた

手元に届いたのは1月後のこと。東京に行った時に受け取った。

  • GigabitEther: 4
  • IPMI Ether: 1
  • USB: 2
  • D-Sub: 1
  • Serial: 1

という端子の充実ぶり。基板の表面実装には、USB1つ・6ポートのSATA・PCI Express2つ付いており、拡張性もかなり高い。

IPMIは、BIOS上から設定したIPアドレスにWebブラウザでアクセスすると操作できる。Javaサーブレット製のコンソールを開くと、ISOイメージマウントも行える。

ネットワーク切り替えついでに、手頃なスイッチGS116Eも買った。NetgearのVlan/QoSなどに対応したL2スイッチだ。ビジネス向けということもあり、かなり安定性が高いと評判を見かける。自宅のc2970g-24ts-eはアイドル時で消費電力が70W有る一方、この機種は最大で10W程度だ。

https://www.amazon.co.jp/gp/product/B00GQL3U2M

Netgearのスイッチは、Windowsにインストールするユーティリティソフト・WebUIの2種類の設定方法が提供されている。ユーティリティソフトのインストール画面を見てほしい。

闇過ぎる。操作画面を乗せるには刺激が強すぎるので、どうしても見たい人はググってFlash全盛期のUIを見て懐かしさに浸ってほしい。

 

赤鯖のCPU情報。ノート向けCPUにノート向けRAMを積んでいる。

 

構築

今回はこのような構成のネットワークを構築する。

  • 赤鯖にはWindows10を入れ、Hyper-Vを有効にする
  • Hyper-V上にVyosをインストールし、仮想スイッチでGS116E2本イーサーを接続する
  • GS116EはVLAN2を割り当てた3ポートを残し、残りの13ポートはVLAN1に設定する(すべてアクセス)
  • 対向はフレッツ・IIJ FiberAccess/NF・TransixによるDS-Lite
  • ひかり電話は契約しておらずIPv6のプレフィックスは/64のため、Vyosの外側・内側インタフェースをブリッジする

 

Netgear GS116E

WebUIの方が格段に使いやすいため、そちらを使う。(AdobeAirの方はVLAN設定を行うとするとエラーが出て神)

ポイントとなるのが、 ポートベースVLANを使用せず、全て802.1Qのアクセスポートを使用してVLANを構築する こと。前者で設定すると、異なるVLAN同士をブリッジでつなげた際に、MACアドレスの学習テーブルがぶっ壊れて、疎通・切断を繰り返すようになる模様。詳しくは調査していない。

1-13をVLAN1・14-16をVLAN2とした。

 

Vyos on Hyper-V

赤鯖にWindows10をインストールするにはコツが必要だった。ISO/USBのインストールディスクを挿入しても、インストーラーが途中までしか進まない。なので、他のマシンにディスクをマウントし、インストールを済ませてから赤鯖にディスクを挿入した。Hyper-Vに物理ディスクをアタッチし、これを行った。

VyosをHyper-Vにインストールした。RAM 512MB・CPU1コアで元気に動いてくれる。

最初に、ブリッジを使用するにあたって、Hyper-V上で「MACアドレスのスプーフィング」を有効にしておく。これで、仮想NICに割り当てられていないMACアドレスのパケットを流せるようになる。

まず、雑にeth0/eth1/br0を作る。貧乏で/64しか貰えないので、eth0とeth1をブリッジする。

interfaces {
    bridge br0 {
        address xxxx:xxxx:xxxx:xxxx::1/64
        address 192.168.11.1/24
        aging 300
        dhcpv6-options {
            parameters-only
        }
        ipv6 {
            address {
                autoconf
            }
            disable-forwarding
            dup-addr-detect-transmits 1
        }
    }
    ethernet eth0 {
        bridge-group {
            bridge br0
        }
    }
    ethernet eth1 {
        bridge-group {
            bridge br0
        }
    }
}

次に、transixのDS-Liteを利用するため、トンネルデバイスを作成する。本来、DHCPv6で貰ったDNSで名前を引いた上でトンネルを作成するらしいが、ドメイン名でのトンネル作成に対応していないためこうしている。

RemoteIPはこちらで確認できる。http://www.mfeed.ad.jp/transix/ds-lite/

interfaces {
    tunnel tun0 {
        encapsulation ipip6
        local-ip xxxx:xxxx:xxxx:xxxx::1
        multicast disable
        remote-ip 2404:8e01::feed:100
    }
}
protocols {
    static {
        interface-route 0.0.0.0/0 {
            next-hop-interface tun0 {
            }
        }
    }
}

疎通を確認し、FWの設定を投入する。

IPv4のグローバルアドレスは存在しないため、FWの設定を現段階で行っていない。IPv6に関しては、ブリッジを使用しているため、ポートを指定してのルールが書けない。アドレスを指定してルールを記述する。

firewall {
    ipv6-name ipv6fw {
        default-action drop
        rule 100 {
            action accept
            protocol icmpv6
        }
        rule 110 {
            action accept
            description ds-lite
            protocol 4
        }
        rule 200 {
            action accept
            description out
            source {
                address xxxx:xxxx:xxxx:xxxx::0/64
            }
        }
        rule 210 {
            action accept
            destination {
                address xxxx:xxxx:xxxx:xxxx::0/64
            }
            state {
                established enable
                related enable
            }
        }
    }
}

 

リザルト

速度

改善前(EdgeRouter-Lite)

改善後

手元マシンのCPU負荷が100%近くになり、これ以上はHTTPSがボトルネックになり測定できない模様。日本の上位3%の速度らしい。VyosのCPUは1コアしか割り当てていないが、この時も5%程度しかCPUを使用していない。

EdgeRouter等のARMルーターはipip6等のトンネルに対してオフロードを持たないことが多く、かなりのリソースを消費し、200Mbpsも流すとWebUIすら表示できなかった。それに比べx86鯖は素の性能が高く、スループットが非常に良くなるという予想。

 

消費電力

  • アイドル: 25W
  • 負荷時: 50W

(ドライブにSSD使用)

 

課題点

ハイパーバイザーにWindowsのHyper-Vを選択したため、 Windows Updateでルーターが定期的に再起動 する。これに対し、フレッツ側の回線に対してもスイッチでポートを増やしているので、いずれEdgeRouterとのVRRPを行って冗長構成を持つことで回避したい。

ただ、Hyper-Vは自体は脳死で使えて非常に良いので、みんな使ってほしい。コンシューマOSでこれ使えるの凄い。