赤鯖に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でこれ使えるの凄い。

Continue Reading

KVMスイッチを仮想マシンで実現する

仮想化のKVMではなく、鯖に繋ぐKVMです。vmware-kvmで仮想マシンを起動すると、フルスクリーンで起動されます。そして、指定したキー(標準はPause/Break)を押すと一瞬でホストマシンに切り替わります。いまいち何言ってるかわからないと思うので、試すほうが早いと思います。

Continue Reading

DNSを手で再帰問い合わせ(nslookup)

nslookupをset norecurseしてやれば再帰問い合わせが無効になります。

.

再帰問い合わせを無効にして、ルートサーバに接続します。ルートサーバは13個あり、IPアドレスのリストはWikipedia等からも参照できます。

PS C:\> nslookup.exe
既定のサーバー: setup.netvolante.jp
Address: 192.168.11.1
 
> set type=a
> set norecurse
> server 202.12.27.33
既定のサーバー: [202.12.27.33]
Address: 202.12.27.33

ここのブログのドメインを聞きます。

Continue Reading

WindowsのnslookupでPTR見よう

PS C:\> nslookup.exe - 54.64.30.14
既定のサーバー: UnKnown
Address: 54.64.30.14

> set type=ptr
> 17.17.17.172.in-addr.arpa
サーバー: UnKnown
Address: 54.64.30.14

17.17.17.172.in-addr.arpa name = id.is.upt.password.is.xtwe
17.17.172.in-addr.arpa nameserver = 17.17.172.in-addr.arpa
17.17.172.in-addr.arpa internet address = 54.64.30.14
Continue Reading

MySQL Workbench 6が使いやすいというお話

お久しぶりです

最近PHPフレームワークのLaravel4にハマってます 面白い

どんなWebサービスを作るにあたってもやっぱりDBって核に成ることが多いと思います。個人的にはNoSQLが好きだったりしますが、速度と安定を求めるとやっぱりMySQLやMariaDBに戻ってきたりなんとか。

リレーション組むのにER図を手で書くのもバカバカしいし、PhpMyAdminでポチポチやるのもアホっぽい。ということでMySQL公式のスキーム作るソフト紹介します。

MySQL Workbench

Windows・Linux・Max それぞれに対応します。

ER図追加

確かAddDiagram押したら作れました

スクリーンショット 2014-05-28 00.02.45

Continue Reading

iPhone5バンパー購入

どうもカミジンです
さっきまでたこパしてました

カミジン氏のiPhone5はケースにより大変ダサかったのですが、この度良いバンパーを購入して随分とかっこよくなりました。

 

これが箱です。iPhone本体のケースを意識したマットな紙でした。

Continue Reading

ajaxでPHPに重い処理を複数呼ぶ時の注意点

どうもカミジンです。
PHP開発でハマってました。

Ajaxでsleep(1)って書いたPHPに10個要求飛ばすと1秒で終わらず10秒かかって悩んでました。

原因はセッション。おそらく、セッションが開始している時にセッションを開始しようとするとブロックされるということでしょう。セッションが自動開始するphp.iniの設定もあるのでおおいにハマりそう。

自動的にセッションを開始するphp.iniの設定
session.auto_start = 1

なので、重い処理の前にセッションを終了しておく

session_write_close();

が正解でした。

Continue Reading
  • 1
  • 2
Close Menu