IPv6
在 Arch Linux 中,IPv6 默认启用。
tldp Linux+IPv6-HOWTO (或 /usr/share/doc/howto/txt/Linux+IPv6-HOWTO,来自 tldp-howtos-txt)文章较旧且维护较少。但它试图涵盖本文中提到的许多主题,从基础开始,并以较慢的速度前进。它还有许多命令行示例。初学者在阅读本文档之前可以阅读或浏览它。
静态配置
有时,使用静态地址可以提高安全性。例如,如果您的本地路由器使用邻居发现或 radvd (RFC 2461),则您的接口将自动根据其 MAC 地址(使用 IPv6 的无状态自动配置)获得地址,除非启用了 隐私扩展或稳定私有地址。这可能对安全性不利,因为它允许在 IP 地址的网络部分发生变化时仍能跟踪系统。
systemd-networkd
要通过 systemd-networkd 配置静态 IPv4 和 IPv6,您可以这样做:
[Match] Name=XXXX (for example ens3) [Network] Address=XXX.XX.X.XX/32 (IPv4 address) Gateway=10.0.0.1 (IPv4 gateway) Address=XXXX:XXXX:X:XXX::2/64 (IPv6 address) Gateway=XXXX:XXXX:X:XXX::1 (IPv6 gateway)
每个人的网络参数各不相同,但应由 ISP 提供。请在 /etc/systemd/network/example.network 中创建或编辑文件。完成后,需要重启 networkd 服务。要检查 IPv4 和 IPv6 连接,请尝试 ping -c3 google.com 和 ping -6 -c3 google.com。
netctl
要使用 netctl 分配静态 IP 地址,请查看 /etc/netctl/examples/ethernet-static 中的示例配置文件。以下行很重要:
...
# For IPv6 static address configuration
IP6=static
Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
Routes6=('abcd::1234')
Gateway6='1234:0:123::abcd'
DNS=('6666:6666::1' '6666:6666::2')
如果您的提供商未提供 IPv6 DNS 并且您没有运行自己的 DNS 服务器,则可以从 resolv.conf 文章中选择。邻居发现
ping 组播地址 ff02::1 会导致链接本地范围内的所有主机响应。必须指定接口:
$ ping ff02::1%eth0
之后,您可以使用以下命令获取本地网络中所有 IPv6 邻居的列表:
$ ip -6 neigh
使用 ping 组播地址 ff02::2,只有路由器会响应。
如果添加了选项 -I your-global-ipv6,链接本地主机将用它们的全局范围地址响应。在这种情况下可以省略接口:
$ ping -I 2001:4f8:fff6::21 ff02::1
要 ping 所有接口上的所有主机,并向所有人宣告您的地址,请使用脚本。
#!/usr/bin/bash
declare -a l_ifs
readarray l_ifs < <(/sbin/ip -6 -j address | jq -r '.[] | .ifname ')
for l_if in ${l_ifs[@]} ; do
echo $l_if
declare -a l_addrs
readarray l_addrs < <(/sbin/ip -6 -j address show dev "$l_if" | \
jq -r '.[0].addr_info[].local')
for l_addr in ${l_addrs[@]} ; do
echo $l_addr
ping -c 4 -6 -I "$l_addr" ff02::1%"$l_if"
done
done
无状态自动配置 (SLAAC)
只要您的网络配置正确,获取 IPv6 地址的最简单方法是通过无状态地址自动配置(简称 SLAAC)。地址会自动从路由器宣告的 prefix 推断出来,不需要进一步配置或像 DHCP 客户端这样的专用软件。
SLAAC 实现于邻居发现之上。在没有路由器的情况下,客户端会自动将 fe80::/64 链接本地 prefix 与其 64 位接口标识符 (IID) 结合,形成其链接本地地址。当客户端收到包含 /64 prefix 的路由器宣告 (RA) 数据包时,它将 prefix 与 IID 结合,形成一个全局 IPv6 地址。默认情况下,IID 从 MAC 地址派生,但这会引发隐私问题,而“隐私”变体使用伪随机值来解决(见下文)。
对于客户端
如果您正在使用 netctl,只需将以下行添加到您的以太网或无线配置中。
IP6=stateless
如果您正在使用 NetworkManager,那么只要网络中有 IPv6 地址的宣告,它就会自动启用 IPv6 地址。
请注意,无状态自动配置是在允许 IPv6 ICMP 数据包在整个网络中传输的条件下工作的。因此,对于客户端,必须接受 ipv6-icmp 数据包。如果您正在使用 Simple stateful firewall/iptables,只需添加:
-A INPUT -p ipv6-icmp -j ACCEPT
如果您正在使用其他防火墙前端(ufw、shorewall 等),请查阅它们的文档以了解如何启用 ipv6-icmp 数据包。
如果您的网络管理解决方案不支持使用无状态 IPv6 配置 DNS 解析器(例如 netctl),那么可以使用 ndisc6 包中的 rdnssd(8)。
对于网关
为了正确地将 IPv6 分配给网络客户端,我们需要使用宣告守护程序。为此的常用工具是 radvd。radvd 的配置非常简单:
/etc/radvd.conf
interface LAN {
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
AdvDefaultLifetime 1800;
prefix ::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
上述配置将指示客户端使用宣告的 /64 块中的地址进行自动配置。请注意,上述配置宣告了分配给 LAN 朝向接口的所有可用前缀。如果您想限制宣告的前缀,请将 ::/64 替换为所需的前缀,例如 2001:DB8::/64。prefix 块可以重复多次以包含更多前缀。
为了确保 Android 设备能够成功连接,需要配置设置 AdvDefaultLifetime 1800。此特定值可防止 Google 问题跟踪器中详细说明的连接问题(请参阅:[1] 和 [2])。
要向您的 LAN 客户端宣告 DNS 服务器,您可以使用 RDNSS 功能。例如,添加以下行以宣告 Google 的 DNS v6 服务器:
/etc/radvd.conf
RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 {
};
网关还必须允许所有基本链上的 ipv6-icmp 数据包的流量。对于 Simple stateful firewall/iptables,请添加:
-A INPUT -p ipv6-icmp -j ACCEPT -A OUTPUT -p ipv6-icmp -j ACCEPT -A FORWARD -p ipv6-icmp -j ACCEPT
请相应地调整其他防火墙前端,并且不要忘记 启用 radvd.service。
隐私扩展
当客户端通过 SLAAC 获取地址时,其 IPv6 地址是从宣告的 prefix 和客户端网络接口的 MAC 地址派生出来的。这可能会引起隐私问题,因为可以通过 IPv6 地址轻松获得计算机的 MAC 地址。为了解决这个问题,已开发出IPv6 隐私扩展标准(内核中为 RFC 3041;最新版本为 RFC 8981)。通过隐私扩展,内核会生成一个临时地址,该地址是通过修改原始自动配置地址生成的。连接到远程服务器时首选私有地址,以便隐藏原始地址。要启用隐私扩展,请执行以下步骤:
添加以下 sysctl 参数:
/etc/sysctl.d/40-ipv6.conf
# Enable IPv6 Privacy Extensions net.ipv6.conf.all.use_tempaddr = 2 net.ipv6.conf.default.use_tempaddr = 2 net.ipv6.conf.nic.use_tempaddr = 2
其中 nic 是您的网络接口卡。您可以使用 网络配置#列出网络接口中的说明找到它们的名称。all.use_tempaddr 或 default.use_tempaddr 参数不适用于在执行 sysctl 设置时已经存在的 NIC。
至少在重启后,隐私扩展应该会启用。
| Variable name | 描述 |
|---|---|
use_tempaddr
|
偏好隐私扩展 (RFC3041)。<= 0:禁用;1:启用,但优先使用公共地址而不是临时地址;> 1:启用并优先使用临时地址而不是公共地址。 |
temp_prefered_lft
|
首选临时地址生命周期(秒)。请注意拼写错误必须使用。 |
temp_valid_lft
|
最大临时地址生命周期(秒)。 |
dhcpcd
dhcpcd 的默认配置包含选项 slaac private,它启用了“稳定的私有 IPv6 地址而不是基于硬件的地址”,实现了 RFC 7217。因此,除非希望比每次系统连接到新网络时更频繁地更改 IPv6 地址,否则无需更改任何内容。设置为 slaac hwaddr 以获得稳定地址。
NetworkManager
在 NetworkManager 中使用 IPv6 隐私扩展可以通过 NetworkManager.conf(5) 中的 ipv6.ip6-privacy 设置或连接配置文件来控制。如果全局或按连接未设置,NetworkManager 将回退读取 /proc/sys/net/ipv6/conf/default/use_tempaddr。
要默认显式启用 IPv6 隐私扩展,请将以下行添加到 NetworkManager.conf(5):
/etc/NetworkManager/conf.d/ip6-privacy.conf
[connection] ipv6.ip6-privacy=2
应用配置并重新连接到所有活动连接。
要控制单个 NetworkManager 管理的连接的 IPv6 隐私扩展的使用,请编辑 /etc/NetworkManager/system-connections/ 中所需的连接密钥文件,并在其 [ipv6] 部分追加键值对 ip6-privacy=2。
/etc/NetworkManager/system-connections/example_connection.nmconnection
... [ipv6] method=auto ip6-privacy=2 ...
重新加载连接并随后重新连接。
scope global temporary IPv6 地址似乎永不会续期(在其 valid_lft 生命周期结束时,它永远不会变为 deprecated 状态),但需要更长时间的验证来确认此地址确实会改变。systemd-networkd
systemd-networkd 默认不启用 IPv6 隐私扩展。要启用它们,请在每个连接的 .network 文件中的 [Network] 部分设置 IPv6PrivacyExtensions=yes,或使用 /etc/systemd/networkd.conf.d/ 中的配置文件进行全局设置。例如:
/etc/systemd/networkd.conf.d/ipv6-privacy-extensions.conf
[Network] IPv6PrivacyExtensions=yes
除非将 IPv6PrivacyExtensions 选项设置为 kernel,否则 systemd-networkd 不会遵守 net.ipv6.conf.nicN.use_tempaddr sysctl 设置。
然而,IPv6 隐私扩展的其他选项,如 net.ipv6.conf.nicN.temp_prefered_lft 和 net.ipv6.conf.nicN.temp_valid_lft,会被遵守。
有关详细信息,请参阅 systemd-networkd 和 systemd.network(5)。
ConnMan
在服务文件中使用以下设置:
/var/lib/connman/service/settings
IPv6.privacy=preferred
有关详细信息,请参阅 ConnMan。
稳定的私有地址
另一个选择是稳定的私有 IP 地址(RFC 7217)。这允许在网络内拥有稳定的 IP,而无需暴露接口的 MAC 地址。
为了让内核生成一个密钥(例如,针对 wlan0),我们可以设置:
# sysctl net.ipv6.conf.wlan0.addr_gen_mode=3
关闭并重新打开接口,然后运行 ip addr show dev wlan0 后,您应该会在每个 IPv6 地址旁边看到 stable-privacy。内核已生成一个 128 位密钥用于为该接口生成 IP 地址,要查看它,请运行 sysctl net.ipv6.conf.wlan0.stable_secret。我们将持久化此值,因此请将以下行添加到 /etc/sysctl.d/40-ipv6.conf:
# Enable IPv6 stable privacy mode net.ipv6.conf.wlan0.stable_secret = output_from_previous_command net.ipv6.conf.wlan0.addr_gen_mode = 2
stable-privacy 标志。NetworkManager
NetworkManager 不会遵守上述设置,但 NetworkManager 默认使用稳定的私有地址。[4][5]
systemd-networkd
上述设置不会被 systemd-networkd 遵守。为确保始终使用稳定的私有地址,您可以设置:
[IPv6AcceptRA] Token=prefixstable
上述命令指示 systemd-networkd 使用从机器 ID 派生的密钥。您也可以自己指定一个密钥,甚至可以将设置应用于仅出现在路由器宣告消息中的特定前缀。有关详细信息,请参阅 systemd.network(5) § [IPV6ACCEPTRA] SECTION OPTIONS。
如果需要,您还可以生成稳定的私有链接本地地址:
[Network] IPv6LinkLocalAddressGenerationMode=stable-privacy
IPv6 与 PPPoE
PPPoE 的标准工具 pppd(8) 只要您的 ISP 和调制解调器支持,就提供对 PPPoE 上 IPv6 的支持。只需将以下内容添加到 /etc/ppp/options:
+ipv6
如果您使用 netctl 进行 PPPoE,只需将以下内容添加到您的 netctl 配置中:
PPPoEIP6=yes
前缀委托 (DHCPv6-PD)
前缀委托是许多 ISP 使用的常见 IPv6 部署技术。它是一种将网络前缀分配给用户站点(即本地网络)的方法。可以配置路由器,将不同的网络前缀分配给不同的子网。ISP 通过 DHCPv6(通常是 /56 或 /64)发放网络前缀,DHCP 客户端将前缀分配给本地网络。对于一个简单的双接口网关,它实际上会为连接到本地网络的接口分配一个 IPv6 前缀,该地址是通过连接到 WAN 的接口(或像 ppp 这样的伪接口)获取的。
DHCPv6 要求客户端在端口 546 UDP 上接收传入连接。对于基于 nftables 的防火墙,可以在 /etc/nftables.conf 的 input 链中用一行进行配置:
table inet filter {
chain input {
udp dport dhcpv6-client accept
...
}
...
}
使用 dhcpcd
dhcpcd 除了支持 IPv4 DHCP 外,还提供了对 DHCPv6 客户端标准的相当完整的实现,其中包括 DHCPv6-PD。如果您正在使用 dhcpcd,请编辑 /etc/dhcpcd.conf。您可能已经在为 IPv4 使用 dhcpcd,只需更新现有配置。
duid
noipv6rs
waitip 6
# Uncomment this line if you are running dhcpcd for IPv6 only.
#ipv6only
# The following applies to the interface WAN.
interface WAN
ipv6rs
# Assign WAN the iaid 1.
iaid 1
# Assign a Normal Address to the interface with iaid 1 (i.e. WAN).
ia_na 1
# Delegate a prefix with wan interface iaid 1 (i.e. WAN) and lan interface LAN.
ia_pd 1 LAN
#ia_pd 1/::/64 LAN/0/64
此配置将请求来自 WAN 接口(WAN)的前缀并将其委托给内部接口(LAN)。如果发放的是 /64 范围,则需要使用注释掉的第二个 ia_pd instruction。它还将禁用除 WAN 接口(WAN)之外所有接口上的路由器宣告。
使用 WIDE-DHCPv6
WIDE-DHCPv6 是一个开源的 IPv6 动态主机配置协议 (DHCPv6) 实现,最初由 KAME 项目开发。它可以通过 wide-dhcpv6AUR 安装。
如果您正在使用 wide-dhcpv6,请编辑 /etc/wide-dhcpv6/dhcp6c.conf:
# use the interface connected to your WAN
interface WAN {
send ia-pd 0;
};
id-assoc pd 0 {
# use the interface connected to your LAN
prefix-interface LAN {
sla-id 1;
sla-len 8;
};
};
sla-len 应设置为使 (WAN-prefix) + (sla-len) = 64。在此情况下,它是为 /56 前缀设置的,56+8=64。对于 /64 前缀,sla-len 应为 0。wide-dhcpv6 客户端可以通过 dhcp6c@interface.service systemd 单元文件启动/启用,其中 interface 是配置文件中的接口名称,例如,对于接口名称“WAN”,请使用 dhcp6c@WAN.service。
systemd-networkd
配置上游 (wan) 和下游 (lan) 接口。这将启用运行 DHCPv6 客户端的接口上的 DHCPv6-PD。委托的前缀通过下游网络上的 IPv6 路由器宣告进行分发。
/etc/systemd/network/wan.network
[Network] # Use 'yes' instead of 'ipv6' for both ipv4 and ipv6. DHCP=ipv6
/etc/systemd/network/lan.network
[Network] IPv6SendRA=yes DHCPv6PrefixDelegation=yes
其他客户端
dhclient 也可以请求前缀,但必须使用 dhclient 退出脚本来将该前缀或其部分分配给接口。例如:https://github.com/jaymzh/v6-gw-scripts/blob/master/dhclient-ipv6。
NAT64
Wikipedia:NAT64 是 IPv6 过渡机制,IPv6 Only 主机可以通过 NAT 与 IPv4 主机通信。
Linux 内核本身不支持 NAT64,但有几个软件包可以添加对 NAT64 的支持。
- Jool — Linux 的 SIIT 和 NAT64
- https://nicmx.github.io/Jool/ || jool-dkmsAUR, jool-toolsAUR
- TAYGA — NAT64 守护进程
禁用 IPv4
禁用 Linux 上的 IPv4 或 IPv6 地址栈的原因非常少,双栈 Linux 自 1999 年以来一直运行良好。但随着全球 IPv6 普及的增长,IPv6 Only 网络已变得越来越普遍。NAT64 和 DNS64 是 IPv6 Only 网络与旧版 IPv4 Only 网络通信的常用过渡机制。
禁用 IPv4 网络服务的常见原因:
- 您知道您的服务提供商是 IPv6 Only 网络。
- 您的 ISP 使用运营商级 NAT (CGN 或 CGNAT),并且您的 IPv4 性能不如原生 IPv6。
- 您是一名网络工程师,正在您的自治系统 (AS) 中部署 NAT64。
在 systemd-networkd 中禁用 IPv4
要在 systemd-networkd 中配置 IPv6 Only 接口,请在您的网络配置中设置 LinkLocalAddressing=ipv6,请参阅下面的示例:
/etc/systemd/network/lan.network
[Match] Name=eno0 [Link] RequiredForOnline=routable RequiredFamilyForOnline=ipv6 [Network] # Enable IPv6 only LinkLocalAddressing=ipv6 # Enable DHCP DHCP=ipv6 # Enable SLAAC IPv6AcceptRA=true
禁用 IPv6
对于某些 ISP[6][7],IPv6 流量比 IPv4 慢:如果您能确定您遇到此类问题,禁用 IPv6 可能会加快您的网络速度。
不应盲目进行此操作:对于大多数用户,IPv4 Only 网络会在 运营商级 NAT 后面降低性能,并阻碍您使用 P2P 或 WebRTC 应用程序(例如某些游戏)。相反,配置 优先使用 IPv4 而非 IPv6 是两全其美的选择。
禁用功能
向内核行添加 ipv6.disable=1 会禁用整个 IPv6 栈,如果您遇到问题,这很可能是您想要的。有关更多信息,请参阅 内核参数。
或者,添加 ipv6.disable_ipv6=1 也可以使 IPv6 栈保持功能,但不会为您的任何网络设备分配 IPv6 地址。
sysctl
可以通过将以下 sysctl 配置添加到 /etc/sysctl.d/40-ipv6.conf 来为所有或特定网络接口禁用 IPv6 栈:
# Disable IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.nic0.disable_ipv6 = 1 ... net.ipv6.conf.nicN.disable_ipv6 = 1
但这仅在 重启 systemd-sysctl.service 后才能工作,因为 systemd-sysctl.service 在网络接口完全配置之前启动。在启动时,您只能为 lo、default 和 all 设置配置,因为它们是 IPv6 栈的内部部分。
# sysctl -w net.ipv6.conf.all.disable_ipv6=1 会删除所有网络接口上已分配的 IPv6 地址及其路由,并且可以撤销。- 大多数网络管理器(netplan、systemd-networkd、NetworkManager 等)会根据其自身的配置设置已配置网络接口的 IPv6 栈状态,忽略
net.ipv6.conf.default.disable_ipv6中设置的配置。 - 如果通过 sysctl 禁用 IPv6,您应该注释掉
/etc/hosts中的 IPv6 主机。否则可能会出现连接错误,因为主机将被解析为其无法访问的 IPv6 地址。
systemd unit
如果您想在启动时为所有网络接口禁用 IPv6 栈,并能轻松地稍后启用 IPv6,则需要一个在网络管理器之后运行的 systemd 单元。
用于 systemd-networkd 的单元将如下所示:
/etc/systemd/system/enforce_disable_ipv6.service
[Unit] Description=enforce default disable_ipv6 AssertPathExists=/proc/sys/net/ipv6/conf/all/disable_ipv6 AssertPathExists=/proc/sys/net/ipv6/conf/default/disable_ipv6 After=systemd-networkd.service PartOf=systemd-networkd.service [Service] Type=oneshot ExecStart=-/usr/bin/cp --no-preserve=all -T /proc/sys/net/ipv6/conf/default/disable_ipv6 /proc/sys/net/ipv6/conf/all/disable_ipv6 [Install] WantedBy=systemd-networkd.service
启用此单元后,任何对 systemd-networkd 的启动或重启都将强制所有网络接口上的 IPv6 栈状态的default值。
default 值可以在启动时通过 #sysctl 进行设置。
要为其他网络管理器调整此单元,需要将所有 systemd-networkd.service 的实例替换为其网络管理器的配置单元。
其他程序
在内核中禁用 IPv6 功能并不能阻止其他程序尝试使用 IPv6。在大多数情况下,这完全无害,但如果您发现自己在使用该程序时遇到问题,则应查阅该程序的手册页,了解禁用该功能的方法。
dhcpcd
dhcpcd 将继续无害地尝试执行 IPv6 路由器宣告。要禁用此功能,如 dhcpcd.conf(5) 手册页所述,请将以下内容添加到 /etc/dhcpcd.conf:
noipv6rs noipv6
NetworkManager
要在 NetworkManager 中禁用 IPv6,请右键单击网络状态图标,然后选择编辑连接 > 有线 > 网络名称 > 编辑 > IPv6 设置 > 方法 > 忽略/禁用。然后单击保存。
这也可以通过以下方式完成:
# nmcli connection modify ConnectionName ipv6.method "disabled"
然后重启网络连接。
# nmcli connection up ConnectionName
要确认设置已应用,请使用 ip address show 并检查是否未显示 inet6 条目。或者,/proc/sys/net/ipv6/conf/interface/disable_ipv6 的值应为 1。
ntpd
遵循 systemd#Drop-in files 中的建议,编辑 ntpd.service 以定义 systemd 如何启动它。
这将创建一个 drop-in 片段,该片段将代替默认的 ntpd.service 运行。-4 标志可防止 ntp 守护进程使用 IPv6。将以下内容放入 drop-in 片段:
[Service] ExecStart= ExecStart=/usr/bin/ntpd -4 -g -u ntp:ntp
首先清除之前的 ExecStart,然后将其替换为包含 -4 标志的一个。
GnuPG
在 dirmngr 的配置文件中禁用 IPv6:
~/.gnupg/dirmngr.conf
disable-ipv6
之后重启 dirmngr.service 用户单元。
sshd
将以下内容添加到 sshd_config,确保 sshd 使用 IPv4:
/etc/ssh/sshd_config
AddressFamily inet
并重启 sshd.service。
systemd-timesyncd
有时,即使 IPv6 已被禁用,systemd-timesyncd 仍会尝试查询 IPv6 时间服务器。这可能导致系统时钟未更新,并且日志中显示类似以下错误:
systemd-timesyncd[336]: Failed to set up connection socket: Address family not supported by protocol
systemd-timesyncd 的单元状态将在其状态条目中显示尝试连接 IPv6 地址,类似:
Status: "Connecting to time server [2001:19f0:8001:afd:5400:1ff:fe9d:cba]:123 (2.pool.ntp.org)"
根据 FS#59806,只有 "2." ntp.org 池提供 IPv6。因此,为防止此情况,请从 /etc/systemd/timesyncd.conf 文件中的 NTP 和 FallbackNTP 条目中删除 2.arch.pool.ntp.org 和 2.pool.ntp.org。
systemd-networkd
networkd 支持按接口禁用 IPv6。当网络单元的 [Network] 部分包含 LinkLocalAddressing=ipv4 或 LinkLocalAddressing=no 时,networkd 将不会尝试在匹配的接口上配置 IPv6。
但请注意,即使使用上述选项,如果未全局禁用 IPv6,networkd 仍会期望接收路由器通告。如果接口未接收到 IPv6 流量(例如由于 sysctl 或 ip6tables 设置),它将保持配置状态,并可能导致等待网络完全配置的服务超时。为避免这种情况,还应在 [Network] 部分设置 IPv6AcceptRA=no 选项。
优先使用 IPv4 而非 IPv6
取消注释 /etc/gai.conf 中的以下行
# # For sites which prefer IPv4 connections change the last line to # precedence ::ffff:0:0/96 100
参见
- IPv6 — kernel.org 文档
- IPv6 临时地址 — 关于临时地址和隐私扩展的摘要
- IPv6 前缀 — 前缀类型的摘要
- net.ipv6 选项 — 内核参数文档