strongswan之ipsec.conf配置手册(上)

本文涉及的产品
云防火墙,500元 1000GB
简介: strongswan之ipsec.conf配置手册

ipsec.conf是strongSwan的关键配置,文件指定了strongSwan IPsec子系统的大部分配置和控制信息。主要的例外是身份验证的密钥,配置保存在ipsec.secrets文件中。

该文件是一个文本文件,由一个或多个部分组成。#后面跟空格,再后面任何到行尾的任何内容都是注释并被忽略,不在一个部分内的空行也是如此。


包含include和文件名的行,以空格分隔,将替换为该文件的内容。如果文件名不是完整路径名,则认为它是相对于包含文件的目录,这样的包含可以嵌套。只能提供一个文件名,它可能不包含空格,但它可能包含shell通配符,例如:



include ipsec.*.conf


包含工具的目的主要是允许将连接或连接集的信息与主配置文件分开。这允许更改此类连接描述,将其复制到所涉及的其他安全网关等,而不必不断地从配置文件中提取它们,然后将它们重新插入其中。还要注意允许将单个逻辑部分(例如连接描述)分成几个实际部分的参数(如下所述)。


一个部分以如下形式的一行开始:



type name


其中type表示后面是什么类型的节,name是一个任意名称,用于将该节与其他相同类型的节区分开来。所有后续以空格开头的非空行都是该部分的一部分。 共享相同名称的相同类型的部分将被合并。


通常具有以下形式



parameter=value


(注意前面的强制性空格)。 = 两边可以有空格。参数名称特定于节类型。

