手当たり次第に書くんだ

飽きっぽいのは本能

VyOS NAPT 設定 – IP マスカレードで LAN から外へ出す

VyOS の NAPT、いわゆる IP マスカレードは、LAN 側のプライベートアドレスを WAN 側インターフェイスのアドレスへ変換し、複数端末からインターネットへ出られるようにするための設定です。

NAPT は送信元 NAT です。通信を許可する機能そのものではなく、Firewall、デフォルトルート、WAN インターフェイス、PPPoE、DNS が成立したうえで、送信元アドレスとポートをどう変換するかを決めます。

この記事では、VyOS 1.5 系で読むことを前提に、NAPT / IP マスカレードの役割、設定例、Firewall や PBR との関係、確認手順をまとめます。アドレスは公開用の例です。

この記事の結論

  • NAPT は内部から外部へ出る通信の送信元 NAT である
  • outbound-interface は実際に外へ出るインターフェイスを指定する
  • source address で NAT 対象の内部ネットワークを絞る
  • PPPoE のような動的アドレスでは masquerade が扱いやすい
  • Firewall、route、PBR、DNS と分けて確認する

NAPT の役割

NAPT は、内部ネットワークから外部へ出る通信の送信元 IP アドレスとポート番号を変換する仕組みです。戻り通信は変換テーブルをもとに元の内部ホストへ戻されます。

要素役割確認すること
source addressNAT 対象の内部ネットワーク意図しないネットワークを含めていないか
outbound-interface外へ出るインターフェイスPPPoE や WAN 物理のどちらか
translation address変換後の送信元masquerade か固定アドレスか
conntrack戻り通信の対応変換状態が作られているか

家庭用ルーターでは当たり前に使われますが、VyOS ではどの送信元を、どの外向きインターフェイスで変換するのかを明示します。

masquerade を設定する

次は、192.168.0.0/16 の内部ネットワークから pppoe0 へ出る通信を masquerade する例です。PPPoE のように外側アドレスが動的に変わる可能性がある場合、固定アドレスではなく masquerade を使うのが扱いやすくなります。

configure
set nat source rule 500 outbound-interface 'pppoe0'
set nat source rule 500 source address '192.168.0.0/16'
set nat source rule 500 translation address 'masquerade'
commit
save

ルール番号は、用途ごとに間隔を空けておくと後から追加しやすくなります。複数の出口や複数の内部セグメントを扱う場合は、送信元と出口の対応を明確にします。

固定グローバルアドレスで変換する場合

WAN 側に固定アドレスがあり、変換後アドレスを明示したい場合は、masquerade ではなく固定アドレスを指定する構成もあります。

configure
set nat source rule 510 outbound-interface 'eth0'
set nat source rule 510 source address '10.10.0.0/24'
set nat source rule 510 translation address '203.0.113.10'
commit
save

固定アドレスを指定する場合は、そのアドレスが実際に外部側で使えること、戻り経路が成立すること、上流側で許可されていることを確認します。

Firewall と NAT を分けて考える

NAPT は通信許可ではありません。LAN から外へ出る通信を Firewall が拒否していれば、NAT ルールがあっても通信は通りません。逆に Firewall が許可していても、プライベートアドレスのまま外へ出る構成では戻り通信が成立しません。

要素役割
Firewall通信を許可または拒否する
NAT送信元や宛先のアドレスを変換する
Routeどの出口へ送るか決める
DNS名前から宛先アドレスを引く

PPPoE と組み合わせる

PPPoE でインターネットへ出る場合、外向きインターフェイスは物理 WAN ではなく pppoe0 になります。Firewall や NAPT の適用先も、実際に通信が出る PPPoE インターフェイスを基準に確認します。

show interfaces pppoe
show ip route
show nat source rules

PBR と併用する場合

PBR で出口を切り替える場合、どの通信がどの出口へ出るのかを先に確認します。出口が複数あるのに NAT ルールが 1 つだけだと、片方の出口では変換されない、または意図しない出口で変換されることがあります。

show configuration commands | match 'policy route'
show configuration commands | match 'nat source'
show ip route

確認する

設定後は、NAT ルール、変換状態、経路、Firewall、名前解決を分けて確認します。外へ出られない場合、NAPT だけを見ると原因を見落とします。

show nat source rules
show nat source translations
show conntrack table ipv4
show ip route
show firewall
show configuration commands | match 'nat source'

よくあるつまずき

症状見る場所考え方
LAN から外へ出られないroute / Firewall / NATNAT だけでなく出口と許可を見る
PPPoE で変換されないoutbound-interface物理 WAN ではなく pppoe0 を指定する
一部セグメントだけ出られないsource addressNAT 対象に含まれているか確認する
PBR 経由だけ失敗するPBR と NAT の対応出口ごとに NAT ルールを見る
IPv6 も同じように NAT したいIPv6 設計IPv4 NAPT と IPv6 NAT66 を混同しない

まとめ

VyOS の NAPT は数行で設定できますが、実際には Firewall、デフォルトルート、PBR、WAN インターフェイス、DNS とセットで確認する必要があります。重要なのは、どの内部通信を、どの出口で、どのアドレスへ変換するのかを説明できる状態にすることです。

IPv4 の NAPT と IPv6 の NAT66 は同じ感覚で扱わない方が安全です。IPv4 では NAPT が一般的ですが、IPv6 ではまず NAT なしで到達性と Firewall を設計し、NAT66 が必要な理由を明確にしてから使います。

関連する記事
VyOS NAPT 設定 – IP マスカレードで LAN から外へ出す

コメントを残す

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

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

トップへ戻る