ICTSC2026 一次予選 問題解説: 問39

問39

下記のようなnftables ルールが設定されているLinuxルーターがあります。

table inet filter {
    chain forward {
        type filter hook forward priority 0;
        policy drop;

        ip saddr 192.168.10.0/24 ip daddr 10.0.0.10 tcp dport 443 accept
        ip saddr 192.168.10.100 drop
        ip saddr 192.168.20.0/24 ip daddr 10.0.0.20 tcp dport 22 accept
        ip saddr 192.168.0.0/16 ip daddr 10.0.0.30 icmp type echo-request accept
    }
}

このルーターを通過する通信について、有効な通信パターンとして誤っているものを1つ選びなさい。

選択肢(択一選択)

  1. src 192.168.10.50, dst 10.0.0.10, TCP/443 → 通過
  2. src 192.168.10.100, dst 10.0.0.10, TCP/443 → 拒否
  3. src 192.168.20.50, dst 10.0.0.21, TCP/22 → 拒否
  4. src 192.168.30.50, dst 10.0.0.30, ICMP echo-request → 通過

正解

2

解説

このforwardチェーンでは、ルーターを通過するパケットに対して、上から順にルールを評価する。ルールの条件に一致してacceptまたはdropが適用されると、このチェーン内での評価は終了し、後ろに続くルールは評価されない。どのルールにも一致せず末尾に達した場合は、policy dropによってパケットが破棄される。

問題文の4つのルールを、評価順に①〜④として以下に示す。

番号 ルール
① ip saddr 192.168.10.0/24 ip daddr 10.0.0.10 tcp dport 443 accept
② ip saddr 192.168.10.100 drop
③ ip saddr 192.168.20.0/24 ip daddr 10.0.0.20 tcp dport 22 accept
④ ip saddr 192.168.0.0/16 ip daddr 10.0.0.30 icmp type echo-request accept

各選択肢のパケットに対する判定は以下の通りである。

選択肢 判定の根拠 実際の結果
1 送信元が192.168.10.0/24に含まれ、宛先が10.0.0.10、宛先ポートがTCP/443であるため、ルール①に一致する。 通過
2 192.168.10.100も192.168.10.0/24に含まれ、宛先と宛先ポートも条件を満たすため、ルール①に一致する。 通過
3 ルール③が許可する宛先は10.0.0.20であり、10.0.0.21は一致しない。他のルールにも一致しないため、policy dropが適用される。 拒否
4 192.168.30.50は192.168.0.0/16に含まれ、宛先が10.0.0.30、ICMPの種別がecho-requestであるため、ルール④に一致する。 通過

選択肢2では、ルール②に送信元192.168.10.100を拒否する設定があるものの、その前にルール①で許可される。同一チェーン内では、より限定的な条件のルールが自動的に優先されるわけではない。この設定では記述順に評価され、ルール①のacceptで評価が終了するため、ルール②は評価されない。

したがって、選択肢2のパケットは実際には通過するため、「拒否」としている 2 が誤りである。