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つ選びなさい。
選択肢(択一選択)
- src 192.168.10.50, dst 10.0.0.10, TCP/443 → 通過
- src 192.168.10.100, dst 10.0.0.10, TCP/443 → 拒否
- src 192.168.20.50, dst 10.0.0.21, TCP/22 → 拒否
- 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 が誤りである。