とりあえずブログ作ってみた、的なブログ

このブログの99.99%は「与太話」でできています。

Fortigateを設定してみた(その1・基本設定とインターネット接続)

さて、ここからはFortigateの設定。早速電源を入れてみる。
「STATUS」のランプが点滅から点灯に変わって、起動完了。一応、起動に問題はなさそうだ。ということで設定にとりかかる。

Fortigateの場合、設定方法は2種類ある。
 ・Webインタフェース(Webブラウザを使ったグラフィカルインタフェースでの設定)
 ・コマンドラインインタフェース(CLITeraTermなどのターミナルソフトを使ったコマンド入力での設定)
Webインタフェースの方が設定が楽なので、最初はWebインタフェースから設定を行うことにする。

本体の「Internal」ポート(ポートの説明については後述を参照)にノートPCを接続し、Webブラウザを起動して、「192.168.99.1(初期状態のIPアドレス)」と入力するとログイン画面が表示されるので、ここで
 ・Name      : admin
 ・Password : 空白(何も入力しない)
を入力してログインする。
イメージ 1
ログインすると、下図のような画面が表示される。ここから、各種の設定を行っていくことになる。
イメージ 2

まず最初に、表示言語が英語なので日本語表示に切り替える。
イメージ 3

画面左側で「System」-「Admin」-「Setting」の順に辿ると、画面右側が下図のように切り替わる。
イメージ 4
この中にある「Language」のプルダウンから「Japanese」を選択して、画面下の「Apply」ボタンを押すと、画面表示が日本語に変わる。

表示が日本語に切り替わったところで、機器の基本設定を行っていく。
画面左側で「System」-「Dashboard」-「Status」の順に辿ると、ログイン直後に表示されていた画面(ダッシュボード)に戻る。
ここでまず、
 ・ホスト名
 ・システム時間
の設定を行う。
イメージ 5
これらの設定は、画面中央上の「システムステータス」にて行う(ちなみに、その下にある「CLIコンソール」はコマンド入力ができるコンソール。FortigateではWebブラウザからもCLIが利用できる)。
ホスト名の設定は、「ホスト名」の右側にある「変更」リンクを、システム時間の設定は「システム時間」の右側にある「変更」リンクをクリックして行う。

システム時間の設定画面はこんな感じ。
イメージ 6
システム時間は手動設定の他、NTPサーバからの自動取得ができる。なお、上図ではNTPの設定となっているが、インターネット接続前にこちらの設定を行うと設定画面が固まる可能性があるため、NTPを使用する場合、最初は手動設定としておいて、インターネットへの接続設定が完了後にNTPに変更した方がいい。あと、「タイムゾーン」を「(GMT+9:00)Osaka,Sapporo,Tokyo,Seoul」に設定することを忘れないように。

以上でホスト名とシステム時間が設定される。
あと、セキュリティを確保するために、管理者(Adminユーザ)のパスワードは早めに設定しておいた方がよい。

次にネットワークの設定に入るが、その前にFortigate-40Cのインタフェースについて説明を。
Fortigate-40Cのインタフェースは、下図のようになっている。イメージ 7
RJ45(LANケーブルなどのコネクタ)のポートは全部で8つ。内訳は次の通り。
 ・WAN1、WAN2  ... 主にWAN(インターネット等)やDMZの接続に用いる
 ・Ethernet Ports ... 内部ネットワーク(社内、自宅内等)の接続に用いる
             なお、システム内部では「Internal」と表現される(以下、「Internal」と表記)
 ・Console Port   ... コンソールケーブルを用いたCLIによる管理に用いる

余談までに、Console Port以外の7つのポート(WAN1、WAN2、Internal5つ)については、ぶっちゃけどのポートも設定項目は同じなので、極端な話、Internalをインターネット接続用に、WAN1を内部ネットワーク用に設定することも可能なのだが、あえてそれをやる意味がないので、普通は上記のような使い方をする。

また、Internalポートについて補足すると、Internalの5つのポートは「スイッチモード」と「ポートモード」の2種類のモードを選択することができる。イメージは下図のようになる。
イメージ 8
「スイッチモード」では、5つのポートをひとまとめにして「Internal」として扱う。イメージとしては、VLAN等で分割されていない状態のL3スイッチみたいなもの。つまり、例えばInternalに「192.168.1.1」というIPアドレスが設定されている場合、Internalインタフェースの1~5のどのポートも「192.168.1.1」となる。ファイアウォール的に言えば、すべてのポートが「Internal」というゾーンに属することになる。

それに対して、「インタフェースモード」では、Internal1~Internal5がそれぞれ独立したインタフェースとなる。つまり、Interface1に「192.168.1.1」、Interface2に「172.16.1.1」といった具合に別々のIPアドレスを割り当てられる。ファイアウォール的にはそれぞれのポートが別々のゾーンに属することになる。ネットワークが複数あって、それぞれのセキュリティレベルを分けたい場合などに利用する。今回、我が家の環境ではこちらのモードを使っている。余談だが、Fortigate-40Cでは「スイッチモード」か「インタフェースモード」の2択しか選べないが、上位機種では「1番ポートはポートモード、残りのポートはスイッチモード」のような柔軟な構成が可能なものもある。

