Windows自带客户端通过L2TP over IPSec接入总部

Windows自带客户端通过L2TP over IPSec接入总部

分支机构员工安全访问总部内网,可与总部网关建立L2TP over IPSec隧道连接。员工通过使用PCWindows自带的软件进行拨号,从而访问总部服务器。员工和总部网关都要经过NAT才能访问外网,要在IKE中开启NAT穿越功能。

说明:

本举例中进行拨号的LAC客户端自带软件,可以为PCWindows XPWindows 7系统或iPhoneiPad等的自带软件。在使用Windows XPWindows
7
系统自带软件进行拨号时,请先修改注册表项。

本举例中的PC使用的是缺省的CHAP认证方式,如果PC使用EAP认证方式,请在LNS侧增加RADIUS服务器,进行RADIUS相关配置,并在LNS的虚拟接口模板视图下执行ppp
authentication-mode
eap命令,将认证方式配置为EAP

组网需求

图1所示,分支机构员工作为LAC客户端通过分支机构网关(USG_A)连接到Internet。且此员工由于没有安装拨号软件,只能使用Windows系统自带软件向LNS端进行拨号连接。总部网关有两个,一个是LNS端,另外一个(USG_B)作为NAT设备与外网相连。USG_AUSG_BLNS之间路由可达。

LAC客户端直接向LNS发起连接请求,先进行IPSec协商建立IPSec隧道,再进行L2TP协商对身份进行认证,建立L2TP over
IPSec
隧道连接。LAC客户端与LNS之间的通讯数据需要通过隧道进行传输,先使用L2TP封装第二层数据,再使用IPSec对数据进行加密。

1 客户端使用Windows系统自带软件通过L2TP over
IPSec
接入总部组网图
1.png

项目

数据

说明

USG_A

(1)

接口号:GigabitEthernet 0/0/1

IP地址:10.1.1.1/24

安全域:Trust

(2)

接口号:GigabitEthernet 0/0/2

IP地址:20.1.1.1/24

安全域:Untrust

NAT配置

NAT地址池:20.1.1.10/2420.1.1.110/24

USG_B

(3)

接口号:GigabitEthernet 0/0/2

IP地址:30.1.1.1/24

安全域:Untrust

(4)

接口号:GigabitEthernet 0/0/1

IP地址:10.2.1.1/24

安全域:Trust

NAT
Server
配置

外部访问的IP地址:30.1.1.10/24

LNS

(5)

接口号:GigabitEthernet 0/0/1

IP地址:10.2.1.2/24

安全域:Untrust

Virtual-Template接口

接口号:Virtual-Template 1

IP地址:10.3.1.1/24

安全域:Trust

地址池

IP
pool 1

地址范围:10.3.1.2/2410.3.1.100/24

说明:

建议IP地址池中的地址与总部内网地址设置为不在同一网段。此时要实现拨入用户对总部服务器的访问,需在公司总部设备配置到达10.3.1.0/24网段的路由,下一跳地址为LNS设备连接总部的接口IP地址。

L2TP配置

认证方式:CHAP

隧道验证:禁用

用户认证域名:vpdnuser@domain1.com

用户认证密码:Hello123

说明:

LAC客户端使用Windows操作系统自带的L2TP客户端软件拨号,不支持隧道验证,故需在LNS端关闭隧道验证功能。

IPSec配置

建立方式:策略模板

封装模式:传输模式

安全协议:ESP

ESP协议验证算法:SHA1

ESP协议加密算法:3DES

IKE协商模式:主模式

IKE的预共享密钥:abcde

IKE验证身份类型:IP

IKE加密算法:3DES-cbc

IKE
DH
组:DH-group2

NAT穿越:开启

IKE版本:IKEv1IKEv2

LAC
Client

IP地址

10.1.1.2/24

L2TP配置

认证方式:CHAP

用户认证域名:vpdnuser@domain1.com

用户认证密码:Hello123

IPSec配置

IKE的预共享密钥:abcde

对端地址:30.1.1.10

配置思路

1. 完成USG_AUSG_BLNS网关的接口基本配置、安全域间包过滤配置和路由配置。

