【FortiGate】IPSec-VPN設定(with NAT)~Site-to-Site編~
FortiGateでIPSec-VPNの設定をして且つローカルアドレスのSorce IPをNAT変換してみたので設定方法を記載します。
※検証で使用した機器はFortiWiFi90D(Ver:5.2.3)です。
構成は下図の通り。
※各InterfaceのIPアドレス等は設定済みという前提
①VPN設定(Center側)
VPN>IPSec>ウィザード
任意の名前を記入し「Site-to-Site」を選択して「次へ」
下図4項目を記入し「次へ」
リモートゲートウェイ:トンネルの対向のIPアドレス
出力インターフェース:トンネルを張る自Interface
下図3項目を記入し「次へ」
ローカルインターフェース:自LAN側Interface
ローカルサブネット:自LAN側NW
リモートサブネット:対向の宛先NW
②VPN設定(Branch側)
VPN>IPSec>ウィザード
任意の名前を記入し「Site-to-Site」を選択して「次へ」
下図4項目を記入し「次へ」
リモートゲートウェイ:トンネルの対向のIPアドレス
出力インターフェース:トンネルを張る自Interface
下図3項目を記入し「次へ」
ローカルインターフェース:自LAN側Interface
ローカルサブネット:自LAN側NW
リモートサブネット:対向の宛先NW
③疎通確認
LAN-to-LANでPINGを実施することでInterest Packetが送出されIPSecのステータスがアップします。
VPN>モニタ>IPSecモニタ
④ローカルアドレスのSorce IPをNAT変換
ポリシー&オブジェクト>ポリシー>IPv4
構成図のようにNAT変換させる場合、Center側のFortiGateでトンネルInterfaceからLANへ通過するポリシーに対してNAT設定する
この構成であればBranchからCenterへアクセスする通信はIPSecトンネルを通り、且つSorceIPがNAT変換される。
NAT変換されたことを確認するには方法がいくつかありますが代表的な2つを紹介します。
■セッションテーブルの確認
FortiGate # diagnose sys session filter src 192.168.2.1 FortiGate # diagnose sys session list session info: proto=1 proto_state=00 duration=2 expire=57 timeout=0 flags=00000000 sockflag=00000000 sockport=0 av_idx=0 use=3 origin-shaper= reply-shaper= per_ip_shaper= ha_id=0 policy_dir=0 tunnel=/Center state=may_dirty npu statistic(bytes/packets/allow_err): org=500/5/1 reply=500/5/1 tuples=2 orgin->sink: org pre->post, reply pre->post dev=69->63/63->69 gwy=192.168.1.1/192.168.2.1 hook=post dir=org act=snat 192.168.2.1:15->192.168.1.1:8(10.1.1.1:62464) hook=pre dir=reply act=dnat 192.168.1.1:62464->10.1.1.1:0(192.168.2.1:15) misc=0 policy_id=3 auth_info=0 chk_client_info=0 vd=0 serial=0000036e tos=ff/ff ips_view=0 app_list=0 app=0 dd_type=0 dd_mode=0 npu_state=00000000 npu info: flag=0x00/0x82, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0, vlan=0/0 total session 1 FortiGate # diagnose sys session filter clear
■パケット処理フローの確認
FortiGate # diagnose debug flow show console enable show trace messages on console FortiGate # diagnose debug flow filter proto 1 ←ICMPの場合、プロトコル番号は「1」 FortiGate # diagnose debug flow trace start 2 ←出力させる項目数(指定なしの場合は1項目表示) id=20085 trace_id=1 func=print_pkt_detail line=4378 msg="vd-root received a packet(proto=1, 192.168.2.1:18->192.1" id=20085 trace_id=1 func=init_ip_session_common line=4527 msg="allocate a new session-000003e7" id=20085 trace_id=1 func=vf_ip4_route_input line=1596 msg="find a route: flags=00000000 gw-192.168.1.1 via lan" id=20085 trace_id=1 func=fw_forward_handler line=670 msg="Allowed by Policy-3: SNAT" id=20085 trace_id=1 func=__ip_session_run_tuple line=2523 msg="SNAT 192.168.2.1->10.1.1.1:60418" id=20085 trace_id=1 func=__if_queue_push_xmit line=366 msg="send out via dev-internal, dst-mac-00:1b:d3:8a:7e:e2" id=20085 trace_id=2 func=print_pkt_detail line=4378 msg="vd-root received a packet(proto=1, 192.168.1.1:60418->10.1.1.1:0) from la" id=20085 trace_id=2 func=resolve_ip_tuple_fast line=4437 msg="Find an existing session, id-000003e7, reply direction" id=20085 trace_id=2 func=__ip_session_run_tuple line=2537 msg="DNAT 10.1.1.1:0->192.168.2.1:18" id=20085 trace_id=2 func=vf_ip4_route_input line=1596 msg="find a route: flags=00000000 gw-192.168.2.1 via Center" id=20085 trace_id=2 func=ipsecdev_hard_start_xmit line=121 msg="enter IPsec interface-Center" id=20085 trace_id=2 func=ipsec_output_finish line=232 msg="send to 172.16.1.2 via intf-wan1" id=20085 trace_id=2 func=esp_output4 line=889 msg="encrypting, and send to 172.16.1.2 with source 172.16.1.1" ~[省略]~ FortiGate # diagnose debug flow filter clear