ネットワーク運用をしていると、次のような状況に遭遇することがあります。
「端末にスタティックルートを入れられない」
「デフォルトゲートウェイも変更できない」
「でも別セグメントからアクセスしたい」
このようなケースでは、そのまま通信させようとすると非対称ルーティングが発生し、通信が成立しません。
しかし、ルータ側でDNATとSNATを組み合わせることで、この問題を解決できます。
この記事では、実際の構成例を使いながらDNAT+SNATで通信を成立させる方法を解説します。
今回のネットワーク構成(前提条件)
端末側
- LAN1:192.168.1.10/24(インターネット側)
- デフォルトルート:192.168.1.1(変更不可)
- LAN2:10.10.50.10/24(社内側)
- スタティックルート:設定不可
社内ネットワーク
- セグメント:10.20.40.0/24
- クライアント例:10.20.40.100
ルータ
- 社内側インターフェース:10.20.40.1
- 端末側インターフェース:10.10.50.1
やりたいこと
社内クライアントから端末へアクセスしたい。
10.20.40.100 → 10.10.50.10
ただし制約があります。
- 端末にスタティックルートは設定できない
- デフォルトルートも変更できない
なぜそのままでは通信できないのか
社内から端末へ直接通信すると、次のようになります。
10.20.40.100 → 10.10.50.10
端末から見ると送信元は
10.20.40.100
になります。
しかし端末は10.20.40.0/24の経路を知らないため、返りの通信はこうなります。
10.10.50.10 → 192.168.1.1
つまりデフォルトゲートウェイへ送られてしまいます。
結果として通信は成立しません。
これは典型的な非対称ルーティングです。
解決策:DNAT + SNAT
この問題は、ルータ側でNATを使うことで解決できます。
ポイントは次の2つです。
- DNAT(宛先変換)
- SNAT(送信元変換)
1. DNAT(宛先変換)
まず社内からの通信の受付をルータにします。
社内クライアントは次の宛先へ通信します。
10.20.40.100 → 10.20.40.1
ルータでDNATを行います。
変換前 10.20.40.100 → 10.20.40.1
変換後 10.20.40.100 → 10.10.50.10
これで通信は端末まで届きます。
ただし、まだ問題があります。
2. SNAT(送信元変換)
DNATだけでは送信元IPはそのままです。
送信元:10.20.40.100
この状態だと端末は返り通信を
192.168.1.1
へ送ってしまいます。
そこでSNATを使い、送信元をルータのIPへ変換します。
変換前 送信元:10.20.40.100
変換後 送信元:10.10.50.1
端末から見る通信は次のようになります。
10.10.50.1 → 10.10.50.10
同一セグメント通信になるため正常に処理されます。
返りの通信はどうなるか
端末からの返りは次のようになります。
10.10.50.10 → 10.10.50.1
ルータが受信し、NATテーブルを参照します。
その後、元のクライアントへ再変換されます。
10.10.50.1 → 10.20.40.100
これで通信が成立します。
この構成のポイント
- 端末にスタティックルートは不要
- デフォルトルートを変更する必要がない
- 非対称ルーティングを回避できる
- ネットワーク分離構成を維持できる
端末側を変更できない場合でも、ルータ側のNATで吸収できるというのがポイントです。
まとめ
スタティックルートが入れられない端末や、デフォルトゲートウェイを変更できない端末は意外と多く存在します。
そのままでは通信できない構成でも、
- DNAT
- SNAT
を組み合わせることで通信を成立させることが可能です。
ネットワークは原理通りに動きます。
しかし、NATやルーティングを理解していれば制約のある環境でも柔軟に設計できるようになります。
同じような構成で悩んでいるネットワークエンジニアの参考になれば幸いです。