2. 分支机构员工使用Windows自带软件与总部进行L2TP over
IPSec
隧道连接。由于建立隧道的两端都处于内网,故需要分别在两端网关配置NAT。在USG_A上配置源NAT,将LAC
Client
IP地址转化为公网地址;USG_B上配置NAT Server,将接口(5)IP地址以公网地址形式提供给用户。

3. 配置LNS端的L2TP参数,包括创建虚拟接口模板、配置L2TP组参数等。

4. 在LNS创建用户名、密码,用于出差员工登录。并创建IP地址池,分配给登录的出差员工。

5. LNS端通过配置高级ACL规则组来定义需要保护的数据流,保护的数据流匹配L2TP的端口号1701

6. 在LNS端配置IPSec安全提议、IKE安全提议和IKE对等体。

由于Windows自带软件只支持传输模式,LNS上也只能配置传输模式的IPSec建立隧道。

IPSec封装模式中,由于AH对整个IP都进行验证,NAT网关会改变IP头的地址,造成AH验证失败。而ESP只对IP负载进行验证,因而须在隧道两端采用ESP封装模式。

IPSec隧道要穿越NAT设备,需要在LNS网关的IKE对等体配置中需开启NAT穿越功能。

7. 由于出差员工的IP地址不固定,在LNS侧使用安全策略模板方式配置IPSec安全策略,并将IPSec安全策略应用到接口上。

8. 在LAC
Client
端配置L2TPIPSec

配置IPSec时,对端地址为接口(5)IP地址经NAT Server转换后的公网地址。配置L2TP参数,参数设置要和LNS端相对应。

操作步骤

1. 按照图1配置接口IP地址。具体配置过程略。

2. 将接口加入安全区域。

# 配置USG_A的接口加入安全域。

[USG] sysname USG_A

[USG_A] firewall zone trust

[USG_A-zone-trust] add interface GigabitEthernet
0/0/1

[USG_A-zone-trust] quit

[USG_A] firewall zone untrust

[USG_A-zone-untrust] add interface GigabitEthernet
0/0/2

[USG_A-zone-untrust] quit

# 配置USG_B的接口加入安全域。

[USG] sysname USG_B

[USG_B] firewall zone trust

[USG_B-zone-trust] add interface GigabitEthernet
0/0/1

[USG_B-zone-trust] quit

[USG_B] firewall zone untrust

[USG_B-zone-untrust] add interface GigabitEthernet
0/0/2

[USG_B-zone-untrust] quit

# 配置LNS的接口加入安全域。

说明:

Virtual-Template接口可以加入到任意一个安全区域。请开启LNS接收和发送L2TP隧道报文的实际物理接口(本例中为接口(5))所在安全区域和Local安全区域之间的包过滤。

[USG] sysname LNS

[LNS] firewall zone untrust

[LNS-zone-untrust] add interface GigabitEthernet
0/0/1

[LNS-zone-untrust] quit

[LNS] firewall zone trust

[LNS-zone-trust] add interface Virtual-Template 1

[LNS-zone-trust] quit

3. 对于USG系列,配置域间包过滤,以保证网络基本通信正常。对于USG
BSR/HSR
系列,不需要执行此步骤。

4. 配置USG_A上基于源IP地址的NAT

a. 创建NAT地址池1,地址范围为:20.1.1.10/2420.1.1.110/24

[USG_A] nat address-group index 1 20.1.1.10 20.1.1.110

b. 创建Trust区域和Untrust区域之间的NAT策略,确定进行NAT转换的源地址范围,并且将其与NAT地址池1进行绑定。

c.
[USG_A] nat-policy interzone trust untrust outbound

d.
[USG_A-nat-policy-interzone-trust-untrust-outbound] policy
0

e.
[USG_A-nat-policy-interzone-trust-untrust-outbound-0] policy
source 10.1.1.0 0.0.0.255

f.
[USG_A-nat-policy-interzone-trust-untrust-outbound-0] action
source-nat

g.
[USG_A-nat-policy-interzone-trust-untrust-outbound-0] address-group 1

h.
[USG_A-nat-policy-interzone-trust-untrust-outbound-0] quit

[USG_A-nat-policy-interzone-trust-untrust-outbound] quit

5. 配置USG_B上的NAT Server

[USG_B] nat server global 30.1.1.1 inside 10.2.1.2

6.
配置LNS侧的L2TPIPSec特性。

a. 配置LNS侧的L2TP特性。

