VyOS で内部サービスを外部へ公開する場合、IPv4 では DNAT、IPv6 では NAT66 destination を使う構成があります。どちらも「外から来た通信を内部の宛先へ転送する」設定ですが、Firewall、宛先グループ、ポートグループと合わせて設計しないと、何を公開しているのか分かりにくくなります。
この記事では、VyOS 1.5 を前提に、DNAT と NAT66 destination を公開サービスへの転送として整理します。ここで使うアドレスやホスト名は公開用の例です。
DNAT は公開サービスの入口である
DNAT は、外部インターフェイスで受けた IPv4 通信の宛先を、内部サーバーのアドレスへ変換する設定です。Web、DNS、メールなどを内部サーバーで動かしつつ、外部から到達させる場合に使います。
ただし、DNAT を書いただけで安全に公開できるわけではありません。NAT は宛先変換、Firewall は通過可否の制御です。この2つは役割が違います。
Firewall group と組み合わせる
公開するサービスが複数ある場合、宛先アドレスやポートを NAT ルールに直接書き続けると読みにくくなります。事前に address-group と port-group を作っておくと、DNAT ルールの意味が明確になります。
グループ設定例
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 port-group http port '80'
set firewall group port-group http port '443'
set firewall group port-group dns port '53'IPv4 DNAT の設定例
IPv4 では nat destination を使い、外部インターフェイス、プロトコル、宛先ポート、変換先アドレスを指定します。
set nat destination rule 2000 inbound-interface name 'eth0'
set nat destination rule 2000 protocol 'tcp_udp'
set nat destination rule 2000 destination group port-group 'http'
set nat destination rule 2000 translation address '192.0.2.80'
set nat destination rule 2010 inbound-interface name 'eth0'
set nat destination rule 2010 protocol 'tcp_udp'
set nat destination rule 2010 destination group port-group 'dns'
set nat destination rule 2010 translation address '192.0.2.53'ここでは例として Web と DNS を分けています。ルール番号は、サービス単位で余裕を持たせておくと後から追加しやすくなります。
IPv6 で NAT66 destination を使う場合
IPv6 は本来、各ホストがグローバルアドレスを持ち、NAT せずに到達性と Firewall で制御する設計が基本です。一方で、設計上の抽象化や内部アドレス体系の維持を目的として、NAT66 destination を使いたくなる場面もあります。
NAT66 destination を使う場合も、IPv4 DNAT と同じように、NAT と Firewall の責務を分けて考えます。
NAT66 destination の設定例
set nat66 destination rule 2000 inbound-interface name 'eth0'
set nat66 destination rule 2000 protocol 'tcp_udp'
set nat66 destination rule 2000 destination group port-group 'http'
set nat66 destination rule 2000 translation address 'fd00::192:0:2:80'
set nat66 destination rule 2010 inbound-interface name 'eth0'
set nat66 destination rule 2010 protocol 'tcp_udp'
set nat66 destination rule 2010 destination group port-group 'dns'
set nat66 destination rule 2010 translation address 'fd00::192:0:2:53'Firewall で outside-in を許可する
DNAT / NAT66 destination の設定だけでは、外部から内部へ通すべき通信を説明しきれません。外部から内部へ転送する通信は、Firewall の outside-in 側で許可します。
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'
set firewall ipv6 name outside-in rule 2000 action 'accept'
set firewall ipv6 name outside-in rule 2000 destination group address-group 'web.example.internal'
set firewall ipv6 name outside-in rule 2000 destination group port-group 'http'
set firewall ipv6 name outside-in rule 2000 protocol 'tcp_udp'実際の環境では、IPv4 と IPv6 でアドレスグループを分ける場合もあります。重要なのは、NAT で転送先を決め、Firewall で通してよい通信を決める、という責務を混ぜないことです。
まとめ
VyOS の DNAT / NAT66 destination は、公開サービスへの入口を作る設定です。ただし、NAT は宛先変換であり、公開可否の制御そのものではありません。Firewall group で対象を整理し、Firewall の outside-in で通過可否を明示することで、何を公開しているのか説明しやすくなります。
IPv6 では NAT66 を使うべきかどうか自体が設計判断になります。使う場合でも、IPv4 DNAT の延長として雑に扱うのではなく、アドレス設計、Firewall、公開サービスの責務分界として整理するのが重要です。
関連する記事
- VyOS ネットワーク設定ガイド
VyOS 1.5 の設定記事をまとめたハブページです。 - VyOS Firewall group 設計 – address-group / port-group / interface-group を整理する
DNAT で参照するグループ設計の記事です。 - VyOS nat66 masquerade と IPv6 NAT の考え方
IPv6 NAT の設計上の意味を整理した記事です。
次に進む
- VyOS ネットワーク設定ガイドへ戻る
VyOS の NAT / Firewall 関連記事へ進む場合はハブページから確認できます。
参考書籍
NAT、ポート、プロトコル、IPv4 / IPv6 の前提を確認したい場合の参考書籍です。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

