Palo Alto のファイアウォールは、ルーティングを「仮想ルータ」という単位で行います。この記事では、仮想ルータの考え方と構成の確認方法を整理したうえで、仮想ルータ「default」へのデフォルトルートの設定と、2つの仮想ルータを「次のVR」でつなぐスタティックルートの設定を、PAN-OS 10.2.4 の画面で順に確認します。
- 仮想ルータの役割と、ゾーンとの関係
- インタフェース側・仮想ルータ側からの所属の確認方法
- デフォルトルートの設定と、「次のVR」を使った仮想ルータ間のルーティング
仮想ルータとは何か?
仮想ルータは、Palo Alto の中に作る「仮想的な」ルータです。1台のファイアウォールの中に複数作ることができ、仮想ルータごとに独立したルーティングテーブルを持ちます。スタティックルートや OSPF・BGP などのルーティングプロトコルも、仮想ルータごとに設定します。
次の図は、Palo Alto の中に仮想ルータを複数作った構成です。各仮想ルータは、自分に割り当てられたインタフェースの間だけでルーティングします。
| 仮想ルータ | 担当する通信 |
|---|---|
| 仮想ルータ(1) | Eth0(ゾーン0)と Eth1(ゾーン1)の間の通信を、仮想ルータ(1) のルーティングテーブルに従って転送します。 |
| 仮想ルータ(2) | Eth2(ゾーン2)と Eth3(ゾーン3)の間の通信を、仮想ルータ(2) のルーティングテーブルに従って転送します。 |
仮想ルータどうしは互いの経路を持たないため、別の仮想ルータに属するインタフェースの間(例えば Eth0 と Eth3 の間)は、そのままでは通信できません。1台の機器の中でネットワークを分けておきたいときに、仮想ルータが役に立ちます。
レイヤー3のインタフェースは、仮想ルータとセキュリティゾーンの両方に所属させます。仮想ルータは「どこへ転送するか(ルーティング)」を決め、ゾーンは「通信を許可するか(セキュリティポリシー)」の単位になります。1つのインタフェースが所属できる仮想ルータは1つだけです。
仮想ルータ構成の確認方法
Palo Alto には、初期状態で「default」という名前の仮想ルータがあります。仮想ルータを分ける要件がなければ、この default をそのまま使うことが多く、次のような構成が一般的です。
インタフェース側から確認する
インタフェースがどの仮想ルータとゾーンに所属しているかは、NETWORK ›› インターフェイス ›› Ethernet で確認できます。一覧の「仮想ルーター」列に所属先が表示されます。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| インターフェイス | タイプ | リンク状態 | IP アドレス | 仮想ルーター | タグ |
|---|---|---|---|---|---|
| 1ethernet1/1 | Layer3 | 192.168.20.120/24 | 2default | Untagged | |
| ethernet1/2 | Layer3 | Dynamic-DHCP Client | default | Untagged | |
| ethernet1/3 | none | none | Untagged | ||
| ethernet1/4 | none | none | Untagged |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ethernet1/1 | インタフェース名のリンクを開くと、設定画面が表示されます。リンク状態の緑はリンクが上がっていること、グレーは上がっていないことを表します。 |
| 2 | 仮想ルーター | インタフェースが所属している仮想ルータです。ethernet1/1 と ethernet1/2 は default に所属しています。 |
ethernet1/1 を開き、「設定」タブを見ると、所属している仮想ルータとセキュリティゾーンが表示されます。所属先を変えるときも、この画面で設定します。
| インターフェイス名 | ethernet1/1 |
| インターフェイスタイプ | レイヤー 3 |
| ⋮ (中略) | |
| 1仮想ルーター | default |
| 2セキュリティゾーン | Untrust |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 仮想ルーター | default。ルーティングに使う仮想ルータです。 |
| 2 | セキュリティゾーン | Untrust。セキュリティポリシーで使うゾーンです。 |
仮想ルータ側から確認する
反対に、仮想ルータから見て、どのインタフェースが所属しているかも確認できます。NETWORK ›› 仮想ルーター を開くと仮想ルータの一覧が表示されるので、default をクリックします。
| 名前 | インターフェイス | 設定 |
|---|---|---|
| 1default | ethernet1/1 ethernet1/2 | ECMP の状態: 無効 |
「Router Settings」の「全般」タブに、所属しているインタフェースが表示されます。インタフェースの追加と削除も、この画面で行います。右側の「管理距離」は、同じ宛先への経路が複数の方法(スタティック、OSPF、BGP など)で得られたときに、どれを優先するかを決める値で、小さいほど優先されます。
| 名前 | default | ||||||||||||||||||
| 1インターフェイス | インターフェイスethernet1/1 ethernet1/2 | ||||||||||||||||||
| 2管理距離 |
|
| No. | 項目 | 内容 |
|---|---|---|
| 1 | インターフェイス | この仮想ルータに所属しているインタフェースです。ここでは ethernet1/1 と ethernet1/2 です。 |
| 2 | 管理距離 | 経路の種類ごとの既定値です。スタティックルートは 10 で、スタティックルート側で個別に指定しなければこの値が使われます。 |
スタティックルート設定
仮想ルータにスタティックルートを設定する手順を確認します。ここでは、仮想ルータ default にデフォルトルートを設定します。
デフォルトルートを追加する
NETWORK ›› 仮想ルーター で default をクリックし、左のメニューから スタティックルート ›› IPv4 を開いて「追加」をクリックします。表示された画面で、スタティックルートを設定します。
| 1名前 | default_route |
| 2宛先 | 0.0.0.0/0 |
| 3インターフェイス | ethernet1/1 |
| 4ネクストホップ | IP アドレス 192.168.20.1 |
| 管理距離 | 10 – 240 |
| メトリック | 10 |
| ルートテーブル | ユニキャスト |
| BFD プロファイル | Disable BFD |
| パスモニタリング | ☐ |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。ここでは default_route とします。 |
| 2 | 宛先 | 宛先のネットワークを CIDR 形式で入れます。デフォルトルートなので 0.0.0.0/0 です。 |
| 3 | インターフェイス | パケットを出すインタフェースです。ここでは ethernet1/1 です。 |
| 4 | ネクストホップ | 「IP アドレス」を選び、次の転送先のアドレス 192.168.20.1 を入れます。 |
| 5 | OK | 入力したら OK をクリックします。 |
そのほかの項目は、特別な要件がなければ既定値のままにします。管理距離を空欄にすると、仮想ルータの既定値(スタティックは 10)が使われます。
| 種類 | 使いどころ |
|---|---|
| IP アドレス | 次の転送先のルータのアドレスを指定します。今回のデフォルトルートはこれです。 |
| 次の VR | 同じファイアウォールの中の別の仮想ルータを転送先にします。後半の仮想ルータ間のルーティングで使います。 |
| FQDN | 転送先を FQDN で指定します。 |
| Discard | この宛先へのパケットを捨てます。 |
| None | ネクストホップを指定しません。 |
設定すると、一覧に次のように登録されます。
| 名前 | 宛先 | インター フェイス | タイプ | 値 | 管理 距離 | メト リック | BFD | ルート テーブル |
|---|---|---|---|---|---|---|---|---|
| default_route | 0.0.0.0/0 | ethernet1/1 | ip-address | 192.168.20.1 | default | 10 | None | unicast |
管理距離の列の default は、仮想ルータの既定値(10)を使っていることを表します。設定はコミットしたときに反映されます。
仮想ルータ間のルーティング設定
仮想ルータどうしはネットワークが分かれていて、そのままでは通信できません。ただ、一部のネットワークの間だけは、仮想ルータをまたいで通信させたいことがあります。スタティックルートでは、ネクストホップに別の仮想ルータ(次の VR)を指定すると、仮想ルータ間で通信できるようになります。
次の構成で考えます。仮想ルータ internal を新しく作って ethernet1/2 を割り当て、internal と default のそれぞれに、相手の仮想ルータをネクストホップにしたスタティックルートを作ります。これで ethernet1/1 と ethernet1/2 の間で通信できるようになります。
| 通信の向き | 経路の引き方 |
|---|---|
| Trust → Untrust | internal で 0.0.0.0/0 に当たり、default に渡します。default で 0.0.0.0/0 に当たり、ethernet1/1 から 192.168.20.1 へ送ります。 |
| Untrust → Trust | default で 192.168.10.0/24 に当たり、internal に渡します。internal が ethernet1/2 側の 192.168.10.0/24 へ送ります。 |
- 行きと戻りの両方に経路が必要です。片方の仮想ルータにだけ次の VR のルートを作っても、戻りのパケットが届きません。
- 仮想ルータ間の転送は1ホップだけです。A → B → C のように、仮想ルータを2つ以上またいで転送する設定はできません。
仮想ルータ default から ethernet1/2 を外す
今はすべてのインタフェースが default に所属しているので、まず ethernet1/2 を default から外します。NETWORK ›› 仮想ルーター で default をクリックし、「全般」タブで ethernet1/2 を選んで「削除」をクリックします。一覧から ethernet1/2 が消えたことを確かめ、OK をクリックします。
| 名前 | default |
| 1インターフェイス | インターフェイス☐ ethernet1/1 ☑ ethernet1/2 |
| 2⊕ 追加 ⊖ 削除 | |
| ⋮ (管理距離は変更しない) | |
| No. | 項目 | 操作 |
|---|---|---|
| 1 | インターフェイス | ethernet1/2 のチェックボックスをオンにします。 |
| 2 | 削除 | 削除をクリックし、ethernet1/2 が一覧から消えたことを確かめます。 |
| 3 | OK | OK をクリックして画面を閉じます。 |
仮想ルータ internal を追加する
次に、新しい仮想ルータ internal を作ります。NETWORK ›› 仮想ルーター の一覧の下にある「追加」をクリックします。名前に internal を入れ、「インターフェイス」の「追加」をクリックして、表示された候補から ethernet1/2 を選びます。ethernet1/2 が選ばれていることを確かめて、OK をクリックします。
| 1名前 | internal |
| 2インターフェイス | インターフェイス☑ ethernet1/2追加で表示される候補ethernet1/2 loopback sdwan tunnel vlan |
| ⋮ (管理距離は既定値のまま) | |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。ここでは internal とします。 |
| 2 | インターフェイス | 「追加」をクリックし、候補から ethernet1/2 を選びます。default から外したので、ethernet1/2 が候補に出てきます。 |
| 3 | OK | OK をクリックして作成します。 |
仮想ルータの一覧に、internal が追加されます。
| 名前 | インターフェイス | 設定 |
|---|---|---|
| default | ethernet1/1 | スタティックルート: 1 ECMP の状態: 無効 |
| 1internal | ethernet1/2 | ECMP の状態: 無効 |
default には ethernet1/1 だけが残り、internal に ethernet1/2 が所属しています。
スタティックルートを追加する(仮想ルータ default)
仮想ルータ default には、内部セグメント 192.168.10.0/24 宛てのネクストホップを仮想ルータ internal にするルートを追加します。NETWORK ›› 仮想ルーター で default をクリックし、スタティックルート ›› IPv4 で「追加」をクリックします。一覧には、先に作った default_route が登録されています。
| 1名前 | To_Internal |
| 2宛先 | 192.168.10.0/24 |
| 3インターフェイス | None |
| 4ネクストホップ | 次の VR internal |
| 管理距離 | 10 – 240 |
| メトリック | 10 |
| ルートテーブル | ユニキャスト |
| BFD プロファイル | Disable BFD |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。ここでは To_Internal とします。 |
| 2 | 宛先 | 内部セグメントの 192.168.10.0/24 です。 |
| 3 | インターフェイス | None を選びます。出口のインタフェースは、渡した先の仮想ルータ internal で決まります。 |
| 4 | ネクストホップ | 「次の VR」を選び、internal を選びます。 |
| 5 | OK | 入力したら OK をクリックします。 |
一覧に次のように登録されます。ネクストホップのタイプが next-vr になっています。
| 名前 | 宛先 | インターフェイス | タイプ | 値 |
|---|---|---|---|---|
| default_route | 0.0.0.0/0 | ethernet1/1 | ip-address | 192.168.20.1 |
| 1To_Internal | 192.168.10.0/24 | next-vr | internal |
スタティックルートを追加する(仮想ルータ internal)
仮想ルータ internal には、デフォルトルート(0.0.0.0/0)のネクストホップを仮想ルータ default にするルートを追加します。NETWORK ›› 仮想ルーター で internal をクリックし、スタティックルート ›› IPv4 で「追加」をクリックします(この時点では一覧は空です)。
| 1名前 | Internal_to_Default |
| 2宛先 | 0.0.0.0/0 |
| 3インターフェイス | None |
| 4ネクストホップ | 次の VR default |
| 管理距離 | 10 – 240 |
| メトリック | 10 |
| ルートテーブル | ユニキャスト |
| BFD プロファイル | Disable BFD |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。ここでは Internal_to_Default とします。 |
| 2 | 宛先 | デフォルトルートの 0.0.0.0/0 です。 |
| 3 | インターフェイス | None を選びます。 |
| 4 | ネクストホップ | 「次の VR」を選び、default を選びます。 |
| 5 | OK | 入力したら OK をクリックします。 |
一覧に次のように登録されます。
| 名前 | 宛先 | インターフェイス | タイプ | 値 |
|---|---|---|---|---|
| 1Internal_to_Default | 0.0.0.0/0 | next-vr | default |
コミットして反映する
画面右上の「Commit」を実行して、設定を反映します。これで、仮想ルータ internal と default の間でルーティングできるようになります。
仮想ルータの設定で決まるのは経路だけです。Trust ゾーンと Untrust ゾーンのように異なるゾーンの間の通信は、既定のルール(interzone-default)で拒否されるため、通したい通信を許可するセキュリティポリシーを別に作ります。インターネットへ出す場合は、NAT の設定も必要です。
うまくいかないとき
経路が意図どおり入っているかは、CLI の show routing route で仮想ルータごとのルーティングテーブルを表示して確かめられます。表示のフラグ A が付いた経路が、実際の転送に使われる経路です。
| 状態 | よくある原因 | 確認すること |
|---|---|---|
| 応答が戻らない | 次の VR のルートを片方の仮想ルータにしか作っていない | 両方の仮想ルータに、相手に向けたスタティックルートがあるか |
| 経路はあるが通らない | ゾーン間の通信を許可するセキュリティポリシーがない | 送信元と宛先のゾーンの組み合わせを許可するルールがあるか |
| インタフェースが候補にない | そのインタフェースが別の仮想ルータに所属したまま | 元の仮想ルータから外したか(1つのインタフェースは1つの仮想ルータにしか入らない) |
| 3つ目の仮想ルータへ届かない | 仮想ルータを2つ以上またいで転送しようとしている | 仮想ルータ間の転送は1ホップだけ。宛先の仮想ルータを直接次の VR にする |
| 設定が反映されない | コミットしていない | Commit を実行したか |
まとめ
今回の構成で設定したスタティックルートは、次の3つです。
| 仮想ルータ | 名前 | 宛先 | インタフェース | ネクストホップ |
|---|---|---|---|---|
| default | default_route | 0.0.0.0/0 | ethernet1/1 | IP アドレス 192.168.20.1 |
| default | To_Internal | 192.168.10.0/24 | None | 次の VR internal |
| internal | Internal_to_Default | 0.0.0.0/0 | None | 次の VR default |
仮想ルータは、1台のファイアウォールの中でルーティングテーブルを分ける仕組みです。分けたネットワークの一部だけを通したいときは、次の VR をネクストホップにしたスタティックルートを、行きと戻りの両方の仮想ルータに作ります。
この記事は、PAN-OS 10.2.4 の従来のルーティングエンジン(仮想ルータ)で検証しています。PAN-OS 10.2 では、Device ›› Setup ›› Management の General Settings で Advanced Routing を有効にすると、Advanced Routing Engine に切り替えられます。切り替えるときに移行スクリプトを使うと、仮想ルータは論理ルータ(Logical Router)に変換されます。メニューも Virtual Routers から Routing(Logical Routers など)に変わります。切り替えにはコミットと再起動が必要です。
コメント