#
创建并配置虚拟接口模板,并指定LNS端对用户的认证方式为CHAP认证。

[LNS] interface virtual-template 1

[LNS-Virtual-Template1] ip address 10.3.1.1
255.255.255.0

[LNS-Virtual-Template1] ppp authentication-mode
chap

[LNS-Virtual-Template1] quit

#
开启L2TP服务。

[LNS] l2tp enable

#
创建一个L2TP组,并将此组绑定虚拟接口模板。LAC客户端使用Windows操作系统自带的L2TP客户端软件拨号,不支持隧道验证,故在本端关闭隧道验证功能。

[LNS] l2tp-group 1

[LNS-l2tp1] allow l2tp virtual-template
1

[LNS-l2tp1] undo tunnel authentication

说明:

由于对端隧道名称无法设置,故此处使用缺省组1,即可不配置对端隧道名称。对端用户登录访问时,所有用户都在组1中进行认证。

# 配置域名后缀分隔符,即将@后面的字符识别为域名。

[LAC] l2tp domain suffix-separator @

#
创建认证方案,并设置认证方式为本地认证。

[LNS-aaa] authentication-scheme domain1

[LNS-aaa-authen-domain1] authentication-mode local

# 配置用户接入时的域名domain1.com,并引用认证方案domain1

[LNS-aaa] domain domain1.com

[LNS-aaa-domain-domain1.com] authentication-schem domain1

#
配置给用户分配地址的地址池。

[LNS-aaa-domain-domain1.com] ip pool 1 10.3.1.2
10.3.1.100

[LNS-aaa-domain-domain1.com] quit

#
设置AAA用户名及密码,使用此用户名和密码登录的用户能够通过认证。

[LNS-aaa] local-user vpdnuser@domain1.com password cipher
Hello123

#
在虚拟接口模板上绑定地址池1,为对端接口分配IP地址池中的地址。

[LNS] interface virtual-template 1

[LNS-Virtual-Template1] remote address pool
1

[LNS-Virtual-Template1] quit

b. 配置LNS侧的IPSec特性。本端使用模板方式建立IPSec,接受对方发起的连接。

#
配置需保护的数据流。由于L2TP over IPSec是先对报文进行L2TP封装,再进行IPSec封装,故此处使用L2TP报文的端口1701作为匹配条件。所有经过了L2TP封装的报文都走IPSec隧道。

[LNS] acl number 3001

[LNS-acl-adv-3001] rule permit udp source-port eq 1701

[LNS-acl-adv-3001] quit

说明:

1701端口为LNS作为隧道响应端处理L2TP报文的源端口。

#
配置IKE安全提议,IKE加密算法为3DES-cbcIKE DH组为DH-group2,与对端所支持情况相一致。其他参数使用缺省值。

[LNS] ike proposal 1

[LNS-ike-proposal-1] encryption-algorithm
3des-cbc

[LNS-ike-proposal-1] dh group2

[LNS-ike-proposal-1] quit

#
创建IKE对等体,使用主模式建立连接,引用IKE安全提议1,设置预共享密钥参数。NAT穿越功能缺省为开启,可以不配置。

[LNS] ike peer peer1

[LNS-ike-peer-peer1] ike-proposal 1

[LNS-ike-peer-peer1] pre-shared-key
abcde

[LNS-ike-peer-peer1] nat traversal

[LNS-ike-peer-peer1] quit

说明:

此处不用指定对端的名称或IP地址,可以接受多个对端发起的连接。

#
配置IPSec安全提议,设置封装模式为传输模式。ESP协议验证算法为SHA1ESP协议加密算法为3DES,与LAC
Client
所支持的算法相一致。其余参数使用缺省值。

[LNS] ipsec proposal p1

[LNS-ipsec-proposal-p1] encapsulation-mode
transport

[LNS-ipsec-proposal-p1] esp authentication-algorithm
sha1

[LNS-ipsec-proposal-p1] esp encryption-algorithm
3des

[LNS-ipsec-proposal-p1] quit

#
配置IPSec安全策略,本端使用模板方式建立IPSec安全策略,接收多个对端发起的连接。

[LNS] ipsec policy-template template1 1

[LNS-ipsec-policy-template-template1-1] ike-peer
peer1

[LNS-ipsec-policy-template-template1-1] proposal
p1

