17,000円で買えるVyOSっぽいOSが動くルーター EdgeRouter Lite(ERLite-3)を使ってみる

知り合いが EdgeRouter Liteを売ってる こともあり、Ubiquiti NetworksのEdgerouter LITE(ERLite-3)を自宅のPPPoE側のルーターとしてひとつ活用しています。

Ubiquiti Networks はVyattaからフォークしたOSが入った専用アプライアンスを売っていて、ほぼVyatta(VyOS)っぽい文法で設定でき、一部の機能(綺麗なWebGUIとかVPN周りとかUPnP対応とかいろいろ)が追加されたルーターというか、ネットワークアプライアンスとか言うんでしょうか。そんなやつです。

特徴はざっくり

  • 同等性能くらいの有名メーカーのものに比べるとかなり安い。ERLite-3も機能だけで言えば、Vyatta(VyOS)相当が載っているわけで、ルーティング関係、PPPoEとかもふくめた各種インターフェース、トンネリング、VPN、DHCP,DNSとかの各種サービスとか一通りできるてんこ盛りです
  • それで、17,000円とかで買えます。ER-Xでよければ、1万円で買えます。
  • 専用のアプライアンスなので、とりあえずインストールしなくても最初からEdgeOS入ってて、シリアルコンソールが使えるので最初が楽
  • Vyattaというか、VyOSをPCで動かすのに比べれば圧倒的に低消費電力

これに加え、Vyatta(VyOS)を使ういろんなメリットがほぼ享受できます。なので、YAMAHA NVR500とか買おうかなとか思う人とかには結構、対抗馬としてはアリなんじゃないかなとか思ってます。 違いも多いので、しっかり比較検討しましょうではあるのですが、自分でいろいろいじる人には最終的にタダのLinuxなのでなんでもできると思う人とかには良さげなんじゃないでしょうか。

で、私の環境では、そんなことを言いながら、メインはVyOSが動いているPCでDS-Liteで外に出て行くのが基本で、こちらは主に外からのアクセス用にPPPoE側の維持しています。(EdgeOSはIPv4 over IPv6なIPIPトンネルに対応してないのです……もちろん、ipコマンドで設定してしまえば使えるのですが) 元々は両方をVyOS側で受けてポリシールーティングでPPPoEからはいってきたやつはそっちから出すとかやってたんですが、結局、PPPoE側から直接アクセスするのは一部だけだし、ほかは結局VPNだしってことで今は安定性重視で分離しています。

今回の流れは、とりあえずPPPoEを設定してNAPTする、いわゆる市販のブロードバンドルータ的機能を一通り有効にするところまでまずはやってみました。ただの作業メモとも言う。

erlite-3

こんな感じのサイズ感。下でうごいてるマザーボードむき出しPCがVyOS動いているやつです。

ざっとした構成

eth0がフレッツ直下につながっていてIPv4は特に割り当てません、eth1はLAN側で、192.168.99.0/24です。eth2はとりあえず何もつなぎません。

とりあえず、デフォルトのIP設定とかよく分からんし、デフォルト設定の環境合わせるのとかもめんどいので、シリアルコンソールを使います。 いわゆるCisco的なやつにつながるRJ45なケーブルさえあればデフォルトでシリアルコンソールは有効です。

Macから適当にscreenでつなぎます。

$ screen tty.usbserial-FTXQLKDF 115200

ログインプロンプトがでてくるので、デフォルトのユーザでログインします。
ubnt / ubnt でログイン

とりあえずIPアドレスだけ、下記のような形で設定します。
ethernet eth1 {
    address 192.168.99.1/24
    duplex auto
    speed auto
}

あと、今回はせっかくなので、GUI(Webブラウザ)で設定できるようにもしてみます。ついでに、SSHも有効に。 今回は基本、WebGUIで設定して、生成された設定を見ていく感じで進めていきます。

service {
    gui {
        https-port 443
    }
    ssh {
        port 22
        protocol-version v2
   }
}

ここまでやれば、とりあえずシリアルコンソールよりSSHかWebGUIで大体事足りるのでそちらに移行します。

ユーザの追加

さすがにデフォルトユーザのままはどうなのよというのもあるので、まずubntを削除して適当なユーザを追加します。

WebGUIのUsersから単に追加します。今回はmat2ukenです。 その後、ログアウトから作った新規ユーザでログインしなおしてからubntを削除すると、とりあえず作ったユーザのみでログインできるようになります。これはSSHとかでも同一ユーザーが有効です。

PPPoE設定

ここからは基本、WebGUIから設定です。

DashboardのPPPoEタブを選んで、Add Interfaceで作ります。 PPPoEは私はIIJmioなので、そちらのアカウントでusernameとpasswordを設定、MTUを1414とします。(適切なMTUはよく分かってません……1454?)

すると、下記のような設定が追加されるようです。

pppoe 0 {
    mtu 1414
    password ****************
    user-id nbdXXXXXXXX@iij.ad.jp
}

その後、SNATでマスカレード設定します。

Firewall/NAT→NATをえらんで、Add Source NAT Ruleを押すと、Outbound Interfaceにpppoe0を選び、TranslationをUser Masqueradeにします。 ProtocolはBoth TCP and UDPを選択します。All protocolsでもいいような気もしますが。

これで、下記のような設定が生成されます。

service {
    nat {
        rule 5000 {
            description defaultroute
            log disable
            outbound-interface pppoe0
            protocol tcp_udp
            type masquerade
        }
    }
}

MSS clampの設定

