Juniper SRX で Ping が応答しない?「デフォルト Deny」の仕組みと許可設定手順

  • URLをコピーしました!
目次

はじめに

Juniper SRX シリーズ(ファイアウォール)を初めて触るエンジニアが、構築初期に必ずと言っていいほど直面するトラブルがあります。

「インターフェースに IP アドレスを設定し、ケーブルも繋いだ。Link アップもしている。なのに Ping が通らない…」

Cisco ルータや L3 スイッチ(Juniper EX など)の感覚で設定していると、「故障かな?」「結線ミスかな?」と焦ってしまいますが、安心してください。それは正常な動作です。

SRX はファイアウォール製品であるため、「許可されていない通信はすべて拒否する(Default Deny)」 というセキュリティ思想で作られています。それは、通過する通信だけでなく、SRX 本体に向けられた通信(Ping や SSH) であっても例外ではありません。

本記事では、SRX が Ping に応答しない仕組みと、インターフェースで Ping(および SSH 等の管理アクセス)を許可するための設定手順を解説します。

この記事でわかること
  • なぜ Ping が通らないのか?(ZoneHost-Inbound-Traffic の概念)
  • Ping を許可するための設定コマンド
  • 応用:SSHJ-Web (HTTPS) も許可する方法

原因: SRX の「ゾーン(Zone)」と「Host-Inbound-Traffic」

なぜ SRX は頑なに Ping に応答しないのでしょうか。 それは、SRX がルータではなく 「ファイアウォール」 だからです。

ルータとファイアウォールの違い

一般的なルータ

インターフェースに IP アドレスを設定すれば、基本的には「接続の確認用」として Ping に応答してくれます(Open な姿勢)

ファイアウォール

「許可していない通信はすべて遮断する」 が基本原則です。それは、SRX 本体に対する管理アクセス(Ping や SSH)であっても同様です。

重要な概念: 「セキュリティゾーン」と「Host-Inbound-Traffic」

SRX では、すべてのインターフェースは必ずどこかの 「セキュリティゾーン(Security Zone)」 に所属します(例: trust ゾーン、untrust ゾーンなど)

そして、SRX 本体(自分自身)に向けられた通信を制御するのが、ゾーン設定の中にある host-inbound-traffic という項目です。

▼ イメージ図

[ PC ] ----(Ping Request)----> [ Interface ge-0/0/0 ] || 壁 || ----X [ SRX System ]
                                       |
                               所属: untrust ゾーン
                               設定: host-inbound-traffic 許可なし
  1. PC から Ping が飛んできます。
  2. インターフェース (ge-0/0/0) に届きます。
  3. SRX はそのインターフェースが所属する「ゾーン (untrust)」の設定を確認します。
  4. そこに 「Ping を許可する (system-services ping)」 という記述がなければ、パケットはその場の「壁」で破棄(Drop)され、SRX 本体には届きません。

つまり、IP アドレスを設定しただけでは「住所は決まったけど、玄関のドアは鍵がかかったまま」の状態なのです。Ping を通すには、明示的にドアを開ける(許可設定を入れる)必要があります。

手順①: インターフェースへの IP 設定(下準備)

まずは前提条件として、インターフェースに IP アドレスを設定します。 すでに設定済みの場合は、このステップは読み飛ばして構いません。

▼ 設定例: インターフェース ge-0/0/0192.168.1.1/24 を設定する場合

root# set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.1/24

この時点では、SRX は「IP アドレスを持った」だけであり、外部からの通信には一切応答しません。

手順②: Ping の許可設定(system-services ping)

ここからが本題です。 対象のインターフェースが所属する「セキュリティゾーン」の設定を変更し、SRX 本体への Ping を許可します。

ここでは、インターフェース ge-0/0/0trust ゾーンに所属させ、そこで Ping を許可する例を紹介します。

コマンド(set 形式)

一行で設定する場合は以下のようになります。

# 1. インターフェースをゾーンに割り当て
root# set security zones security-zone trust interfaces ge-0/0/0

# 2. そのインターフェースでの Ping 受信を許可
root# set security zones security-zone trust interfaces ge-0/0/0 host-inbound-traffic system-services ping

