macOS原生客户端接入IPSec(用户名/密码+预共享密钥认证)

本文基于macOS 13.2编写。

组网需求

通过macOS原生客户端(IKEv2用户名/密码+预共享密钥认证)连接FortiGate的IPSec,并访问VPN内部资源。

网络拓扑

image-20230315092944393

配置步骤

FortiGate配置

  1. 配置FortiGate的接口IP。

    image-20230314161154582

  2. 创建本地VPN用户和用户组,参考用户与认证→本地用户和用户组章节(如需使用远程认证,请参考用户与认证→LDAP认证→LDAP认证配置与排错用户与认证→Radius认证→Radius认证配置与排错章节)。

    image-20230314161934370

    config user local
        edit "vpn_user"
            set type password
            set passwd xxxxxxxx
        next
    end
    

    image-20230314161959786

    config user group
        edit "VPN"
            set member "vpn_user"
        next
    end
    
  3. 该种方式的IPSec需要使用CLI方式配置,分别配置IPSec一阶段和二阶段。

    IPSec一阶段配置:
    config vpn ipsec phase1-interface
        edit "IKEv2_User_PSK"
            set type dynamic
            set interface "port2"
            set ike-version 2    //IKE协议2
            set peertype any
            set net-device disable
            set mode-cfg enable    //开启为客户端分配IP
            set ipv4-dns-server1 10.10.1.2  //为客户端分配的DNS地址
            set proposal aes256-sha256
            set negotiate-timeout 300
            set dpd on-idle
            set dhgrp 14 5 2
            set eap enable    //需要开启EAP做用户密码认证
            set eap-identity send-request    //开启EAP主动发送认证请求
            set authusrgrp "VPN"    //选择认证的用户组
            set ipv4-start-ip 10.10.100.1
            set ipv4-end-ip 10.10.100.100    //客户端分配地址范围
            set ipv4-netmask 255.255.255.0
            set psksecret xxxxxxxx
            set dpd-retryinterval 60
        next 
    end 
    
    IPSec二阶段配置:
    config vpn ipsec phase2-interface
        edit "IKEv2_User_PSK"
            set phase1name "IKEv2_User_PSK"
            set proposal aes256-sha256
            set keepalive enable
        next
    end
    
  4. 配置防火墙策略,允许客户端访问内网VPN资源。

    image-20230315155053204

    VPN资源地址对象:
    config firewall address
        edit "LAN_10.10.1.0/24"
            set subnet 10.10.1.0 255.255.255.0
        next
    end
    
    客户端地址对象:
    config firewall address
        edit "VPN_10.10.100.0/24"
            set subnet 10.10.100.0 255.255.255.0
        next
    end
    
    防火墙策略:
    config firewall policy
        edit 1
            set name "IKEv2_User_PSK"
            set srcintf "IKEv2_User_PSK"
            set dstintf "port3"
            set action accept
            set srcaddr "VPN_10.10.100.0/24"
            set dstaddr "LAN_10.10.1.0/24"
            set schedule "always"
            set service "ALL"
        next
    end
    

制作和安装描述文件

想要使用IKEv2用户名/密码+预共享密钥方式的VPN认证,需要使用Apple Configurator工具为iOS/macOS制作描述文件,该工具可以在macOS下的App Store中下载。
  1. 打开Apple Configurator,点击菜单栏的“文件→新建描述文件”(或使用快捷键Command + N)。

    image-20230315155728090

  2. 在弹出的配置文件编辑器中,配置描述文件的名称。

    image-20230315160042146

  3. 选择VPN选项卡,点击配置按钮。

    image-20230315160126300

  4. 配置描述文件,选择连接类型为IKEv2,填写服务器IP地址,远程标识符和局部标识符随意填写,填写预共享密钥,开启EAP,选择EAP鉴定为用户名/密码模式,其他配置保持默认即可(或根据实际需求更改)。

    image-20230315161719167

    image-20230315162110235

  5. 选择菜单栏的“文件→存储”按钮(或使用快捷键Command + S),保存该描述文件到本地。

    image-20230315162428485

  6. 将描述文件发送至客户端macOS电脑中,macOS下直接双击该描述文件安装,会弹出系统提示,在系统设置中查看该描述文件。

    image-20230315170038023

    image-20230315170118287

  7. 进入系统设置→隐私与安全→其他→描述文件,双击“已下载”中的描述文件,确认描述文件无误后,点击安装按钮,在弹出的确认框中点击“安装”(随后需要系统密码验证)。

    image-20230315170322994

    image-20230315170422340

  8. 描述文件安装完成。

    image-20230315170527792

客户端配置

  1. 打开系统设置→VPN,可以看到描述文件中的VPN连接已经自动添加。

    image-20230315170625893

  2. 编辑该VPN连接,将“用户认证”修改为“用户名”,并填写用户名和密码,点击“好”保存配置。

    image-20230315170906771

