手当たり次第に書くんだ

飽きっぽいのは本能

VyOS Firewall group 設計 – address-group / port-group / interface-group を整理する

VyOS の Firewall では、同じアドレス、同じポート、同じインターフェイスを複数のルールで何度も使うことがあります。これをルールに直接書き続けると、設定が長くなり、変更時の漏れも起きやすくなります。

この記事では、VyOS 1.5 を前提に、address-groupport-groupinterface-group を Firewall の部品としてどう整理するかをまとめます。

Firewall group はルールを読みやすくする部品である

Firewall group は、許可そのものではありません。あくまで、Firewall ルールから参照する対象を名前付きでまとめるための部品です。

  • address-group: 特定のホストアドレスをまとめる
  • network-group: ネットワーク範囲をまとめる
  • port-group: 複数のポート番号をまとめる
  • interface-group: インターフェイスを役割単位でまとめる

グループを使うと、ルール側には「何を許可するか」だけが残りやすくなります。個別のアドレスやポートの詳細はグループ側に寄せられます。

interface-group はネットワークの役割を表す

内部側の複数インターフェイスをまとめる場合、interface-group が有効です。たとえば、物理 LAN、bonding、トンネル、loopback などを内部側として扱う場合、trust のような名前でまとめられます。

設定例

set firewall group interface-group trust interface 'lo'
set firewall group interface-group trust interface 'eth1'
set firewall group interface-group trust interface 'bond0'
set firewall group interface-group trust interface 'tun1000'

trust は絶対的に安全という意味ではなく、Firewall 設計上、内部側として扱うインターフェイス群という意味です。名前に意味を持たせると、ルールを読んだ時に意図が追いやすくなります。

address-group と network-group を使い分ける

公開サービスの宛先ホストをまとめる場合は address-group、内部ネットワークや RFC1918 のような範囲をまとめる場合は network-group が向いています。

設定例

set firewall group address-group web.example.internal address '192.0.2.80'
set firewall group address-group dns.example.internal address '192.0.2.53'
set firewall group network-group rfc1918 network '10.0.0.0/8'
set firewall group network-group rfc1918 network '172.16.0.0/12'
set firewall group network-group rfc1918 network '192.168.0.0/16'

ホスト単位で公開先を示すものと、ネットワーク範囲として扱うものを混ぜない方が、後から見た時に意図が分かりやすくなります。

port-group はサービス単位でまとめる

HTTP、DNS、SMTP、SSH、OpenVPN など、サービス単位でポートをまとめると、Firewall ルールから見た時に何を許可しているのかが分かりやすくなります。

設定例

set firewall group port-group http port '80'
set firewall group port-group http port '443'
set firewall group port-group dns port '53'
set firewall group port-group smtp port '25'
set firewall group port-group smtp port '465'
set firewall group port-group smtp port '587'
set firewall group port-group ssh port '22'

ポート番号だけを見ると意味が分かりにくいですが、httpdnssmtp のように名前を付けると、ルール側の意図が明確になります。

ルール側では意味を読ませる

グループを使うと、Firewall ルールは次のように読みやすくなります。

set firewall ipv4 name outside-in rule 2000 action 'accept'
set firewall ipv4 name outside-in rule 2000 destination group address-group 'web.example.internal'
set firewall ipv4 name outside-in rule 2000 destination group port-group 'http'
set firewall ipv4 name outside-in rule 2000 protocol 'tcp_udp'

この例では、外部から内部の Web サービスへ HTTP / HTTPS を許可していることが分かります。アドレスやポート番号をルールに直接埋め込むより、変更時の影響範囲も追いやすくなります。

まとめ

VyOS の Firewall group は、設定を短くするためだけの機能ではありません。アドレス、ネットワーク、ポート、インターフェイスに名前を付け、Firewall ルールの意味を読みやすくするための設計部品です。

特に公開サービスや複数セグメントを扱う環境では、ルールを直接増やす前に、どの単位をグループ化するかを決めておくと、後から設定を見直しやすくなります。

関連する記事

次に進む

参考書籍

参考書籍
参考書籍
マスタリングTCP/IP 入門編 第6版

Firewall group の前提になる IP アドレス、ポート、プロトコルの基礎を確認したい場合の参考書籍です。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

VyOS Firewall group 設計 – address-group / port-group / interface-group を整理する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る