前述の記事はこちら【Fortigate】DNATとDNAT+SNATの使い分け(1/2)
FortigateのDNAT/SNAT設定(再掲)
Fortigateの設定として、DNATはVIP、SNATはFirewallPolicyとFirewallIPpoolの組み合わせで設定します。
VIPはDNAT専用の設定で、SNATは設定不可です。
DNAT
config firewall vip
edit "WebServer-VIP"
set extip 192.168.99.10
set extintf "wan1"
set mappedip 192.168.9.1
next
end
SNAT
先にIPPoolを作成しないと、Policy作成でエラーになります
config firewall ippool
edit "SNAT-POOL"
set startip 192.168.9.254 # SNAT で変換する送信元IP
set endip 192.168.9.254
next
end
config firewall policy
edit 1
set srcintf "wan1"
set dstintf "internal"
set srcaddr "all"
set dstaddr "WebServer-VIP" # VIP を指定
set action accept
set schedule "always"
set service "ALL"
set nat enable # SNAT を有効化
set ippool enable
set poolname "SNAT-POOL"
next
end
ルータを超えて、DNATのみを使用する場合のパケットシーケンス
PINGの送信元IPが変わるだけで、パケットフローは同様になります。
外部端末(WAN-Client)から内部サーバ(LAN-Server)へping疎通を行います。
外部端末(WAN-Client):Mac端末
内部サーバ(LAN-Server):RasberryPi端末
※パケットキャプチャはFortigateの対向ポート(L2SW)をモニタリングして収集しています
1. ICMP-request
2. ARP-request
3. ARP-response
4. ICMP-request
5. ICMP-reply
6. ICMP-reply
7. ICMP-request
8. ICMP-request
9. ICMP-reply
10. ICMP-reply
ルータを超えて、DNATのみを使用する場合のパケットシーケンス(送信元と宛先を入れ替える)
LAN-ServerからWAN-Clientへ通信を開始する際のパケットシーケンスは以下になります
1. ICMP request
2. ICMP request
3. ICMP reply
4. ARP request
DNATに設定された192.168.9.1のMACがARPテーブルに登録されていないので、ARP解決を試みます
5. ARP response
6. ICMP reply
7. ICMP request
8. ICMP request
9. ICMP reply
10. ICMP-reply
ルータを超えて、DNATとSNATを使用する場合のパケットシーケンス
LAN-Serverから見たPingの送信元は、SNATされたWAN-ClientのIP(192.168.9.254)となります。
1. ICMP request
2. ARP request
3. ARP response
4. ICMP request
5. ARP request
SNATされたWAN-ClientのIPをARP解決します
6. ARP response
7. ICMP reply
LAN-ServerのARPテーブルにSNAT後のIP(192.168.9.254)を登録できたので、ICMP replyを返します
8. ICMP reply
9. ICMP request
2度目のICMP requestを送信します
10. ICMP request
ARPテーブルに登録されているので、ARP解決は不要です
11. ICMP reply
ARPテーブルに登録されているので、ARP解決は不要です
[…] それ以外のパターンはこちら ddddd 以上 […]