MSS clampはWebGUIからどうやんのかなーとおもってさがしてみたら、そもそもWizardってのがあって、そちらから設定できるようです。 もしかして、いままでの設定もWizardから行けたのかなとおもいつつ、もうやっちゃったので、MSS clampだけWizardから設定します。

Wizard -> TCP MSS clampingから、Enable MSS clamping for TCP connectionsにチェックをいれるだけ。Interface TypeはPPPoEに、MSSはPPPoEのMTUと合わせて1414としておきます。

すると、下記のような設定が生成されます。

firewall {
    options {
        mss-clamp {
            interface-type pppoe
            mss 1414
        }
    }
}

PPPoEのオフロードを無効に

EdgeRoute Liteではオフロード設定がデフォルトで入っているのですが、これが有効だとPPPoEはむしろ遅くなるようです。 なので、pppoeは無効にする設定を追加します。

GUIでそういった項目はないので、単にConfig Treeからsystem - offload - ipv4 で触ります。 CLIでいうと、

set system offload ipv4 pppoe disable

を実行すると、無効にできます。

実際、speedtest.netでの実行結果も、11/1の16時ごろのほぼ同タイミングで計測で、

・オフロードが有効 → Upload/Downloadとも20-30Mbps前後 ・オフロードが無効 → Download 80Mbpsくらい、Upload 200Mbpsくらい

と結構劇的に変化します。SoCの機能としてチェックサムのオフロードなのだとおもいますが、ソフトのほうが圧倒的に速いのでしょうか。しかし、どうも影響はPPPoEのみのようでもあるので割と謎です。

いわゆるポートフォーワーディングの設定

要はDNATなので、NAT設定から行ってもよいのですが、GUI上ではPort Forwardingという設定が別に用意されているようです。

80を転送する場合は、

  • WAN Interface pppoe0
  • Hairpin NATは一応有効に
  • Auto firewallも有効に
  • LAN Interfaceはeth1を追加

Port forwarding rulesは

  • Original Port 80
  • Protocol TCP
  • Forward-to address 192.168.99.248
  • Forward-to Port 80
  • Description HTTP

これでApplyすれば有効になります。

80をそのまま転送はどうなのよとかあれば転送元ポートは変えるとかで対応しましょう。今回はこの先、基本認証が必要ということでそのままにしています

生成されるルールは下記のようです。

port-forward {
    auto-firewall enable
    hairpin-nat enable
    lan-interface eth1
    rule 1 {
        description foltia
        forward-to {
            address 192.168.99.248
            port 80
        }
        original-port 80
        protocol tcp
    }
    wan-interface pppoe0
}

って、VyOSではみたことのない、PortForwadという設定が追加されています。これって、EdgeOS独自なのでしょうか。たあ、意味は割とシンプルに読み取れるのでこのままでもよさそうです。

DNS関係

DNS Forwardingはせっかくなので、設定しておます。Cache Sizeはひとりだし適当に1000くらいに。 Interfaceはeth1を設定します。

PPPoEは今回、変動するIPなので、DynamicDNSを一応設定しておきます。今回は、freedns.afraid.orgにしました。 DNS -> Dynamic DNSを選びます。

Interfaceはpppoe0、Web はURL で、更新用URLをサービスからもってきます。

  • Service afraid
  • Login [Username]
  • Paswword [設定したもの]
  • Protocol 選択なし
  • Server freedns.afraid.org

を設定してApplyします。

こんな感じの設定が生成されます。

service {
  dns {
      dynamic {
          interface pppoe0 {
              service afraid {
                  host-name xxxx.mooo.com
                  login [Username]
                  password ****************
                  server freedns.afraid.org
              }
              web http://freedns.afraid.org/dynamic/update.php?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          }
      }
      forwarding {
          cache-size 1000
          listen-on eth1
      }
  }
}

UPnPの設定

EdgeOSはUPnPに対応しているのでせっかくなので有効にしておきます。 WizardからUPnPをえらんで、Internal interface -> eth1, External interface -> pppoe0をえらんで、Applyです。

生成される設定は下記

service {
  upnp {
      listen-on eth1 {
          outbound-interface pppoe0
      }
  }
}

おわりに

これで、このルータをデフォルトゲートウェイに設定すると、とりあえず普通に使えるようになってると思います。ポートフォーワーディングも任意に追加できます。

GUIからの設定生成でも割と必要最小限で、分かりやすい設定を吐いてくれるので好感触ですね。あとからCLIでいじるのもこれならできそうです。ちなみに、CLIからcommitをすると、ブラウザ側でちゃんと検出してRefreshを求められるし、CLIにログインしたままWebGUIで設定すると警告が表示されたりと両方をつかった設定に気を遣っている感じもあり、この辺はよく作られているなーという感じ。

これ以降はおそらくCLIが中心になりそうなきがしますが、VPNあたりはWebGUI使ってみたい気もしています。たぶん、続編でVPNやVLANあたりはあるかもしれません。

知り合いは ERLite3 をほかの並行輸入品とちがって、ちゃんとPSE対応のACアダプタに変えたりしてちゃんと売ってるのでそういった面でもオススメ。ほかにも、もっと安い ER-X や8ポートあって1Uなラックマウントができる ER-8 も売っているのでそちらも是非。OSは全部一緒なので、一度慣れるとどれでも同様に扱えます。

特にER-8は8ポートともちゃんとMAC搭載で、別々のインターフェースとして扱える、相当なんでもできるやつです。こっちはひとつ借りて、会社にお試し導入してみようかとおもっているので、そちらもまたレビューしようかと思います。