Asphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/security/SCTPmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/zh_TW/security/SCTPmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/it_IT/security/SCTPmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/ja_JP/security/SCTPmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/ko_KR/security/SCTPmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/pt_BR/security/SCTPmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/sp_SP/security/SCTPmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhN/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/security/SCTP.rsthKubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h Documentation/security/SCTP.rst h]h)}(hDocumentation/security/SCTP.rsth]hDocumentation/security/SCTP.rst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhKubj)}(h.赵硕 Shuo Zhao h]h)}(h-赵硕 Shuo Zhao h](h赵硕 Shuo Zhao <}(hj4hhhNhNubh reference)}(hzhaoshuo@cqsoftware.com.cnh]hzhaoshuo@cqsoftware.com.cn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]refuri!mailto:zhaoshuo@cqsoftware.com.cnuh1j<hj4ubh>}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj0ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhsection)}(hhh](htitle)}(hSCTPh]hSCTP}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1johjlhhhhhK ubjk)}(hhh](jp)}(hSCTP的LSM支持h]hSCTP的LSM支持}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhKubjk)}(hhh](jp)}(h 安全钩子h]h 安全钩子}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhKubh)}(hH对于安全模块支持,已经实现了三个特定于SCTP的钩子::h]hG对于安全模块支持,已经实现了三个特定于SCTP的钩子:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(husecurity_sctp_assoc_request() security_sctp_bind_connect() security_sctp_sk_clone() security_sctp_assoc_established()h]husecurity_sctp_assoc_request() security_sctp_bind_connect() security_sctp_sk_clone() security_sctp_assoc_established()}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(h\这些钩子的用法在下面的 `SCTP的SELinux支持`_ 一章中描述SELinux的实现。h](h"这些钩子的用法在下面的 }(hjhhhNhNubj=)}(h`SCTP的SELinux支持`_h]hSCTP的SELinux支持}(hjhhhNhNubah}(h]h ]h"]h$]h&]nameSCTP的SELinux支持refid sctpselinuxuh1j<hjresolvedKubh# 一章中描述SELinux的实现。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjk)}(hhh](jp)}(hsecurity_sctp_assoc_request()h]hsecurity_sctp_assoc_request()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhKubh)}(h将关联INIT数据包的 ``@asoc`` 和 ``@chunk->skb`` 传递给安全模块。 成功时返回 0,失败时返回错误。 ::h](h将关联INIT数据包的 }(hjhhhNhNubhliteral)}(h ``@asoc``h]h@asoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 和 }(hjhhhNhNubj)}(h``@chunk->skb``h]h @chunk->skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhF 传递给安全模块。 成功时返回 0,失败时返回错误。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h_@asoc - 指向sctp关联结构的指针。 @skb - 指向包含关联数据包skbuff的指针。h]h_@asoc - 指向sctp关联结构的指针。 @skb - 指向包含关联数据包skbuff的指针。}hj)sbah}(h]h ]h"]h$]h&]hhuh1jhhhK#hjhhubeh}(h]security-sctp-assoc-requestah ]h"]h$]security_sctp_assoc_request()ah&]uh1jjhjhhhhhK referencedKubjk)}(hhh](jp)}(hsecurity_sctp_bind_connect()h]hsecurity_sctp_bind_connect()}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1johj@hhhhhK(ubh)}(h将一个或多个IPv4/IPv6地址传递给安全模块进行基于 ``@optname`` 的验证, 这将导致是绑定还是连接服务,如下面的权限检查表所示。成功时返回 0,失败 时返回错误。 ::h](hC将一个或多个IPv4/IPv6地址传递给安全模块进行基于 }(hjQhhhNhNubj)}(h ``@optname``h]h@optname}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubh 的验证, 这将导致是绑定还是连接服务,如下面的权限检查表所示。成功时返回 0,失败 时返回错误。}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK)hj@hhubj)}(hX @sk - 指向sock结构的指针。 @optname - 需要验证的选项名称。 @address - 一个或多个IPv4 / IPv6地址。 @addrlen - 地址的总长度。使用sizeof(struct sockaddr_in)或 sizeof(struct sockaddr_in6)来计算每个ipv4或ipv6地址。 ------------------------------------------------------------------ | BIND 类型检查 | | @optname | @address contains | |----------------------------|-----------------------------------| | SCTP_SOCKOPT_BINDX_ADD | 一个或多个 ipv4 / ipv6 地址 | | SCTP_PRIMARY_ADDR | 单个 ipv4 or ipv6 地址 | | SCTP_SET_PEER_PRIMARY_ADDR | 单个 ipv4 or ipv6 地址 | ------------------------------------------------------------------ ------------------------------------------------------------------ | CONNECT 类型检查 | | @optname | @address contains | |----------------------------|-----------------------------------| | SCTP_SOCKOPT_CONNECTX | 一个或多个 ipv4 / ipv6 地址 | | SCTP_PARAM_ADD_IP | 一个或多个 ipv4 / ipv6 地址 | | SCTP_SENDMSG_CONNECT | 单个 ipv4 or ipv6 地址 | | SCTP_PARAM_SET_PRIMARY | 单个 ipv4 or ipv6 地址 | ------------------------------------------------------------------h]hX @sk - 指向sock结构的指针。 @optname - 需要验证的选项名称。 @address - 一个或多个IPv4 / IPv6地址。 @addrlen - 地址的总长度。使用sizeof(struct sockaddr_in)或 sizeof(struct sockaddr_in6)来计算每个ipv4或ipv6地址。 ------------------------------------------------------------------ | BIND 类型检查 | | @optname | @address contains | |----------------------------|-----------------------------------| | SCTP_SOCKOPT_BINDX_ADD | 一个或多个 ipv4 / ipv6 地址 | | SCTP_PRIMARY_ADDR | 单个 ipv4 or ipv6 地址 | | SCTP_SET_PEER_PRIMARY_ADDR | 单个 ipv4 or ipv6 地址 | ------------------------------------------------------------------ ------------------------------------------------------------------ | CONNECT 类型检查 | | @optname | @address contains | |----------------------------|-----------------------------------| | SCTP_SOCKOPT_CONNECTX | 一个或多个 ipv4 / ipv6 地址 | | SCTP_PARAM_ADD_IP | 一个或多个 ipv4 / ipv6 地址 | | SCTP_SENDMSG_CONNECT | 单个 ipv4 or ipv6 地址 | | SCTP_PARAM_SET_PRIMARY | 单个 ipv4 or ipv6 地址 | ------------------------------------------------------------------}hjqsbah}(h]h ]h"]h$]h&]hhuh1jhhhK.hj@hhubh)}(h%条目 ``@optname`` 的摘要如下::h](h条目 }(hjhhhNhNubj)}(h ``@optname``h]h@optname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 的摘要如下:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKGhj@hhubj)}(hXSCTP_SOCKOPT_BINDX_ADD - 允许在(可选地)调用 bind(3) 后,关联额外 的绑定地址。 sctp_bindx(3) 用于在套接字上添加一组绑定地址。 SCTP_SOCKOPT_CONNECTX - 允许分配多个地址以连接到对端(多宿主)。 sctp_connectx(3) 使用多个目标地址在SCTP 套接字上发起连接。 SCTP_SENDMSG_CONNECT - 通过sendmsg(2)或sctp_sendmsg(3)在新关联上 发起连接。 SCTP_PRIMARY_ADDR - 设置本地主地址。 SCTP_SET_PEER_PRIMARY_ADDR - 请求远程对端将某个地址设置为其主地址。 SCTP_PARAM_ADD_IP - 在启用动态地址重配置时使用。 SCTP_PARAM_SET_PRIMARY - 如下所述,启用重新配置功能。h]hXSCTP_SOCKOPT_BINDX_ADD - 允许在(可选地)调用 bind(3) 后,关联额外 的绑定地址。 sctp_bindx(3) 用于在套接字上添加一组绑定地址。 SCTP_SOCKOPT_CONNECTX - 允许分配多个地址以连接到对端(多宿主)。 sctp_connectx(3) 使用多个目标地址在SCTP 套接字上发起连接。 SCTP_SENDMSG_CONNECT - 通过sendmsg(2)或sctp_sendmsg(3)在新关联上 发起连接。 SCTP_PRIMARY_ADDR - 设置本地主地址。 SCTP_SET_PEER_PRIMARY_ADDR - 请求远程对端将某个地址设置为其主地址。 SCTP_PARAM_ADD_IP - 在启用动态地址重配置时使用。 SCTP_PARAM_SET_PRIMARY - 如下所述,启用重新配置功能。}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKIhj@hhubh)}(h为了支持动态地址重新配置,必须在两个端点上启用以下 参数(或使用适当的 **setsockopt**\(2))::h](hh为了支持动态地址重新配置,必须在两个端点上启用以下 参数(或使用适当的 }(hjhhhNhNubhstrong)}(h**setsockopt**h]h setsockopt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(2)):}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK\hj@hhubj)}(hF/proc/sys/net/sctp/addip_enable /proc/sys/net/sctp/addip_noauth_enableh]hF/proc/sys/net/sctp/addip_enable /proc/sys/net/sctp/addip_noauth_enable}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhK_hj@hhubh)}(hd当相应的 ``@optname`` 存在时,以下的 *_PARAM_* 参数会 通过ASCONF块发送到对端::h](h 当相应的 }(hjhhhNhNubj)}(h ``@optname``h]h@optname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 存在时,以下的 }(hjhhhNhNubhemphasis)}(h *_PARAM_*h]h_PARAM_}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh* 参数会 通过ASCONF块发送到对端:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKbhj@hhubj)}(h @optname ASCONF Parameter ---------- ------------------ SCTP_SOCKOPT_BINDX_ADD -> SCTP_PARAM_ADD_IP SCTP_SET_PEER_PRIMARY_ADDR -> SCTP_PARAM_SET_PRIMARYh]h @optname ASCONF Parameter ---------- ------------------ SCTP_SOCKOPT_BINDX_ADD -> SCTP_PARAM_ADD_IP SCTP_SET_PEER_PRIMARY_ADDR -> SCTP_PARAM_SET_PRIMARY}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKehj@hhubeh}(h]security-sctp-bind-connectah ]h"]h$]security_sctp_bind_connect()ah&]uh1jjhjhhhhhK(j?Kubjk)}(hhh](jp)}(hsecurity_sctp_sk_clone()h]hsecurity_sctp_sk_clone()}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1johj'hhhhhKlubh)}(h每当通过 **accept**\(2)创建一个新的套接字(即TCP类型的套接字),或者当 一个套接字被‘剥离’时如用户空间调用 **sctp_peeloff**\(3),会调用此函数。 ::h](h 每当通过 }(hj8hhhNhNubj)}(h **accept**h]haccept}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubh(2)创建一个新的套接字(即TCP类型的套接字),或者当 一个套接字被‘剥离’时如用户空间调用 }(hj8hhhNhNubj)}(h**sctp_peeloff**h]h sctp_peeloff}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubh(3),会调用此函数。}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKmhj'hhubj)}(h@asoc - 指向当前sctp关联结构的指针。 @sk - 指向当前套接字结构的指针。 @newsk - 指向新的套接字结构的指针。h]h@asoc - 指向当前sctp关联结构的指针。 @sk - 指向当前套接字结构的指针。 @newsk - 指向新的套接字结构的指针。}hjjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKqhj'hhubeh}(h]security-sctp-sk-cloneah ]h"]h$]security_sctp_sk_clone()ah&]uh1jjhjhhhhhKlj?Kubjk)}(hhh](jp)}(h!security_sctp_assoc_established()h]h!security_sctp_assoc_established()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhKwubh)}(hk当收到COOKIE ACK时调用,对于客户端,对端的secid将被保存 到 ``@asoc->peer_secid`` 中::h](hP当收到COOKIE ACK时调用,对于客户端,对端的secid将被保存 到 }(hjhhhNhNubj)}(h``@asoc->peer_secid``h]h@asoc->peer_secid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 中:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKxhjhhubj)}(h]@asoc - 指向sctp关联结构的指针。 @skb - 指向COOKIE ACK数据包的skbuff指针。h]h]@asoc - 指向sctp关联结构的指针。 @skb - 指向COOKIE ACK数据包的skbuff指针。}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhK{hjhhubeh}(h]security-sctp-assoc-establishedah ]h"]h$]!security_sctp_assoc_established()ah&]uh1jjhjhhhhhKwj?Kubeh}(h]id1ah ]h"]h$] 安全钩子ah&]uh1jjhjhhhhhKj?Kubjk)}(hhh](jp)}(h!用于关联建立的安全钩子h]h!用于关联建立的安全钩子}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhKubh)}(h下图展示了在建立关联时 ``security_sctp_bind_connect()``、 ``security_sctp_assoc_request()`` 和 ``security_sctp_assoc_established()`` 的使用。 ::h](h"下图展示了在建立关联时 }(hjhhhNhNubj)}(h ``security_sctp_bind_connect()``h]hsecurity_sctp_bind_connect()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh、 }(hjhhhNhNubj)}(h!``security_sctp_assoc_request()``h]hsecurity_sctp_assoc_request()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 和 }(hjhhhNhNubj)}(h%``security_sctp_assoc_established()``h]h!security_sctp_assoc_established()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 的使用。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hXb SCTP 端点 "A" SCTP 端点 "Z" ============= ============= sctp_sf_do_prm_asoc() 关联的设置可以通过connect(2), sctp_connectx(3),sendmsg(2) or sctp_sendmsg(3)来发起。 这将导致调用security_sctp_bind_connect() 发起与SCTP对端端点"Z"的关联。 INIT ---------------------------------------------> sctp_sf_do_5_1B_init() 响应一个INIT数据块。 SCTP对端端点"A"正在请求一个临时关联。 如果是首次关联,调用security_sctp_assoc_request() 来设置对等方标签。 如果不是首次关联,检查是否被允许。 如果允许,则发送: <----------------------------------------------- INIT ACK | | 否则,生成审计事件并默默丢弃该数据包。 | COOKIE ECHO ------------------------------------------> sctp_sf_do_5_1D_ce() 响应一个COOKIE ECHO数据块。 确认该cookie并创建一个永久关联。 调用security_sctp_assoc_request() 执行与INIT数据块响应相同的操作。 <------------------------------------------- COOKIE ACK | | sctp_sf_do_5_1E_ca | 调用security_sctp_assoc_established() | 来设置对方标签 | | | | 如果是SCTP_SOCKET_TCP或是剥离的套接 | 字,会调用 security_sctp_sk_clone() | 来克隆新的套接字。 | | 建立 建立 | | ------------------------------------------------------------------ | 关联建立 | ------------------------------------------------------------------h]hXb SCTP 端点 "A" SCTP 端点 "Z" ============= ============= sctp_sf_do_prm_asoc() 关联的设置可以通过connect(2), sctp_connectx(3),sendmsg(2) or sctp_sendmsg(3)来发起。 这将导致调用security_sctp_bind_connect() 发起与SCTP对端端点"Z"的关联。 INIT ---------------------------------------------> sctp_sf_do_5_1B_init() 响应一个INIT数据块。 SCTP对端端点"A"正在请求一个临时关联。 如果是首次关联,调用security_sctp_assoc_request() 来设置对等方标签。 如果不是首次关联,检查是否被允许。 如果允许,则发送: <----------------------------------------------- INIT ACK | | 否则,生成审计事件并默默丢弃该数据包。 | COOKIE ECHO ------------------------------------------> sctp_sf_do_5_1D_ce() 响应一个COOKIE ECHO数据块。 确认该cookie并创建一个永久关联。 调用security_sctp_assoc_request() 执行与INIT数据块响应相同的操作。 <------------------------------------------- COOKIE ACK | | sctp_sf_do_5_1E_ca | 调用security_sctp_assoc_established() | 来设置对方标签 | | | | 如果是SCTP_SOCKET_TCP或是剥离的套接 | 字,会调用 security_sctp_sk_clone() | 来克隆新的套接字。 | | 建立 建立 | | ------------------------------------------------------------------ | 关联建立 | ------------------------------------------------------------------}hj$sbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubeh}(h]id2ah ]h"]!用于关联建立的安全钩子ah$]h&]uh1jjhjhhhhhKubeh}(h]sctplsmah ]h"]sctp的lsm支持ah$]h&]uh1jjhjlhhhhhKj?Kubjk)}(hhh](jp)}(hSCTP的SELinux支持h]hSCTP的SELinux支持}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1johjBhhhhhKubjk)}(hhh](jp)}(h 安全钩子h]h 安全钩子}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1johjShhhhhKubh)}(he上面的 `SCTP的LSM支持`_ 章节描述了以下SCTP安全钩子,SELinux的细节 说明如下::h](h 上面的 }(hjdhhhNhNubj=)}(h`SCTP的LSM支持`_h]hSCTP的LSM支持}(hjlhhhNhNubah}(h]h ]h"]h$]h&]nameSCTP的LSM支持jj<uh1j<hjdjKubhG 章节描述了以下SCTP安全钩子,SELinux的细节 说明如下:}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjShhubj)}(husecurity_sctp_assoc_request() security_sctp_bind_connect() security_sctp_sk_clone() security_sctp_assoc_established()h]husecurity_sctp_assoc_request() security_sctp_bind_connect() security_sctp_sk_clone() security_sctp_assoc_established()}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjShhubjk)}(hhh](jp)}(hsecurity_sctp_assoc_request()h]hsecurity_sctp_assoc_request()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhKubh)}(h将关联INIT数据包的 ``@asoc`` 和 ``@chunk->skb`` 传递给安全模块。 成功时返回 0,失败时返回错误。 ::h](h将关联INIT数据包的 }(hjhhhNhNubj)}(h ``@asoc``h]h@asoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 和 }(hjhhhNhNubj)}(h``@chunk->skb``h]h @chunk->skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhF 传递给安全模块。 成功时返回 0,失败时返回错误。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hY@asoc - 指向sctp关联结构的指针。 @skb - 指向关联数据包skbuff的指针。h]hY@asoc - 指向sctp关联结构的指针。 @skb - 指向关联数据包skbuff的指针。}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubhdefinition_list)}(hhh]hdefinition_list_item)}(hX安全模块执行以下操作: 如果这是 ``@asoc->base.sk`` 上的首次关联,则将对端的sid设置 为 ``@skb`` 中的值。这将确保只有一个对端sid分配给可能支持多个 关联的 ``@asoc->base.sk``。 否则验证 ``@asoc->base.sk peer sid`` 是否与 ``@skb peer sid`` 匹配,以确定该关联是否应被允许或拒绝。 将sctp的 ``@asoc sid`` 设置为套接字的sid(来自 ``asoc->base.sk``) 并从 ``@skb peer sid`` 中提取MLS部分。这将在SCTP的TCP类型套接字及 剥离连接中使用,因为它们会导致生成一个新的套接字。 如果配置了IP安全选项(CIPSO/CALIPSO),则会在套接字上设置IP选项。 h](hterm)}(h安全模块执行以下操作:h]h安全模块执行以下操作:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubh definition)}(hhh](h)}(h如果这是 ``@asoc->base.sk`` 上的首次关联,则将对端的sid设置 为 ``@skb`` 中的值。这将确保只有一个对端sid分配给可能支持多个 关联的 ``@asoc->base.sk``。h](h 如果这是 }(hjhhhNhNubj)}(h``@asoc->base.sk``h]h@asoc->base.sk}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh3 上的首次关联,则将对端的sid设置 为 }(hjhhhNhNubj)}(h``@skb``h]h@skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhT 中的值。这将确保只有一个对端sid分配给可能支持多个 关联的 }(hjhhhNhNubj)}(h``@asoc->base.sk``h]h@asoc->base.sk}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(h~否则验证 ``@asoc->base.sk peer sid`` 是否与 ``@skb peer sid`` 匹配,以确定该关联是否应被允许或拒绝。h](h 否则验证 }(hjIhhhNhNubj)}(h``@asoc->base.sk peer sid``h]h@asoc->base.sk peer sid}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubh 是否与 }(hjIhhhNhNubj)}(h``@skb peer sid``h]h @skb peer sid}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubh: 匹配,以确定该关联是否应被允许或拒绝。}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(h将sctp的 ``@asoc sid`` 设置为套接字的sid(来自 ``asoc->base.sk``) 并从 ``@skb peer sid`` 中提取MLS部分。这将在SCTP的TCP类型套接字及 剥离连接中使用,因为它们会导致生成一个新的套接字。h](h 将sctp的 }(hj{hhhNhNubj)}(h ``@asoc sid``h]h @asoc sid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubh# 设置为套接字的sid(来自 }(hj{hhhNhNubj)}(h``asoc->base.sk``h]h asoc->base.sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubh ) 并从 }(hj{hhhNhNubj)}(h``@skb peer sid``h]h @skb peer sid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubh 中提取MLS部分。这将在SCTP的TCP类型套接字及 剥离连接中使用,因为它们会导致生成一个新的套接字。}(hj{hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hY如果配置了IP安全选项(CIPSO/CALIPSO),则会在套接字上设置IP选项。h]hY如果配置了IP安全选项(CIPSO/CALIPSO),则会在套接字上设置IP选项。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]id4ah ]h"]h$]j=ah&]uh1jjhjShhhhhKj?Kubjk)}(hhh](jp)}(hsecurity_sctp_bind_connect()h]hsecurity_sctp_bind_connect()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhKubh)}(hI根据 ``@optname`` 检查ipv4/ipv6地址所需的权限,具体如下::h](h根据 }(hjhhhNhNubj)}(h ``@optname``h]h@optname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh5 检查ipv4/ipv6地址所需的权限,具体如下:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hX------------------------------------------------------------------ | BIND 权限检查 | | @optname | @address contains | |----------------------------|-----------------------------------| | SCTP_SOCKOPT_BINDX_ADD | 一个或多个 ipv4 / ipv6 地址 | | SCTP_PRIMARY_ADDR | 单个 ipv4 or ipv6 地址 | | SCTP_SET_PEER_PRIMARY_ADDR | 单个 ipv4 or ipv6 地址 | ------------------------------------------------------------------ ------------------------------------------------------------------ | CONNECT 权限检查 | | @optname | @address contains | |----------------------------|-----------------------------------| | SCTP_SOCKOPT_CONNECTX | 一个或多个 ipv4 / ipv6 地址 | | SCTP_PARAM_ADD_IP | 一个或多个 ipv4 / ipv6 地址 | | SCTP_SENDMSG_CONNECT | 单个 ipv4 or ipv6 地址 | | SCTP_PARAM_SET_PRIMARY | 单个 ipv4 or ipv6 地址 | ------------------------------------------------------------------h]hX------------------------------------------------------------------ | BIND 权限检查 | | @optname | @address contains | |----------------------------|-----------------------------------| | SCTP_SOCKOPT_BINDX_ADD | 一个或多个 ipv4 / ipv6 地址 | | SCTP_PRIMARY_ADDR | 单个 ipv4 or ipv6 地址 | | SCTP_SET_PEER_PRIMARY_ADDR | 单个 ipv4 or ipv6 地址 | ------------------------------------------------------------------ ------------------------------------------------------------------ | CONNECT 权限检查 | | @optname | @address contains | |----------------------------|-----------------------------------| | SCTP_SOCKOPT_CONNECTX | 一个或多个 ipv4 / ipv6 地址 | | SCTP_PARAM_ADD_IP | 一个或多个 ipv4 / ipv6 地址 | | SCTP_SENDMSG_CONNECT | 单个 ipv4 or ipv6 地址 | | SCTP_PARAM_SET_PRIMARY | 单个 ipv4 or ipv6 地址 | ------------------------------------------------------------------}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(h`SCTP的LSM支持`_ 提供了 ``@optname`` 摘要,并且还描述了当启用动态地址重新 配置时,ASCONF块的处理过程。h](j=)}(h`SCTP的LSM支持`_h]hSCTP的LSM支持}(hj)hhhNhNubah}(h]h ]h"]h$]h&]nameSCTP的LSM支持jj<uh1j<hj%jKubh 提供了 }(hj%hhhNhNubj)}(h ``@optname``h]h@optname}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh_ 摘要,并且还描述了当启用动态地址重新 配置时,ASCONF块的处理过程。}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]id5ah ]h"]h$]j%ah&]uh1jjhjShhhhhKj?Kubjk)}(hhh](jp)}(hsecurity_sctp_sk_clone()h]hsecurity_sctp_sk_clone()}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1johj\hhhhhKubh)}(hX>每当通过 **accept**\(2)(即TCP类型的套接字)创建一个新的套接字,或者 当一个套接字被“剥离”如用户空间调用 **sctp_peeloff**\(3)时, ``security_sctp_sk_clone()`` 将会分别将新套接字的sid和对端sid设置为 ``@asoc sid`` 和 ``@asoc peer sid`` 中包含的值。 ::h](h 每当通过 }(hjmhhhNhNubj)}(h **accept**h]haccept}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh~(2)(即TCP类型的套接字)创建一个新的套接字,或者 当一个套接字被“剥离”如用户空间调用 }(hjmhhhNhNubj)}(h**sctp_peeloff**h]h sctp_peeloff}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh (3)时, }(hjmhhhNhNubj)}(h``security_sctp_sk_clone()``h]hsecurity_sctp_sk_clone()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh8 将会分别将新套接字的sid和对端sid设置为 }(hjmhhhNhNubj)}(h ``@asoc sid``h]h @asoc sid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh 和 }(hjmhhhNhNubj)}(h``@asoc peer sid``h]h@asoc peer sid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh 中包含的值。}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj\hhubj)}(h@asoc - 指向当前sctp关联结构的指针。 @sk - 指向当前sock结构的指针。 @newsk - 指向新sock结构的指针。h]h@asoc - 指向当前sctp关联结构的指针。 @sk - 指向当前sock结构的指针。 @newsk - 指向新sock结构的指针。}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhj\hhubeh}(h]id6ah ]h"]h$]j~ah&]uh1jjhjShhhhhKj?Kubjk)}(hhh](jp)}(h!security_sctp_assoc_established()h]h!security_sctp_assoc_established()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhMubh)}(hX当接收到COOKIE ACK时调用,它将连接的对端sid设置为 ``@skb`` 中的值::h](hD当接收到COOKIE ACK时调用,它将连接的对端sid设置为 }(hjhhhNhNubj)}(h``@skb``h]h@skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 中的值:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hW@asoc - 指向sctp关联结构的指针。 @skb - 指向COOKIE ACK包skbuff的指针。h]hW@asoc - 指向sctp关联结构的指针。 @skb - 指向COOKIE ACK包skbuff的指针。}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhMhjhhubeh}(h]id7ah ]h"]h$]jah&]uh1jjhjShhhhhMj?Kubeh}(h]id3ah ]h"]h$]jah&]uh1jjhjBhhhhhKj?Kubjk)}(hhh](jp)}(h 策略声明h]h 策略声明}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1johj7hhhhhM ubh)}(h9以下支持SCTP的类和权限在内核中是可用的::h]h8以下支持SCTP的类和权限在内核中是可用的:}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj7hhubj)}(h/class sctp_socket inherits socket { node_bind }h]h/class sctp_socket inherits socket { node_bind }}hjVsbah}(h]h ]h"]h$]h&]hhuh1jhhhM hj7hhubh)}(h 当启用以下策略功能时::h]h当启用以下策略功能时:}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubj)}(h policycap extended_socket_class;h]h policycap extended_socket_class;}hjrsbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj7hhubh)}(hSELinux对SCTP的支持添加了用于连接特定端口类型 ``name_connect`` 权限 以及在下面的章节中进行解释的 ``association`` 权限。h](h?SELinux对SCTP的支持添加了用于连接特定端口类型 }(hjhhhNhNubj)}(h``name_connect``h]h name_connect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh3 权限 以及在下面的章节中进行解释的 }(hjhhhNhNubj)}(h``association``h]h association}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 权限。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubh)}(hU如果用户空间工具已更新,SCTP将支持如下所示的 ``portcon`` 声明::h](hA如果用户空间工具已更新,SCTP将支持如下所示的 }(hjhhhNhNubj)}(h ``portcon``h]hportcon}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 声明:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubj)}(h8portcon sctp 1024-1036 system_u:object_r:sctp_ports_t:s0h]h8portcon sctp 1024-1036 system_u:object_r:sctp_ports_t:s0}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhMhj7hhubeh}(h]id8ah ]h"] 策略声明ah$]h&]uh1jjhjBhhhhhM ubjk)}(hhh](jp)}(hSCTP对端标签h]hSCTP对端标签}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjhhhhhMubh)}(hX每个SCTP套接字仅分配一个对端标签。这个标签将在建立第一个关联时分配。 任何后续在该套接字上的关联都会将它们的数据包对端标签与套接字的对端标 签进行比较,只有在它们不同的情况下 ``association`` 权限才会被验证。 这是通过检查套接字的对端sid与接收到的数据包中的对端sid来验证的,以决 定是否允许或拒绝该关联。h](hX每个SCTP套接字仅分配一个对端标签。这个标签将在建立第一个关联时分配。 任何后续在该套接字上的关联都会将它们的数据包对端标签与套接字的对端标 签进行比较,只有在它们不同的情况下 }(hjhhhNhNubj)}(h``association``h]h association}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 权限才会被验证。 这是通过检查套接字的对端sid与接收到的数据包中的对端sid来验证的,以决 定是否允许或拒绝该关联。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hhh]j)}(hX注: 1) 如果对端标签未启用,则对端上下文将始终是 ``SECINITSID_UNLABELED`` (在策略声明中为 ``unlabeled_t`` )。 2) 由于SCTP可以在单个套接字上支持每个端点(多宿主)的多个传输地址,因此 可以配置策略和NetLabel为每个端点提供不同的对端标签。由于套接字的对端 标签是由第一个关联的传输地址决定的,因此建议所有的对端标签保持一致。 3) 用户空间可以使用 **getpeercon**\(3) 来检索套接字的对端上下文。 4) 虽然这不是SCTP特有的,但在使用NetLabel时要注意,如果标签分配给特定的接 口,而该接口‘goes down’,则NetLabel服务会移除该条目。因此,请确保网络启 动脚本调用 **netlabelctl**\(8) 来设置所需的标签(详细信息, 请参阅 **netlabel-config**\(8) 辅助脚本)。 5) NetLabel SCTP对端标签规则应用如下所述标签为“netlabel”的一组帖子: https://www.paul-moore.com/blog/t. 6) CIPSO仅支持IPv4地址: ``socket(AF_INET, ...)`` CALIPSO仅支持IPv6地址: ``socket(AF_INET6, ...)`` 测试CIPSO/CALIPSO时请注意以下事项: a) 如果SCTP数据包由于无效标签无法送达,CIPSO会发送一个ICMP包。 b) CALIPSO不会发送ICMP包,只会默默丢弃数据包。 7) RFC 3554不支持IPSEC —— SCTP/IPSEC支持尚未在用户空间实现(**racoon**\(8) 或 **ipsec_pluto**\(8)),尽管内核支持 SCTP/IPSEC。h](j)}(h注:h]h注:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM<hjubj)}(hhh]henumerated_list)}(hhh](h list_item)}(h如果对端标签未启用,则对端上下文将始终是 ``SECINITSID_UNLABELED`` (在策略声明中为 ``unlabeled_t`` )。 h]h)}(h如果对端标签未启用,则对端上下文将始终是 ``SECINITSID_UNLABELED`` (在策略声明中为 ``unlabeled_t`` )。h](h=如果对端标签未启用,则对端上下文将始终是 }(hj<hhhNhNubj)}(h``SECINITSID_UNLABELED``h]hSECINITSID_UNLABELED}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubh (在策略声明中为 }(hj<hhhNhNubj)}(h``unlabeled_t``h]h unlabeled_t}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubh )。}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM$hj8ubah}(h]h ]h"]h$]h&]uh1j6hj3ubj7)}(hX/由于SCTP可以在单个套接字上支持每个端点(多宿主)的多个传输地址,因此 可以配置策略和NetLabel为每个端点提供不同的对端标签。由于套接字的对端 标签是由第一个关联的传输地址决定的,因此建议所有的对端标签保持一致。 h]h)}(hX.由于SCTP可以在单个套接字上支持每个端点(多宿主)的多个传输地址,因此 可以配置策略和NetLabel为每个端点提供不同的对端标签。由于套接字的对端 标签是由第一个关联的传输地址决定的,因此建议所有的对端标签保持一致。h]hX.由于SCTP可以在单个套接字上支持每个端点(多宿主)的多个传输地址,因此 可以配置策略和NetLabel为每个端点提供不同的对端标签。由于套接字的对端 标签是由第一个关联的传输地址决定的,因此建议所有的对端标签保持一致。}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hjtubah}(h]h ]h"]h$]h&]uh1j6hj3ubj7)}(hT用户空间可以使用 **getpeercon**\(3) 来检索套接字的对端上下文。 h]h)}(hS用户空间可以使用 **getpeercon**\(3) 来检索套接字的对端上下文。h](h用户空间可以使用 }(hjhhhNhNubj)}(h**getpeercon**h]h getpeercon}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh,(3) 来检索套接字的对端上下文。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM+hjubah}(h]h ]h"]h$]h&]uh1j6hj3ubj7)}(hXN虽然这不是SCTP特有的,但在使用NetLabel时要注意,如果标签分配给特定的接 口,而该接口‘goes down’,则NetLabel服务会移除该条目。因此,请确保网络启 动脚本调用 **netlabelctl**\(8) 来设置所需的标签(详细信息, 请参阅 **netlabel-config**\(8) 辅助脚本)。 h]h)}(hXM虽然这不是SCTP特有的,但在使用NetLabel时要注意,如果标签分配给特定的接 口,而该接口‘goes down’,则NetLabel服务会移除该条目。因此,请确保网络启 动脚本调用 **netlabelctl**\(8) 来设置所需的标签(详细信息, 请参阅 **netlabel-config**\(8) 辅助脚本)。h](h虽然这不是SCTP特有的,但在使用NetLabel时要注意,如果标签分配给特定的接 口,而该接口‘goes down’,则NetLabel服务会移除该条目。因此,请确保网络启 动脚本调用 }(hjhhhNhNubj)}(h**netlabelctl**h]h netlabelctl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:(8) 来设置所需的标签(详细信息, 请参阅 }(hjhhhNhNubj)}(h**netlabel-config**h]hnetlabel-config}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(8) 辅助脚本)。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM-hjubah}(h]h ]h"]h$]h&]uh1j6hj3ubj7)}(h~NetLabel SCTP对端标签规则应用如下所述标签为“netlabel”的一组帖子: https://www.paul-moore.com/blog/t. h]h)}(h}NetLabel SCTP对端标签规则应用如下所述标签为“netlabel”的一组帖子: https://www.paul-moore.com/blog/t.h](h[NetLabel SCTP对端标签规则应用如下所述标签为“netlabel”的一组帖子: }(hjhhhNhNubj=)}(h!https://www.paul-moore.com/blog/th]h!https://www.paul-moore.com/blog/t}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurij uh1j<hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM2hjubah}(h]h ]h"]h$]h&]uh1j6hj3ubj7)}(hX8CIPSO仅支持IPv4地址: ``socket(AF_INET, ...)`` CALIPSO仅支持IPv6地址: ``socket(AF_INET6, ...)`` 测试CIPSO/CALIPSO时请注意以下事项: a) 如果SCTP数据包由于无效标签无法送达,CIPSO会发送一个ICMP包。 b) CALIPSO不会发送ICMP包,只会默默丢弃数据包。 h](h)}(hlCIPSO仅支持IPv4地址: ``socket(AF_INET, ...)`` CALIPSO仅支持IPv6地址: ``socket(AF_INET6, ...)``h](hCIPSO仅支持IPv4地址: }(hj! hhhNhNubj)}(h``socket(AF_INET, ...)``h]hsocket(AF_INET, ...)}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj! ubh CALIPSO仅支持IPv6地址: }(hj! hhhNhNubj)}(h``socket(AF_INET6, ...)``h]hsocket(AF_INET6, ...)}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj! ubeh}(h]h ]h"]h$]h&]uh1hhhhM5hj ubj)}(hhh]j)}(h测试CIPSO/CALIPSO时请注意以下事项: a) 如果SCTP数据包由于无效标签无法送达,CIPSO会发送一个ICMP包。 b) CALIPSO不会发送ICMP包,只会默默丢弃数据包。 h](j)}(h.测试CIPSO/CALIPSO时请注意以下事项:h]h.测试CIPSO/CALIPSO时请注意以下事项:}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM:hjR ubj)}(hhh]j2)}(hhh](j7)}(hR如果SCTP数据包由于无效标签无法送达,CIPSO会发送一个ICMP包。h]h)}(hjl h]hR如果SCTP数据包由于无效标签无法送达,CIPSO会发送一个ICMP包。}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM9hjj ubah}(h]h ]h"]h$]h&]uh1j6hjg ubj7)}(h