VyOS の Firewall では、同じアドレス、同じポート、同じインターフェイスを複数のルールで何度も使うことがあります。これをルールに直接書き続けると、設定が長くなり、変更時の漏れも起きやすくなります。
この記事では、VyOS 1.5 を前提に、address-group、port-group、interface-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'ポート番号だけを見ると意味が分かりにくいですが、http、dns、smtp のように名前を付けると、ルール側の意図が明確になります。
ルール側では意味を読ませる
グループを使うと、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 ルールの意味を読みやすくするための設計部品です。
特に公開サービスや複数セグメントを扱う環境では、ルールを直接増やす前に、どの単位をグループ化するかを決めておくと、後から設定を見直しやすくなります。
関連する記事
- VyOS ネットワーク設定ガイド
VyOS 1.5 の設定記事をまとめたハブページです。 - VyOS Firewall 基本設計 – trust / outside-in / outside-local を分ける
Firewall group を使う前提になる基本設計の記事です。 - VyOS IPv4 / IPv6 Firewall – input / forward の責務を分ける
IPv4 / IPv6 Firewall の責務を整理した記事です。
次に進む
- VyOS ネットワーク設定ガイドへ戻る
VyOS Firewall 関連の記事へ進む場合はハブページから確認できます。
参考書籍
Firewall group の前提になる IP アドレス、ポート、プロトコルの基礎を確認したい場合の参考書籍です。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