なお、諸々の設定が完了した後でInternalのモードを変更すると、ネットワーク設定やファイアウォール設定などの設定もやり直しになるため、どちらのモードを選ぶかは先を見越してよく考えた方がいい。

話を本筋に戻そう。続いてインタフェースの設定を行う。
とりあえずはインターネット接続(WAN1)と自宅内LAN(Internal1)の設定を行えば、最低限の用は足りるので、設定を行っていく。

インタフェースの設定は、「システム」-「ネットワーク」-「インタフェース」の順にメニューを辿っていくことで行う。下図のように、画面右側にインタフェースの一覧が表示されるので、設定したいインタフェースの左側にあるチェックボックスをチェックして「編集」ボタンを押す(または、リストの該当インタフェース部分をダブルクリックする)と、インタフェースの設定を行うことができる。

イメージ 9

こちらは、Internal1(内部ネットワーク用)の設定の様子(画像は一部マスキングしてあります)。
IPアドレスとネットマスク、及び「管理権限アクセス」の設定がメインになる。
「管理権限アクセス」と言うのは、読んで字のごとくFortigateを管理するためのアクセス可否を設定する項目で、例えばこのインタフェース(Internal1)からWebインタフェースでのアクセスを許可する場合、「HTTP」にチェックを入れる、といった具合に設定する。これはどのインタフェースに対しても行うことができる項目だが、インターネット側から直接管理コンソールにアクセスできるのは好ましくないので、通常はHTTPやSSHといった管理コンソールに対するアクセスは内部ネットワーク(今回でいえば「Internal1」)だけに割り当てる。なお、管理コンソール(「HTTP」「HTTPS」「SSH」「TELNET」)に対するアクセス許可をどのインタフェースに対しても割り当てていない場合、ネットワーク経由でのFortigateの操作が一切できなくなる(←ここ非常に重要)ので、注意が必要である。恥ずかしながら、私は本格的な設定に入る前に少しFortigateをいじっていた時に、誤ってこれをやらかしてしまって猛烈に焦った。その場合のリカバリー方法については、後ほど。

イメージ 11

こちらはインターネット接続(WAN1)の設定。
家庭の場合は大抵PPPoEの設定になると思うが、設定自体はブロードバンドルータのそれと大差はない。
管理権限アクセスは設定するとしたら「PING」ぐらい(外部からのPing応答を返したい場合)。なお、下図では「FMG-アクセス」にもチェックが入っているが、FMG(Fortigate-Manager:Fortigateを集中管理する仕組み)には脆弱性があるらしいので、必要がなければ外しておく。
ちなみに、WAN1に限らず、すべてのインタフェースには「エイリアス(別名)」を付けることができるので、インタフェースの目的が分かる名前を付けておくと便利だ。
イメージ 10

ここまでの設定が正しくできていれば、Fortigateがインターネットに接続するようになる(あ、もちろん配線は必要だけど)。WAN1の設定画面上で「ステータス」が「接続」になっていて、IPアドレス等が表示されていれば、少なくとも回線レベルでの接続はできていることになる。接続が確認できたら、Pingコマンドを使って疎通確認をしてみる。これはFortigateのCLIから以下のコマンド(「www.yahoo.co.jp」への接続を確認する場合)を入力することで確認できる。
  execute ping www.yahoo.co.jp

下記のような応答が帰ってくれば、疎通(&名前解決)が正常に行えている。

PING www.g.yahoo.co.jp (183.79.197.242): 56 data bytes
 
64 bytes from 183.79.197.242: icmp_seq=0 ttl=47 time=38.8 ms
64 bytes from 183.79.197.242: icmp_seq=1 ttl=47 time=38.0 ms
64 bytes from 183.79.197.242: icmp_seq=2 ttl=47 time=38.0 ms
64 bytes from 183.79.197.242: icmp_seq=3 ttl=47 time=38.6 ms
64 bytes from 183.79.197.242: icmp_seq=4 ttl=47 time=38.6 ms
 
--- www.g.yahoo.co.jp ping statistics ---
 
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 38.0/38.4/38.8 ms

もし名前解決ができていない場合は、WAN1の設定の「内部DNSを上書き」にチェックが入っているか確認してみるといい。

ここまででFortigateがインターネットにつながるようになった。
で、ダッシュボードに戻ると、更新可能なファームウェアがあるとのこと。「やっぱりファームウェアは最新にしといた方がいいよね」と、さっくりとファームウェアをアップデート。が、実はこれが直後に面倒の種になろうとは、その時は知る由もなかった。