設定の意味と階層構造

Juniper の設定は階層構造になっています。上記コマンドが何をしているのか、階層で見ると理解しやすくなります。

security {
    zones {
        security-zone trust {             <-- 1. 対象のゾーン (trust)
            interfaces {
                ge-0/0/0.0 {              <-- 2. 対象のインターフェース
                    host-inbound-traffic {
                        system-services {
                            ping;         <-- 3. ここで Ping を許可
                        }
                    }
                }
            }
        }
    }
}

用語の解説

    security-zone

    インターフェースをまとめるグループです。一般的に、社内側は trust、インターネット側は untrust などと名前を付けます。

    host-inbound-traffic

    「ホスト(SRX 本体)」への「インバウンド(入ってくる)通信」を制御する項目です。ここを設定しないと、通信は SRX を通過するだけで、SRX 自身には届きません。

    system-services

    SRX が提供する機能(サービス)を指します。Ping のほか、SSH、HTTPS、DHCP などが含まれます。

    このように、「どのゾーンの」「どのインターフェースで」「何のサービスを」許可するかを具体的に指定することで、初めて Ping が応答するようになります。

    応用: SSH や J-Web(HTTPS)も許可しよう

    Ping の疎通確認ができたら、次は遠隔操作のために SSH や J-Web (管理画面) に接続したくなるはずです。 しかし、現状では Ping 以外はまだ拒否される状態です。

    SRX では、SSH や HTTPS も Ping と全く同じ理屈(host-inbound-traffic)で制御されています。以下のコマンドを追加して許可を与えましょう。

    追加の許可設定

    同じ階層にサービスを追加するだけです。

    # SSH (CLI接続) を許可
    root# set security zones security-zone trust interfaces ge-0/0/0 host-inbound-traffic system-services ssh
    
    # HTTPS (J-Web/ブラウザ接続) を許可
    root# set security zones security-zone trust interfaces ge-0/0/0 host-inbound-traffic system-services https

    これで、このポートに対して Ping、SSH、HTTPS の3つが許可されました。

    【重要】「system-services all」は推奨しません

    設定が面倒だからといって、以下のような設定を見かけることがありますが、セキュリティ上おすすめしません。

    # 非推奨の設定例
    set ... host-inbound-traffic system-services all

    all を設定すると、Telnet や HTTP など、暗号化されていない通信や不要なサービスまで一括で許可してしまいます。ファイアウォールとしての堅牢性を維持するため、「必要なサービスだけを個別に許可する(最小権限の原則)」 ことを強く推奨します。

    設定後の確認

    設定が終わったら、正しく反映されているか確認しましょう。

    設定内容の確認

    コンフィグレーションモードで以下のコマンドを実行し、階層構造を確認します。

    root# show security zones security-zone trust

    ▼ 出力例 system-services の下に、許可したプロトコルが列挙されていれば OK です。

    interfaces {
        ge-0/0/0.0 {
            host-inbound-traffic {
                system-services {
                    ping;
                    ssh;
                    https;
                }
            }
        }
    }

    動作確認

    最後にコミット (commit) を行い、PC から以下の確認を行います。

    1. コマンドプロンプトから ping 192.168.1.1 を実行し、応答があるか。
    2. Tera Term 等から 192.168.1.1 へ SSH 接続できるか。

    両方成功すれば、インターフェース周りの初期設定は完了です。

    まとめ

    本記事では、Juniper SRX で Ping が通らない原因とその対処法について解説しました。

    • 原因: SRX はファイアウォールであり、デフォルトですべての通信(自分宛て含む)を拒否する仕様だから。
    • 対策: インターフェースが所属する セキュリティゾーン(Zone)の設定で、host-inbound-traffic を明示的に許可する。

    「IP を設定したのに繋がらない」という時は、焦らずに show security zones を確認してください。そこに ping の文字がなければ、扉は閉まったままです。

    以上、最後までお読みいただきありがとうございました。


    よかったらシェアしてね!
    • URLをコピーしました!

    この記事を書いた人

    インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

    [ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

    目次