FortiGateの設定コマンドを階層レベルを含めてgrep検索する便利な方法
2020/02/28
FortiGateの設定コマンドが分からない!
Fortinet社のUTM製品、FortiGateのコマンド(CUI・CLI)操作による設定方法は、日本語でくわしく解説されているサイトはあまり多くありません。
そのため設定用のコマンド操作が見つからず、困ってしまうことがあるかもしれません。
そこで今回は、設定用のコマンドを簡単に調べる方法や、階層レベルを含めてgrep検索する便利な方法をご紹介します!
FortiGateの設定用コマンドを簡単に調べる方法
FortiGateの設定用コマンドを調べたい場合、FortiOS CLI Referenceなどを見れば、たいていのことは分かります。
ですが膨大な資料の中から目的の設定を行うコマンドを探すのは、慣れるまではけっこう大変です。
そこでおすすめしたいのが、ひとまずGUI(ブラウザーを使った設定方法)で設定を行い、その設定内容をコマンド(CUI・CLI)設定の中から探して参考にする、という方法です。
今回はFortiGateにDNSサーバーを設定するケースを例に、その方法をご紹介しましょう。(FortiOS 5.4.6で動作を確認。)
FortiGate(FortiOS 5.4.6)でブラウザーを使ってGUI操作でDNSサーバーの設定を行う場合、画面左側にある『ネットワーク』→『DNS』とクリック。
この操作により表示される『DNS設定』画面で設定を行います。
そして『DNS設定』画面で任意の『プライマリDNSサーバ』と『セカンダリDNSサーバ』を設定。
その後『適用』ボタンをクリックすればDNSサーバーが設定され、コマンド(CUI・CLI)設定にも反映されています。
FortiGateのコマンド(CUI・CLI)設定は以下コマンドを実行すれば、出力可能です。
1 | show full-configuration |
ただこの『show full-configuration』コマンドは、FortiGateの全設定内容が出力される仕様であり、膨大な量の設定値が出力されます。
したがって目的の設定項目、今回の例ではDNSサーバーの設定が行われている箇所の設定コマンドを目視で探すのは困難でしょう。
そこで特定の文字列を含んだ設定コマンドの行を抽出し、目的の設定コマンドを調べます。
特定の文字列を含んだ設定コマンドの行を抽出する方法
特定の文字列を含んだ設定コマンド行を抽出したい場合、『show full-configuration』と『grep』コマンドを併用します。
FortiGateの全設定内容のうち、たとえばtestという文字列を含んだ設定コマンド行を抽出したければ、以下のようにコマンドを実行します。
1 | show full-configuration | grep "test" |
そのためDNSサーバーの設定コマンド行を調べたければ、DNSサーバーに設定したIPアドレスを『grep』コマンドに設定してあげればOKというわけ。
仮に『DNS設定』画面で『プライマリDNSサーバ』にxxx.xxx.xxx.xxxというIPアドレスを指定したとすれば、以下コマンドを実行します。
1 2 3 4 | # show full-configuration | grep "xxx.xxx.xxx.xxx" set primary xxx.xxx.xxx.xxx # |
『grep』コマンドに設定した文字列が、他の設定項目にも使われていた場合について
xxx.xxx.xxx.xxxというIPアドレスが他の設定項目にも使われていたなど、『grep』コマンドに設定した文字列が、他の設定項目にも使われているケースでは、複数の設定コマンド行が表示されます。
この場合は絞り込まれた各設定コマンドについて、FortiOS CLI Referenceなどを確認し、設定コマンドを特定する。
または、一時的に他の設定コマンドと重複しない設定値にGUIで変更の上、再度『grep』コマンドによる抽出を実行すると良いでしょう。
階層レベルを含めてgrep検索する方法
FortiGate(FortiOS 5.4.6)では、コマンドの階層※に応じて実行可能なコマンドが異なります。
これはたとえばルート階層であれば『config』や『get』、『show』など、『config』階層であれば『alertemail』、『antivirus』、『application』といった具合いです。
※階層という表現が適切かどうかは分かりませんが、階層構造になっているコマンド入力モードのようなものを切り替えて設定を行います。
そして先ほど『show full-configuration | grep “xxx.xxx.xxx.xxx”』コマンドによって調べた、『プライマリDNSサーバ』にxxx.xxx.xxx.xxxというIPアドレスを設定する『set primary xxx.xxx.xxx.xxx』コマンドは、『config system dns』階層でなければ使用できない設定コマンドです。
そのため実際に設定をコマンド(CUI・CLI)操作で行う場合には、以下のように『config system dns』コマンドを実行し、コマンド入力モード(階層)をconfig system dnsに変更しておく必要があります。
1 2 3 | config system dns set primary xxx.xxx.xxx.xxx end |
したがって設定コマンド行を抽出する際に、階層レベル(コマンド入力モード)を含めてgrep検索できた方が便利でしょう。
これは以下のように、『grep』コマンドに『-f』というオプションを追加して実行すれば取得可能です。
1 2 3 4 5 6 7 8 9 10 | # show full-configuration | grep -f "xxx.xxx.xxx.xxx" config system dns set primary xxx.xxx.xxx.xxx <--- set secondary xxx.xxx.xxx.zzz 中略 end # |
『grep』コマンドに『-f』オプションを付けて設定コマンド行を抽出すると、結果が複数行取得されます。
そして抽出条件に該当した設定コマンド行は、上記結果の『set primary …』行のように、設定コマンドの右隣に左向きの矢印で分かりやすく表記される仕組みです。
以上、FortiGate(FortiOS)の設定コマンドを調べる際の参考になさってくださーい!