ファームウェアをアップグレードしたのでFortigateを再起動し、再起動完了後にダッシュボードを確認するとファームウェアのバージョンが「FGT40C-5.02-FW-build688-150731」になっていた(更新前は「4.x」)。よしよし、ちゃんとファームウェアもバージョンが上がったし、クライアントPCからインターネットアクセスを試してみるか、ということで早速PCから「Yahoo!JAPAN」にアクセスしてみると・・・つながらない。Pingレベルでの疎通もない、というか名前解決ができていない。考えられるのは、Fortigateが名前解決をできていないということ(クライアントPCのDNSサーバはFortigateを向けてある)だが、Fortigateからは名前解決ができている。ということはFortigateがクライアントに対してDNSキャッシュサーバとして機能していないということになる。

で、原因を探るべくググってみると、FortigateでDNSサーバを有効にするためには設定が必要だと判明した。この辺りはブロードバンドルータと違うんだな、と思いつつ、原因が分かって一安心・・・と思ったら、なんと!DNSサーバを有効にするコマンドを入力しても「そんなコマンドはない」と言われてしまった。該当ファームウェアのバージョンのリファレンスを見ても、確かにコマンドは存在する。なのに目の前の機械は「そんなコマンド知らん!」と言い放つ。何故だ!?坊やだからさ」というボケをかましたくなるが、それは置いといて、更にググって見ると・・・なんと、Fortigate-40Cでは「バージョン5.xのファームウェアではDNSサーバをサポートしていない」という情報に行き当たった。何てこった・・・・

幸いなことに、Fortigateではファームウェアのアップグレードを行っても、以前のファームウェアに戻すことが可能(厳密に言えば、以前のファームウェアが残っていて、そちらを起動用のファームウェアに指定するのだが)ということが分かった。Fortigate、偉い!これがAndroidスマホとかだったら、一度アップグレードしたら後で不具合が発覚しても二度と前のバージョンに戻せないんだよなぁ、と思ってみたり。

イメージ 12

早速ファームウェアを元に戻してDNSサーバを有効にするコマンドを入力すると・・・できた!
再びPCから「Yahoo!JAPAN」にアクセスして、ページが表示されることを確認。

ということで、多少のトラブルはあったが、Fortigateをインターネットに接続することはできた。

教訓:システムのアップデートが常に正しい選択とは限らない。

つづく。


【おまけ:ネットワーク経由でFortigateの管理インタフェースにアクセスできなくなった場合の対処法】
この場合の方法としては、大雑把に言って2通りの方法がある。
 1.本体にコンソールケーブルを接続してCLIで設定を変更する
 2.本体をリセットして設定をクリアする

2.の方法の場合は、本体にあるリセットスイッチを針金などの細い棒で30秒長押ししてやることでリセットできる。ただし、これをやるとBOOTイメージ(OS)も初期化されてしまうとの情報がある(OSが出荷時状態に戻るのか、OSが消去されるのかまでは不明だが)ので、こちらは最終手段と思っておいた方が良さそうだ。

1.の方法の場合は、本体の「CONSOLE」ポートに「コンソールケーブル」と呼ばれるケーブルを接続し、PC本体のシリアルインタフェースと接続する方法が普通なのだが、ここで問題が2つある。一つ目は「コンソールケーブルがない」こと。コンソールケーブルはCiscoのルータ等の設定ではしばしば使うのだが(FortigateもCiscoのコンソールケーブルで接続できたはず)、企業ならともかく、一般家庭に普通に転がっているケーブルではないし、パソコンショップに普通に置いてある代物でもない。ヤフオクあたりでなら入手可能だが。実のところは昔個人的な勉強用途でCiscoの中古ルータを買った際にコンソールケーブルも買ったので、家の中を探せばどこかにはあるはずなのだが、どこにしまい込んだのか記憶がない。そして二つ目の問題として、「そもそも今使っているPCにシリアルポートが付いていない」。なのでシリアル接続のコンソールケーブルを使おうと思えば、USB-シリアル変換ケーブルを調達しなければならない。どちらにしても、今すぐどうにかなる話ではない。さて困った。

が、世の中捨てた物ではない。Fortigateの背面のインタフェースを見ると「USB MGMT」と書かれたUSBポートがあり、そして本体の同梱品にはUSBケーブルが・・・導き出される結論は一つ-「FortigateはUSB経由でも設定ができる」はずだと。そうなればあとは方法を調べるだけ。早速ググってみると・・・あった-計画通り!USB経由でアクセスするためには「FortiExplorer」というツール(with COMポートドライバ)をインストールすればいいということが分かったので、早速ダウンロード&インストール&実行。あっさりとFortigateに接続できた。やれやれ。

おまけ。
FortiExplorer経由での接続で事なきを得たものの、色々と設定をいじり回していたこともあって、ちゃんとした設定の前に一度設定を初期化しておこうと思った。Fortigateの設定を初期化する場合は、CLIから
  execute factoryreset
と入力し、確認メッセージに対して「y」を指定すればいい。取り扱いにはご注意を。