空值代表参数的系统默认值(如果有),即大致相当于完全省略参数行。这对于清除从 %default 部分或通过参数(见下文)继承的设置可能很有用。一个值可能包含单个空格(额外的空格减少为一个空格)。为了保留写入的空白,请将整个值括在双引号 (") 中;在此类值中,双引号本身可以通过在它们前面加上 \ 字符来进行转义。双引号字符串可以通过以 \ 字符结尾来跨越多行(以下行不必以空格开头,因为它将被保留)。此外,以下控制字符可以编码在双引号字符串中:\n、\r、\t、\b、\f。

数值被指定为“整数”(数字序列)或“十进制数”(数字序列可选地后跟“.”和另一个数字序列)。


当前有一个参数可用于任何类型的部分:


该值也是一个部分名称;该节的参数由当前节继承。当前节中的参数总是覆盖继承的参数,即使它们后面也跟着一个。指定的节必须存在并且必须具有相同的节类型;如果它是在当前部分之前或之后定义的,则不会。允许嵌套,并且单个部分中也可能有多个(引用部分的参数按照这些参数的顺序被继承和覆盖)。


名称为 %default 的部分指定相同类型的部分的默认值。其中的所有参数都由该类型的所有其他部分继承。


目前有三种类型的部分:CONFIG部分指定IPsec的一般配置信息,CONN部分指定IPsec连接,而CA部分指定证书颁发机构的特殊属性。


CONN部分


conn 部分包含连接规范,定义要使用 IPsec 建立的网络连接。 给定的名称是任意的,用于标识连接。 这是一个简单的例子:

conn snt
           left=192.168.0.1
           leftsubnet=10.1.0.0/16
           right=192.168.0.2
           rightsubnet=10.1.0.0/16
           keyingtries=%forever
           auto=add

关于术语的注释:有两种通信正在进行:用户 IP 报文的传输,以及用于密钥、重新密钥和一般控制的网关到网关协商。控制连接的路径在 IKEv1 中称为“ISAKMP SA”,在 IKEv2 协议中称为“IKE SA”。正在协商的内核级数据路径称为“IPsec SA”或“子 SA”。 strongSwan 以前使用过两个单独的键控守护进程 pluto 和 charon。本手册不再讨论 pluto 选项,而只讨论自 strongSwan 5.0 支持 IKEv1 和 IKEv2 以来的 charon。

为了避免简单地编辑配置文件以使其适合连接中涉及的每个系统,连接规范是根据左右参与者而不是本地和远程来编写的。哪个参与者被认为是左或右是任意的;对于每个连接描述,都会尝试确定本地端点应该充当左端点还是右端点。这是通过将两个端点定义的 IP 地址与分配给本地网络接口的 IP 地址相匹配来完成的。如果找到匹配项,则匹配的角色(左或右)将被视为本地角色。如果在启动过程中没有找到匹配项,left 被认为是本地的。这允许在两端使用相同的连接规范。有没有对称性的情况;一个好的约定是使用 left 表示本地端和 right 表示远程端(第一个字母是一个很好的助记符)。


许多参数与一个参与者或另一个参与者有关;这里只列出了 left 的参数,但每个以 left 开头的参数都有一个右对应物,其描述相同,但左右颠倒。


除非标记为“(必需)”,否则参数是可选的。


CONN参数


除非另有说明,否则要使连接正常工作,通常两端必须在这些参数的值上完全一致。


aaa_identity = <id>

定义在 IKEv2 EAP 身份验证期间使用的 AAA 后端的身份。 如果 EAP 客户端使用验证服务器身份的方法(例如 EAP-TLS),但它与 IKEv2 网关身份不匹配,则需要这样做。



aggressive = yes | no

是使用 IKEv1 野蛮模式还是主模式(默认)。



ah = <cipher suites>

用于连接的AH算法的逗号分隔列表,例如sha1-sha256-modp1024。符号是完整性[-dhgroup]。对于IKEv2,同一类型的多个算法(用 - 分隔)可以包含在单个提案中。IKEv1仅包含提案中的第一个算法。只能使用关键字ah或esp,不支持 AH+ESP同时使用。


没有默认的AH密码套件,因为默认使用ESP。 守护程序将其广泛的默认提议添加到配置的值。要将其限制为已配置的提案,可以在末尾添加感叹号 (!)。


如果指定了dh-group,则CHILD_SA/Quick Mode设置和密钥更新包含单独的 Diffie-Hellman 交换。



also = <name>

包含 conn 部分 <名称>。



auth = <value>

pluto IKEv1 守护进程使用 AH 对 ESP 加密报文进行完整性保护,但在 charon 中不支持。ah关键字指定用于AH完整性保护的算法,但不加密。 不支持 AH+ESP 同时使用。



authby = pubkey | rsasig | ecdsasig | psk | secret | never | xauthpsk | xauthrsasig

两个安全网关应如何相互验证; 可接受的值为预共享密钥的 psk 或 secret、公钥签名的 pubkey(默认值)以及 RSA 数字签名的同义词 rsasig 和椭圆曲线 DSA 签名的 ecdsasig。 如果永远不会尝试或接受协商,则可以使用 never(对于 shuntonly conns 很有用)。 数字签名在各方面都优于共享密钥。 除了分别基于共享密钥或数字 RSA 签名的 IKEv1 主模式之外,IKEv1 还支持 xauthpsk 和 xauthrsasig 值,它们将启用扩展身份验证 (eXtended AUTHentication,XAUTH)。 不推荐使用此参数,因为两个对等体不需要就 IKEv2 中的身份验证方法达成一致。请改用 leftauth 参数来定义身份验证方法。



auto = ignore | add | route | start

IPsec 启动时应自动执行哪些操作(如果有); 当前接受的值是 add、route、start 和 ignore(默认值)。 add 加载连接而不启动它。 route 加载连接并安装内核陷阱。 如果检测到左子网和右子网之间的流量,则建立连接。 start 加载一个连接并立即启动它。 ignore 忽略连接。 这相当于从配置文件中删除一个连接。 仅本地相关,另一端无需同意。



closeaction = none | clear | hold | restart

定义远程对等体意外关闭 CHILD_SA 时要采取的操作。如果对等体使用重新身份验证或 uniquids 检查,则不应使用关闭操作,因为这些事件可能会在不需要时触发定义的操作。



compress = yes | no

是否在连接上建议IPComp压缩内容(链路级压缩对加密数据不起作用,因此要有效,必须在加密之前进行压缩); 可接受的值为 yes 和 no(默认值)。 值为 yes 会导致守护程序建议压缩和未压缩,并且更喜欢压缩。 no 值阻止守护进程提议或接受压缩。



dpdaction = none | clear | hold | restart

控制死节点检测协议 (Dead Peer Detection,DPD, RFC 3706) 的使用,其中定期发送 R_U_THERE 通知消息 (IKEv1) 或空 INFORMATIONAL 消息 (IKEv2) 以检查 IPsec 对等点的活跃性。 值 clear、hold 和 restart 都激活 DPD 并确定超时时要执行的操作。 clear连接关闭后,不采取进一步行动。 hold 安装一个陷阱策略,它将捕获匹配的流量并尝试按需重新协商连接。 restart 将立即触发重新协商连接的尝试。 默认值为 none,禁用 DPD 消息的主动发送。



dpddelay = 30s | <time>

定义将 R_U_THERE 消息/INFORMATIONAL 交换发送到对等体的周期时间间隔。 只有在没有收到其他流量时才会发送这些信息。 在 IKEv2 中,值为 0 时不发送额外的信息消息,并且仅使用标准消息(例如要重新加密的消息)来检测死节点。



dpdtimeout = 150s | <time>

定义超时间隔,在此之后与对等体的所有连接都将在不活动的情况下被删除。 这仅适用于 IKEv1,在 IKEv2 中,默认重传超时适用,因为每个交换都用于检测死对等体。



inactivity = <time>

定义超时间隔,在此之后,如果 CHILD_SA 未发送或接收任何流量,则将其关闭。 在 CHILD_SA 更新密钥期间,不活动计数器被重置。这意味着不活动超时必须小于重新生成密钥的间隔才能生效。



eap_identity = <id>

定义客户端用来回复 EAP 身份请求的身份。 如果在 EAP 服务器上定义,则定义的身份将在 EAP 身份验证期间用作对等体身份。 特殊值 %identity 使用 EAP 身份方法向客户端询问 EAP 身份。 如果未定义,IKEv2 身份将用作 EAP 身份。


/

esp = <cipher suites>

用于连接的 ESP 加密/身份验证算法的逗号分隔列表,例如 aes128-sha256。 表示法是加密完整性[-dhgroup][-esnmode]。 对于 IKEv2,同一类型的多个算法(用 - 分隔)可以包含在单个提案中。 IKEv1 仅包含提案中的第一个算法。 只能使用 ah 或 esp 关键字,不支持 AH+ESP 同时使用。


默认为 aes128-sha256。守护程序将其广泛的默认提议添加到此默认值或配置值。要将其限制为已配置的提案,可以在末尾添加感叹号 (!)。


注意:作为响应者,守护进程默认选择第一个配置的提案,该提案也受到对等体的支持。这可以通过 strongswan.conf更改为选择对等体发送的第一个可接受的提案。为了限制响应者只接受特定的密码套件,可以使用严格标志(!,感叹号),例如:aes256-sha512-modp4096!


如果指定了 dh-group,则 CHILD_SA/快速模式密钥更新和初始协商使用指定组的单独 Diffie-Hellman 交换。但是,对于 IKEv2,使用 IKE_SA 隐式创建的 CHILD_SA 的密钥将始终来自 IKE_SA 的密钥材料。因此,此处指定的任何 DH 组仅在 CHILD_SA 稍后被重新加密或使用单独的 CREATE_CHILD_SA 交换创建时才适用。因此,建议不匹配可能不会在 SA 建立时立即被注意到,但可能会导致更新密钥失败。


esnmode 的有效值为 esn 和 noesn。指定两者都与对等体协商扩展序列号支持,默认为 noesn。



forceencaps = yes | no

即使未检测到 NAT 情况,也强制对 ESP 报文进行 UDP 封装。 这可能有助于克服限制性防火墙。 为了强制对等体封装报文,NAT 检测有效负载是伪造的。



fragmentation = yes | accept | force | no

是否使用 IKE 分片(根据 RFC 7383 的专有 IKEv1 扩展或 IKEv2 分片)。 可接受的值为 yes(默认值)、accept、force 和 no。 如果设置为yes,并且对等体支持,超大的IKE 消息将分片发送。 如果设置为接受,则会向对等体宣布对分片的支持,但守护进程不会以分片的形式发送自己的消息。 如果设置为强制(仅支持 IKEv1),初始 IKE 消息将在需要时被分片。 最后,将该选项设置为 no 将禁用宣布对此功能的支持。


请注意,无论此选项的值如何(即使设置为 no),对等体发送的分片 IKE 消息总是被接受。



ike = <cipher suites>

要使用的 IKE/ISAKMP SA 加密/身份验证算法的逗号分隔列表,例如 aes128-sha256-modp3072。 符号是加密完整性[-prf]-dhgroup。 如果没有给出 PRF,则为完整性定义的算法用于 PRF。 prf 关键字与完整性算法相同,但具有 prf 前缀(例如 prfsha1、prfsha256 或 prfaesxcbc)。


在 IKEv2 中,可能包含多种算法和提议,例如 aes128-aes256-sha1-modp3072-modp2048,3dessha1-md5-modp1024。


默认为 aes128-sha256-modp3072。 守护程序将其广泛的默认提议添加到此默认值或配置值。 要将其限制为已配置的提案,可以在末尾添加感叹号 (!)。


注意:作为响应者,守护进程接受从对等体收到的第一个支持的提案。 为了限制响应者只接受特定的密码套件,可以使用严格标志(!,感叹号),例如:aes256-sha512-modp4096!



ikedscp = 000000 | <DSCP field>

要在从此连接发送的传出 IKE 报文上设置的区分服务字段代码点。 该值是定义要设置的代码点的六位二进制编码字符串,如 RFC 2474 中所定义。



ikelifetime = 3h | <time>

在重新协商之前,连接(ISAKMP 或 IKE SA)的密钥通道应该持续多长时间。 另请参阅下面的“SA到期/更新密钥”。



installpolicy = yes | no

决定是否由 charon 守护进程为给定连接在内核中安装 IPsec 策略。允许和平合作,例如与想要控制内核策略的移动 IPv6 守护进程 mip6d 一起使用。 可接受的值为 yes(默认值)和 no。



keyexchange = ike | ikev1 | ikev2

应该使用哪个密钥交换协议来启动连接。 标有 ike 的连接在启动时使用 IKEv2,但在响应时接受任何协议版本。



keyingtries = 3 | <number> | %forever

在放弃之前应该进行多少次尝试(整数或 %forever)来协商连接或替换连接(默认 3)。 值 %forever 表示“永不放弃”。 仅本地相关,另一端无需同意。



left = <ip address> | <fqdn> | %any | <range> | <subnet>

左侧参与者的公共网络接口的 IP 地址或几个魔术值之一。本地端点的值 %any(默认值)表示在协商期间要填写的地址(通过自动键入)。如果本地对等体发起连接设置,则会查询路由表以确定正确的本地 IP 地址。如果本地对等体响应连接设置,则将接受分配给本地接口的任何 IP 地址。


完全限定域名或 IP 地址前面的前缀 % 将隐式设置 leftallowany=yes。


如果 %any 用于远程端点,它的字面意思是任何 IP 地址。


如果分配了 FQDN,则每次完成配置查找时都会对其进行解析。如果 DNS 解析超时,则查找会延迟该时间。


要将连接限制在特定范围的主机,可以指定范围(10.1.0.0-10.2.255.255)或子网(10.1.0.0/16),多个地址、范围和子网可以用逗号分隔。虽然可以自由组合这些项目,但要启动连接,至少需要一个范围/子网。


请注意,使用通配符时,多个连接描述可能会匹配给定的传入连接尝试。在这种情况下使用最具体的描述。



leftallowany = yes | no

left 的修饰符,尽管已分配了具体的 IP 地址或域名,但使其行为为 %any。


leftauth = <auth method>

在本地(左)使用或从远程(右)端使用的身份验证方法。可接受的值是用于公钥认证 (RSA/ECDSA) 的 pubkey,用于预共享密钥认证的 psk,用于(要求)在 IKEv2 中使用可扩展认证协议的 eap,以及用于 IKEv1 扩展认证的 xauth。


要要求远程端的信任链公钥强度,请指定密钥类型,后跟以位为单位的最小强度(例如 ecdsa-384 或 rsa-2048-ecdsa-256)。要限制信任链验证的可接受散列算法集,请将散列算法附加到 pubkey 或密钥强度定义(例如 pubkey-sha256-sha512、rsa-2048-sha256-sha384-sha512 或 rsa-2048-sha256-ecdsa- 256-sha256-sha384)。除非在 strongswan.conf中禁用,或者配置了明确的 IKEv2 签名约束(见下文),否则这些密钥类型和哈希算法也将作为对远程端使用的 IKEv2 签名认证方案的约束。


如果两个对等点都支持 RFC 7427(“IKEv2 中的签名认证”),则可以配置在 IKEv2 认证期间使用的特定散列算法。语法与上面相同,但带有 ike: 前缀。例如,对于 ike:pubkeysha384-sha256,具有 SHA-384 或 SHA-256 的公钥签名方案将用于身份验证,按照该顺序并取决于对等体支持的哈希算法。如果未配置特定的哈希算法,则默认优先选择匹配或超过签名密钥强度的算法。如果没有配置带有 ike: 前缀的约束,则任何签名方案约束(没有 ike: 前缀)也将应用于 IKEv2 身份验证,除非在 strongswan.conf中禁用此功能。


要使用或要求 RSASSA-PSS 签名,请使用 rsa/pss 而不是 rsa,例如ike:rsa/pss-sha256。如果配置了 pubkey 或 rsa 约束,则只有在 strongswan.conf中启用时,才会使用/接受 RSASSA-PSS 签名。


对于 eap,可以附加一个可选的 EAP 方法。当前定义的方法有 eap-aka、eap-gtc、eap-md5、eap-mschapv2、eap-peap、eap-sim、eap-tls、eap-ttls、eap-dynamic 和 eap-radius。或者,接受 IANA 分配的 EAP 方法编号。供应商特定的 EAP 方法以 eap-type-vendor 的形式定义(例如 eap-7-12345)。要为 EAP-(T)TLS 指定签名和信任链约束,请在 EAP 方法后附加一个冒号,后跟上面讨论的密钥类型/大小和哈希算法。对于 xauth,可以指定 XAuth 身份验证后端,例如 xauth-generic 或 xauth-eap。如果在 leftauth 中使用 XAuth,则使用混合身份验证。对于传统的 XAuth 身份验证,在 lefauth2 中定义 XAuth。



leftauth2 = <auth method>

与 leftauth 相同,但定义了额外的身份验证交换。 在 IKEv1 中,第二轮认证只能使用 XAuth。 IKEv2 使用 RFC 4739 中定义的“多重身份验证交换”支持多轮完整的身份验证。例如,这允许对主机和用户进行单独的身份验证。



leftca = <issuer dn> | %same

证书颁发机构的专有名称,需要位于从左参与者证书到根证书颁发机构的信任路径中。 %same 表示应该重用为正确参与者配置的值。



leftca2 = <issuer dn> | %same

与 leftca 相同,但用于第二轮身份验证(仅限 IKEv2)。



leftcert = <path>

左侧参与者的 X.509 证书的路径。 该文件可以以 PEM 或 DER 格式编码。 也支持 OpenPGP 证书。 绝对路径或相对于 /etc/ipsec.d/certs 的路径都被接受。 默认情况下,leftcert 将 leftid 设置为证书主题的可分辨名称。 但是,可以通过指定必须由证书认证的 leftid 值来覆盖左侧参与者的 ID。 %smartcard[<slot nr>[@<module>]]:<keyid> 形式的值定义要从 PKCS#11 后端为此连接加载的特定证书。 有关智能卡定义的详细信息,请参阅 ipsec.secrets。 仅当使用 leftid 选择证书不够时才需要 leftcert,例如,如果多个证书使用相同的主题。 可以在逗号分隔的列表中指定多个证书路径或 PKCS#11 后端。 如果可能,守护程序会根据收到的证书请求选择证书,然后再强制执行第一个。



leftcert2 = <path>

与 leftcert 相同,但用于第二轮身份验证(仅限 IKEv2)。



leftcertpolicy = <OIDs>

对等体的证书必须具有的证书策略 OID 的逗号分隔列表。 OID 使用数字点表示来指定。



leftdns = <servers>

要作为配置属性交换的 DNS 服务器地址的逗号分隔列表。 在启动器上,服务器是一个固定的 IPv4/IPv6 地址,或 %config4/%config6 来请求没有地址的属性。 在响应者上,仅允许使用固定的 IPv4/IPv6 地址并定义分配给客户端的 DNS 服务器。



leftfirewall = yes | no

左侧参与者是否正在使用 iptables 对来自 leftsubnet 的流量进行转发防火墙(包含伪装),一旦建立连接,就应该关闭(对于到另一个子网的流量);可接受的值为 yes 和 no(默认值)。不能在与 leftupdown 相同的连接描述中使用。作为默认 ipsec _updown 脚本的参数实现。请参阅下面的注释。仅本地相关,另一端无需同意。


如果一个或两个安全网关都在进行转发防火墙(可能包含伪装),并且这是使用防火墙参数指定的,则使用 IPsec 建立的隧道不受其影响,因此报文可以通过隧道保持不变。 (这意味着以这种方式连接的所有子网必须具有不同的、不重叠的子网地址块。)这是由默认的 ipsec _updown 脚本完成的。


在需要更多控制的情况下,用户最好提供他自己的 updown 脚本,以便对他的系统进行适当的调整。



leftgroups = <group list>

逗号分隔的组名列表。 如果 leftgroups 参数存在,则对等体必须是该参数定义的至少一个组的成员。



leftgroups2 = <group list>

与 leftgroups 相同,但用于使用 leftauth2 定义的第二轮身份验证。



lefthostaccess = yes | no

使用默认的 ipsec _updown 脚本插入一对 INPUT 和 OUTPUT iptables 规则,从而在主机的内部接口是协商的客户端子网的一部分的情况下允许访问主机本身。 可接受的值为 yes 和 no(默认值)。



leftid = <id>

如何识别左参与者以进行身份验证;默认为 left 或使用 leftcert 配置的证书的主题。如果配置了 leftcert,则必须通过证书确认身份。


可以是 IP 地址、完全限定域名、电子邮件地址或可识别名称,其 ID 类型会自动确定,字符串会转换为适当的编码。此转换的规则在下面的“身份解析”中描述。


在某些特殊情况下,上面的身份解析可能不充分或产生错误的结果。例如需要将 FQDN 编码为 KEY_ID,或者字符串解析器无法生成证书 DN 的正确二进制 ASN.1 编码。对于这些情况,可以强制执行特定的身份类型并提供身份的二进制编码。为此,可以使用前缀,后跟冒号 (:)。如果数字符号 (#) 跟在冒号后面,则剩余数据被解释为十六进制编码,否则将字符串原样用作标识数据。注意:后者意味着不对非字符串身份执行任何转换。例如,ipv4:10.0.0.1 不会创建有效的 ID_IPV4_ADDR IKE 身份,因为它不会转换为二进制 0x0a000001。相反,可以使用 ipv4:#0a000001 来获得有效身份,但仅使用具有自动转换的隐式类型通常更简单。这同样适用于 ASN.1 编码类型。以下前缀是已知的:ipv4、ipv6、rfc822、email、userfqdn、fqdn、dns、asn1dn、asn1gn 和 keyid。自定义类型前缀可以通过用大括号包围数字类型值来指定。


对于 IKEv2 和 rightid,身份前面的前缀 % 可防止守护程序在其 IKE_AUTH 请求中发送 IDr,并允许它根据响应者证书中包含的主题和 subjectAltNames 验证配置的身份(否则仅与 IDr 进行比较由响应者返回)。如果响应者为 leftid 配置了不同的值,则发起者发送的 IDr 可能会阻止响应者找到配置。



leftid2 = <id>


相关文章
|
网络协议 安全 网络安全
为什么IPsec两端内网的网段能不能重复?分明可以实现!
为什么IPsec两端内网的网段能不能重复?分明可以实现!
为什么IPsec两端内网的网段能不能重复?分明可以实现!
|
存储 Linux
在Linux中,如何使用fstab文件配置自动挂载?
在Linux中,如何使用fstab文件配置自动挂载?
|
安全 网络安全 网络虚拟化
IPSec——如何快速搭建IPSec服务
IPSec——如何快速搭建IPSec服务
1210 0
|
算法 安全 网络安全
Diffie-Hellman (DH) 算法的工作原理
【8月更文挑战第23天】
1979 0
|
安全 算法 网络安全
IPSec VPN配置实验
IPSec VPN配置实验
808 7
|
安全 网络协议 网络安全
详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议
详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议
2009 3
|
网络协议 Shell 网络安全
strongswan之ipsec.conf配置手册(下)
strongswan之ipsec.conf配置手册
|
缓存 监控 网络协议
dpdk课程学习之练习笔记五(kni理解及测试)
dpdk课程学习之练习笔记五(kni理解及测试)
527 0
|
算法 Linux 网络安全
strongSwan对接H3C
strongSwan对接H3C
strongSwan对接H3C
|
算法 安全 Linux
Linux配置strongSwan
Linux配置strongSwan
Linux配置strongSwan