[LNS-ipsec-policy-template-template1-1] security acl
3001

[LNS-ipsec-policy-template-template1-1] quit

[LNS] ipsec policy policy1 1 isakmp template template1

#
在连接Internet的接口上应用安全策略。

[LNS] interface GigabitEthernet 0/0/1

[LNS-GigabitEthernet0/0/1] ipsec policy
policy1

[LNS-GigabitEthernet0/0/1] quit

7. 配置LAC
Client
的拨号参数。以Windows XP系统自带软件拨号为例。

a. 修改Windows
XP
系统的注册表项。Windows操作系统的L2TP功能缺省启动证书方式的IPSec,需要修改为本举例中需要的方式。

i. 在“开始 > 运行”中,输入regedit命令,单击“确定”,进入注册表编辑器。

ii. 在“注册表编辑器”页面的左侧导航树中,选择“我的电脑 >
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services >
IPSec
”。

iii. 在菜单栏上选择“编辑 > 新建 > DWORD值”。

iv. 键入AssumeUDPEncapsulationContextOnSendRule,然后按“ENTER”,修改文件名称。

v. 右键单击AssumeUDPEncapsulationContextOnSendRule,选择“修改”,进入修改界面。

vi. 在“数值数据”框中键入2,表示可以与位于NAT设备后面的服务器建立安全关联。

vii. 单击“确定”。

viii. 选择“我的电脑 >
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > RasMan
> Parameters
”。

ix. 在菜单栏上选择“编辑 > 新建 > DWORD值”。

x. 键入ProhibitIpSec,然后按“ENTER”,修改文件名称。

xi. 右键单击ProhibitIpSec,选择“修改”,进入修改界面。

xii. 在“数值数据”框中键入0

xiii. 单击“确定”,并退出注册表编辑器。

xiv. 重新启动该PC,使修改生效。

b. 查看IPSec服务状态,保证IPSec服务开启。

i. 在“开始 > 运行”中,输入services.msc命令,单击“确定”,进入“服务”界面。

ii. 在“名称”一列中,查看“IPSEC
Services
”的状态,确保状态为“已启用”。如果不为“已启用”,请右键单击“IPSEC
Services
”,选择“属性”,在“属性”中设置“启动类型”为自动,单击“应用”。之后在“服务状态”中选择“启动”。

iii. 关闭“服务”界面。

c. 创建L2TP over
IPSec
连接。

i. 在“开始 > 运行”中,输入control命令,单击“确定”,进入控制面板。

ii. 打开“网络连接”,在“网络任务”中选择“创建一个新的连接”,在弹出的界面中选择“下一步”。

iii. 在“网络连接类型”中选择“连接到我的工作场所的网络”,单击“下一步”。

iv. 在“网络连接”中选择“虚拟专用网络连接”,单击“下一步”。

v. 在“连接名”下的“公司名”文本框中设置公司名称或VPN服务器名称,本配置举例中设置为lns,单击“下一步”。

vi. 在“公用网络”中选择“不拨初始连接”,单击“下一步”。

vii. 在“VPN服务器选择”中填写LNSIP地址,此处设置的IP地址为USG与Internet连接接口的IP地址,本配置例中为30.1.1.10,单击“下一步”。

viii. 在“可用连接”中选择“只是我使用”,单击“下一步”。

ix. 将“在我的桌面上添加一个到此连接的快捷方式”选中,单击“完成”。

x. 在弹出的对话框中,输入VPN用户名为vpdnuser@domain1.com,密码Hello123,与LNS端设置一致。如图2所示。

2 连接LNS
2.png

xi. 单击“属性”,在“lns属性”对话框中,单击“网络”页签,“VPN类型”选择“L2TP IPSec
VPN
”。如图3所示。

3 设置lns属性的网络页签
3.png

xii. 单击“安全”页签,选择“高级(自定义设置)”,如图4所示。

4 设置lns属性的安全页签
4.png

xiii. 单击“设置”,在弹出的“高级安全设置”对话框中设置如图5所示,单击“确定”。

5 高级安全设置
5.png

xiv. 在“安全”页签中,单击“IPSec设置”。在弹出的“IPSec设置”对话框中,选中“使用预共享的密钥作身份验证”,并输入密钥为abcde,与LNS端一致。如图6所示。

