/proc/sys/net/ipv6/conf/
是 Linux 系统中用于 动态配置 IPv6 网络接口参数 的核心目录。它允许针对不同网络接口(如 eth0
、wlan0
)或全局设置(all
)调整 IPv6 协议栈的行为。
它通过虚拟文件系统(procfs
)(不在磁盘在内存), 动态暴露内核参数,允许用户或管理员实时调整 IPv6 的网络行为。通过 /proc/sys/net/ipv6/conf/
,管理员可精细控制 IPv6 网络的方方面面,从地址分配到安全策略,成为网络调优和故障排查的利器。
核心功能
eth0
)的配置独立管理,支持差异化策略。/proc
下的文件为临时生效,持久化需通过 sysctl
配置文件。以下是详细的讲解:
/proc/sys/net/ipv6/conf/
├── all/ # 全局配置(覆盖所有接口)
├── default/ # 新增接口的默认配置模板
├── eth0/ # 针对 eth0 的配置
├── lo/ # 环回接口配置
└── wlan0/ # 针对 wlan0 的配置
子目录说明
子目录 | 作用 |
---|---|
all/ |
修改此目录下的参数会应用到所有网络接口(优先级高于单个接口的配置)。 |
default/ |
定义新创建的网络接口的默认参数(例如新增的虚拟接口或动态加载的网卡)。 |
<接口名>/ |
如 eth0/ 、wlan0/ ,用于配置特定接口的独立参数。 |
基础配置
参数文件 | 功能与取值 |
---|---|
disable_ipv6 |
- 0 :启用 IPv6(默认)- 1 :禁用 IPv6(接口不再处理 IPv6 流量)。 |
accept_ra |
控制是否接受路由器广播(Router Advertisements, RA): - 0 :拒绝 RA(禁用 SLAAC 自动配置)- 1 :接受 RA(默认)- 2 :接受 RA 但不设置默认路由。 |
accept_ra_defrtr |
在接受路由器广播(Router Advertisements, RA)(accept_ra=1 )后:是否将RA中的路由信息用于默认路由 - 0 :拒绝 RA 中的默认路由(需手动配置路由)。- 1 :接受 RA 中的默认路由(默认值,自动配置路由)。 |
ra_defrtr_metric |
设置通过 RA 添加的默认路由的优先级(metric)。需accept_ra_defrtr=1 是否将RA中的路由信息用于默认路由 默认 1024 ,可调整以优化路由选择。 |
autoconf |
- 1 :启用 SLAAC(需 accept_ra=1 )- 0 :禁用自动配置(需手动配置 IPv6 地址)。 |
forwarding |
启用 IPv6 数据包转发(路由器模式,默认 0 ,禁用)。 |
hop_limit |
默认跳数限制(类似 IPv4 的 TTL,默认 64 )。 |
mtu |
接口的 MTU 值(如 1500 )。 |
use_tempaddr |
是否生成临时隐私地址:0 =禁用,1 =启用,但优先使用稳定地址, 2 =优先使用临时地址 |
查看
sudo sysctl -a | grep -E 'disable_ipv6|autoconf|accept_ra|accept_ra_defrtr|ra_defrtr_metric|forwarding|hop_limit|mtu|use_tempaddr'
配置分类
1. 地址自动配置
参数名 | 作用 |
---|---|
autoconf |
是否通过 SLAAC 自动生成 IPv6 地址(默认 1 ,启用)。 |
use_tempaddr |
是否生成临时隐私地址:0 =禁用,1 =启用,但优先使用稳定地址,2 =优先使用临时地址。 |
2. 路由通告(RA)
参数名 | 作用 |
---|---|
accept_ra |
是否接受路由通告(RA)消息(默认 1 ,启用)。 |
accept_ra_defrtr |
是否通过 RA 设置默认路由(默认 1 ,启用)。 |
accept_ra_rt_info_max_plen |
接受 RA 路由信息的最大前缀长度。 |
ra_defrtr_metric |
设置通过 RA 添加的默认路由的优先级(metric)。需accept_ra_defrtr=1 是否将RA中的路由信息用于默认路由 默认 1024 ,可调整以优化路由选择。 |
3. 邻居发现(NDP)
参数名 | 作用 |
---|---|
ndisc_notify |
是否发送邻居发现通知(默认 1 ,启用)。 |
proxy_ndp |
是否启用 NDP 代理(默认 0 ,禁用)。 |
4. 安全与策略
参数名 | 作用 |
---|---|
disable_ipv6 |
完全禁用接口的 IPv6 协议栈(默认 0 ,启用)。 |
disable_policy |
禁用 IPv6 安全策略(如 IPsec,默认 0 ,启用策略)。 |
suppress_frag_ndisc |
抑制分片的邻居发现报文(防攻击,默认 1 ,启用)。 |
5. 转发与路由
参数名 | 作用 |
---|---|
forwarding |
启用 IPv6 数据包转发(路由器模式,默认 0 ,禁用)。 |
hop_limit |
默认跳数限制(类似 IPv4 的 TTL,默认 64 )。 |
mtu |
接口的 MTU 值(如 1500 )。 |
sudo sysctl -a | grep -E 'forwarding|hop_limit|mtu'
6. 启用临时地址
参数 | 功能 | 默认值 | 依赖关系 |
---|---|---|---|
use_tempaddr |
控制是否生成临时 IPv6 地址,并决定其优先级: • 0 :禁用• 1 :启用,但优先使用稳定地址• 2 :启用且优先使用临时地址 |
0 (禁用) |
需接口启用 SLAAC(autoconf=1 ) |
temp_valid_lft |
定义临时地址的 总有效期(从生成到失效的时间) | 604800 秒(7 天) |
需 use_tempaddr≥1 生效 |
temp_prefered_lft |
定义临时地址的 优先使用期(在此期间地址为首选,之后生成新地址) | 86400 秒(1 天) |
需 use_tempaddr≥1 生效 |
sudo sysctl -a | grep -E 'use_tempaddr|temp_valid_lft|temp_prefered_lft'
** 临时修改的写法用例**
直接向 /proc
写入值(重启失效):
禁用 eth0 的 IPv6
# 禁用 eth0 的 IPv6
echo 1 | sudo tee /proc/sys/net/ipv6/conf/eth0/disable_ipv6
或
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
为所有接口启用隐私扩展
# 为所有接口启用隐私扩展
echo 2 | sudo tee /proc/sys/net/ipv6/conf/all/use_tempaddr
或
sudo sysctl -w net.ipv6.conf.all.use_tempaddr=2
** 永久生效, 持久化配置,的写法用例**
# 永久生效:编辑 /etc/sysctl.conf 或 /etc/sysctl.d/*.conf
echo "net.ipv6.conf.eth0.accept_ra = 0" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p # 重新加载配置
# 将配置写入文件(如 /etc/sysctl.d/99-ipv6.conf)
echo "net.ipv6.conf.eth0.forwarding = 0" >> /etc/sysctl.d/99-ipv6.conf
echo "net.ipv6.conf.eth0.autoconf = 1" >> /etc/sysctl.d/99-ipv6.conf
# 加载配置
sudo sysctl -p /etc/sysctl.d/99-ipv6.conf
查看接口的配置
# 查看 eth0 的 IPv6 转发状态
cat /proc/sys/net/ipv6/conf/eth0/forwarding
sysctl net.ipv6.conf.eth0.forwarding
# 查看全局的 RA 接受状态
cat /proc/sys/net/ipv6/conf/all/accept_ra
sysctl net.ipv6.conf.all.accept_ra
# 查看default的 RA 接受状态
cat /proc/sys/net/ipv6/conf/default/accept_ra
sysctl net.ipv6.conf.default.accept_ra
禁用某个接口的 IPv6
# 临时禁用 eth1 的 IPv6
echo 1 > /proc/sys/net/ipv6/conf/eth1/disable_ipv6
# 临时禁用 eth0 的 IPv6 方法2
echo 1 | sudo tee /proc/sys/net/ipv6/conf/eth0/disable_ipv6
# 临时禁用 eth0 的 IPv6 方法3
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6
# 永久禁用(需重启或 sysctl -p)
echo "net.ipv6.conf.eth0.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
sysctl -p
# 永久禁用 (需重启或 sysctl -p)写法2
echo "net.ipv6.conf.eth1.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
/etc/sysctl.d/99-ipv6.conf
# 永久禁用 (需重启或 sysctl -p)推荐写到 /etc/sysctl.d/99-ipv6.conf
echo "net.ipv6.conf.eth1.disable_ipv6 = 1" >> /etc/sysctl.d/99-ipv6.conf
sysctl -p
配置 IPv6 路由器
# 启用 eth0 的 IPv6 转发
echo 1 > /proc/sys/net/ipv6/conf/eth0/forwarding
# 允许接收 RA(需手动覆盖默认行为)
echo 2 > /proc/sys/net/ipv6/conf/eth0/accept_ra
# 启用 IPv6 转发
echo 1 | sudo tee /proc/sys/net/ipv6/conf/all/forwarding
# 允许接受 RA(某些路由场景需要)
echo 1 | sudo tee /proc/sys/net/ipv6/conf/eth0/accept_ra
使用临时地址,优化隐私地址
# 优先使用临时地址
echo 2 > /proc/sys/net/ipv6/conf/eth0/use_tempaddr
# 永久设置临时地址生命周期
echo "net.ipv6.conf.eth0.temp_valid_lft = 604800" >> /etc/sysctl.conf
sysctl -p
参数优先级
eth0
)优先级高于全局配置(all
)。default/
目录中的配置仅对新创建的网络接口生效。优先级规则:
all/
的配置会覆盖单个接口的设置。default/
仅影响新创建的接口。安全建议:
accept_redirects
(可能引发路由欺骗)。accept_ra
仅在需要自动配置时开启。网络重启影响:
/proc
的参数会立即生效,但重启网络服务可能重置某些配置。内核兼容性:
man proc
或内核文档查询。与 sysctl
的关系
/proc/sys/net/ipv6/conf/
中的参数名需转换为 sysctl
格式:# /proc/sys/net/ipv6/conf/eth0/forwarding →
sysctl net.ipv6.conf.eth0.forwarding
sysctl -a | grep ipv6
可以列出所有 IPv6 相关内核参数sudo sysctl -a | grep ipv6
sudo sysctl -a | grep accept_ra
sudo sysctl -a | grep -E 'accept_ra|accept_ra_defrtr|ra_defrtr_metric'
sudo sysctl -a | grep -E 'accept_ra|accept_ra_defrtr|ra_defrtr_metric|autoconf|forwarding|hop_limit|mtu'
sudo sysctl -a | grep -E 'accept_ra|accept_ra_defrtr|ra_defrtr_metric|autoconf|forwarding|hop_limit|mtu|use_tempaddr'
sudo sysctl -a | grep -E 'accept_ra|accept_ra_defrtr|ra_defrtr_metric|autoconf|forwarding|hop_limit|mtu'
sudo sysctl -a | grep -E 'disable_ipv6|autoconf|accept_ra|accept_ra_defrtr|ra_defrtr_metric|forwarding|hop_limit|mtu|use_tempaddr'
sudo sysctl -a | grep -E 'disable_ipv6|autoconf|accept_ra|accept_ra_defrtr|ra_defrtr_metric|forwarding|hop_limit|mtu|use_tempaddr|temp_valid_lft|temp_prefered_lft'
/proc/sys/net/ipv6/conf/all/accept_ra
和 /proc/sys/net/ipv6/conf/default/accept_ra
和 /proc/sys/net/ipv6/conf/ens33/accept_ra
/proc/sys/net/ipv6/conf/all/accept_ra
/proc/sys/net/ipv6/conf/default/accept_ra
/proc/sys/net/ipv6/conf/ens33/accept_ra
以下是三个 IPv6 相关参数的区别与作用的详细对比:
关于 /proc/sys/net/ipv6/conf/
中不同位置 accept_ra
参数的详细讲解
1. accept_ra
参数的作用
accept_ra
(Accept Router Advertisements)用于控制网络接口是否接受 IPv6 路由器通告(Router Advertisement, RA)。路由器通告包含网络配置信息(如 IPv6 前缀、DNS 服务器地址等),接受 RA 可使设备自动配置 IPv6 地址和路由。
0
:不接受路由器通告。1
:当 IPv6 转发(forwarding)禁用时接受路由器通告。2
(部分内核支持):无论转发是否启用,均接受路由器通告。 2. 不同位置 accept_ra
的区别与配置方法
(1)/proc/sys/net/ipv6/conf/all/accept_ra
# 临时启用(重启后失效)
echo "1" > /proc/sys/net/ipv6/conf/all/accept_ra
# 永久生效(需重启或执行 sysctl -p)
echo "net.ipv6.conf.all.accept_ra=1" >> /etc/sysctl.conf
sysctl -p
(2)/proc/sys/net/ipv6/conf/default/accept_ra
# 临时设置(重启后失效)
echo "1" > /proc/sys/net/ipv6/conf/default/accept_ra
# 永久设置(需重启或执行 sysctl -p)
echo "net.ipv6.conf.default.accept_ra=1" >> /etc/sysctl.conf
sysctl -p
(3)/proc/sys/net/ipv6/conf/ens33/accept_ra
ens33
)的个性化配置,覆盖全局和默认设置。# 临时设置(重启后失效)
echo "1" > /proc/sys/net/ipv6/conf/ens33/accept_ra
# 永久设置(需重启或执行 sysctl -p)
echo "net.ipv6.conf.ens33.accept_ra=1" >> /etc/sysctl.conf
sysctl -p
3. 配置优先级
all
> default
。ens33
接口单独设置了 accept_ra=1
,则优先使用该值,忽略 all
和 default
的配置。有道dpsk说: 特定接口 > all > default。
元宝dpsk说: 接口级参数 > all/ > default/
参数 | eth0/ 设置 |
all/ 设置 |
default/ 设置 |
实际生效值 |
---|---|---|---|---|
disable_ipv6 |
0 | 1 | 1 | 0(接口级优先) |
accept_ra |
未设置 | 0 | 1 | 0(all/ 覆盖 default/ ) |
use_tempaddr |
未设置 | 2 | 1 | 2(all/ 生效) |
元宝Hunyuan说: 特定接口** > all
> **default
配置层级 | 作用范围 | 覆盖规则 |
---|---|---|
接口特定配置 | 单个网络接口(如 eth0/ ) |
最高优先级,仅影响该接口 |
全局配置 (all/ ) |
所有网络接口 | 覆盖所有接口,但低于接口特定配置 |
默认配置 (default/ ) |
新创建的接口 | 仅影响新增接口,不影响已有接口 |
豆包说: 配置参数的优先级为:具体网络接口目录的配置 > all 目录的配置 > default 目录的配置。也就是说,如果在具体网络接口目录下对某个参数进行了设置,该设置会覆盖 all 和 default 目录中的相同参数设置。
Kimi说: 优先级:接口特定设置的优先级最高,全局设置次之,默认设置优先级最低。
C知道dpsk说: 优先级规则:具体接口的配置 > all > default。
dpsk说all
优先级最高
参数路径 | 作用范围 | 优先级 | 持久性影响 | 典型用途 |
---|---|---|---|---|
/proc/sys/net/ipv6/conf/all/accept_ra |
所有接口(包括现有接口和未来新接口) | 最高 | 修改后立即影响所有接口 | 全局强制设置(如安全策略要求所有接口禁用 RA)。 |
/proc/sys/net/ipv6/conf/default/accept_ra |
新创建的接口(已存在的接口不受影响) | 最低 | 仅对新接口生效 | 定义新接口的默认行为(如新虚拟接口默认不自动配置地址)。 |
/proc/sys/net/ipv6/conf/ens33/accept_ra |
仅 ens33 接口(特定物理/虚拟接口) |
中等 | 仅影响该接口 | 针对单个接口的精细控制(如允许 ens33 接受 RA,但其他接口拒绝)。 |
文心X1说: all/
> interfaceName/
> default/
目录 | 作用范围 | 优先级 | 典型用途 |
---|---|---|---|
all/ |
覆盖所有接口(包括已存在和新创建的) | 最高 | 强制执行全局策略(如禁用所有接口的路由器通告) |
default/ |
仅影响新创建的接口 | 中等 | 设置新建接口的默认配置(如默认拒绝路由器通告) |
interfaceName/ |
仅控制特定接口(如eth0) | 最低 | 对特定接口进行个性化配置(如允许eth0接受路由器通告) |
文心4.5说: 最高优先级:具体网络接口配置(interfaceName)。中等优先级:默认配置(default),适用于未单独配置的接口。最低优先级:全局配置(all),通常用于全局性设置,但可能被具体接口设置覆盖。
文心dpsk说: 具体接口配置 > all 全局配置 > default 默认配置
debian10 下亲测 具体接口名的 优先级大于 all
4. 应用场景
/proc/sys/net/ipv6/conf/all/accept_ra
设为 0
,禁止所有接口接受 RA,适用于需要静态配置 IPv6 的环境。ens33
)启用 RA,其他接口保持默认,适用于多接口设备需差异化配置的场景。/proc/sys/net/ipv6/conf/default/accept_ra
,确保新创建的接口自动接受 RA,简化网络管理。5. 注意事项
accept_ra=2
,需确认内核文档或升级内核。/etc/sysctl.conf
后执行 sysctl -p
,确保重启后配置生效。accept_ra
与 autoconf
(自动配置 IPv6 地址)参数通常配合使用,需根据需求同步调整。6. 故障排查
检查 RA 接受状态:
cat /proc/sys/net/ipv6/conf/all/accept_ra # 全局状态
cat /proc/sys/net/ipv6/conf/default/accept_ra # 默认模板
cat /proc/sys/net/ipv6/conf/ens33/accept_ra # 特定接口状态
sudo sysctl -a | grep ipv6
sudo sysctl -a | grep -E 'accept_ra|accept_ra_defrtr|ra_defrtr_metric'
验证 IPv6 配置:
ip -6 addr show dev ens33 # 查看接口 IPv6 地址
ip -6 route show # 检查默认路由
SLAAC(Stateless Address Autoconfiguration,无状态地址自动配置)是 IPv6 协议的核心特性之一,它允许设备无需依赖 DHCP 服务器(如 IPv4 中的 DHCP),直接通过本地网络的路由器通告(Router Advertisement, RA)自动生成全球唯一的 IPv6 地址。
路由器通告(RA)
网络中的 IPv6 路由器会周期性广播 RA 消息,包含以下关键信息:
2001:db8::/64
)地址生成
设备收到 RA 后,结合以下两部分生成 IPv6 地址:
示例:
网络前缀: 2001:db8::/64
MAC地址: 00:1a:2b:3c:4d:5e
接口标识符: 021a:2bff:fe3c:4d5e (通过 EUI-64 算法生成)
IPv6地址: 2001:db8::021a:2bff:fe3c:4d5e
特性 | 说明 |
---|---|
无状态 | 无需服务器记录地址分配状态,降低网络复杂度。 |
即插即用 | 设备接入网络后自动完成地址配置。 |
隐私保护 | 支持生成临时随机地址(如 fd12:3456::1a2b:3c4d ),防止设备追踪。 |
依赖 RA 消息 | 需路由器启用 RA 广播(对应 /proc/sys/net/ipv6/conf/eth0/accept_ra=1 )。 |
SLAAC | DHCPv6 | |
---|---|---|
地址分配 | 设备自主生成 | 服务器分配 |
状态管理 | 无状态(无需服务器) | 有状态(服务器记录) |
配置内容 | 仅地址 + 网关 + 前缀 | 地址 + DNS + 其他参数 |
适用场景 | 简单网络(家庭/小型办公) | 需集中管理(企业/数据中心) |
在 /proc/sys/net/ipv6/conf/
中,以下参数控制 SLAAC 行为:
accept_ra
1
时,允许设备接收 RA 消息(启用 SLAAC 的前提)。autoconf
1
时,允许设备根据 RA 生成地址(需同时启用 accept_ra=1
)。use_tempaddr
2
表示优先使用临时地址)。示例命令:
# 查看 eth0 是否启用 SLAAC
sysctl net.ipv6.conf.eth0.autoconf
# 临时禁用 SLAAC
echo 0 > /proc/sys/net/ipv6/conf/eth0/autoconf
2408:8207:1234:5678::1a2b
)。autoconf=0
),手动配置静态 IPv6 地址以保证稳定性。use_tempaddr=2
,避免设备 IPv6 地址暴露 MAC 信息。FFFE
并反转 U/L 位)。随机数::临时后缀
,周期性变化(可通过 ip -6 addr show
查看)。SLAAC(无状态地址自动配置)和 DHCPv6 是 IPv6 网络中两种主要的地址配置机制,分别适用于不同的场景和需求。以下是它们的核心区别、协作方式及实际应用指南:
特性 | SLAAC | DHCPv6(有状态) | DHCPv6(无状态) |
---|---|---|---|
地址生成方式 | 客户端基于 RA 前缀自行生成地址 | 服务器分配完整地址 | 地址由 SLAAC 生成,服务器提供参数 |
依赖服务器 | 无需服务器(仅需路由器 RA) | 必须部署 DHCPv6 服务器 | 需要 DHCPv6 服务器 |
配置参数 | 地址 + 默认路由(通过 RA) | 地址 + DNS/NTP/域名等完整配置 | DNS/NTP/域名等(不分配地址) |
管理复杂度 | 低 | 高 | 中 |
适用场景 | 简单网络、物联网设备 | 企业网络、需集中管理地址的环境 | 需额外参数但无需地址管理的环境 |
IPv6 网络可结合 SLAAC 和 DHCPv6 实现灵活配置,具体通过 RA(路由通告)的标志位 控制:
M=1
:客户端必须使用 有状态 DHCPv6 获取地址。M=0
:客户端使用 SLAAC 或无状态 DHCPv6。O=1
:客户端通过 无状态 DHCPv6 获取 DNS 等参数。O=0
:仅使用 SLAAC 配置。1. 纯 SLAAC 网络
radvd
):# /etc/radvd.conf
interface eth0 {
AdvSendAdvert on;
prefix 2001:db8:abcd::/64 {
AdvOnLink on;
AdvAutonomous on; # 启用 SLAAC
};
};
2. SLAAC + 无状态 DHCPv6
interface eth0 {
AdvSendAdvert on;
AdvManagedFlag off; # M=0
AdvOtherConfigFlag on; # O=1
prefix 2001:db8:abcd::/64 {
AdvAutonomous on;
};
};
# /etc/dhcp/dhcpd6.conf
option dhcp6.name-servers 2001:db8::53;
option dhcp6.domain-search "example.com";
3. 有状态 DHCPv6
interface eth0 {
AdvSendAdvert on;
AdvManagedFlag on; # M=1
AdvOtherConfigFlag off;
};
subnet6 2001:db8:abcd::/64 {
range6 2001:db8:abcd::100 2001:db8:abcd::200;
option dhcp6.name-servers 2001:db8::53;
};
1. 何时使用 SLAAC?
2. 何时使用无状态 DHCPv6?
3. 何时使用有状态 DHCPv6?
1. SLAAC 安全风险
2. DHCPv6 安全风险
3. 隐私优化
use_tempaddr=2
,避免 EUI-64 地址暴露 MAC 地址。sysctl -w net.ipv6.conf.eth0.use_tempaddr=2
步骤 | SLAAC | 有状态 DHCPv6 |
---|---|---|
1. 地址/参数来源 | 客户端自行生成地址(基于 RA 前缀) | 服务器分配地址和参数 |
2. 服务器依赖 | 无需服务器 | 必须部署 DHCPv6 服务器 |
3. 配置灵活性 | 仅地址 + 路由 | 地址 + 路由 + DNS/NTP/域名等 |
4. 适用规模 | 小到中型网络 | 中到大型企业网络 |
accept_ra
是 Linux 系统中控制 IPv6 路由通告(Router Advertisement, RA)接收行为 的核心参数,位于 /proc/sys/net/ipv6/conf/<接口名>/
目录下。它直接影响设备是否通过 SLAAC(无状态地址自动配置)获取 IPv6 地址和网络信息。
值 | 行为描述 |
---|---|
0 |
禁用 RA 接收:不处理任何路由通告,需手动配置 IPv6 地址和网关。 |
1 |
启用 RA 接收(默认):根据 RA 自动配置地址、网关和网络参数。 |
2 |
接受 RA 但忽略跃点数:接收 RA 但不更新默认路由的优先级(特殊场景)。 |
某些系统可能支持扩展值(如 3
),用于兼容性场景(需参考内核文档)。
临时修改(重启失效)
# 禁用 eth0 的 RA 接收
echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
# 或使用 sysctl
sysctl -w net.ipv6.conf.eth0.accept_ra=0
永久生效
修改配置文件(如 /etc/sysctl.d/99-ipv6.conf
):
# 全局禁用所有接口的 RA 接收
net.ipv6.conf.all.accept_ra = 0
# 仅对 eth0 生效
net.ipv6.conf.eth0.accept_ra = 1
执行 sysctl -p
加载配置。
1. 服务器环境
accept_ra=0
):防止自动分配地址,确保手动配置静态 IPv6。sysctl net.ipv6.conf.eth0.accept_ra=0
sysctl net.ipv6.conf.eth0.autoconf=0 # 同时关闭自动配置
2. 客户端设备
accept_ra=1
):自动获取地址(如家庭网络中的手机/电脑)。radvd
或 dnsmasq
等工具)。autoconf=1
(默认启用)。3. 网络调试
ip -6 addr flush dev eth0 # 清空现有地址
echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
与 forwarding
的冲突
若启用 IPv6 转发(net.ipv6.conf.all.forwarding=1
),内核默认会自动禁用 RA 接收(accept_ra=0
),需手动覆盖此行为。
接口优先级
eth0
)的配置优先级高于 all
和 default
。net.ipv6.conf.all.accept_ra=0 # 全局禁用
net.ipv6.conf.eth0.accept_ra=1 # eth0 例外启用
RA 内容依赖
RA 中需包含 A
标志(Autonomous Address Configuration
)才会触发 SLAAC 地址生成。可通过 tcpdump
验证:
tcpdump -i eth0 -vn ip6 and icmp6 and "router advertisement"
use_tempaddr=2
,即使通过 RA 获取地址,也会生成临时随机后缀。M
标志(Managed)和 O
标志(Other)决定是否使用 DHCPv6 补充配置。通过合理配置 accept_ra
,可以灵活平衡网络自动化与可控性,适应不同场景需求。
autoconf
是 Linux 系统中控制 IPv6 无状态地址自动配置(SLAAC) 的关键参数,位于 /proc/sys/net/ipv6/conf/<接口>/
目录下。它决定接口是否根据接收到的 路由通告(Router Advertisement, RA) 自动生成 IPv6 地址。
值 | 行为描述 |
---|---|
0 |
禁用自动配置:不通过 RA 生成 IPv6 地址(需手动或 DHCPv6 配置)。 |
1 |
启用自动配置(默认):根据 RA 中的前缀和接口标识符生成 IPv6 地址。 |
临时修改(重启失效)
# 禁用 eth0 的自动配置
echo 0 > /proc/sys/net/ipv6/conf/eth0/autoconf
# 或使用 sysctl
sysctl -w net.ipv6.conf.eth0.autoconf=0
永久生效
在配置文件(如 /etc/sysctl.d/99-ipv6.conf
)中添加:
# 全局禁用所有接口的自动配置
net.ipv6.conf.all.autoconf = 0
# 仅对 eth0 生效
net.ipv6.conf.eth0.autoconf = 1
执行 sysctl -p
加载配置。
依赖 RA 消息
autoconf=1
需配合 accept_ra=1
(允许接收 RA)。A
标志(Autonomous Address Configuration)。地址生成规则
2001:db8::/64
)和 接口标识符(基于 MAC 地址或随机生成)。use_tempaddr=2
,优先生成临时隐私地址(如 2001:db8::d3ad:b33f
)。典型地址类型
# 永久地址(基于 EUI-64)
2001:db8::1a2b:3cff:fe4d:5e6f
# 临时隐私地址(随机后缀)
2001:db8::d3ad:b33f
与 accept_ra
的关联
accept_ra=0
,即使 autoconf=1
也不会触发自动配置。# 检查是否收到 RA
tcpdump -i eth0 -vn ip6 and icmp6 and "router advertisement"
与 forwarding
的冲突
启用 IPv6 转发(net.ipv6.conf.all.forwarding=1
)时,内核默认禁用 autoconf
,需手动覆盖:
sysctl -w net.ipv6.conf.eth0.autoconf=1
接口优先级
eth0
)的配置优先级高于 all
和 default
。net.ipv6.conf.all.autoconf=0 # 全局禁用
net.ipv6.conf.eth0.autoconf=1 # eth0 例外启用
1. 服务器静态地址配置
# 禁用自动配置,手动设置 IPv6
sysctl net.ipv6.conf.eth0.autoconf=0
ip addr add 2001:db8::1/64 dev eth0
2. 客户端自动获取地址
# 启用自动配置(默认)
sysctl net.ipv6.conf.eth0.autoconf=1
ip -6 addr show dev eth0 # 查看生成的地址
3. 隐私保护
# 启用临时地址(需内核支持)
sysctl net.ipv6.conf.eth0.use_tempaddr=2
ip -6 addr show dev eth0
sysctl net.ipv6.conf.eth0.autoconf
tcpdump -i eth0 -vvv icmp6
forwarding
是 Linux 系统中控制 IPv6 数据包转发功能 的核心参数,位于 /proc/sys/net/ipv6/conf/<接口>/
目录下。它决定了系统是否充当路由器角色,将接收到的 IPv6 数据包转发到其他网络接口。
是 Linux 系统中控制网络接口是否启用 路由转发功能 的参数。
决定内核是否允许本机作为路由器,转发不同接口之间的数据包。
启用此参数后,系统可充当路由器,在不同接口间转发 IPv6 流量。
forwarding 参数决定了系统是否会对收到的 IPv6 数据包进行转发操作。当系统充当路由器或者网关的角色时,就需要开启数据包转发功能,使得不同网络之间的设备能够相互通信;若系统只是普通的主机,通常不需要开启此功能。
forwarding 参数决定了设备是否将收到的 IPv6 数据包转发到其他网络接口。启用转发功能后,设备可以作为路由器,将数据包从一个接口转发到另一个接口。
forwarding 参数用于启用或禁用 IP 数据包的转发功能。当启用时,设备可以作为路由器,将接收到的数据包从一个接口转发到另一个接口。
forwarding 是 Linux 系统中控制是否允许设备在不同网络接口之间转发 IP 数据包的内核参数。
若启用(forwarding=1),设备可作为路由器,在不同接口间转发流量。
若禁用(forwarding=0),设备仅处理目标为本机的流量(默认行为)。
控制是否允许系统作为路由器转发 IPv6 数据包。
0(默认):禁用转发,系统仅处理本机流量(主机模式)。
1:启用转发,允许在不同网络接口间转发数据包(路由器模式)。
forwarding 的作用: 启用或禁用 IPv6 转发:
当 forwarding 启用(值为 1)时,系统可以作为路由器,转发来自不同网络接口的 IPv6 数据包。
当禁用(值为 0)时,系统仅处理本机的网络流量,不会转发数据包到其他网络。
与 IPv4 的区别:
IPv4 的转发控制在 /proc/sys/net/ipv4/ip_forward。
IPv6 的转发控制在 /proc/sys/net/ipv6/conf/all/forwarding(全局设置)。
值 | 行为描述 |
---|---|
0 |
禁用转发(默认):系统作为终端主机,仅处理目标为本机的数据包。 |
1 |
启用转发:系统作为路由器,转发目标非本机的 IPv6 数据包。 |
forwarding
; IPv4 是 ip_forward
与 IPv4 的区别:
/proc/sys/net/ipv4/ip_forward
。/proc/sys/net/ipv6/conf/all/forwarding
(全局设置)。** 检查 IPv4 转发状态**
cat /proc/sys/net/ipv4/ip_forward # 输出 1 表示启用
sysctl net.ipv4.ip_forward # 输出 net.ipv4.ip_forward = 1
** 检查 IPv6 转发状态**
cat /proc/sys/net/ipv6/conf/all/forwarding # 输出 1 表示启用
sysctl net.ipv6.conf.all.forwarding # 输出 net.ipv6.conf.all.forwarding = 1
临时修改(重启失效)
# 启用 eth0 的 IPv6 转发
echo 1 > /proc/sys/net/ipv6/conf/eth0/forwarding
# 或使用 sysctl 命令
sysctl -w net.ipv6.conf.eth0.forwarding=1
永久生效
修改配置文件(如 /etc/sysctl.d/99-ipv6.conf
):
# 全局启用所有接口的 IPv6 转发
net.ipv6.conf.all.forwarding = 1
# 仅对 eth0 生效
net.ipv6.conf.eth0.forwarding = 0
执行 sysctl -p
加载配置。
1. IPv6 路由器部署
# 启用转发并配置防火墙(示例)
sysctl net.ipv6.conf.all.forwarding=1
ip6tables -A FORWARD -i eth0 -o eth1 -j ACCEPT
ip6tables -A FORWARD -i eth1 -o eth0 -j ACCEPT
2. 容器/虚拟化网络
# 为 Docker 虚拟网桥启用转发
sysctl net.ipv6.conf.docker0.forwarding=1
3. 禁用转发提升安全性
# 服务器环境下关闭转发
sysctl net.ipv6.conf.all.forwarding=0
与 RA 的冲突
启用转发时(forwarding=1
),内核默认会 禁用 RA 接收(accept_ra=0
)。若需同时使用转发和 SLAAC,需手动覆盖:
sysctl -w net.ipv6.conf.eth0.accept_ra=2 # 特殊模式允许 RA
防火墙配置
启用转发后,需配置 ip6tables
允许流量通过:
# 允许 NAT 转换(如需)
ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
接口优先级
eth0
)的配置优先级高于 all
和 default
。net.ipv6.conf.all.forwarding=0 # 全局禁用
net.ipv6.conf.eth0.forwarding=1 # eth0 例外启用
检查转发状态
sysctl net.ipv6.conf.all.forwarding
测试连通性
# 从客户端 ping 另一网络段的 IPv6 地址
ping6 2001:db8:cafe::1
抓包分析
tcpdump -i eth0 ip6 -vvv
IPv4 | IPv6 | |
---|---|---|
参数路径 | /proc/sys/net/ipv4/conf/*/forwarding |
/proc/sys/net/ipv6/conf/*/forwarding |
默认值 | 0 | 0 |
NAT 依赖 | 高(IPv4 地址稀缺) | 低(地址空间充足) |
accept_ra
和 autoconf
和 forwarding
的关系在 Linux 的 IPv6 网络配置中,accept_ra
、autoconf
和 forwarding
是三个密切相关的核心参数,它们的组合直接影响设备在网络中的角色(主机或路由器)和地址配置行为。以下是它们的关系详解:
参数 | 作用 | 依赖关系 |
---|---|---|
accept_ra |
控制是否接收路由通告(RA)消息。 | 是 autoconf 生效的前提条件(需 accept_ra=1 )。 |
autoconf |
控制是否根据 RA 自动生成 IPv6 地址(SLAAC)。 | 依赖 accept_ra=1 ,且 RA 中需包含 A 标志。 |
forwarding |
控制是否启用 IPv6 数据包转发(路由器模式)。 | 启用后(=1 ),内核默认禁用 accept_ra (需手动覆盖)。 |
1. 普通主机模式(默认)
forwarding=0 # 禁用转发
accept_ra=1 # 接收 RA
autoconf=1 # 自动配置地址
2001:db8::1a2b:3c4d
)。2. 纯路由器模式
forwarding=1 # 启用转发
accept_ra=0 # 禁用 RA 接收
autoconf=0 # 禁用自动配置
ip6tables
规则)。3. 混合模式(路由器 + SLAAC)
forwarding=1 # 启用转发
accept_ra=2 # 特殊模式接受 RA(忽略默认路由优先级)
autoconf=1 # 启用自动配置
1. forwarding=1
自动禁用 accept_ra
accept_ra=0
,导致无法接收 RA。sysctl -w net.ipv6.conf.eth0.forwarding=1
sysctl -w net.ipv6.conf.eth0.accept_ra=2 # 特殊模式允许 RA
2. RA 与防火墙冲突
ip6tables
规则:ip6tables -A INPUT -i eth0 -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT
ip6tables -A FORWARD -i eth0 -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT
检查参数值:
sysctl net.ipv6.conf.eth0.{accept_ra,autoconf,forwarding}
查看生成的 IPv6 地址:
ip -6 addr show dev eth0
测试转发功能:
# 在客户端 ping 另一网段的地址
ping6 2001:db8:cafe::1
抓包分析 RA:
tcpdump -i eth0 -vn icmp6 and "router advertisement"
accept_ra
是入口:决定是否处理 RA 消息,直接影响自动配置的可能性。autoconf
是执行者:在 RA 有效的前提下,触发地址生成。forwarding
是角色开关:启用后需谨慎协调前两者,避免功能冲突。通过合理配置这三个参数,可以灵活实现从智能家居设备到企业级路由器的全场景 IPv6 网络架构。
accept_ra
和 autoconf
和 forwarding
的关系 笔记250404 accept_ra_defrtr
是 Linux 系统中控制 是否通过 IPv6 路由通告(RA)自动设置默认路由 的关键参数。以下是其详细说明:
/proc/sys/net/ipv6/conf/<接口>/accept_ra_defrtr
1
(启用,大多数系统的默认行为)。=1
):
Router Lifetime
字段非零),系统会自动添加一条默认 IPv6 路由。default via fe80::1 dev eth0 proto ra # RA 生成的默认路由
=0
):
临时修改(重启失效)
# 禁用 eth0 的默认路由自动设置
sysctl -w net.ipv6.conf.eth0.accept_ra_defrtr=0
# 启用(恢复默认)
sysctl -w net.ipv6.conf.eth0.accept_ra_defrtr=1
永久生效
在配置文件(如 /etc/sysctl.d/99-ipv6.conf
)中添加:
# 禁用 eth0 的默认路由自动设置
net.ipv6.conf.eth0.accept_ra_defrtr = 0
执行 sysctl -p
加载配置。
sysctl net.ipv6.conf.eth0.accept_ra_defrtr
ip -6 route show | grep "default"
# 输出示例(启用时):
# default via fe80::1 dev eth0 proto ra metric 1024 expires 1800sec
accept_ra
必须启用:net.ipv6.conf.eth0.accept_ra=1
时,accept_ra_defrtr
才会生效。forwarding
的冲突:net.ipv6.conf.eth0.forwarding=1
),内核默认禁用 RA 处理(需手动设置 accept_ra=2
)。1. 家庭/办公网络
accept_ra_defrtr=1
,设备自动通过 RA 获取默认网关(如家用路由器)。2. 服务器/数据中心
accept_ra_defrtr=0
。# 手动添加默认路由
ip -6 route add default via 2001:db8::1 dev eth0
3. 多宿主主机(多默认路由)
sysctl net.ipv6.conf.eth0.accept_ra_defrtr=1 # 主接口启用
sysctl net.ipv6.conf.eth1.accept_ra_defrtr=0 # 备用接口禁用
通过合理配置 accept_ra_defrtr
,可以灵活控制 IPv6 默认路由的自动化与手动管理平衡。
accept_ra
和 accept_ra_defrtr
accept_ra
和 accept_ra_defrtr
是 Linux 系统中与 IPv6 路由通告(Router Advertisement, RA)密切相关的两个参数,它们在功能上既有关联又有分工。以下是它们的核心区别与协作关系:
参数 | 作用 | 默认值 | 依赖关系 |
---|---|---|---|
accept_ra |
控制接口是否处理路由通告(RA)消息。 | 1 (启用) |
所有 RA 相关功能的前提条件。 |
accept_ra_defrtr |
控制是否通过 RA 消息设置默认路由(即网关)。 | 1 (启用) |
仅在 accept_ra=1 时生效。 |
参数 | 作用 | 默认值 |
---|---|---|
accept_ra |
总开关:控制接口是否接受 RA 消息(影响所有 RA 相关功能)。 | 1 (启用) |
accept_ra_defrtr |
子功能:在 RA 接受的基础上,决定是否通过 RA 自动添加默认路由(默认网关)。 | 1 (启用) |
accept_ra=1
时:
accept_ra_defrtr
)进一步控制。accept_ra_defrtr=1
:
Router Lifetime
字段添加默认路由。default via fe80::1 dev eth0 proto ra # RA 生成的默认路由
accept_ra_defrtr=0
:
accept_ra=0
时:
accept_ra_defrtr
)失效。1. 家用网络(自动配置)
# 启用 RA 处理,并自动设置默认路由
sysctl net.ipv6.conf.eth0.accept_ra=1
sysctl net.ipv6.conf.eth0.accept_ra_defrtr=1
2. 服务器环境(手动路由)
# 接收 RA 生成地址,但禁用默认路由自动设置
sysctl net.ipv6.conf.eth0.accept_ra=1
sysctl net.ipv6.conf.eth0.accept_ra_defrtr=0
ip -6 route add default via 2001:db8::1
3. 路由器设备(禁用 RA 处理)
# 完全禁用 RA 处理
sysctl net.ipv6.conf.eth0.accept_ra=0
检查参数值:
sysctl net.ipv6.conf.eth0.{accept_ra,accept_ra_defrtr}
查看默认路由:
ip -6 route show | grep "default"
抓包分析 RA:
tcpdump -i eth0 -vvv icmp6 and "router advertisement"
与 forwarding
的冲突:
若启用 IPv6 转发(net.ipv6.conf.eth0.forwarding=1
),内核默认设置 accept_ra=0
,需手动覆盖:
sysctl -w net.ipv6.conf.eth0.accept_ra=2 # 允许接收 RA
多接口优先级:
在多网卡设备中,可为不同接口设置不同策略:
# eth0 作为 WAN 口,自动获取默认路由
sysctl net.ipv6.conf.eth0.accept_ra_defrtr=1
# eth1 作为 LAN 口,不设置默认路由
sysctl net.ipv6.conf.eth1.accept_ra_defrtr=0
accept_ra
和 accept_ra_defrtr
笔记250404 sysctl
命令sysctl
是 Linux 系统中用于 动态查看和修改内核运行时参数 的核心工具。它通过 /proc/sys/
目录的虚拟文件系统接口,允许用户在不重启系统的前提下调整内核行为,涵盖网络、内存、文件系统等关键功能。
sysctl [选项] [参数=值]
常用选项 | 说明 |
---|---|
-a |
显示所有可用参数 |
-w |
临时修改参数(如 sysctl -w param=value ) |
-p |
从配置文件加载参数 |
-e |
忽略未知参数的错误 |
查看参数
# 查看所有参数(按分类展开)
sysctl -a
# 查看特定参数(如 IPv6 转发)
sysctl net.ipv6.conf.all.forwarding
临时修改参数
# 启用 IPv4 转发
sysctl -w net.ipv4.ip_forward=1
# 禁用 IPv6 RA 接收(针对 eth0)
sysctl -w net.ipv6.conf.eth0.accept_ra=0
永久修改参数
/etc/sysctl.conf
或 /etc/sysctl.d/*.conf
):# 示例:优化 TCP 拥塞控制
net.core.rmem_max = 16777216
net.ipv4.tcp_congestion_control = bbr
sysctl -p /etc/sysctl.conf # 加载指定文件
sysctl -p # 加载所有配置文件(包括 /etc/sysctl.d/)
功能 | 命令示例 | 说明 |
---|---|---|
查看单个参数 | sysctl kernel.hostname |
显示当前主机名。 |
查看所有参数 | sysctl -a |
列出所有可调整的内核参数。 |
临时修改参数 | sysctl -w net.ipv4.ip_forward=1 |
立即生效,但重启后失效。 |
从文件加载配置 | sysctl -p /etc/sysctl.conf |
加载配置文件中的参数。 |
隐藏敏感信息 | sysctl -q kernel.randomize_va_space |
静默模式(不显示错误)。 |
网络优化
参数 | 作用 | 推荐值 |
---|---|---|
net.ipv4.tcp_syncookies |
防御 SYN 洪水攻击 | 1 |
net.ipv4.tcp_tw_reuse |
允许复用 TIME-WAIT 状态的端口 | 1 |
net.core.somaxconn |
调整最大连接队列长度 | 4096 |
net.ipv6.conf.all.accept_ra |
控制 IPv6 路由器广播接受(见前文) | 1 或 0 |
内存与文件系统
参数 | 作用 | 推荐值 |
---|---|---|
vm.swappiness |
控制交换分区使用倾向(0-100) | 10 |
vm.overcommit_memory |
内存分配策略(0=保守,1=总是允许,2=拒绝超限) | 0 或 2 |
fs.file-max |
系统最大文件句柄数 | 2097152 |
安全加固
参数 | 作用 | 推荐值 |
---|---|---|
kernel.exec-shield |
防御缓冲区溢出攻击(仅 x86) | 1 |
kernel.randomize_va_space |
启用地址空间随机化(ASLR) | 2 |
net.ipv4.conf.all.accept_redirects |
禁止接受 ICMP 重定向(防攻击) | 0 |
/etc/sysctl.conf
/etc/sysctl.d/*.conf
sysctl.conf
,按文件名排序加载)。/run/sysctl.d/*.conf
系统按以下顺序加载配置(后加载的覆盖前者的冲突项):
/etc/sysctl.d/*.conf
(按文件名升序)/run/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/etc/sysctl.conf
参数路径转换
sysctl
参数名与 /proc/sys/
路径的对应关系:
# 例如:
sysctl net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward
sysctl kernel.hostname → /proc/sys/kernel/hostname
参数作用范围
net.ipv4.ip_forward
)影响整个系统。net.ipv6.conf.eth0.accept_ra
)仅针对特定接口。安全操作
sysctl -w
),验证后再持久化。cp /etc/sysctl.conf /etc/sysctl.conf.bak
1. 优化网络性能
# 临时增大 TCP 接收缓冲区
sysctl -w net.core.rmem_max=16777216
# 永久启用 TCP BBR 拥塞控制
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.d/99-network.conf
sysctl -p
2. 增强系统安全
# 禁用 ICMP 重定向
sysctl -w net.ipv4.conf.all.accept_redirects=0
# 阻止 SYN 洪水攻击
sysctl -w net.ipv4.tcp_syncookies=1
3. 调试内核行为
# 启用内核 panic 后自动重启(60 秒后)
sysctl -w kernel.panic=60
# 查看当前 PID 最大值
sysctl kernel.pid_max
man sysctl
和 man sysctl.d
查看手册。kernel.osrelease
),无法修改。vm.max_map_count
)。通过 sysctl
,管理员可以精细调控 Linux 系统的行为,从网络优化到安全加固,成为系统调优不可或缺的工具。
sysctl
命令 笔记250404 accept_ra
和 accept_ra_defrtr
和 ra_defrtr_metric
以下是 Linux 系统中与 IPv6 路由通告(RA)相关的三个关键参数 accept_ra
、accept_ra_defrtr
和 ra_defrtr_metric
的详细说明及协作关系:
参数 | 作用 | 默认值 | 依赖关系 |
---|---|---|---|
accept_ra |
控制接口是否处理路由通告(RA)消息。 | 1 (启用) |
所有 RA 相关功能的前提条件。 |
accept_ra_defrtr |
是否通过 RA 消息设置默认路由(网关)。 | 1 (启用) |
仅在 accept_ra=1 时生效。 |
ra_defrtr_metric |
设置 RA 生成的默认路由的度量值(优先级,metric 值越低优先级越高)。 | 1024 或 0 |
仅在 accept_ra_defrtr=1 时生效。 |
参数 | 作用 | 默认值 | 依赖关系 |
---|---|---|---|
accept_ra |
总开关:控制接口是否接受 RA 消息(影响所有 RA 相关功能)。 | 1 (启用) |
无 |
accept_ra_defrtr |
子功能:在 RA 接受的基础上,决定是否自动添加默认路由(默认网关)。 | 1 (启用) |
需 accept_ra=1 |
ra_defrtr_metric |
设置通过 RA 添加的默认路由的优先级(metric 值,数值越小优先级越高)。 | 1024 有的说是 0 |
需 accept_ra_defrtr=1 |
基础流程:
accept_ra=1
→ 接口接收并处理 RA 消息。accept_ra_defrtr=1
→ 根据 RA 中的默认路由信息生成路由条目。ra_defrtr_metric=自定义值
→ 设置该路由的优先级。典型配置示例:
# 启用 RA 处理
sysctl net.ipv6.conf.eth0.accept_ra=1
# 允许通过 RA 设置默认路由
sysctl net.ipv6.conf.eth0.accept_ra_defrtr=1
# 设置默认路由的优先级为 100(低于默认的 1024)
sysctl net.ipv6.conf.eth0.ra_defrtr_metric=100
路由表示例:
default via fe80::1 dev eth0 proto ra metric 100 # 优先级高于默认的 1024
1. 多宿主网络(多默认路由)
eth0
和 eth1
)连接不同网络,需指定主备路由。# eth0(主链路,高优先级)
sysctl net.ipv6.conf.eth0.ra_defrtr_metric=100
# eth1(备用链路,低优先级)
sysctl net.ipv6.conf.eth1.ra_defrtr_metric=200
eth0
,当其断开时自动切换到 eth1
。2. 禁用默认路由自动设置
sysctl net.ipv6.conf.eth0.accept_ra=1
sysctl net.ipv6.conf.eth0.accept_ra_defrtr=0
3. 调整路由优先级
sysctl -w net.ipv6.conf.eth0.accept_ra=1
sysctl -w net.ipv6.conf.eth0.accept_ra_defrtr=1
# 设置 RA 默认路由的优先级为 500(高于静态路由的默认值 100)
sysctl net.ipv6.conf.eth0.ra_defrtr_metric=500
# 添加静态路由(优先级 100)
ip -6 route add default via 2001:db8::1 metric 100
4. 持久化配置
/etc/sysctl.conf
或 /etc/sysctl.d/
目录保存配置:# 创建自定义配置文件
echo "net.ipv6.conf.eth0.accept_ra = 1" >> /etc/sysctl.d/99-ipv6.conf
echo "net.ipv6.conf.eth0.accept_ra_defrtr = 1" >> /etc/sysctl.d/99-ipv6.conf
echo "net.ipv6.conf.eth0.ra_defrtr_metric = 500" >> /etc/sysctl.d/99-ipv6.conf
# 加载配置
sysctl -p /etc/sysctl.d/99-ipv6.conf
查看参数值:
sysctl net.ipv6.conf.eth0.{accept_ra,accept_ra_defrtr,ra_defrtr_metric}
sudo sysctl -a | grep -E 'accept_ra|accept_ra_defrtr|ra_defrtr_metric'
检查路由表:
ip -6 route show | grep "default"
抓包分析 RA:
tcpdump -i eth0 -vvv icmp6 and "router advertisement"
参数优先级:
eth0
)优先级高于全局配置(all
或 default
)。与 forwarding
的冲突:
net.ipv6.conf.eth0.forwarding=1
),内核默认禁用 RA 处理(需手动设置 accept_ra=2
)。持久化配置:
# 将配置写入文件(如 /etc/sysctl.d/99-ipv6.conf)
echo "net.ipv6.conf.eth0.ra_defrtr_metric = 100" >> /etc/sysctl.d/99-ipv6.conf
sysctl -p
accept_ra
和 accept_ra_defrtr
和 ra_defrtr_metric
笔记250405 ra_defrtr_metric
是 Linux 系统中用于控制 通过 IPv6 路由通告(RA)生成的默认路由的优先级(Metric) 的关键参数。以下是其详细说明:
/proc/sys/net/ipv6/conf/<接口>/ra_defrtr_metric
1024
(大多数系统的默认值)。Metric 的作用:
0
(最高优先级)到 4294967295
(最低优先级)。与 RA 的关系:
ra_defrtr_metric
才会生效:
accept_ra=1
(启用 RA 处理)。accept_ra_defrtr=1
(允许通过 RA 设置默认路由)。临时修改(重启失效)
# 设置 eth0 的 RA 默认路由优先级为 100(比默认的 1024 更高优先级)
sysctl -w net.ipv6.conf.eth0.ra_defrtr_metric=100
永久生效
在配置文件(如 /etc/sysctl.d/99-ipv6.conf
)中添加:
net.ipv6.conf.eth0.ra_defrtr_metric = 100
执行 sysctl -p
加载配置。
查看参数值:
sysctl net.ipv6.conf.eth0.ra_defrtr_metric
检查路由表:
ip -6 route show | grep "default"
# 输出示例:
# default via fe80::1 dev eth0 proto ra metric 100
1. 多宿主网络(主备链路)
eth0
(主链路)和 eth1
(备用链路)连接不同网络。# 主链路(高优先级)
sysctl net.ipv6.conf.eth0.ra_defrtr_metric=100
# 备用链路(低优先级)
sysctl net.ipv6.conf.eth1.ra_defrtr_metric=200
eth0
,当 eth0
断开时自动切换到 eth1
。2. 优先静态路由
# 设置 RA 默认路由的优先级为 500
sysctl net.ipv6.conf.eth0.ra_defrtr_metric=500
# 添加静态路由(优先级 100)
ip -6 route add default via 2001:db8::1 metric 100
依赖参数:
ra_defrtr_metric
仅在 accept_ra=1
且 accept_ra_defrtr=1
时生效。
与 forwarding
的冲突:
若启用 IPv6 转发(forwarding=1
),需手动设置 accept_ra=2
以允许接收 RA。
接口优先级:
不同接口的 ra_defrtr_metric
可独立设置,实现灵活的路由策略。
Metric(度量值) 是网络路由中用于 判断路由路径优先级的核心指标。其作用可概括为以下三点:
# 路由表中有两条默认路由:
default via 2001:db8::1 dev eth0 metric 100 # 优先级高(Metric=100)
default via 2001:db8::2 dev eth1 metric 200 # 优先级低(Metric=200)
eth0
发送流量。不同路由协议使用不同的 Metric 计算方式,反映路径的“成本”维度:
路由协议 | Metric 计算依据 | 适用场景 |
---|---|---|
RIP | 跳数(经过的路由器数量) | 小型网络,简单优先级判断 |
OSPF | 带宽、延迟、链路成本 | 企业级网络,动态路径优化 |
BGP | AS 路径长度、策略规则 | 互联网骨干网,跨自治系统路由 |
静态路由 | 手动指定(如 ra_defrtr_metric ) |
精准控制特定接口或路径优先级 |
主备链路切换:
通过为不同接口设置差异化的 Metric 值,实现自动故障转移。
示例:
# 主链路(eth0)优先级更高
net.ipv6.conf.eth0.ra_defrtr_metric = 100
# 备用链路(eth1)优先级更低
net.ipv6.conf.eth1.ra_defrtr_metric = 200
eth0
断开时,流量自动切换到 eth1
。负载均衡:
为多条路径设置相同 Metric 值,系统将均衡分配流量(需协议支持)。
场景 1:优先有线网络
# 有线接口(eth0)高优先级
net.ipv6.conf.eth0.ra_defrtr_metric = 100
# 无线接口(wlan0)低优先级
net.ipv6.conf.wlan0.ra_defrtr_metric = 200
场景 2:静态路由优先于动态路由
# 动态路由(RA 生成)的优先级较低
net.ipv6.conf.eth0.ra_defrtr_metric = 500
# 添加静态路由(更高优先级)
ip -6 route add default via 2001:db8::1 metric 100
系统/协议 | 典型 Metric 范围 |
---|---|
Linux 静态路由 | 0-4294967295(默认 1024) |
Windows | 0-9999 |
Cisco 路由器 | 0-255(依协议不同) |
ra_defrtr_metric
仅影响 RA 生成的默认路由,不影响其他路由条目。通过合理配置 Metric,可实现网络流量的智能调度,提升性能与可靠性。
use_tempaddr
是 Linux 系统中用于控制 IPv6 临时隐私地址生成策略 的关键参数。以下是其详细说明:
/proc/sys/net/ipv6/conf/<接口>/use_tempaddr
1
(大多数系统的默认行为)。值 | 行为 |
---|---|
0 |
禁用临时地址:仅生成基于 EUI-64 的稳定 IPv6 地址。 |
1 |
启用临时地址:生成临时地址,但优先使用稳定地址进行通信。 |
2 |
优先使用临时地址:生成临时地址,并优先使用临时地址进行通信(隐私最优)。 |
1. 临时修改
# 为 eth0 启用临时地址并优先使用(值=2)
sysctl -w net.ipv6.conf.eth0.use_tempaddr=2
# 或直接写入 /proc
echo 2 > /proc/sys/net/ipv6/conf/eth0/use_tempaddr
2. 永久生效
在配置文件(如 /etc/sysctl.d/99-ipv6.conf
)中添加:
net.ipv6.conf.eth0.use_tempaddr = 2
执行以下命令加载配置:
sysctl -p /etc/sysctl.d/99-ipv6.conf
查看参数值:
sysctl net.ipv6.conf.eth0.use_tempaddr
检查临时地址:
ip -6 addr show dev eth0
# 输出示例:
# inet6 2001:db8::1234:5678:9012:3456/64 scope global temporary dynamic
# valid_lft 604800sec preferred_lft 86400sec
1. 移动设备(高隐私需求)
# 优先使用临时地址
sysctl net.ipv6.conf.wlan0.use_tempaddr=2
# 缩短生命周期以加快轮换
sysctl net.ipv6.conf.wlan0.temp_valid_lft=86400 # 有效期为 1 天
sysctl net.ipv6.conf.wlan0.temp_prefered_lft=43200 # 首选周期为 12 小时
2. 服务器(兼容性优先)
# 禁用临时地址
sysctl net.ipv6.conf.eth0.use_tempaddr=0
3. 家庭网络(平衡隐私与便利)
# 启用临时地址但不优先使用
sysctl net.ipv6.conf.eth0.use_tempaddr=1
依赖参数:
autoconf=1
(通过 SLAAC 自动配置地址)。temp_valid_lft
和 temp_prefered_lft
控制。兼容性问题:
use_tempaddr=2
。日志与监控:
特性 | 临时地址 | 稳定地址(EUI-64) |
---|---|---|
隐私性 | 高(随机后缀) | 低(基于 MAC 地址) |
可追溯性 | 难 | 易 |
适用场景 | 终端设备(如手机、笔记本) | 服务器、网络设备 |
use_tempaddr
和 temp_valid_lft
和 temp_prefered_lft
以下是 Linux 系统中与 IPv6 临时隐私地址相关的三个关键参数 use_tempaddr
、temp_valid_lft
和 temp_prefered_lft
的详细说明及协作关系:
参数 | 作用 | 默认值 | 依赖关系 |
---|---|---|---|
use_tempaddr |
控制是否生成 IPv6 临时隐私地址,并指定其使用优先级。 | 1 (启用) |
需 autoconf=1 (启用地址自动配置)。 |
temp_valid_lft |
定义临时地址的 总有效时间(从生成到失效)。 | 604800 (7天) |
仅在 use_tempaddr=1 或 2 时生效。 |
temp_prefered_lft |
定义临时地址的 首选时间(在此期间地址处于“首选”状态,之后进入“废弃”状态)。 | 86400 (1天) |
必须 ≤ temp_valid_lft 。 |
地址生成流程:
use_tempaddr=1
或 2
→ 系统生成临时地址。temp_prefered_lft
定义地址的“首选有效期”(在此期间地址优先用于新连接)。temp_valid_lft
定义地址的“总有效期”(超时后地址被删除)。生命周期示例:
# 假设配置:
use_tempaddr=2
temp_prefered_lft=43200 # 12 小时
temp_valid_lft=86400 # 24 小时
1. 临时地址全配置示例
# 启用临时地址并优先使用
sysctl -w net.ipv6.conf.eth0.use_tempaddr=2
# 设置总有效期为 2 天(172800 秒)
sysctl -w net.ipv6.conf.eth0.temp_valid_lft=172800
# 设置首选时间为 6 小时(21600 秒)
sysctl -w net.ipv6.conf.eth0.temp_prefered_lft=21600
2. 永久生效
在配置文件(如 /etc/sysctl.d/99-ipv6.conf
)中添加:
net.ipv6.conf.eth0.use_tempaddr = 2
net.ipv6.conf.eth0.temp_valid_lft = 172800
net.ipv6.conf.eth0.temp_prefered_lft = 21600
执行 sysctl -p
加载配置。
查看参数值:
sysctl net.ipv6.conf.eth0.{use_tempaddr,temp_valid_lft,temp_prefered_lft}
检查地址状态:
ip -6 addr show dev eth0
# 输出示例:
# inet6 2001:db8::1234:5678:9012:3456/64 scope global temporary dynamic
# valid_lft 172800sec preferred_lft 21600sec
1. 移动设备(高隐私保护)
# 优先使用临时地址,快速轮换
sysctl net.ipv6.conf.wlan0.use_tempaddr=2
sysctl net.ipv6.conf.wlan0.temp_prefered_lft=21600 # 6 小时
sysctl net.ipv6.conf.wlan0.temp_valid_lft=86400 # 24 小时
2. 服务器(禁用临时地址)
# 完全禁用临时地址
sysctl net.ipv6.conf.eth0.use_tempaddr=0
3. 平衡隐私与稳定性
# 启用临时地址但不优先使用
sysctl net.ipv6.conf.eth0.use_tempaddr=1
sysctl net.ipv6.conf.eth0.temp_prefered_lft=604800 # 7 天
sysctl net.ipv6.conf.eth0.temp_valid_lft=1209600 # 14 天
参数逻辑约束:
temp_prefered_lft
必须 ≤ temp_valid_lft
,否则地址可能提前失效。依赖服务:
autoconf=1
(启用 SLAAC 地址自动配置)。accept_ra=1
(接受路由通告)。网络转发冲突:
forwarding=1
),需设置 accept_ra=2
以允许接收 RA。use_tempaddr
和 temp_valid_lft
和 temp_prefered_lft
笔记250405 /proc
目录/proc
是 Linux 系统中一个特殊的 虚拟文件系统 (procfs),它并非存储在磁盘上,而是由内核动态生成,用于提供 内核与进程的实时运行时信息。它像一条纽带连接着用户空间与内核空间,提供系统运行时内核和进程的实时信息。
虚拟性:不占用磁盘空间,所有文件仅存于内存中。
动态性:文件内容实时生成,反映系统当前状态。
/proc/
├── <PID>/ # 每个进程的详细信息(如 `/proc/1/` 对应 init 进程)
├── sys/ # 内核参数动态控制接口(对应 `sysctl` 命令)
├── net/ # 网络协议栈状态(如 ARP 表、连接统计)
├── cpuinfo # CPU 硬件规格(型号、核心数、频率)
├── meminfo # 内存使用详情(总量、空闲、缓存)
├── interrupts # 硬件中断分配情况
├── modules # 已加载内核模块列表
├── version # 内核版本信息
└── ...
/proc/
├── [PID]/ # 每个进程的独立目录(PID 为进程号)
│ ├── cmdline # 进程启动命令
│ ├── status # 进程状态(内存、用户、线程等)
│ ├── fd/ # 进程打开的文件描述符
│ └── ...
├── cpuinfo # CPU 型号、核心数、频率等
├── meminfo # 内存总量、使用情况
├── modules # 已加载的内核模块
├── mounts # 已挂载的文件系统
├── partitions # 磁盘分区信息
├── version # 内核版本和编译信息
├── sys/ # 内核参数配置
└── ...
内核与进程监控
/proc//
目录中的文件(如 status
、io
、smaps
)可获取进程的 CPU、内存、文件 I/O 等使用情况。cat /proc/1/status # 查看 init 进程状态
硬件信息查询
cat /proc/cpuinfo | grep "model name"
grep -i "MemTotal\|MemFree" /proc/meminfo
动态内核调优
# 查看 eth0 的 IPv6 转发状态
cat /proc/sys/net/ipv6/conf/eth0/forwarding
cat /proc/sys/fs/file-max
1. 调试进程行为
# 查看进程 1234 打开的文件句柄
ls -l /proc/1234/fd
# 分析进程内存映射
cat /proc/1234/maps
2. 网络性能优化
# 调整 TCP 缓冲区大小(临时生效)
echo 16777216 > /proc/sys/net/core/rmem_max
3. 硬件中断均衡
# 查看 IRQ 分配情况
cat /proc/interrupts | grep eth0
4. 内核模块管理
# 确认模块是否加载
grep nvidia /proc/modules
文件读写性质
/proc/cpuinfo
):仅用于信息展示。/proc/sys/
下的参数):可直接修改(需 root 权限),但重启后失效。持久化配置
sysctl -w
或修改 /etc/sysctl.conf
永久保存内核参数变更,而非直接写入 /proc/sys/
。实时性
/proc
中的内容 动态生成,每次读取均反映系统最新状态(如 /proc/meminfo
)。sysctl
的关系/proc/sys/
目录是 sysctl
命令的底层实现。# 以下命令等效
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward
通过 /proc
,Linux 将内核与用户空间的交互透明化,成为系统管理员和开发者进行性能分析、故障排查及实时调优的必备工具。
/proc
目录 笔记250404 /etc/sysctl.conf
是 Linux 系统中用于 永久修改内核运行时参数 的核心配置文件。它通过 sysctl
工具实现参数的持久化存储,确保系统重启后配置依然生效。以下是其详细说明:
/etc/sysctl.conf
tempPathUriA1=/etc/sysctl.conf ; sudo cp -a ${tempPathUriA1} ${tempPathUriA1}.$(date +%0y%0m%0d_%0H%0M%0S_ns%0N).bak
/etc/sysctl.conf
/etc/sysctl.d/*.conf
文件中,以模块化管理。基本格式:
# 注释行(以 # 开头)
参数名 = 值
# 启用 IPv4 转发
net.ipv4.ip_forward = 1
# 禁用 IPv6 RA 接收(针对 eth0)
net.ipv6.conf.eth0.accept_ra = 0
参数路径规则:
/proc/sys/
的路径,将点(.
)替换为斜杠(/
)。# sysctl.conf 中的参数:
net.ipv4.ip_forward = 1
# 对应路径:
/proc/sys/net/ipv4/ip_forward
系统启动时按以下顺序加载配置(后加载的配置覆盖前者的冲突项):
/etc/sysctl.conf
/etc/sysctl.d/*.conf
(按文件名字母顺序加载)。1. 修改配置文件
# 编辑主配置文件
sudo nano /etc/sysctl.conf
# 或创建自定义配置文件(推荐)
sudo nano /etc/sysctl.d/99-custom.conf
2. 手动加载配置
# 加载所有配置文件(包括 /etc/sysctl.d/)
sudo sysctl --system
# 加载所有配置文件(包括 sysctl.d/)
sudo sysctl -p
# 加载指定文件
sudo sysctl -p /etc/sysctl.d/99-custom.conf
3. 验证参数
# 检查参数是否生效
sysctl 参数名
# 示例:
sysctl net.ipv4.ip_forward
1. 网络优化
# 启用 IPv4/IPv6 转发
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
# 增大 TCP 缓冲区
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
2. 安全加固
# 禁用 ICMP 重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# 阻止 SYN 洪水攻击
net.ipv4.tcp_syncookies = 1
3. IPv6 配置
# 禁用 eth0 的 RA 接收
net.ipv6.conf.eth0.accept_ra = 0
# 启用临时隐私地址
net.ipv6.conf.all.use_tempaddr = 2
4. 网络优化
参数 | 作用 | 推荐值 | 适用场景 |
---|---|---|---|
net.ipv4.ip_forward |
启用 IPv4 数据包转发 | 0 |
主机设为 0 ,路由器设为 1 |
net.core.somaxconn |
最大连接队列长度(预防 SYN 洪水攻击) | 4096 |
高并发服务器 |
net.ipv4.tcp_tw_reuse |
允许复用 TIME-WAIT 状态的端口 | 1 |
Web 服务器 |
net.ipv6.conf.all.accept_ra |
控制 IPv6 路由器广播接受(见前文) | 1 或 0 |
根据网络安全策略调整 |
5. 内存与交换分区
参数 | 作用 | 推荐值 | 说明 |
---|---|---|---|
vm.swappiness |
控制交换分区使用倾向(0-100) | 10 |
物理内存充足时降低此值 |
vm.overcommit_memory |
内存分配策略(0=保守,1=总是允许,2=拒绝超限) | 0 或 2 |
数据库服务器建议设为 2 |
vm.dirty_ratio |
内存脏数据达到总内存的百分比时强制写盘 | 20 |
减少 I/O 突增 |
6. 安全加固
参数 | 作用 | 推荐值 | 说明 |
---|---|---|---|
kernel.exec-shield |
防御缓冲区溢出攻击(仅 x86) | 1 |
需内核支持 |
net.ipv4.conf.all.accept_redirects |
禁止接受 ICMP 重定向(防中间人攻击) | 0 |
所有接口生效 |
fs.protected_hardlinks |
禁止普通用户修改系统硬链接 | 1 |
提升文件系统安全 |
网络优化
net.core.somaxconn = 65535 # 全连接队列最大值
net.ipv4.tcp_max_syn_backlog = 65535 # 半连接队列长度
net.ipv4.tcp_tw_reuse = 1 # 允许重用 TIME-WAIT 套接字
net.ipv4.tcp_fin_timeout = 30 # FIN 超时时间(秒)
net.ipv4.ip_local_port_range = 1024 65535 # 端口范围
net.ipv4.tcp_congestion_control = bbr # 拥塞算法
内存管理
vm.swappiness = 10 # 值越低越倾向物理内存(0-100)
vm.vfs_cache_pressure = 50 # inode 缓存回收倾向
vm.dirty_background_ratio = 5 # 后台刷脏页阈值(百分比)
vm.dirty_ratio = 10 # 同步刷脏页阈值(百分比)
文件系统
fs.file-max = 2097152 # 系统最大打开文件数
fs.inotify.max_user_watches = 1048576 # inotify 监控数上限
内核与安全
kernel.pid_max = 4194304 # 最大 PID 数量
kernel.panic = 10 # 崩溃后重启时间(秒)
net.ipv4.conf.all.rp_filter = 1 # 反向路径过滤(防 IP 欺骗)
net.ipv4.icmp_echo_ignore_all = 1 # 忽略所有 ICMP 请求(防探测)
语法检查:
使用 sysctl -p
时,若配置文件有语法错误,加载会失败并提示具体行号。
接口级参数:
若需针对特定接口(如 eth0
)配置,需明确指定接口名:
net.ipv6.conf.eth0.accept_ra = 0
生产环境测试:
修改关键参数(如 vm.swappiness
或网络转发)前,建议在非生产环境验证。
备份与回滚:
# 备份原配置
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
通过 /etc/sysctl.conf
及其扩展配置目录,管理员可以高效管理系统内核行为,从网络性能调优到安全策略加固,均能实现灵活控制。
以下是这些参数的简要说明:
1. accept_dad
0
:禁用 DAD。1
:启用 DAD(默认值)。 2. accept_ra
0
:不接受 RA 消息。1
:接受 RA 消息。2
:仅在没有默认路由器时接受 RA 消息。 3. accept_ra_defrtr
0
:不接受默认路由器信息。1
:接受默认路由器信息(默认值)。 4. accept_ra_from_local
0
:不接受本地 RA 消息。1
:接受本地 RA 消息(默认值)。 5. accept_ra_min_hop_limit
6. accept_ra_min_lft
7. accept_ra_mtu
0
:不接受 MTU 信息。1
:接受 MTU 信息(默认值)。 8. accept_ra_pinfo
0
:不接受前缀信息。1
:接受前缀信息(默认值)。 9. accept_ra_rt_info_max_plen
10. accept_ra_rt_info_min_plen
11. accept_ra_rtr_pref
0
:不接受路由器优先级信息。1
:接受路由器优先级信息(默认值)。 12. accept_redirects
0
:不接受重定向消息。1
:接受重定向消息(默认值)。 13. accept_source_route
0
:不接受源路由选项。1
:接受源路由选项(默认值)。 14. accept_untracked_na
0
:不接受。1
:接受。 15. addr_gen_mode
0
:使用 EUI64 地址。1
:使用隐私扩展地址。2
:使用稳定隐私地址。 16. autoconf
0
:禁用 SLAAC。1
:启用 SLAAC(默认值)。 17. dad_transmits
18. disable_ipv6
0
:启用 IPv6(默认值)。1
:禁用 IPv6。 19. disable_policy
0
:启用策略路由。1
:禁用策略路由。 20. drop_unicast_in_l2_multicast
0
:不丢弃。1
:丢弃。 21. drop_unsolicited_na
0
:不丢弃。1
:丢弃。 22. enhanced_dad
0
:禁用。1
:启用。 23. force_mld_version
24. force_tllao
0
:不强制。1
:强制。 25. forwarding
0
:禁用转发。1
:启用转发。 26. hop_limit
27. ignore_routes_with_linkdown
0
:不忽略。1
:忽略。 28. ioam6_enabled
0
:禁用。1
:启用。 29. ioam6_id
30. ioam6_id_wide
31. keep_addr_on_down
0
:不保留。1
:保留。 32. max_addresses
33. max_desync_factor
34. mc_forwarding
0
:禁用。1
:启用。 35. mldv1_unsolicited_report_interval
36. mldv2_unsolicited_report_interval
37. mtu
38. ndisc_evict_nocarrier
0
:不驱逐。1
:驱逐。 39. ndisc_notify
0
:不发送。1
:发送。 40. ndisc_tclass
41. optimistic_dad
0
:禁用。1
:启用。 42. proxy_ndp
0
:禁用。1
:启用。 43. rpl_seg_enabled
0
:禁用。1
:启用。 44. ra_defrtr_metric
45. ra_honor_pio_life
0
:不尊重。1
:尊重。 46. regen_max_retry
47. router_probe_interval
48. router_solicitation_delay
49. router_solicitation_interval
50. router_solicitation_max_interval
51. router_solicitations
52. seg6_enabled
0
:禁用。1
:启用。 53. seg6_require_hmac
0
:不要求。1
:要求。 54. stable_secret
55. suppress_frag_ndisc
0
:不抑制。1
:抑制。 56. temp_prefered_lft
57. temp_valid_lft
58. use_oif_addrs_only
0
:不使用。1
:使用。 59. use_tempaddr
0
:不生成。1
:生成。2
:仅生成临时地址。这些参数提供了对 IPv6 协议栈行为的细粒度控制,允许用户根据需求调整网络配置。通过合理配置这些参数,可以优化网络性能、增强安全性或满足特定的网络需求。
这些参数都位于 /proc/sys/net/ipv6/conf
目录下,用于控制 IPv6 网络配置和行为。下面我为你详细解释这些参数:
地址配置与重复地址检测
accept_dad
:控制是否接受重复地址检测(DAD)的结果。设为 1
表示接受 DAD 结果,若为 0
则忽略 DAD 检测结果,可能导致地址冲突。addr_gen_mode
:指定 IPv6 地址的生成模式。例如,可选择使用 EUI - 64 格式基于 MAC 地址生成,或者采用随机生成方式,以增强隐私性。autoconf
:决定是否启用无状态地址自动配置(SLAAC)。当设置为 1
时,设备会根据路由器通告(RA)自动配置 IPv6 地址;设为 0
则禁用此功能。dad_transmits
:确定在 DAD 过程中发送邻居请求消息的次数。默认值通常为 1
,增加该值可提高 DAD 检测的可靠性,但会延长地址配置时间。路由器通告相关
accept_ra
:控制设备是否接受路由器通告(RA)消息。1
表示接受,0
表示拒绝。只有接受 RA 消息,设备才能进行 SLAAC 配置。accept_ra_defrtr
:决定是否接受 RA 消息中指定的默认路由器。若设为 1
,设备会将 RA 中指定的路由器作为默认网关;设为 0
则忽略该信息。accept_ra_from_local
:是否接受来自本地接口的 RA 消息。这在某些特殊网络场景中,如使用本地接口模拟路由器时可能会用到。accept_ra_min_hop_limit
:设置设备接受的 RA 消息中最小的跳数限制值。若 RA 中的跳数限制小于该值,设备可能会忽略该 RA 消息。accept_ra_min_lft
:指定接受的 RA 消息中前缀的最小有效生存期。accept_ra_mtu
:控制是否接受 RA 消息中指定的最大传输单元(MTU)值。若设为 1
,设备会使用 RA 中的 MTU 值更新自身的配置。accept_ra_pinfo
:决定是否接受 RA 消息中的前缀信息,用于配置设备的 IPv6 地址前缀。accept_ra_rt_info_max_plen
和 accept_ra_rt_info_min_plen
:分别设置接受的 RA 消息中路由信息的最大和最小前缀长度。accept_ra_rtr_pref
:是否接受 RA 消息中路由器的优先级信息,可用于在多个路由器之间选择更优的路由。ra_defrtr_metric
:默认路由器的度量值,可用于在存在多个默认路由器时进行路由选择。ra_honor_pio_life
:控制是否遵循 RA 消息中前缀信息选项(PIO)的生存期。安全与策略相关
accept_redirects
:控制设备是否接受 IPv6 重定向消息。重定向消息可用于优化路由,但也可能被恶意利用,因此在安全要求较高的环境中可禁用。accept_source_route
:是否接受源路由选项的 IPv6 数据包。源路由允许发送方指定数据包的路由路径,可能存在安全风险,通常建议禁用。accept_untracked_na
:决定是否接受未跟踪的邻居通告(NA)消息。未跟踪的 NA 可能是非法的,设置为 0
可增强安全性。disable_ipv6
:禁用整个系统的 IPv6 功能。1
表示禁用,0
表示启用。disable_policy
:是否禁用 IPv6 策略路由。策略路由可根据特定规则进行路由选择,禁用后将使用默认路由规则。drop_unicast_in_l2_multicast
:控制是否丢弃发往二层组播地址的单播 IPv6 数据包,可防止一些异常流量。drop_unsolicited_na
:是否丢弃未经请求的邻居通告(NA)消息,可减少潜在的地址欺骗攻击。enhanced_dad
:是否启用增强的 DAD 机制,增强机制可能提供更严格的地址唯一性检查。force_mld_version
:强制使用指定版本的多播侦听者发现(MLD)协议。force_tllao
:强制使用临时链路本地地址选项。转发与路由相关
forwarding
:控制是否开启 IPv6 数据包转发功能。当设备作为路由器或网关时,需将此参数设置为 1
;作为普通主机时,通常设置为 0
。hop_limit
:设置 IPv6 数据包的默认跳数限制。数据包每经过一个路由器,跳数减 1
,当跳数减为 0
时,数据包将被丢弃。ignore_routes_with_linkdown
:是否忽略与处于关闭状态的链路相关的路由。若设为 1
,当链路关闭时,相关路由将被自动忽略。mc_forwarding
:控制是否开启 IPv6 组播数据包转发功能。router_probe_interval
:对默认路由器进行探测的时间间隔。通过定期探测,可及时发现路由器故障并切换到备用路由器。router_solicitation_delay
:设备发送路由器请求(RS)消息前的延迟时间。router_solicitation_interval
:重复发送 RS 消息的时间间隔。router_solicitation_max_interval
:最大的 RS 消息发送间隔时间。router_solicitations
:发送 RS 消息的最大次数。若在规定次数内未收到 RA 消息,设备可能会采取其他配置方式。use_oif_addrs_only
:是否仅使用出接口的地址来进行路由选择。其他参数
ioam6_enabled
:是否启用 IPv6 网络中的网络遥测(IOAM6)功能。ioam6_id
和 ioam6_id_wide
:与 IOAM6 功能相关的标识符。keep_addr_on_down
:当网络接口关闭时,是否保留已分配的 IPv6 地址。设为 1
可在接口重新开启时快速恢复网络连接。max_addresses
:限制每个网络接口可分配的 IPv6 地址的最大数量。max_desync_factor
:设置时钟同步的最大偏差因子。mldv1_unsolicited_report_interval
和 mldv2_unsolicited_report_interval
:分别设置 MLDv1 和 MLDv2 协议中主动报告消息的发送间隔。mtu
:设置网络接口的最大传输单元大小。ndisc_evict_nocarrier
:控制在链路失去载波时,是否清除邻居发现(NDP)缓存中的条目。ndisc_notify
:控制是否在邻居发现(NDP)状态发生变化时通知用户空间。ndisc_tclass
:设置 NDP 消息的流量类别。proxy_ndp
:是否启用 IPv6 邻居发现代理功能。启用后,设备可代表其他设备响应邻居请求,可用于隐藏内部网络拓扑。regen_max_retry
:在生成地址时,若遇到冲突,最大的重试次数。rpl_seg_enabled
:是否启用 RPL(低功耗和有损网络路由协议)的段路由功能。seg6_enabled
:是否启用 IPv6 段路由(SRv6)功能。seg6_require_hmac
:是否要求 SRv6 数据包使用 HMAC(哈希消息认证码)进行验证,以增强安全性。stable_secret
:用于生成临时地址的稳定密钥。suppress_frag_ndisc
:是否抑制分片相关的 NDP 消息。temp_prefered_lft
:临时地址的首选生存期,即临时地址在该时间段内是首选使用的。temp_valid_lft
:临时地址的有效生存期,超过该时间后临时地址不再有效。use_tempaddr
:控制是否使用临时 IPv6 地址。临时地址可增强隐私性,1
启用,0
禁用。以下是 Linux /proc/sys/net/ipv6/conf/<接口>/
目录下 IPv6 参数的详细分类解析,涵盖地址配置、邻居发现、路由、安全等核心功能。部分参数需要高版本内核支持(如 ioam6_*
和 rpl_seg_enabled
),建议结合内核文档使用。
一、地址自动配置与 DAD(重复地址检测)
参数 | 作用 | 推荐值 | 依赖关系 |
---|---|---|---|
accept_dad |
重复地址检测(DAD)策略:0 =禁用1 =启用(默认)2 =启用并优化(快速失败)。 |
1 或 2 |
需内核支持 |
dad_transmits |
DAD 探测包的发送次数(若 accept_dad=1/2 )。 |
1 |
无 |
enhanced_dad |
增强型 DAD(减少地址冲突概率)。 | 1 |
需 accept_dad=1 |
addr_gen_mode |
IPv6 地址生成模式:0 =EUI-641 =稳定隐私地址2 =随机临时地址。 |
2 |
需内核 ≥ 4.1 |
use_tempaddr |
临时地址生成策略:0 =禁用1 =生成但优先公有地址2 =优先临时地址(增强隐私)。 |
2 |
需 autoconf=1 |
max_addresses |
接口允许的最大 IPv6 地址数量(含临时地址)。 | 16 |
无 |
二、路由器广播(RA)控制
参数 | 作用 | 推荐值 | 依赖关系 |
---|---|---|---|
accept_ra |
是否接受路由器广播(RA),决定是否触发 SLAAC。 | 1 |
需配合 autoconf=1 |
accept_ra_defrtr |
是否通过 RA 自动添加默认路由。 | 1 |
需 accept_ra=1 |
accept_ra_min_hop_limit |
接受 RA 的最小跳数限制(低于此值的 RA 被忽略)。 | 1 |
无 |
accept_ra_pinfo |
是否接受 RA 中的前缀信息(用于 SLAAC)。 | 1 |
需 accept_ra=1 |
accept_ra_rt_info_max_plen |
接受 RA 中路由信息选项的最大前缀长度。 | 64 |
无 |
accept_ra_rt_info_min_plen |
接受 RA 中路由信息选项的最小前缀长度。 | 0 |
无 |
accept_ra_rtr_pref |
是否接受 RA 中的路由器优先级信息。 | 1 |
需 accept_ra=1 |
三、路由与转发
参数 | 作用 | 推荐值 | 依赖关系 |
---|---|---|---|
forwarding |
启用 IPv6 数据包转发(路由器模式)。 | 0 |
需配合防火墙规则 |
ignore_routes_with_linkdown |
是否忽略链路状态为 down 的路由。 | 0 |
无 |
hop_limit |
设置 IPv6 数据包的默认跳数限制(类似 IPv4 TTL)。 | 64 |
无 |
ra_defrtr_metric |
通过 RA 添加的默认路由的优先级(metric)。 | 1024 |
需 accept_ra_defrtr=1 |
四、邻居发现与安全
参数 | 作用 | 推荐值 | 依赖关系 |
---|---|---|---|
drop_unsolicited_na |
是否丢弃未经请求的邻居通告(防止欺骗攻击)。 | 1 |
无 |
drop_unicast_in_l2_multicast |
是否丢弃链路层多播中的单播邻居通告(防攻击)。 | 1 |
无 |
proxy_ndp |
启用代理 NDP(为其他主机响应邻居请求)。 | 0 |
需手动配置代理条目 |
accept_redirects |
是否接受 ICMPv6 重定向消息(安全风险高)。 | 0 |
无 |
accept_source_route |
是否接受 IPv6 源路由(易引发路由欺骗)。 | 0 |
无 |
五、多播与链路层优化
参数 | 作用 | 推荐值 | 依赖关系 |
---|---|---|---|
force_mld_version |
强制 MLD(多播侦听发现协议)版本:1 =MLDv12 =MLDv2。 |
2 |
需多播支持 |
mc_forwarding |
启用 IPv6 多播数据包转发。 | 0 |
需多播路由守护进程 |
mldv1_unsolicited_report_interval |
MLDv1 未经请求的报告间隔(秒)。 | 10 |
无 |
force_tllao |
强制在 NDP 消息中包含 Target Link-Layer Address Option(TLLAO)。 | 0 |
无 |
六、临时地址与隐私
参数 | 作用 | 推荐值 | 依赖关系 |
---|---|---|---|
temp_valid_lft |
临时地址的有效生存时间(秒)。 | 604800 |
需 use_tempaddr=1 或 2 |
temp_prefered_lft |
临时地址的首选生存时间(秒)。 | 86400 |
需 use_tempaddr=1 或 2 |
regen_max_retry |
临时地址生成失败时的最大重试次数。 | 3 |
需 use_tempaddr=1 或 2 |
七、高级调试与实验性功能
参数 | 作用 | 推荐值 | 依赖关系 |
---|---|---|---|
ioam6_enabled |
启用 IPv6 操作、管理与维护(IOAM)数据层跟踪(实验性)。 | 0 |
需内核 ≥ 5.10 |
rpl_seg_enabled |
启用 RPL(IPv6 路由协议)分段支持(物联网场景)。 | 0 |
需内核支持 RPL 协议 |
seg6_enabled |
启用 IPv6 分段路由(SRv6)支持。 | 0 |
需内核 ≥ 4.10 |
八、其他关键参数
参数 | 作用 | 推荐值 | 依赖关系 |
---|---|---|---|
disable_ipv6 |
完全禁用接口的 IPv6 功能。 | 0 |
无 |
mtu |
设置接口的 IPv6 MTU(最大传输单元)。 | 1500 |
需匹配物理链路 MTU |
ndisc_notify |
内核是否通过 Netlink 通知用户空间邻居发现事件。 | 0 |
需特定监控工具 |
接受路由器通告 (RA) 相关参数
其他网络配置参数
以下是您列出的 IPv6 相关 sysctl
参数的详细讲解,按功能分类和重要性进行说明:
accept_ra
1
(启用)。0
。accept_ra_defrtr
1
(启用)。accept_ra_min_hop_limit
0
(接受任何值)。64
防止攻击者伪造低跳数的 RA。accept_ra_mtu
1
(启用)。0
。accept_ra_pinfo
1
(启用)。accept_ra=1
才能生效。accept_ra_rt_info_max_plen
64
(IPv6 子网典型值)。ra_defrtr_metric
1024
。ra_honor_pio_life
0
(不遵循,使用内核默认值)。1
。accept_dad
1
(启用)。enhanced_dad
0
(禁用)。1
。proxy_ndp
0
(禁用)。drop_unsolicited_na
0
(接受)。1
防止 NA 欺骗攻击。drop_unicast_in_l2_multicast
0
(不丢弃)。addr_gen_mode
0
:基于 EUI-64 的传统模式。1
:基于随机化的稳定隐私地址(RFC 7217)。2
:完全随机地址(临时地址)。0
或 1
(取决于系统配置)。use_tempaddr
0
(禁用)。2
(优先使用临时地址)。temp_prefered_lft
86400
(1 天)。temp_valid_lft
604800
(7 天)。forwarding
0
(禁用)。accept_ra=0
)。ignore_routes_with_linkdown
0
(不忽略)。1
可自动清理无效路由。hop_limit
64
。255
)。accept_redirects
1
(启用)。0
防止路由重定向攻击。accept_source_route
0
(禁用)。suppress_frag_ndisc
0
(允许分片)。1
防止分片攻击。mc_forwarding
0
(禁用)。force_mld_version
0
(自动协商)。1
。seg6_enabled
0
(禁用)。ioam6_enabled
0
(禁用)。这些参数都与IPv6网络配置和邻居发现协议(NDP)有关。下面是对每个参数的简要解释:
接受相关参数
路由器相关参数
地址配置相关参数
其他参数
这些参数可以通过sysctl
命令进行查看和修改,以适应不同的网络环境和需求。