EdgeOSの設定項目の階層構造を理解する

はじめに

EdgeRouter Lite (ERLite-3)をCLI (Command Line Interface)で設定しているうちにようやく基本が理解できたのでメモです。

EdgeOSとは

EdgeOS 日本語Wiki [非公式] の「EdgeOS とは」と「VyOS・Vyatta との違い」の説明がわかりやすかったです。

CLIの設定の基本操作

コマンド > コマンド一覧 - EdgeOS 日本語Wiki [非公式] の「CLI の基本操作」がとっかかりとしては良かったです。

公式のEdgeOS User Guideのダウンロード

Ubiquiti NetworksのERLite-3用のファームウェアとドキュメントのダウンロードページ から “EdgeOS(TM) User Guide” がダウンロードできました。

.. image:: {attach}/images/2017/05/13/Ubiquiti-Networks-Downloads-ERLite-3.png :width: 538px :height: 410px :alt: ERLite-3 document and firmware download page

このページへの行き方もメモしておきます。

  1. Ubiquiti Networks - Wireless networking products for broadband and enterprise の右上の “Support” をクリック。
  2. Ubiquiti Networks Support and Help Center で “EdgeMax” をクリック。
  3. EdgeMAX – Ubiquiti Networks Support and Help Center で “Latest Software” をクリック。
  4. Ubiquiti Networks - Downloads の左のツリーで “EdgeRouter Lite” の “ERLite-3” を選択。

EdgeOS User GuideのCLIでの設定の流れの説明

Appendix AのCommand Line Interfaceにコマンドラインでの設定の流れについて図入りで詳しく説明されていますのでぜひご覧ください。

CLIの補完とコマンド履歴検索

設定の流れ

設定の構造を意識する必要がある例

DHCPサーバーの設定を例として示します。

set service dhcp-server shared-network-name LAN2 subnet 192.168.3.0/24 start 192.168.3.2 stop 192.168.3.99

この設定を削除するには以下のコマンドを実行すれば良いかと当初は思っていました。

delete service dhcp-server shared-network-name LAN2 subnet 192.168.3.0/24 start 192.168.3.2 stop 192.168.3.99

compare コマンドを実行すると以下のように表示されました。

ubnt@ubnt# compare
[edit service dhcp-server shared-network-name LAN2 subnet 192.168.3.0/24 start 192.168.3.2]
-stop 192.168.3.99
[edit]

仕組みを一旦理解した後ならこの出力でもわかるのですが、 show コマンドを実行したほうがわかりやすいです。出力が長いので以下では抜粋して示します。

ubnt@ubnt# show
…(略)…
 service {
     dhcp-server {
         disabled false
         hostfile-update disable
…(略)…
         shared-network-name LAN2 {
             authoritative disable
             subnet 192.168.3.0/24 {
                 default-router 192.168.3.1
                 dns-server 192.168.3.1
                 lease 86400
                 start 192.168.3.2 {
-                    stop 192.168.3.99
                 }
             }
         }
         use-dnsmasq disable
     }
…(略)…

service > dhcp-server > shared-network-name LAN2 というキーのパスになっていることがわかったので、以下のコマンドでその部分だけを表示してみます。

ubnt@ubnt# show service dhcp-server shared-network-name LAN2
 authoritative disable
 subnet 192.168.3.0/24 {
     default-router 192.168.3.1
     dns-server 192.168.3.1
     lease 86400
     start 192.168.3.2 {
-        stop 192.168.3.99
     }
 }
[edit]

この後、以下のようにDHCPで払い出すIPアドレスの範囲の終端だけを違う値に設定するのであれば、変更内容は以下のようになり問題はありません。

ubnt@ubnt# set service dhcp-server shared-network-name LAN2 subnet 192.168.3.0/24 start 192.168.3.2 stop 192.168.3.199
[edit]
ubnt@ubnt# show service dhcp-server shared-network-name LAN2
 authoritative disable
 subnet 192.168.3.0/24 {
     default-router 192.168.3.1
     dns-server 192.168.3.1
     lease 86400
     start 192.168.3.2 {
>        stop 192.168.3.199
     }
 }
[edit]

ですが、開始と終端のアドレスを両方変えたい場合は、以下の手順ではまずいです。 ここでは上の変更を破棄するため一旦 discard コマンドを実行して delete をやり直した後、開始と終端のアドレスを変えようとしています。が、差分を見ると変更前の開始アドレス start 192.168.3.2 の設定が残ってしまっています。

ubnt@ubnt# discard
Changes have been discarded
[edit]
ubnt@ubnt# delete service dhcp-server shared-network-name LAN2 subnet 192.168.3.0/24 start 192.168.3.2 stop 192.168.3.99
[edit]
ubnt@ubnt# show service dhcp-server shared-network-name LAN2
 authoritative disable
 subnet 192.168.3.0/24 {
     default-router 192.168.3.1
     dns-server 192.168.3.1
     lease 86400
     start 192.168.3.2 {
-        stop 192.168.3.99
     }
 }
[edit]
ubnt@ubnt# set service dhcp-server shared-network-name LAN2 subnet 192.168.3.0/24 start 192.168.3.100 stop 192.168.3.199
[edit]
ubnt@ubnt# show service dhcp-server shared-network-name LAN2
 authoritative disable
 subnet 192.168.3.0/24 {
     default-router 192.168.3.1
     dns-server 192.168.3.1
     lease 86400
     start 192.168.3.2 {
-        stop 192.168.3.99
     }
+    start 192.168.3.100 {
+        stop 192.168.3.199
+    }
 }
[edit]

また、上記のように別の設定を追加するのではなく、単に削除したい場合も上記の手順ではまずいです。 今回の場合、古い設定の削除は以下のように start とその値までを指定して stop 以降は含めないのが正解でした。

ubnt@ubnt# delete service dhcp-server shared-network-name LAN2 subnet 192.168.3.0/24 start 192.168.3.2
[edit]
ubnt@ubnt# show service dhcp-server shared-network-name LAN2
 authoritative disable
 subnet 192.168.3.0/24 {
     default-router 192.168.3.1
     dns-server 192.168.3.1
     lease 86400
-    start 192.168.3.2 {
-        stop 192.168.3.99
-    }
+    start 192.168.3.100 {
+        stop 192.168.3.199
+    }
 }
[edit]

ということで、設定項目の階層構造を把握しつつ設定の削除や変更を行う必要があるという話でした。