6 IPSec设置
6.png

xv. 单击“确定”,返回至“lns属性”对话框。

xvi. 单击“确定”,完成设置,返回至图2。单击“连接”,发起隧道连接。

结果验证

1.  LAC用户使用Windows系统自带软件进行拨号,拨号成功。拨号成功后,查看PC的IP地址,可以看到已经获取到位于10.3.1.2/24~10.3.1.100/24网段的IP地址,其缺省网关为Virtual-Template 1接口的IP地址,显示信息如下。使用PC访问总部内网服务器,发现可以访问成功。
2. C:\Documents and Settings\Administrator> ipconfig
3.  
4. Windows IP Configuration
5.  
6.  
7. Ethernet adapter {1D873B6A-BAC3-4A99-A567-9F809EA3CE69}:
8.  
9.         Connection-specific DNS Suffix  . :
10.         IP Address. . . . . . . . . . . . : 10.3.1.2
11.         Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.3.1.1
12. 当该VPN用户上线时,在LNS上执行display l2tp tunnel命令可看到隧道建立成功。下面RemoteAddress地址为LAC客户端地址经过NAT转换后的地址,由USG_A分配。
13. <LNS> display l2tp tunnel
14.  Total tunnel = 1
15.  LocalTID RemoteTID RemoteAddress    Port   Sessions RemoteName
1        1         20.1.1.10        65480   1        client1
16. 在LNS上执行display l2tp session命令可看到会话连接建立成功。
17. <LNS> display l2tp session
18.  Total session = 1
19.  LocalSID  RemoteSID  LocalTID
1         1          1
20. 在LNS上执行display ike sa和display ipsec sa brief命令可看到IKE和IPSec隧道建立成功。
21. <LNS> display ike sa
22. current ike sa number: 2
23.   ---------------------------------------------------------------------
24.   conn-id     peer                   flag        phase    vpn
25.   ---------------------------------------------------------------------
26.   101         20.1.1.10              RD          v1:2     public
27.   100         20.1.1.10              RD          v1:1     public
28.  
29.   flag meaning
30.   RD--READY    ST--STAYALIVE  RL--REPLACED      FD--FADING
31.   TO--TIMEOUT  TD--DELETING   NEG--NEGOTIATING  D--DPD
32.  
33. <LNS> display ipsec sa brief
34.  
35. current ipsec sa number: 2
36. current ipsec tunnel number: 1
37. --------------------------------------------------------------
38. Src Address     Dst Address     SPI         Protocol  Algorithm
39. -------------------------------------------------------------------
40. 20.1.1.10       10.2.1.2        142427840   ESP       E:3DES;A:HMAC-SHA1-96;
10.2.1.2        20.1.1.10       52885424    ESP       E:3DES;A:HMAC-SHA1-96;  

配置脚本