结果验证

  1. 在客户端点击连接按钮,查看连接状态,点击VPN连接右侧的信息按钮,可以看到连接的具体信息,获取的IP为FortiGate配置的网段。

    image-20230315171058219

    image-20230315171143042

  2. 在FortiGate侧查看连接状态。

    image-20230315171506450

    FortiGate # diagnose vpn ike gateway list
    
    vd: root/0
    name: IKEv2_User_PSK_1
    version: 2
    interface: port2 4
    addr: 202.103.12.2:4500 -> 202.103.23.2:60422
    tun_id: 10.10.100.2/::10.0.0.18
    remote_location: 0.0.0.0
    network-id: 0
    created: 304s ago
    eap-user: vpn_user
    2FA: no
    peer-id: client
    peer-id-auth: no
    assigned IPv4 address: 10.10.100.2/255.255.255.0
    nat: peer
    PPK: no
    IKE SA: created 1/1  established 1/1  time 80/80/80 ms
    IPsec SA: created 1/1  established 1/1  time 0/0/0 ms
      id/spi: 15 4d29f0750955cfd8/2910aaac36020ad6
      direction: responder
      status: established 304-304s ago = 80ms
      proposal: aes256-sha256
      child: no
      SK_ei: c447820d037114b1-50c54fe2851c9be3-0a85e0a1dd660bda-44fb37b6cdfac588
      SK_er: e674721b86f9e390-bdb97e39262e21de-08c0ceeb85f8f4e9-4cd4237c6e4b45a2
      SK_ai: 49d92f240fce91f9-933fa239f76db314-21b8279f552a327f-fbdbed66fbe4a30f
      SK_ar: 68e4bee505827ac5-72af90407c973fe0-34ef0b85985cea0e-a596b75344157af4
      PPK: no
      message-id sent/recv: 0/6
      lifetime/rekey: 86400/85825
      DPD sent/recv: 00000000/00000000
      peer-id: client
    
    FortiGate # diagnose vpn tunnel list
    
    list all ipsec tunnel in vd 0
    ------------------------------------------------------
    name=IKEv2_User_PSK ver=2 serial=14 202.103.12.2:0->0.0.0.0:0 tun_id=10.0.0.9 tun_id6=::10.0.0.9 dst_mtu=0 dpd-link=on weight=1
    bound_if=4 lgwy=static/1 tun=intf mode=dialup/2 encap=none/552 options[0228]=npu frag-rfc  role=primary accept_traffic=1 overlay_id=0
    proxyid_num=0 child_num=1 refcnt=3 ilast=43041062 olast=43041062 ad=/0
    stat: rxp=5440 txp=1378 rxb=374506 txb=142425
    dpd: mode=on-idle on=0 idle=60000ms retry=3 count=0 seqno=0
    natt: mode=none draft=0 interval=0 remote_port=0
    run_tally=0
    ------------------------------------------------------
    name=IKEv2_User_PSK_1 ver=2 serial=1b 202.103.12.2:4500->202.103.23.2:60422 tun_id=10.10.100.2 tun_id6=::10.0.0.18 dst_mtu=1500 dpd-link=on weight=1
    bound_if=4 lgwy=static/1 tun=intf mode=dial_inst/3 encap=none/9128 options[23a8]=npu rgwy-chg rport-chg frag-rfc  run_state=0 role=primary accept_traffic=1 overlay_id=0
    parent=IKEv2_User_PSK index=1
    proxyid_num=1 child_num=0 refcnt=5 ilast=0 olast=0 ad=/0
    stat: rxp=2638 txp=815 rxb=176380 txb=80140
    dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=1
    natt: mode=silent draft=0 interval=10 remote_port=60422
    proxyid=IKEv2_User_PSK proto=0 sa=1 ref=97 serial=1 add-route
      src: 0:0.0.0.0-255.255.255.255:0
      dst: 0:10.10.100.2-10.10.100.2:0
      SA:  ref=3 options=20683 type=00 soft=0 mtu=1422 expire=42881/0B replaywin=2048
           seqno=330 esn=0 replaywin_lastseq=00000a4e qat=0 rekey=0 hash_search_len=1
      life: type=01 bytes=0/0 timeout=43188/43200
      dec: spi=7b8ba379 esp=aes key=32 7ba541f88e4abc0197580faa828f71aac8f501399ff5962c96bc5ae43c037ece
           ah=sha256 key=32 e2082800cf7dce1c6796d3080969319ec9e52b536e1ba4d4edeefc165f76ff4e
      enc: spi=011f2d7b esp=aes key=32 01b2eb5d0ad5876f35f60382599e97fe84eed38d6023fb8bb45f42893a3da0dd
           ah=sha256 key=32 30d5bed3a56098c277f1213e94bb792bffff86074edfe64dc8761bee1c0403fa
      dec:pkts/bytes=5276/352760, enc:pkts/bytes=1630/223528
      npu_flag=00 npu_rgwy=202.103.23.2 npu_lgwy=202.103.12.2 npu_selid=10 dec_npuid=0 enc_npuid=0
    
  3. 在FortiGate侧查看路由kernel表,可以看到FortiGate已经自动添加了到客户端的路由。

    FortiGate # get router info kernel 
    ...
    tab=254 vf=0 scope=0 type=1 proto=11 prio=1 0.0.0.0/0.0.0.0/0->10.10.100.2/32 pref=0.0.0.0 gwy=10.10.100.2 dev=27(IKEv2_User_PSK)
    ...
    
  4. 使用客户端访问VPN内网资源(Ping和HTTP访问)。

    image-20230315172024199

    实际测试iOS/macOS使用IKEv2,无法使用隧道分割功能,VPN建立后,所有流量被送入VPN隧道。

Copyright © 2024 Fortinet Inc. All rights reserved. Powered by Fortinet TAC Team.
📲扫描下方二维码分享此页面👇
该页面修订于: 2023-09-12 15:24:01

results matching ""

    No results matching ""