·     USG_A的配置脚本
·         #
·          sysname USG_A
·         #
·          nat address-group index 1 20.1.1.10 20.1.1.110
·         #
·         nat-policy interzone trust untrust outbound
·          policy 0
·           action source-nat
·           policy source 10.1.1.0 0.0.0.255
·           address-group 1
·         #
·         interface GigabitEthernet0/0/1
·          ip address 10.1.1.1 255.255.255.0
·         #
·         interface GigabitEthernet0/0/2
·          ip address 20.1.1.1 255.255.255.0
·         #
·         firewall zone trust
·          set priority 85
·          add interface GigabitEthernet0/0/1
·         #
·         firewall zone untrust
·          set priority 5
·          add interface GigabitEthernet0/0/2  
·         #                                                  
·         policy interzone local trust inbound              
·          policy 1                                           
·           action permit            
·         #                                                   
·         policy interzone local trust outbound             
·          policy 1                                           
·           action permit
·         #                                                   
·         policy interzone local untrust inbound              
·          policy 1                                           
·           action permit 
·           policy destination 20.1.1.0 0.0.0.255
·         #                                                   
·         policy interzone local untrust outbound             
·          policy 1                                           
·           action permit 
·           policy source 20.1.1.0 0.0.0.255
·         #                                                   
·         policy interzone trust untrust inbound              
·          policy 1                                           
·           action permit
·           policy destination 10.1.1.0 0.0.0.0.255
·         #                                                   
·         policy interzone trust untrust outbound             
·          policy 1                                         
·           action permit
·           policy source 10.1.1.0 0.0.0.0.255
·     USG_B的配置脚本
·         #
·          sysname USG_B
·         #
·          nat server 0 global 30.1.1.10 inside 10.2.1.2
·         #
·         interface GigabitEthernet0/0/1
·          ip address 10.2.1.1 255.255.255.0
·         #
·         interface GigabitEthernet0/0/2
·          ip address 30.1.1.1 255.255.255.0
·         #
·         firewall zone trust
·          set priority 85
·          add interface GigabitEthernet0/0/1
·         #
·         firewall zone untrust
·          set priority 5
·          add interface GigabitEthernet0/0/2 
·         #                                                   
·         policy interzone trust untrust inbound              
·          policy 1                                           
·           action permit
·         #                                                   
·         policy interzone trust untrust outbound             
·          policy 1                                         
·           action permit
·     LNS的配置脚本
·         #
·          sysname LNS
·         #
·          l2tp domain suffix-separator @
·         #
·          l2tp enable
·         #
·         acl number 3001
·          rule 5 permit udp source-port eq 1701
·         #
·         ike proposal 1
·          encryption-algorithm 3des-cbc
·          dh group2
·         #
·         ike peer peer1
·          pre-shared-key %$%$U\zWG^*_4zY'uAgs\e:j'{r%$%$ 
·          ike-proposal 1
·          nat traversal
·         #
·         ipsec proposal p1
·          encapsulation-mode transport
·          esp authentication-algorithm sha1
·          esp encryption-algorithm 3des
·         #
·         ipsec policy-template template1 1
·          ike-peer peer1
·          proposal p1
·          security acl 3001
·         #
·         ipsec policy policy1 1 isakmp template template1
·         #
·         interface GigabitEthernet0/0/1
·          ip address 10.2.1.2 255.255.255.0
·          ipsec policy policy1
·         #
·         interface Virtual-Template1
·          ppp authentication-mode chap
·          ip address 10.3.1.1 255.255.255.0
·          remote address pool 1
·         #
·         firewall zone trust
·          set priority 85
·          add interface Virtual-Template 1
·         #
·         firewall zone untrust
·          set priority 5
·          add interface GigabitEthernet0/0/1
·         #
·         l2tp-group 1
·          allow l2tp virtual-template 1
·          undo tunnel authentication
·         #
·         aaa
·          local-user vpdnuser@domain1.com password cipher %$%$Y04[AOxVsLu~@X%k|xy$ivmd%$%$
·          authentication-scheme domain1
·          #
·          domain domain1.com
·           authentication-scheme  domain1
·           ip pool 1 10.3.1.2  10.3.1.100
·         #                                                   
·         policy interzone local untrust inbound              
·          policy 1                                           
·           action permit 
·           policy destination 10.2.1.0 0.0.0.255
·         #                                                   
·         policy interzone local untrust outbound             
·          policy 1                                           
·           action permit 
·           policy source 10.2.1.0 0.0.0.255
·         #                                                   
·         policy interzone trust untrust inbound              
·          policy 1                                           
·           action permit
·         #                                                   
·         policy interzone trust untrust outbound             
·          policy 1                                         
·           action permit
·         #
·         return

本文最后更新于 2020-01-08 20:19

请博主喝杯咖啡呢,谢谢^_^

如果本文“对您或有帮助”,欢迎随意打赏,以资鼓励继续创作!

原创文章《Windows自带客户端通过L2TP over IPSec接入总部》,作者:笔者 徐哲钻石会员,未经允许不得转载。
转载或复制时,请注明出处:https://www.xuxiaokun.com/120.html,本文由 Mr.xu 博客网 整理。
本站资源下载仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

(0)
打赏 微信扫一扫赞赏 微信扫一扫赞赏 支付宝扫一扫赞赏 支付宝扫一扫赞赏
上一篇 2014年11月13日
下一篇 2014年11月17日

相关推荐

发表回复

登录后才能评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

笔者期待与您共勉 · 互赢

有言必答、商务合作、有偿服务

QQ:点击这里给我发消息

邮件:it@xuxiaokun.com

线上沟通时间 ↓↓↓:

周一至周五 9:30 - 17:30

其余时间Mail或QQ我,有言必应。

244439232