Linux的: /proc/sys/net/ipv6/conf/ 筆記250405

Linux的: /proc/sys/net/ipv6/conf/


/proc/sys/net/ipv6/conf/ 是 Linux 系統中用于 動態配置 IPv6 網絡接口參數 的核心目錄。它允許針對不同網絡接口(如 eth0wlan0)或全局設置(all)調整 IPv6 協議棧的行為。
它通過虛擬文件系統(procfs)(不在磁盤在內存), 動態暴露內核參數,允許用戶或管理員實時調整 IPv6 的網絡行為。通過 /proc/sys/net/ipv6/conf/,管理員可精細控制 IPv6 網絡的方方面面,從地址分配到安全策略,成為網絡調優和故障排查的利器。

🌟 核心功能

  1. 接口級精細控制
    • 每個接口(如 eth0)的配置獨立管理,支持差異化策略。
  2. 動態生效
    • 修改參數后立即生效,無需重啟服務或系統。
  3. 臨時與持久化配置
    • 直接修改 /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


?? 注意事項

  1. 參數優先級

    • 接口級配置(如 eth0)優先級高于全局配置(all)。
    • default/ 目錄中的配置僅對新創建的網絡接口生效。
  2. 優先級規則

    • all/ 的配置會覆蓋單個接口的設置。
    • default/ 僅影響新創建的接口。
  3. 安全建議

    • 禁用 accept_redirects(可能引發路由欺騙)。
    • 限制 accept_ra 僅在需要自動配置時開啟。
  4. 網絡重啟影響

    • 修改 /proc 的參數會立即生效,但重啟網絡服務可能重置某些配置。
  5. 內核兼容性

    • 不同內核版本可能支持不同的參數,建議通過 man proc 或內核文檔查詢。
  6. sysctl 的關系

    • /proc/sys/net/ipv6/conf/ 中的參數名需轉換為 sysctl 格式:
      # /proc/sys/net/ipv6/conf/eth0/forwarding → 
      sysctl net.ipv6.conf.eth0.forwarding
      










2?? 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'










2?? /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,則優先使用該值,忽略 alldefault 的配置。

有道dpsk說: 特定接口 > all > default。

元寶dpsk說: ??接口級參數 > all/ > default/

參數eth0/ 設置all/ 設置default/ 設置實際生效值
disable_ipv60110(接口級優先)
accept_ra未設置010(all/ 覆蓋 default/
use_tempaddr未設置212(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_raens33 接口(特定物理/虛擬接口)中等僅影響該接口針對單個接口的精細控制(如允許 ens33 接受 RA,但其他接口拒絕)。

文心X1說: all/ > interfaceName/ > default/

目錄作用范圍優先級典型用途
all/覆蓋所有接口(包括已存在和新創建的)最高強制執行全局策略(如禁用所有接口的路由器通告)
default/僅影響新創建的接口中等設置新建接口的默認配置(如默認拒絕路由器通告)
interfaceName/僅控制特定接口(如eth0)最低對特定接口進行個性化配置(如允許eth0接受路由器通告)

文心4.5說: 最高優先級:具體網絡接口配置(interfaceName)。中等優先級:默認配置(default),適用于未單獨配置的接口。最低優先級:全局配置(all),通常用于全局性設置,但可能被具體接口設置覆蓋。

文心dpsk說: 具體接口配置 > all 全局配置 > default 默認配置?

debian10 下親測 具體接口名的 優先級大于 all

???? ???? ???? 4. 應用場景

  • 全局禁用 RA:在 /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_raautoconf(自動配置 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           # 檢查默認路由
    

🧠🌐 Linux的/proc/sys/net/ipv6/conf/(all,default,interfaceName具體網絡接口名稱)/ 筆記250405










2?? SLAAC 是什么?


SLAACStateless Address Autoconfiguration,無狀態地址自動配置)是 IPv6 協議的核心特性之一,它允許設備無需依賴 DHCP 服務器(如 IPv4 中的 DHCP),直接通過本地網絡的路由器通告(Router Advertisement, RA)自動生成全球唯一的 IPv6 地址。


🔍 核心原理

  1. 路由器通告(RA)
    網絡中的 IPv6 路由器會周期性廣播 RA 消息,包含以下關鍵信息:

    • 網絡前綴(如 2001:db8::/64
    • 默認路由(網關)
    • 地址有效期(生存時間)
    • 是否支持 DHCPv6(補充配置其他參數,如 DNS)。
  2. 地址生成
    設備收到 RA 后,結合以下兩部分生成 IPv6 地址:

    • 網絡前綴(來自 RA)
    • 接口標識符(通常基于 MAC 地址或隨機生成)。

    示例

    網絡前綴: 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)。

🆚 與 DHCPv6 的區別

SLAACDHCPv6
地址分配設備自主生成服務器分配
狀態管理無狀態(無需服務器)有狀態(服務器記錄)
配置內容僅地址 + 網關 + 前綴地址 + DNS + 其他參數
適用場景簡單網絡(家庭/小型辦公)需集中管理(企業/數據中心)

🔧 相關配置(Linux)

/proc/sys/net/ipv6/conf/ 中,以下參數控制 SLAAC 行為:

  1. accept_ra
    • 設置為 1 時,允許設備接收 RA 消息(啟用 SLAAC 的前提)。
  2. autoconf
    • 設置為 1 時,允許設備根據 RA 生成地址(需同時啟用 accept_ra=1)。
  3. use_tempaddr
    • 控制是否生成臨時隱私地址(如 2 表示優先使用臨時地址)。

示例命令

# 查看 eth0 是否啟用 SLAAC
sysctl net.ipv6.conf.eth0.autoconf# 臨時禁用 SLAAC
echo 0 > /proc/sys/net/ipv6/conf/eth0/autoconf

🌐 實際應用

  1. 家庭網絡
    路由器廣播 RA,手機/電腦自動獲取 IPv6 地址(如 2408:8207:1234:5678::1a2b)。
  2. 服務器網絡
    可能禁用 SLAAC(autoconf=0),手動配置靜態 IPv6 地址以保證穩定性。
  3. 隱私保護
    啟用 use_tempaddr=2,避免設備 IPv6 地址暴露 MAC 信息。

💡 擴展知識

  • EUI-64 算法:將 48 位 MAC 地址轉換為 64 位接口標識符(插入 FFFE 并反轉 U/L 位)。
  • 臨時地址:格式為 隨機數::臨時后綴,周期性變化(可通過 ip -6 addr show 查看)。
  • DHCPv6:DHCPv6(Dynamic Host Configuration Protocol for IPv6)是 IPv6 網絡中用于 動態分配地址和配置網絡參數 的協議,相較于 IPv4 的 DHCP,它在設計上更適應 IPv6 的特性(如無狀態地址自動配置 SLAAC)。
    • DHCPv6 筆記250405
    • 無狀態版的DHCPv6是不是SLAAC? 筆記250405

🧠🌐 SLAAC 是什么? 筆記250404










2?? SLAAC 與 DHCPv6

SLAAC(無狀態地址自動配置)和 DHCPv6 是 IPv6 網絡中兩種主要的地址配置機制,分別適用于不同的場景和需求。以下是它們的核心區別、協作方式及實際應用指南:


📜 核心區別對比

特性SLAACDHCPv6(有狀態)DHCPv6(無狀態)
地址生成方式客戶端基于 RA 前綴自行生成地址服務器分配完整地址地址由 SLAAC 生成,服務器提供參數
依賴服務器無需服務器(僅需路由器 RA)必須部署 DHCPv6 服務器需要 DHCPv6 服務器
配置參數地址 + 默認路由(通過 RA)地址 + DNS/NTP/域名等完整配置DNS/NTP/域名等(不分配地址)
管理復雜度
適用場景簡單網絡、物聯網設備企業網絡、需集中管理地址的環境需額外參數但無需地址管理的環境

🌐 協作機制

IPv6 網絡可結合 SLAAC 和 DHCPv6 實現靈活配置,具體通過 RA(路由通告)的標志位 控制:

  1. M標志(Managed Address Configuration)
    • M=1:客戶端必須使用 有狀態 DHCPv6 獲取地址。
    • M=0:客戶端使用 SLAAC 或無狀態 DHCPv6。
  2. O標志(Other Configuration)
    • O=1:客戶端通過 無狀態 DHCPv6 獲取 DNS 等參數。
    • O=0:僅使用 SLAAC 配置。

🛠? 配置示例

???????? 1. 純 SLAAC 網絡

  • 路由器配置(Linux,使用 radvd
    # /etc/radvd.conf
    interface eth0 {AdvSendAdvert on;prefix 2001:db8:abcd::/64 {AdvOnLink on;AdvAutonomous on;  # 啟用 SLAAC};
    };
    
  • 客戶端行為
    根據 RA 前綴生成地址,不獲取 DNS 等參數。

???????? 2. SLAAC + 無狀態 DHCPv6

  • 路由器 RA 配置
    interface eth0 {AdvSendAdvert on;AdvManagedFlag off;  # M=0AdvOtherConfigFlag on;  # O=1prefix 2001:db8:abcd::/64 {AdvAutonomous on;};
    };
    
  • DHCPv6 服務器配置(ISC DHCPv6)
    # /etc/dhcp/dhcpd6.conf
    option dhcp6.name-servers 2001:db8::53;
    option dhcp6.domain-search "example.com";
    
  • 客戶端行為
    通過 SLAAC 生成地址,通過 DHCPv6 獲取 DNS。

???????? 3. 有狀態 DHCPv6

  • 路由器 RA 配置
    interface eth0 {AdvSendAdvert on;AdvManagedFlag on;  # M=1AdvOtherConfigFlag off;
    };
    
  • DHCPv6 服務器配置
    subnet6 2001:db8:abcd::/64 {range6 2001:db8:abcd::100 2001:db8:abcd::200;option dhcp6.name-servers 2001:db8::53;
    };
    
  • 客戶端行為
    完全依賴 DHCPv6 獲取地址和參數。

🔍 協議選擇指南

???????? 1. 何時使用 SLAAC?

  • 場景:家庭網絡、物聯網設備、臨時網絡(如會議 Wi-Fi)。
  • 優勢:無需服務器,部署簡單,適合設備自主生成地址。

???????? 2. 何時使用無狀態 DHCPv6?

  • 場景:需要分發 DNS、NTP 等參數,但地址管理無嚴格要求。
  • 示例:學校網絡、咖啡館 Wi-Fi(用戶設備自行生成地址,但需統一 DNS)。

???????? 3. 何時使用有狀態 DHCPv6?

  • 場景:企業網絡、數據中心、需精確控制地址分配的環境。
  • 示例:虛擬機集群、需審計 IP 使用記錄的網絡。

?? 安全與優化

???????? 1. SLAAC 安全風險

  • RA 欺騙攻擊:偽造路由器通告錯誤前綴。
    防護:部署 RA Guard(交換機配置過濾非法 RA)。

???????? 2. DHCPv6 安全風險

  • 偽造服務器攻擊:惡意 DHCPv6 服務器分配錯誤參數。
    防護:啟用 DHCPv6 Snooping(交換機記錄合法服務器)。

???????? 3. 隱私優化

  • 臨時地址:在 SLAAC 中啟用 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. 適用規模小到中型網絡中到大型企業網絡

🧠🌐 SLAAC 與 DHCPv6 筆記250405










2?? accept_ra


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. 服務器環境

  • 禁用 RAaccept_ra=0):防止自動分配地址,確保手動配置靜態 IPv6。
  • 示例
    sysctl net.ipv6.conf.eth0.accept_ra=0
    sysctl net.ipv6.conf.eth0.autoconf=0  # 同時關閉自動配置
    

???????? 2. 客戶端設備

  • 啟用 RAaccept_ra=1):自動獲取地址(如家庭網絡中的手機/電腦)。
  • 依賴條件
    • 路由器需發送 RA(通過 radvddnsmasq 等工具)。
    • autoconf=1(默認啟用)。

???????? 3. 網絡調試

  • 臨時關閉 RA:排查地址沖突或異常自動配置問題。
  • 命令
    ip -6 addr flush dev eth0  # 清空現有地址
    echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
    

?? 注意事項

  1. forwarding 的沖突
    若啟用 IPv6 轉發(net.ipv6.conf.all.forwarding=1),內核默認會自動禁用 RA 接收accept_ra=0),需手動覆蓋此行為。

  2. 接口優先級

    • 具體接口(如 eth0)的配置優先級高于 alldefault
    • 示例
      net.ipv6.conf.all.accept_ra=0     # 全局禁用
      net.ipv6.conf.eth0.accept_ra=1    # eth0 例外啟用
      
  3. RA 內容依賴
    RA 中需包含 A 標志(Autonomous Address Configuration)才會觸發 SLAAC 地址生成。可通過 tcpdump 驗證:

    tcpdump -i eth0 -vn ip6 and icmp6 and "router advertisement"
    

🔍 擴展知識

  • RA 消息內容
    包含前綴、MTU、默認路由、DNS 服務器(RDNSS)等(需路由器支持 ND 擴展)。
  • 隱私地址
    若啟用 use_tempaddr=2,即使通過 RA 獲取地址,也會生成臨時隨機后綴。
  • DHCPv6 共存
    RA 中的 M 標志(Managed)和 O 標志(Other)決定是否使用 DHCPv6 補充配置。

通過合理配置 accept_ra,可以靈活平衡網絡自動化與可控性,適應不同場景需求。


🌐 accept_ra詳解 筆記 250404










2?? autoconf


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 加載配置。


🌐 核心機制

  1. 依賴 RA 消息

    • autoconf=1 需配合 accept_ra=1(允許接收 RA)。
    • RA 中必須包含 A 標志(Autonomous Address Configuration)。
  2. 地址生成規則

    • 組合 RA 提供的 網絡前綴(如 2001:db8::/64)和 接口標識符(基于 MAC 地址或隨機生成)。
    • 若啟用 use_tempaddr=2,優先生成臨時隱私地址(如 2001:db8::d3ad:b33f)。
  3. 典型地址類型

    # 永久地址(基于 EUI-64)
    2001:db8::1a2b:3cff:fe4d:5e6f# 臨時隱私地址(隨機后綴)
    2001:db8::d3ad:b33f
    

?? 注意事項

  1. accept_ra 的關聯

    • accept_ra=0,即使 autoconf=1 也不會觸發自動配置。
    • 調試命令
      # 檢查是否收到 RA
      tcpdump -i eth0 -vn ip6 and icmp6 and "router advertisement"
      
  2. forwarding 的沖突
    啟用 IPv6 轉發(net.ipv6.conf.all.forwarding=1)時,內核默認禁用 autoconf,需手動覆蓋:

    sysctl -w net.ipv6.conf.eth0.autoconf=1
    
  3. 接口優先級

    • 具體接口(如 eth0)的配置優先級高于 alldefault
    • 示例
      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
    
  • 抓包分析 RA
    tcpdump -i eth0 -vvv icmp6
    

🌐 autoconf 筆記250404










2?? forwarding


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 數據包。

IPv6 是 forwarding ; IPv4 是 ip_forward

與 IPv4 的區別

  • IPv4 的轉發控制在 /proc/sys/net/ipv4/ip_forward
  • IPv6 的轉發控制在 /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

?? 注意事項

  1. 與 RA 的沖突
    啟用轉發時(forwarding=1),內核默認會 禁用 RA 接收accept_ra=0)。若需同時使用轉發和 SLAAC,需手動覆蓋:

    sysctl -w net.ipv6.conf.eth0.accept_ra=2  # 特殊模式允許 RA
    
  2. 防火墻配置
    啟用轉發后,需配置 ip6tables 允許流量通過:

    # 允許 NAT 轉換(如需)
    ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    
  3. 接口優先級

    • 具體接口(如 eth0)的配置優先級高于 alldefault
    • 示例
      net.ipv6.conf.all.forwarding=0     # 全局禁用
      net.ipv6.conf.eth0.forwarding=1    # eth0 例外啟用
      

🔍 驗證與調試

  1. 檢查轉發狀態

    sysctl net.ipv6.conf.all.forwarding
    
  2. 測試連通性

    # 從客戶端 ping 另一網絡段的 IPv6 地址
    ping6 2001:db8:cafe::1
    
  3. 抓包分析

    tcpdump -i eth0 ip6 -vvv
    

📊 IPv4 vs IPv6 轉發對比

IPv4IPv6
參數路徑/proc/sys/net/ipv4/conf/*/forwarding/proc/sys/net/ipv6/conf/*/forwarding
默認值00
NAT 依賴高(IPv4 地址稀缺)低(地址空間充足)

🌐 forwarding 筆記250404










2?? accept_raautoconfforwarding 的關系



在 Linux 的 IPv6 網絡配置中,accept_raautoconfforwarding 是三個密切相關的核心參數,它們的組合直接影響設備在網絡中的角色(主機或路由器)和地址配置行為。以下是它們的關系詳解:


📊 核心關系總結

參數作用依賴關系
accept_ra控制是否接收路由通告(RA)消息。autoconf 生效的前提條件(需 accept_ra=1)。
autoconf控制是否根據 RA 自動生成 IPv6 地址(SLAAC)。依賴 accept_ra=1,且 RA 中需包含 A 標志。
forwarding控制是否啟用 IPv6 數據包轉發(路由器模式)。啟用后(=1),內核默認禁用 accept_ra(需手動覆蓋)。

🌐 典型場景分析

???????? 1. 普通主機模式(默認)

  • 目標:自動獲取 IPv6 地址,不轉發數據包。
  • 配置
    forwarding=0     # 禁用轉發
    accept_ra=1      # 接收 RA
    autoconf=1       # 自動配置地址
    
  • 行為
    • 根據 RA 生成 SLAAC 地址(如 2001:db8::1a2b:3c4d)。
    • 僅處理目標為本機的數據包。

???????? 2. 純路由器模式

  • 目標:轉發數據包,手動配置靜態地址。
  • 配置
    forwarding=1     # 啟用轉發
    accept_ra=0      # 禁用 RA 接收
    autoconf=0       # 禁用自動配置
    
  • 行為
    • 不接收 RA,需手動設置 IPv6 地址和路由。
    • 轉發跨網段的數據包(需配合 ip6tables 規則)。

???????? 3. 混合模式(路由器 + SLAAC)

  • 目標:作為路由器,但同時通過 RA 獲取地址。
  • 配置
    forwarding=1     # 啟用轉發
    accept_ra=2      # 特殊模式接受 RA(忽略默認路由優先級)
    autoconf=1       # 啟用自動配置
    
  • 行為
    • 允許接收 RA 并生成地址,但轉發數據包。
    • 需手動解決沖突(如確保防火墻允許 RA 消息)。

?? 關鍵沖突與解決

???????? 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 與防火墻沖突

  • 問題:啟用轉發后,防火墻可能阻止 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
    

🔧 配置驗證方法

  1. 檢查參數值

    sysctl net.ipv6.conf.eth0.{accept_ra,autoconf,forwarding}
    
  2. 查看生成的 IPv6 地址

    ip -6 addr show dev eth0
    
  3. 測試轉發功能

    # 在客戶端 ping 另一網段的地址
    ping6 2001:db8:cafe::1
    
  4. 抓包分析 RA

    tcpdump -i eth0 -vn icmp6 and "router advertisement"
    

📝 總結

  • accept_ra 是入口:決定是否處理 RA 消息,直接影響自動配置的可能性。
  • autoconf 是執行者:在 RA 有效的前提下,觸發地址生成。
  • forwarding 是角色開關:啟用后需謹慎協調前兩者,避免功能沖突。

通過合理配置這三個參數,可以靈活實現從智能家居設備到企業級路由器的全場景 IPv6 網絡架構。


🌐 accept_raautoconfforwarding 的關系 筆記250404










2?? accept_ra_defrtr


accept_ra_defrtr 是 Linux 系統中控制 是否通過 IPv6 路由通告(RA)自動設置默認路由 的關鍵參數。以下是其詳細說明:


📜 參數定義

  • 路徑
    /proc/sys/net/ipv6/conf/<接口>/accept_ra_defrtr
  • 默認值
    1(啟用,大多數系統的默認行為)。
  • 作用
    當接口接收到包含默認路由信息的 RA 消息時,決定是否自動將 RA 中的默認路由添加到內核路由表。

🌐 工作原理

  1. 啟用狀態(=1
    • 如果接收到的 RA 消息中包含默認路由(即 Router Lifetime 字段非零),系統會自動添加一條默認 IPv6 路由。
    • 示例路由表項
      default via fe80::1 dev eth0 proto ra  # RA 生成的默認路由
      
  2. 禁用狀態(=0
    • 忽略 RA 中的默認路由信息,即使收到 RA 也不更新默認路由。

🛠? 配置方法

???????? 臨時修改(重啟失效)

# 禁用 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 加載配置。


🔍 驗證操作

  1. 查看當前參數值
    sysctl net.ipv6.conf.eth0.accept_ra_defrtr
    
  2. 檢查路由表
    ip -6 route show | grep "default"
    # 輸出示例(啟用時):
    # default via fe80::1 dev eth0 proto ra metric 1024 expires 1800sec
    

?? 依賴與沖突

  1. accept_ra 必須啟用
    只有 net.ipv6.conf.eth0.accept_ra=1 時,accept_ra_defrtr 才會生效。
  2. forwarding 的沖突
    若啟用 IPv6 轉發(net.ipv6.conf.eth0.forwarding=1),內核默認禁用 RA 處理(需手動設置 accept_ra=2)。

🌟 典型場景

???????? 1. 家庭/辦公網絡

  • 默認行為:保持 accept_ra_defrtr=1,設備自動通過 RA 獲取默認網關(如家用路由器)。

???????? 2. 服務器/數據中心

  • 禁用場景:若需手動配置靜態默認路由(避免不可控的 RA 干擾),設置 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  # 備用接口禁用
    

📊 參數關系圖

Yes
No
Yes
No
RA 消息
accept_ra=1?
accept_ra_defrtr=1?
不處理 RA
添加默認路由
忽略默認路由

通過合理配置 accept_ra_defrtr,可以靈活控制 IPv6 默認路由的自動化與手動管理平衡。


accept_ra_defrtr 筆記250404










2?? accept_raaccept_ra_defrtr


accept_raaccept_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(啟用)

🌐 協作機制

  1. accept_ra=1

    • 接口會接收并處理 RA 消息,但具體行為由子參數(如 accept_ra_defrtr)進一步控制。
    • accept_ra_defrtr=1
      • 根據 RA 中的 Router Lifetime 字段添加默認路由。
      • 示例路由表
        default via fe80::1 dev eth0 proto ra  # RA 生成的默認路由
        
    • accept_ra_defrtr=0
      • 忽略 RA 中的默認路由信息,但其他 RA 功能(如地址自動配置)仍生效。
  2. accept_ra=0

    • 接口完全忽略 RA 消息,所有 RA 子參數(包括 accept_ra_defrtr)失效
    • 此時需手動配置 IPv6 地址和路由。

🛠? 典型場景

???????? 1. 家用網絡(自動配置)

# 啟用 RA 處理,并自動設置默認路由
sysctl net.ipv6.conf.eth0.accept_ra=1
sysctl net.ipv6.conf.eth0.accept_ra_defrtr=1
  • 效果:設備自動獲取 IPv6 地址和默認網關。

???????? 2. 服務器環境(手動路由)

# 接收 RA 生成地址,但禁用默認路由自動設置
sysctl net.ipv6.conf.eth0.accept_ra=1
sysctl net.ipv6.conf.eth0.accept_ra_defrtr=0
  • 效果:通過 SLAAC 生成地址,但手動指定默認路由:
    ip -6 route add default via 2001:db8::1
    

???????? 3. 路由器設備(禁用 RA 處理)

# 完全禁用 RA 處理
sysctl net.ipv6.conf.eth0.accept_ra=0
  • 效果:需手動配置所有 IPv6 參數。

🔍 驗證方法

  1. 檢查參數值

    sysctl net.ipv6.conf.eth0.{accept_ra,accept_ra_defrtr}
    
  2. 查看默認路由

    ip -6 route show | grep "default"
    
  3. 抓包分析 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_raaccept_ra_defrtr 筆記250404










2?? Linux的 sysctl 命令

sysctl 是 Linux 系統中用于 動態查看和修改內核運行時參數 的核心工具。它通過 /proc/sys/ 目錄的虛擬文件系統接口,允許用戶在不重啟系統的前提下調整內核行為,涵蓋網絡、內存、文件系統等關鍵功能。


📜 核心功能

  1. 實時查看內核參數
  2. 臨時修改內核配置
  3. 永久保存配置變更

🔧 基本語法

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

???????? 永久修改參數

  1. 編輯配置文件(通常為 /etc/sysctl.conf/etc/sysctl.d/*.conf):
    # 示例:優化 TCP 擁塞控制
    net.core.rmem_max = 16777216
    net.ipv4.tcp_congestion_control = bbr
    
  2. 加載配置
    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 路由器廣播接受(見前文)10

???????? 內存與文件系統

參數作用推薦值
vm.swappiness控制交換分區使用傾向(0-100)10
vm.overcommit_memory內存分配策略(0=保守,1=總是允許,2=拒絕超限)02
fs.file-max系統最大文件句柄數2097152

???????? 安全加固

參數作用推薦值
kernel.exec-shield防御緩沖區溢出攻擊(僅 x86)1
kernel.randomize_va_space啟用地址空間隨機化(ASLR)2
net.ipv4.conf.all.accept_redirects禁止接受 ICMP 重定向(防攻擊)0

📂 配置文件優先級 (多種說法待驗證)

  1. /etc/sysctl.conf
    • 傳統主配置文件(建議僅用于全局基礎設置)。
  2. /etc/sysctl.d/*.conf
    • 模塊化配置文件(優先級高于 sysctl.conf,按文件名排序加載)。
  3. /run/sysctl.d/*.conf
    • 臨時運行時配置(重啟后失效)。

系統按以下順序加載配置(后加載的覆蓋前者的沖突項):

  1. /etc/sysctl.d/*.conf(按文件名升序)
  2. /run/sysctl.d/*.conf
  3. /usr/lib/sysctl.d/*.conf
  4. /etc/sysctl.conf

?? 注意事項

  1. 參數路徑轉換
    sysctl 參數名與 /proc/sys/ 路徑的對應關系:

    # 例如:
    sysctl net.ipv4.ip_forward  →  /proc/sys/net/ipv4/ip_forward
    sysctl kernel.hostname       →  /proc/sys/kernel/hostname
    
  2. 參數作用范圍

    • 全局參數(如 net.ipv4.ip_forward)影響整個系統。
    • 接口級參數(如 net.ipv6.conf.eth0.accept_ra)僅針對特定接口。
  3. 安全操作

    • 測試變更:生產環境中建議先臨時修改 (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 sysctlman sysctl.d 查看手冊。
  • 動態參數:部分參數為只讀(如 kernel.osrelease),無法修改。
  • 系統限制:某些參數受硬件或內核版本限制(如 vm.max_map_count)。

通過 sysctl,管理員可以精細調控 Linux 系統的行為,從網絡優化到安全加固,成為系統調優不可或缺的工具。


🌐 Linux的 sysctl 命令 筆記250404










2?? accept_raaccept_ra_defrtrra_defrtr_metric


以下是 Linux 系統中與 IPv6 路由通告(RA)相關的三個關鍵參數 accept_raaccept_ra_defrtrra_defrtr_metric 的詳細說明及協作關系:


📜 參數定義與功能

參數作用默認值依賴關系
accept_ra控制接口是否處理路由通告(RA)消息。1(啟用)所有 RA 相關功能的前提條件。
accept_ra_defrtr是否通過 RA 消息設置默認路由(網關)。1(啟用)僅在 accept_ra=1 時生效。
ra_defrtr_metric設置 RA 生成的默認路由的度量值(優先級,metric 值越低優先級越高)。10240僅在 accept_ra_defrtr=1 時生效。
參數作用默認值依賴關系
accept_ra總開關:控制接口是否接受 RA 消息(影響所有 RA 相關功能)。1(啟用)
accept_ra_defrtr子功能:在 RA 接受的基礎上,決定是否自動添加默認路由(默認網關)。1(啟用)accept_ra=1
ra_defrtr_metric設置通過 RA 添加的默認路由的優先級(metric 值,數值越小優先級越高)。1024 有的說是 0accept_ra_defrtr=1

🌐 協作機制

  1. 基礎流程

    • accept_ra=1 → 接口接收并處理 RA 消息。
    • accept_ra_defrtr=1 → 根據 RA 中的默認路由信息生成路由條目。
    • ra_defrtr_metric=自定義值 → 設置該路由的優先級。
  2. 典型配置示例

    # 啟用 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
    
  3. 路由表示例

    default via fe80::1 dev eth0 proto ra metric 100  # 優先級高于默認的 1024
    

🔧 典型場景

???????? 1. 多宿主網絡(多默認路由)

  • 需求:設備通過兩個接口(eth0eth1)連接不同網絡,需指定主備路由。
  • 配置
    # eth0(主鏈路,高優先級)
    sysctl net.ipv6.conf.eth0.ra_defrtr_metric=100# eth1(備用鏈路,低優先級)
    sysctl net.ipv6.conf.eth1.ra_defrtr_metric=200
    
  • 效果:流量優先通過 eth0,當其斷開時自動切換到 eth1

???????? 2. 禁用默認路由自動設置

  • 需求:允許 RA 生成地址,但禁止設置默認路由。
  • 配置
    sysctl net.ipv6.conf.eth0.accept_ra=1
    sysctl net.ipv6.conf.eth0.accept_ra_defrtr=0
    
  • 效果:接口通過 SLAAC 生成 IPv6 地址,但需手動添加默認路由。

???????? 3. 調整路由優先級

  • 需求:確保靜態路由優先于 RA 生成的默認路由。
  • 配置
    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
    
  • 效果:靜態路由(metric=100)優先級高于 RA 路由(metric=500)。

???????? 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
    

🔍 驗證與調試

  1. 查看參數值

    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'
    
  2. 檢查路由表

    ip -6 route show | grep "default"
    
  3. 抓包分析 RA

    tcpdump -i eth0 -vvv icmp6 and "router advertisement"
    

?? 注意事項

  1. 參數優先級

    • 接口級配置(如 eth0)優先級高于全局配置(alldefault)。
  2. forwarding 的沖突

    • 若啟用 IPv6 轉發(net.ipv6.conf.eth0.forwarding=1),內核默認禁用 RA 處理(需手動設置 accept_ra=2)。
  3. 持久化配置

    # 將配置寫入文件(如 /etc/sysctl.d/99-ipv6.conf)
    echo "net.ipv6.conf.eth0.ra_defrtr_metric = 100" >> /etc/sysctl.d/99-ipv6.conf
    sysctl -p
    

🧠🌐 accept_raaccept_ra_defrtrra_defrtr_metric 筆記250405










2?? ra_defrtr_metric


ra_defrtr_metric 是 Linux 系統中用于控制 通過 IPv6 路由通告(RA)生成的默認路由的優先級(Metric) 的關鍵參數。以下是其詳細說明:


📜 參數定義

  • 路徑
    /proc/sys/net/ipv6/conf/<接口>/ra_defrtr_metric
  • 默認值
    1024(大多數系統的默認值)。
  • 作用
    設置通過 RA 消息生成的默認路由的 度量值(Metric),值越低優先級越高。

🌐 工作原理

  1. Metric 的作用

    • Metric 表示路由的優先級,范圍通常為 0(最高優先級)到 4294967295(最低優先級)。
    • 系統會選擇 Metric 值最小的路由作為首選路由。
  2. 與 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 加載配置。


🔍 驗證操作

  1. 查看參數值

    sysctl net.ipv6.conf.eth0.ra_defrtr_metric
    
  2. 檢查路由表

    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 生成的默認路由。
  • 配置
    # 設置 RA 默認路由的優先級為 500
    sysctl net.ipv6.conf.eth0.ra_defrtr_metric=500# 添加靜態路由(優先級 100)
    ip -6 route add default via 2001:db8::1 metric 100
    
  • 效果:靜態路由(metric=100)優先于 RA 路由(metric=500)。

?? 注意事項

  1. 依賴參數
    ra_defrtr_metric 僅在 accept_ra=1accept_ra_defrtr=1 時生效。

  2. forwarding 的沖突
    若啟用 IPv6 轉發(forwarding=1),需手動設置 accept_ra=2 以允許接收 RA。

  3. 接口優先級
    不同接口的 ra_defrtr_metric 可獨立設置,實現靈活的路由策略。


🧠🌐 ra_defrtr_metric 筆記250405





2?? Metric 的作用:

Metric(度量值) 是網絡路由中用于 判斷路由路徑優先級的核心指標。其作用可概括為以下三點:


1. 路由優先級決策

  • 定義: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 發送流量。

2. 路由協議差異化

不同路由協議使用不同的 Metric 計算方式,反映路徑的“成本”維度:

路由協議Metric 計算依據適用場景
RIP跳數(經過的路由器數量)小型網絡,簡單優先級判斷
OSPF帶寬、延遲、鏈路成本企業級網絡,動態路徑優化
BGPAS 路徑長度、策略規則互聯網骨干網,跨自治系統路由
靜態路由手動指定(如 ra_defrtr_metric精準控制特定接口或路徑優先級

3. 網絡容災與負載均衡

  • 主備鏈路切換
    通過為不同接口設置差異化的 Metric 值,實現自動故障轉移。
    示例

    # 主鏈路(eth0)優先級更高
    net.ipv6.conf.eth0.ra_defrtr_metric = 100# 備用鏈路(eth1)優先級更低
    net.ipv6.conf.eth1.ra_defrtr_metric = 200
    
    • eth0 斷開時,流量自動切換到 eth1
  • 負載均衡
    為多條路徑設置相同 Metric 值,系統將均衡分配流量(需協議支持)。


🔧 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 值范圍

系統/協議典型 Metric 范圍
Linux 靜態路由0-4294967295(默認 1024)
Windows0-9999
Cisco 路由器0-255(依協議不同)

?? 注意事項

  1. 協議兼容性:不同設備或系統對 Metric 的解釋可能不同,需確保跨設備一致性。
  2. 動態路由協議:OSPF/BGP 等協議會自動計算 Metric,手動干預需謹慎。
  3. IPv6 特殊性:IPv6 的 ra_defrtr_metric 僅影響 RA 生成的默認路由,不影響其他路由條目。

通過合理配置 Metric,可實現網絡流量的智能調度,提升性能與可靠性。


🧠🌐 metric 筆記250405










2?? use_tempaddr 使用臨時地址

use_tempaddr 是 Linux 系統中用于控制 IPv6 臨時隱私地址生成策略 的關鍵參數。以下是其詳細說明:


📜 參數定義

  • 路徑
    /proc/sys/net/ipv6/conf/<接口>/use_tempaddr
  • 默認值
    1(大多數系統的默認行為)。
  • 作用
    決定是否為接口生成 IPv6 臨時隱私地址,以增強網絡通信的匿名性。

🌐 參數取值與行為

行為
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

🔍 驗證操作

  1. 查看參數值

    sysctl net.ipv6.conf.eth0.use_tempaddr
    
  2. 檢查臨時地址

    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

?? 注意事項

  1. 依賴參數

    • 需啟用 autoconf=1(通過 SLAAC 自動配置地址)。
    • 臨時地址的生命周期由 temp_valid_lfttemp_prefered_lft 控制。
  2. 兼容性問題

    • 某些服務(如 IP 白名單)依賴固定地址,需謹慎啟用 use_tempaddr=2
  3. 日志與監控

    • 臨時地址頻繁變更會增加網絡日志分析的復雜度。

📊 臨時地址 vs 穩定地址

特性臨時地址穩定地址(EUI-64)
隱私性高(隨機后綴)低(基于 MAC 地址)
可追溯性
適用場景終端設備(如手機、筆記本)服務器、網絡設備

🧠🌐 use_tempaddr 筆記250405










2?? use_tempaddrtemp_valid_lft temp_prefered_lft


以下是 Linux 系統中與 IPv6 臨時隱私地址相關的三個關鍵參數 use_tempaddrtemp_valid_lfttemp_prefered_lft 的詳細說明及協作關系:


📜 參數定義與功能

參數作用默認值依賴關系
use_tempaddr控制是否生成 IPv6 臨時隱私地址,并指定其使用優先級。1(啟用)autoconf=1(啟用地址自動配置)。
temp_valid_lft定義臨時地址的 總有效時間(從生成到失效)。604800(7天)僅在 use_tempaddr=12 時生效。
temp_prefered_lft定義臨時地址的 首選時間(在此期間地址處于“首選”狀態,之后進入“廢棄”狀態)。86400(1天)必須 ≤ temp_valid_lft

🌐 協作機制

  1. 地址生成流程

    • 步驟 1use_tempaddr=12 → 系統生成臨時地址。
    • 步驟 2temp_prefered_lft 定義地址的“首選有效期”(在此期間地址優先用于新連接)。
    • 步驟 3temp_valid_lft 定義地址的“總有效期”(超時后地址被刪除)。
  2. 生命周期示例

    # 假設配置:
    use_tempaddr=2
    temp_prefered_lft=43200  # 12 小時
    temp_valid_lft=86400     # 24 小時
    
    • 前 12 小時:地址為首選狀態,用于所有新連接。
    • 12-24 小時:地址為廢棄狀態,僅處理現有連接,不用于新連接。
    • 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 加載配置。


🔍 驗證操作

  1. 查看參數值

    sysctl net.ipv6.conf.eth0.{use_tempaddr,temp_valid_lft,temp_prefered_lft}
    
  2. 檢查地址狀態

    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 天

?? 注意事項

  1. 參數邏輯約束

    • temp_prefered_lft 必須 ≤ temp_valid_lft,否則地址可能提前失效。
  2. 依賴服務

    • 臨時地址的生成需滿足以下條件:
      • autoconf=1(啟用 SLAAC 地址自動配置)。
      • accept_ra=1(接受路由通告)。
  3. 網絡轉發沖突

    • 若啟用 IPv6 轉發(forwarding=1),需設置 accept_ra=2 以允許接收 RA。

📊 生命周期狀態圖

臨時地址生成
首選狀態: temp_prefered_lft
廢棄狀態
有效狀態: temp_valid_lft
地址失效

🧠🌐 use_tempaddrtemp_valid_lft temp_prefered_lft 筆記250405










2?? Linux的 /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/               # 內核參數配置
└── ...

🔍 核心功能

  1. 內核與進程監控

    • 查看進程資源:通過 /proc/<PID>/ 目錄中的文件(如 statusiosmaps)可獲取進程的 CPU、內存、文件 I/O 等使用情況。
    • 示例命令
      cat /proc/1/status   # 查看 init 進程狀態
      
  2. 硬件信息查詢

    • CPU 詳情
      cat /proc/cpuinfo | grep "model name"
      
    • 內存統計
      grep -i "MemTotal\|MemFree" /proc/meminfo
      
  3. 動態內核調優

    • 網絡參數(如 IPv6 配置):
      # 查看 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

?? 注意事項

  1. 文件讀寫性質

    • 只讀文件(如 /proc/cpuinfo):僅用于信息展示。
    • 可寫文件(如 /proc/sys/ 下的參數):可直接修改(需 root 權限),但重啟后失效。
  2. 持久化配置

    • 通過 sysctl -w 或修改 /etc/sysctl.conf 永久保存內核參數變更,而非直接寫入 /proc/sys/
  3. 實時性

    • /proc 中的內容 動態生成,每次讀取均反映系統最新狀態(如 /proc/meminfo)。

📊 sysctl 的關系

  • /proc/sys/ 目錄是 sysctl 命令的底層實現。
    # 以下命令等效
    sysctl net.ipv4.ip_forward
    cat /proc/sys/net/ipv4/ip_forward
    

通過 /proc,Linux 將內核與用戶空間的交互透明化,成為系統管理員和開發者進行性能分析、故障排查及實時調優的必備工具。


🧠🌐 Linux的 /proc 目錄 筆記250404










2?? Linux的 /etc/sysctl.conf



/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 文件中,以模塊化管理。

📜 配置文件語法

  1. 基本格式

    # 注釋行(以 # 開頭)
    參數名 =
    • 示例
      # 啟用 IPv4 轉發
      net.ipv4.ip_forward = 1
      # 禁用 IPv6 RA 接收(針對 eth0)
      net.ipv6.conf.eth0.accept_ra = 0
      
  2. 參數路徑規則

    • 參數名對應 /proc/sys/ 的路徑,將點(.)替換為斜杠(/)。
      # sysctl.conf 中的參數:
      net.ipv4.ip_forward = 1
      # 對應路徑:
      /proc/sys/net/ipv4/ip_forward
      

🔄 配置加載順序

系統啟動時按以下順序加載配置(后加載的配置覆蓋前者的沖突項):

  1. /etc/sysctl.conf
  2. /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 狀態的端口1Web 服務器
net.ipv6.conf.all.accept_ra控制 IPv6 路由器廣播接受(見前文)10根據網絡安全策略調整

???????? 5. 內存與交換分區

參數作用推薦值說明
vm.swappiness控制交換分區使用傾向(0-100)10物理內存充足時降低此值
vm.overcommit_memory內存分配策略(0=保守,1=總是允許,2=拒絕超限)02數據庫服務器建議設為 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 # 半連接隊列長度
    
  • TIME-WAIT 回收
    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 請求(防探測)
    

?? 注意事項

  1. 語法檢查
    使用 sysctl -p 時,若配置文件有語法錯誤,加載會失敗并提示具體行號。

  2. 接口級參數
    若需針對特定接口(如 eth0)配置,需明確指定接口名:

    net.ipv6.conf.eth0.accept_ra = 0
    
  3. 生產環境測試
    修改關鍵參數(如 vm.swappiness 或網絡轉發)前,建議在非生產環境驗證。

  4. 備份與回滾

    # 備份原配置
    sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
    

通過 /etc/sysctl.conf 及其擴展配置目錄,管理員可以高效管理系統內核行為,從網絡性能調優到安全策略加固,均能實現靈活控制。


🧠🌐 Linux的 /etc/sysctl.conf 筆記250404










2?? /proc/sys/net/ipv6/conf/(all,default,interfaceName)/ 下更多的參數文件

以下是這些參數的簡要說明:

???? 1. accept_dad

  • 作用:控制是否啟用重復地址檢測(DAD)。
  • 取值
    • 0:禁用 DAD。
    • 1:啟用 DAD(默認值)。

???? 2. accept_ra

  • 作用:控制是否接受 IPv6 路由器通告(RA)。
  • 取值
    • 0:不接受 RA 消息。
    • 1:接受 RA 消息。
    • 2:僅在沒有默認路由器時接受 RA 消息。

???? 3. accept_ra_defrtr

  • 作用:控制是否接受 RA 中的默認路由器信息。
  • 取值
    • 0:不接受默認路由器信息。
    • 1:接受默認路由器信息(默認值)。

???? 4. accept_ra_from_local

  • 作用:控制是否接受來自本地接口的 RA 消息。
  • 取值
    • 0:不接受本地 RA 消息。
    • 1:接受本地 RA 消息(默認值)。

???? 5. accept_ra_min_hop_limit

  • 作用:設置接受的最小跳數限制。
  • 取值:正整數。

???? 6. accept_ra_min_lft

  • 作用:設置接受的最小生命周期。
  • 取值:正整數。

???? 7. accept_ra_mtu

  • 作用:控制是否接受 RA 中的 MTU 信息。
  • 取值
    • 0:不接受 MTU 信息。
    • 1:接受 MTU 信息(默認值)。

???? 8. accept_ra_pinfo

  • 作用:控制是否接受 RA 中的前綴信息。
  • 取值
    • 0:不接受前綴信息。
    • 1:接受前綴信息(默認值)。

???? 9. accept_ra_rt_info_max_plen

  • 作用:設置接受的路由信息的最大前綴長度。
  • 取值:0 到 128 之間的整數。

???? 10. accept_ra_rt_info_min_plen

  • 作用:設置接受的路由信息的最小前綴長度。
  • 取值:0 到 128 之間的整數。

???? 11. accept_ra_rtr_pref

  • 作用:控制是否接受 RA 中的路由器優先級信息。
  • 取值
    • 0:不接受路由器優先級信息。
    • 1:接受路由器優先級信息(默認值)。

???? 12. accept_redirects

  • 作用:控制是否接受 ICMPv6 重定向消息。
  • 取值
    • 0:不接受重定向消息。
    • 1:接受重定向消息(默認值)。

???? 13. accept_source_route

  • 作用:控制是否接受源路由選項。
  • 取值
    • 0:不接受源路由選項。
    • 1:接受源路由選項(默認值)。

???? 14. accept_untracked_na

  • 作用:控制是否接受未跟蹤的鄰居通告(NA)。
  • 取值
    • 0:不接受。
    • 1:接受。

???? 15. addr_gen_mode

  • 作用:控制地址生成模式。
  • 取值
    • 0:使用 EUI64 地址。
    • 1:使用隱私擴展地址。
    • 2:使用穩定隱私地址。

???? 16. autoconf

  • 作用:控制是否啟用 SLAAC。
  • 取值
    • 0:禁用 SLAAC。
    • 1:啟用 SLAAC(默認值)。

???? 17. dad_transmits

  • 作用:設置 DAD 傳輸次數。
  • 取值:正整數。

???? 18. disable_ipv6

  • 作用:控制是否禁用 IPv6。
  • 取值
    • 0:啟用 IPv6(默認值)。
    • 1:禁用 IPv6。

???? 19. disable_policy

  • 作用:控制是否禁用策略路由。
  • 取值
    • 0:啟用策略路由。
    • 1:禁用策略路由。

???? 20. drop_unicast_in_l2_multicast

  • 作用:控制是否丟棄在 L2 多播中的單播數據包。
  • 取值
    • 0:不丟棄。
    • 1:丟棄。

???? 21. drop_unsolicited_na

  • 作用:控制是否丟棄未請求的鄰居通告(NA)。
  • 取值
    • 0:不丟棄。
    • 1:丟棄。

???? 22. enhanced_dad

  • 作用:控制是否啟用增強型 DAD。
  • 取值
    • 0:禁用。
    • 1:啟用。

???? 23. force_mld_version

  • 作用:強制使用特定的 MLD 版本。
  • 取值:1 或 2。

???? 24. force_tllao

  • 作用:控制是否強制使用目標鏈路層地址選項。
  • 取值
    • 0:不強制。
    • 1:強制。

???? 25. forwarding

  • 作用:控制是否啟用 IPv6 數據包轉發。
  • 取值
    • 0:禁用轉發。
    • 1:啟用轉發。

???? 26. hop_limit

  • 作用:設置默認的跳數限制。
  • 取值:正整數。

???? 27. ignore_routes_with_linkdown

  • 作用:控制是否忽略鏈路狀態為 down 的路由。
  • 取值
    • 0:不忽略。
    • 1:忽略。

???? 28. ioam6_enabled

  • 作用:控制是否啟用 IPv6 IOAM(In-situ Operations, Administration, and Maintenance)。
  • 取值
    • 0:禁用。
    • 1:啟用。

???? 29. ioam6_id

  • 作用:設置 IOAM 節點 ID。
  • 取值:整數。

???? 30. ioam6_id_wide

  • 作用:設置 IOAM 節點 ID 的寬度。
  • 取值:整數。

???? 31. keep_addr_on_down

  • 作用:控制是否在接口 down 時保留地址。
  • 取值
    • 0:不保留。
    • 1:保留。

???? 32. max_addresses

  • 作用:設置每個接口的最大地址數量。
  • 取值:正整數。

???? 33. max_desync_factor

  • 作用:設置隱私擴展地址的最大去同步因子。
  • 取值:正整數。

???? 34. mc_forwarding

  • 作用:控制是否啟用多播轉發。
  • 取值
    • 0:禁用。
    • 1:啟用。

???? 35. mldv1_unsolicited_report_interval

  • 作用:設置 MLDv1 未請求報告間隔。
  • 取值:毫秒數。

???? 36. mldv2_unsolicited_report_interval

  • 作用:設置 MLDv2 未請求報告間隔。
  • 取值:毫秒數。

???? 37. mtu

  • 作用:設置接口的 MTU。
  • 取值:以字節為單位的 MTU 值。

???? 38. ndisc_evict_nocarrier

  • 作用:控制是否在無載波時驅逐鄰居發現條目。
  • 取值
    • 0:不驅逐。
    • 1:驅逐。

???? 39. ndisc_notify

  • 作用:控制是否發送鄰居發現通知。
  • 取值
    • 0:不發送。
    • 1:發送。

???? 40. ndisc_tclass

  • 作用:設置鄰居發現的流量類別。
  • 取值:整數。

???? 41. optimistic_dad

  • 作用:控制是否啟用樂觀 DAD。
  • 取值
    • 0:禁用。
    • 1:啟用。

???? 42. proxy_ndp

  • 作用:控制是否啟用代理 NDP。
  • 取值
    • 0:禁用。
    • 1:啟用。

???? 43. rpl_seg_enabled

  • 作用:控制是否啟用 RPL 分段。
  • 取值
    • 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

  • 作用:控制是否啟用 Segment Routing IPv6(SRv6)。
  • 取值
    • 0:禁用。
    • 1:啟用。

???? 53. seg6_require_hmac

  • 作用:控制是否要求 SRv6 使用 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/(all,default,interfaceName)/ 下的參數文件, 五分類

這些參數都位于 /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_plenaccept_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_idioam6_id_wide:與 IOAM6 功能相關的標識符。
  • keep_addr_on_down:當網絡接口關閉時,是否保留已分配的 IPv6 地址。設為 1 可在接口重新開啟時快速恢復網絡連接。
  • max_addresses:限制每個網絡接口可分配的 IPv6 地址的最大數量。
  • max_desync_factor:設置時鐘同步的最大偏差因子。
  • mldv1_unsolicited_report_intervalmldv2_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 禁用。










/proc/sys/net/ipv6/conf/(all,default,interfaceName)/ 下的參數文件, 八分類

以下是 Linux /proc/sys/net/ipv6/conf/<接口>/ 目錄下 IPv6 參數的詳細分類解析,涵蓋地址配置、鄰居發現、路由、安全等核心功能。部分參數需要高版本內核支持(如 ioam6_*rpl_seg_enabled),建議結合內核文檔使用。


???? 一、地址自動配置與 DAD(重復地址檢測)

參數作用推薦值依賴關系
accept_dad重復地址檢測(DAD)策略:
0=禁用
1=啟用(默認)
2=啟用并優化(快速失敗)。
12需內核支持
dad_transmitsDAD 探測包的發送次數(若 accept_dad=1/2)。1
enhanced_dad增強型 DAD(減少地址沖突概率)。1accept_dad=1
addr_gen_modeIPv6 地址生成模式:
0=EUI-64
1=穩定隱私地址
2=隨機臨時地址。
2需內核 ≥ 4.1
use_tempaddr臨時地址生成策略:
0=禁用
1=生成但優先公有地址
2=優先臨時地址(增強隱私)。
2autoconf=1
max_addresses接口允許的最大 IPv6 地址數量(含臨時地址)。16

???? 二、路由器廣播(RA)控制

參數作用推薦值依賴關系
accept_ra是否接受路由器廣播(RA),決定是否觸發 SLAAC。1需配合 autoconf=1
accept_ra_defrtr是否通過 RA 自動添加默認路由。1accept_ra=1
accept_ra_min_hop_limit接受 RA 的最小跳數限制(低于此值的 RA 被忽略)。1
accept_ra_pinfo是否接受 RA 中的前綴信息(用于 SLAAC)。1accept_ra=1
accept_ra_rt_info_max_plen接受 RA 中路由信息選項的最大前綴長度。64
accept_ra_rt_info_min_plen接受 RA 中路由信息選項的最小前綴長度。0
accept_ra_rtr_pref是否接受 RA 中的路由器優先級信息。1accept_ra=1

???? 三、路由與轉發

參數作用推薦值依賴關系
forwarding啟用 IPv6 數據包轉發(路由器模式)。0需配合防火墻規則
ignore_routes_with_linkdown是否忽略鏈路狀態為 down 的路由。0
hop_limit設置 IPv6 數據包的默認跳數限制(類似 IPv4 TTL)。64
ra_defrtr_metric通過 RA 添加的默認路由的優先級(metric)。1024accept_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=MLDv1
2=MLDv2。
2需多播支持
mc_forwarding啟用 IPv6 多播數據包轉發。0需多播路由守護進程
mldv1_unsolicited_report_intervalMLDv1 未經請求的報告間隔(秒)。10
force_tllao強制在 NDP 消息中包含 Target Link-Layer Address Option(TLLAO)。0

???? 六、臨時地址與隱私

參數作用推薦值依賴關系
temp_valid_lft臨時地址的有效生存時間(秒)。604800use_tempaddr=12
temp_prefered_lft臨時地址的首選生存時間(秒)。86400use_tempaddr=12
regen_max_retry臨時地址生成失敗時的最大重試次數。3use_tempaddr=12

???? 七、高級調試與實驗性功能

參數作用推薦值依賴關系
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需特定監控工具










/proc/sys/net/ipv6/conf/(all,default,interfaceName)/ 下的參數文件, 二分類


???? 接受路由器通告 (RA) 相關參數

  1. accept_ra: 是否接受路由器通告。
  2. accept_ra_defrtr: 是否接受作為默認路由器的路由器通告。
  3. accept_ra_from_local: 是否接受來自本地鏈路的路由器通告。
  4. accept_ra_min_hop_limit: 接受的最小跳數限制的路由器通告。
  5. accept_ra_min_lft: 接受的生存時間最小的路由器通告。
  6. accept_ra_mtu: 接受包含MTU信息的路由器通告。
  7. accept_ra_pinfo: 是否接受包含前綴信息的路由器通告。
  8. accept_ra_rt_info_max_plen: 接受的最大路由信息前綴長度。
  9. accept_ra_rt_info_min_plen: 接受的最小路由信息前綴長度。
  10. accept_ra_rtr_pref: 是否接受路由器的優先級字段。
  11. accept_ra_rt_info_max_plen: 接受的最大路由信息選項長度。
  12. accept_ra_rt_info_min_plen: 接受的最小路由信息選項長度。
  13. accept_ra_solicitations: 是否接受路由器請求消息。

???? 其他網絡配置參數

  1. accept_dad: 是否接受重復地址檢測 (DAD) 消息。
  2. accept_redirects: 是否接受重定向消息。
  3. accept_source_route: 是否接受源站選路。
  4. accept_untracked_na: 是否接受未經跟蹤的鄰居通告。
  5. drop_unsolicited_na: 是否丟棄未經請求的鄰居通告。
  6. drop_unicast_in_l2_multicast: 是否丟棄在L2組播中的單播數據包。
  7. proxy_ndp: 是否代理鄰居發現協議。
  8. enhanced_dad: 是否啟用增強型重復地址檢測。
  9. force_mld_version: 強制使用特定的MLD版本。
  10. force_tllao: 是否強制使用TLLAO(翻譯的鏈路層地址選項)。
  11. ioam6_enabled: 是否啟用IOAMv6(接口標識符分配模塊)。
  12. ioam6_id: 設置IOAMv6 ID。
  13. ioam6_id_wide: 設置寬范圍的IOAMv6 ID。
  14. keep_addr_on_down: 在接口關閉時是否保持地址。
  15. mc_forwarding: 是否啟用多播轉發。
  16. max_addresses: 允許的最大地址數。
  17. max_desync_factor: 最大去同步因子。
  18. mtu: 設置MTU大小。
  19. ndisc_evict_nocarrier: 在沒有載體時是否執行鄰居取消操作。
  20. ndisc_notify: 是否通知鄰居變化。
  21. ndisc_tclass: 設置鄰居發現的時間類。
  22. regen_max_retry: 最大重新生成地址嘗試次數。
  23. router_probe_interval: 路由器探測間隔。
  24. router_solicitation_delay: 路由器請求延遲。
  25. router_solicitation_interval: 路由器請求間隔。
  26. router_solicitation_max_interval: 最大路由器請求間隔。
  27. router_solicitations: 發送的路由器請求數量。
  28. rpl_seg_enabled: 是否啟用RPL(路由協議)段。
  29. seg6_enabled: 是否啟用SeG6(分段路由頭)。
  30. seg6_require_hmac: 是否需要對SeG6進行HMAC保護。
  31. suppress_frag_ndisc: 是否抑制碎片相關的鄰居發現消息。
  32. temp_prefered_lft: 臨時首選生存時間。
  33. temp_valid_lft: 臨時有效生存時間。
  34. use_oif_addrs_only: 僅使用接口地址。
  35. use_tempaddr: 是否使用臨時地址。










/proc/sys/net/ipv6/conf/(all,default,interfaceName)/ 下的參數文件, 七分類

以下是您列出的 IPv6 相關 sysctl 參數的詳細講解,按功能分類和重要性進行說明:


1. 路由器通告(RA)相關參數?
  • ?accept_ra?

    • ?作用?:控制是否接受 IPv6 路由器通告(Router Advertisements, RA)。RA 用于 SLAAC(無狀態地址自動配置)。
    • ?默認值?:1(啟用)。
    • ?禁用場景?:若系統為純主機且不依賴 RA(如靜態配置),可設為 0
  • ?accept_ra_defrtr?

    • ?作用?:是否將 RA 中的默認路由器信息添加到路由表。
    • ?默認值?:1(啟用)。
    • ?禁用影響?:需手動配置默認路由。
  • ?accept_ra_min_hop_limit?

    • ?作用?:設置接受 RA 的最小跳數(Hop Limit)。
    • ?默認值?:0(接受任何值)。
    • ?安全建議?:可設為 64 防止攻擊者偽造低跳數的 RA。
  • ?accept_ra_mtu?

    • ?作用?:是否使用 RA 中通告的 MTU 值。
    • ?默認值?:1(啟用)。
    • ?禁用場景?:若需手動控制 MTU,設為 0
  • ?accept_ra_pinfo?

    • ?作用?:是否處理 RA 中的前綴信息(Prefix Information)。
    • ?默認值?:1(啟用)。
    • ?依賴項?:需 accept_ra=1 才能生效。
  • ?accept_ra_rt_info_max_plen?

    • ?作用?:接受 RA 中路由信息選項(Route Information)的最大前綴長度。
    • ?默認值?:64(IPv6 子網典型值)。
    • ?調整場景?:限制路由表中過長的前綴。
  • ?ra_defrtr_metric?

    • ?作用?:設置通過 RA 添加的默認路由的度量值(metric)。
    • ?默認值?:1024
    • ?優化場景?:若需優先使用其他路由協議(如 BGP),可調高此值。
  • ?ra_honor_pio_life?

    • ?作用?:是否遵循 RA 中前綴信息(PIO)的生命周期(valid/preferred lifetime)。
    • ?默認值?:0(不遵循,使用內核默認值)。
    • ?啟用場景?:需動態調整地址生命周期時設為 1

? 2. 鄰居發現(ND)和地址配置
  • ?accept_dad?

    • ?作用?:是否啟用重復地址檢測(DAD)。
    • ?默認值?:1(啟用)。
    • ?禁用風險?:可能導致地址沖突,僅在受控環境禁用。
  • ?enhanced_dad?

    • ?作用?:啟用增強型 DAD(RFC 7527),在 DAD 失敗后生成新地址。
    • ?默認值?:0(禁用)。
    • ?啟用場景?:需避免地址沖突時設為 1
  • ?proxy_ndp?

    • ?作用?:允許代理 NDP 請求,使本機代為響應其他主機的鄰居請求。
    • ?默認值?:0(禁用)。
    • ?使用場景?:用于 IPv6 負載均衡或透明代理。
  • ?drop_unsolicited_na?

    • ?作用?:是否丟棄未請求的鄰居通告(Unsolicited NA)。
    • ?默認值?:0(接受)。
    • ?安全建議?:設為 1 防止 NA 欺騙攻擊。
  • ?drop_unicast_in_l2_multicast?

    • ?作用?:丟棄通過 L2 組播地址發送的單播幀。
    • ?默認值?:0(不丟棄)。
    • ?安全場景?:防止某些二層攻擊。

? 3. 地址生成與臨時地址?
  • ?addr_gen_mode?

    • ?作用?:控制 IPv6 地址生成模式:
      • 0:基于 EUI-64 的傳統模式。
      • 1:基于隨機化的穩定隱私地址(RFC 7217)。
      • 2:完全隨機地址(臨時地址)。
    • ?默認值?:01(取決于系統配置)。
  • ?use_tempaddr?

    • ?作用?:是否生成臨時隱私地址(RFC 4941)。
    • ?默認值?:0(禁用)。
    • ?隱私建議?:設為 2(優先使用臨時地址)。
  • ?temp_prefered_lft?

    • ?作用?:臨時地址的優選生命周期(秒)。
    • ?默認值?:86400(1 天)。
    • ?調整場景?:縮短時間以加快地址輪換。
  • ?temp_valid_lft?

    • ?作用?:臨時地址的有效生命周期(秒)。
    • ?默認值?:604800(7 天)。

4. 轉發與路由
  • ?forwarding?

    • ?作用?:啟用 IPv6 數據包轉發(路由功能)。
    • ?默認值?:0(禁用)。
    • ?副作用?:啟用后會禁用 RA 接受(accept_ra=0)。
  • ?ignore_routes_with_linkdown?

    • ?作用?:忽略鏈路狀態為 down 的路由。
    • ?默認值?:0(不忽略)。
    • ?優化場景?:設為 1 可自動清理無效路由。
  • ?hop_limit?

    • ?作用?:設置發送的 IPv6 數據包的默認跳數。
    • ?默認值?:64
    • ?調整場景?:根據網絡拓撲調整(如廣域網設為 255)。

? 5. 安全與過濾>
  • ?accept_redirects?

    • ?作用?:是否接受 ICMPv6 重定向報文。
    • ?默認值?:1(啟用)。
    • ?安全建議?:設為 0 防止路由重定向攻擊。
  • ?accept_source_route?

    • ?作用?:是否接受源路由(Source Routing)選項。
    • ?默認值?:0(禁用)。
    • ?風險提示?:始終禁用,避免繞過防火墻規則。
  • ?suppress_frag_ndisc?

    • ?作用?:禁止對 ND 報文進行分片。
    • ?默認值?:0(允許分片)。
    • ?安全場景?:設為 1 防止分片攻擊。

6. 多播(Multicast)?
  • ?mc_forwarding?

    • ?作用?:啟用多播數據包轉發。
    • ?默認值?:0(禁用)。
    • ?使用場景?:多播路由器或流媒體服務器啟用。
  • ?force_mld_version?

    • ?作用?:強制 MLD 版本(1 或 2)。
    • ?默認值?:0(自動協商)。
    • ?兼容性?:若網絡設備僅支持 MLDv1,設為 1

7. 高級功能?
  • ?seg6_enabled?

    • ?作用?:啟用 IPv6 分段路由(SRv6)。
    • ?默認值?:0(禁用)。
    • ?使用場景?:運營商或 SDN 網絡。
  • ?ioam6_enabled?

    • ?作用?:啟用 In-situ OAM(IOAM)數據采集。
    • ?默認值?:0(禁用)。
    • ?用途?:網絡性能監控與故障排查。










/proc/sys/net/ipv6/conf/(all,default,interfaceName)/ 下的參數文件, 四分類

這些參數都與IPv6網絡配置和鄰居發現協議(NDP)有關。下面是對每個參數的簡要解釋:

???? 接受相關參數

  • accept_dad:是否接受重復地址檢測(DAD)消息。
  • accept_ra:是否接受路由器廣告(RA)消息。
  • accept_ra_defrtr:是否接受默認路由器。
  • accept_ra_from_local:是否接受來自本地接口的RA消息。
  • accept_ra_min_hop_limit:接受RA消息的最小跳數限制。
  • accept_ra_mtu:接受RA消息時的MTU值。
  • accept_ra_pinfo:是否接受RA消息中的前綴信息。
  • accept_ra_rt_info_max_plen:接受RA消息中路由信息字段的最大長度。
  • accept_ra_rt_info_min_plen:接受RA消息中路由信息字段的最小長度。
  • accept_redirects:是否接受重定向消息。

???? 路由器相關參數

  • router_solicitation_max_interval:路由器請求的最大間隔時間。
  • router_solicitation_delay:路由器請求的延遲時間。
  • router_solicitation_interval:路由器請求的間隔時間。
  • router_probe_interval:路由器探測的間隔時間。

???? 地址配置相關參數

  • autoconf:是否啟用IPv6地址自動配置。
  • addr_gen_mode:地址生成模式。
  • keep_addr_on_down:接口關閉時是否保留地址。
  • max_addresses:每個接口允許的最大地址數量。
  • use_optimistic:是否使用樂觀DAD。
  • use_tempaddr:是否使用臨時地址。
  • temp_prefered_lft:臨時地址的首選生命周期。
  • temp_valid_lft:臨時地址的有效生命周期。

???? 其他參數

  • disable_policy:是否禁用策略路由。
  • disable_ipv6:是否禁用IPv6。
  • drop_unicast_in_l2_multicast:是否丟棄二層多播中的單播數據包。
  • drop_unsolicited_na:是否丟棄未經請求的鄰居通告(NA)消息。
  • enhanced_dad:是否啟用增強的DAD。
  • force_mld_version:強制使用的MLD版本。
  • force_tllao:是否強制使用目標鏈路層地址選項(TLLAO)。
  • hop_limit:默認的跳數限制。
  • ignore_routes_with_linkdown:是否忽略鏈路關閉的路由。
  • mc_forwarding:是否啟用多播轉發。
  • mldv1_unsolicited_report_interval:MLDv1未經請求的報告間隔時間。
  • mldv2_unsolicited_report_interval:MLDv2未經請求的報告間隔時間。
  • ndisc_notify:是否發送鄰居發現通知。
  • ndisc_tclass:鄰居發現消息的流量類別。
  • proxy_ndp:是否啟用代理NDP。
  • regen_max_retry:地址生成時的最大重試次數。
  • router_solicitations:發送路由器請求的次數。
  • seg6_enabled:是否啟用Segment Routing over IPv6。
  • seg6_require_hmac:是否要求Segment Routing over IPv6使用HMAC。
  • stable_secret:生成穩定密鑰的種子。
  • suppress_frag_ndisc:是否抑制鄰居發現中的片段消息。

這些參數可以通過sysctl命令進行查看和修改,以適應不同的網絡環境和需求。



















本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76800.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Cloud 框架為什么能處理高并發

Spring Cloud框架能夠有效處理高并發場景&#xff0c;核心在于其微服務架構設計及多組件的協同作用&#xff0c;具體機制如下&#xff1a; 一、分布式架構設計支撐高擴展性 服務拆分與集群部署 Spring Cloud通過微服務拆分將單體系統解耦為獨立子服務&#xff0c;每個服務可獨…

無人機智慧路燈桿:智慧城市的‘全能助手’

在城市發展的進程中&#xff0c;智慧路燈桿作為智慧城市建設的關鍵載體&#xff0c;正逐步從傳統的照明設備轉型為集多種功能于一體的智能基礎設施。無人機與智慧路燈桿的創新性融合&#xff0c;為城市管理和服務帶來了全新的變革與機遇。 一、無人機智慧路燈桿的功能概述 照…

Libevent UDP開發指南

UDP 與 TCP 的核心區別 無連接:不需要建立/維護連接 不可靠:不保證數據包順序和到達 高效:頭部開銷小,沒有連接管理負擔 支持廣播/多播:可以向多個目標同時發送數據 一、基礎UDP服務器實現 1. 創建 UDP 套接字 #include <event2/event.h> #include <event2/lis…

基于阿里云可觀測產品構建企業級告警體系的通用路徑與最佳實踐

前言 1.1 日常生活中的告警 任何連續穩定運行的生產系統都離不開有效的監控與報警機制。通過監控&#xff0c;我們可以實時掌握系統和業務的運行狀態&#xff1b;而報警則幫助我們及時發現并響應監控指標及業務中的異常情況。 在日常生活中&#xff0c;我們也經常遇到各種各樣…

智能多媒體處理流水線——基于虎躍辦公API的自動化解決方案

在內容爆炸的時代&#xff0c;多媒體文件處理&#xff08;圖片壓縮、視頻轉碼、音頻降噪&#xff09;已成為內容生產者的日常挑戰。本文將演示如何基于虎躍辦公的多媒體處理API&#xff0c;構建自動化處理流水線&#xff0c;實現&#xff1a; 批量文件智能分類格式自動轉換質量…

01-STM32(介紹、工具準備、新建工程)p1-4

文章目錄 工具準備和介紹硬件設備stm32簡介和arm簡介stm32簡介STM32命名規則STM32選型STM32F103C8T6最小系統板引腳定義STM32啟動配置STM32最小系統電路ARM簡介 軟件安裝注冊器件支持包安裝ST-LINK驅動安裝USB轉串口驅動 新建工程創建stm32工程STM32工程編譯和下載型號分類及縮…

【ABAP】REST/HTTP技術(一)

1、概念 1.1、SAP 如何提供 Http Service 如果要將 SAP 應用程序服務器 &#xff08;application server&#xff09;作為 http 服務提供者&#xff0c;需要定義一個類&#xff0c;這個類必須實現 IF_HTTP_EXTENSION 接口。IF_HTTP_EXTENSION 接口只有一個方法 HANDLE_REQUEST。…

[實戰] linux驅動框架與驅動開發實戰

linux驅動框架與驅動開發實戰 Linux驅動框架與驅動開發實戰一、Linux驅動框架概述1.1 Linux驅動的分類1.2 Linux驅動的基本框架 二、Linux驅動關鍵API詳解2.1 模塊相關API2.2 字符設備驅動API2.3 內存管理API2.4 中斷處理API2.5 PCI設備驅動API 三、Xilinx XDMA驅動開發詳解3.1…

1. hadoop 集群的常用命令

1.上傳文件 1)hadoop fs -put words.txt /path/to/input/ 2)hdfs dfs -put words.txt /path/wc/input/ 2.獲取hdfs中的文件 hadoop fs -get /path/wc/input/words.txt 3.合并下載多個文件 hadoop fs -getmerge /path/wc/input/words.txt /path/wc/input/words2.txt 4.查…

Keepalived+LVS+nginx高可用架構

注明&#xff1a;所有軟件已經下載好&#xff0c;防火墻和SELinux已經全部關閉 一.搭建NFS 1.服務端 1.創建文件 [rootnfs ~]# mkdir -p /nfs/data 2、修改權限 [rootnfs ~]# chmod orw /nfs/data 3、寫配置文件 [rootnfs ~]# cat /etc/exports /nfs/data 192.168.111.118(r…

深度學習處理文本(13)

我們使用基于GRU的編碼器和解碼器來在Keras中實現這一方法。選擇GRU而不是LSTM&#xff0c;會讓事情變得簡單一些&#xff0c;因為GRU只有一個狀態向量&#xff0c;而LSTM有多個狀態向量。首先是編碼器&#xff0c;如代碼清單11-28所示。 代碼清單11-28 基于GRU的編碼器 fro…

HashMap 底層原理詳解

1. 核心數據結構 JDK 1.7 及之前&#xff1a;數組 鏈表 JDK 1.8 及之后&#xff1a;數組 鏈表/紅黑樹&#xff08;鏈表長度 ≥8 時轉紅黑樹&#xff0c;≤6 時退化為鏈表&#xff09; // JDK 1.8 的 Node 定義&#xff08;鏈表節點&#xff09; static class Node<K,V&g…

使用MySQL時出現 Ignoring query to other database 錯誤

Ignoring query to other database 錯誤 當在遠程連接軟件中輸入MySQL命令出現該錯誤 導致錯誤原因是&#xff1a;登錄mysql時賬戶名沒有加上u 如果出現該錯誤&#xff0c;退出mysql&#xff0c;重新輸入正確格式進入即可&#xff01;

哈爾濱工業大學:大模型時代的具身智能

大家好&#xff0c;我是櫻木。 機器人在工業領域&#xff0c;已經逐漸成熟。具身容易&#xff0c;智能難。 機器人-》智能機器人&#xff0c;需要自主能力&#xff0c;加上通用能力。 智能機器人-》人類&#xff0c;這個階段就太有想象空間了。而最受關注的-類人機器人。 如何…

Javascript代碼壓縮混淆工具terser詳解

原始的JavaScript代碼在正式的服務器上,如果沒有進行壓縮,混淆,不僅加載速度比較慢,而且還存在安全和性能問題. 因此現在需要進行壓縮,混淆處理. 處理方案簡單描述一下: 1. 使用 terser 工具進行 安裝 terser工具: # npm 安裝 npm install terser --save-dev# 或使用 yarn 安…

Java String 常用方法詳解

目錄 一、獲取字符串信息(一)獲取字符串長度(二)獲取指定索引處的字符(三)獲取子字符串二、字符串比較(一)比較字符串內容(二)忽略大小寫比較三、字符串轉換(一)轉換為大寫(二)轉換為小寫四、字符串查找(一)查找子字符串的位置(二)從指定位置開始查找五、字符…

Linux驅動開發練習案例

1 開發目標 1.1 架構圖 操作系統&#xff1a;基于Linux5.10.10源碼和STM32MP157開發板&#xff0c;完成tf-a(FSBL)、u-boot(SSBL)、uImage、dtbs的裁剪&#xff1b; 驅動層&#xff1a;為每個外設配置DTS并且單獨封裝外設驅動模塊。其中電壓ADC測試&#xff0c;采用linux內核…

leetcode-代碼隨想錄-哈希表-贖金信

題目 題目鏈接&#xff1a;383. 贖金信 - 力扣&#xff08;LeetCode&#xff09; 給你兩個字符串&#xff1a;ransomNote 和 magazine &#xff0c;判斷 ransomNote 能不能由 magazine 里面的字符構成。 如果可以&#xff0c;返回 true &#xff1b;否則返回 false 。 maga…

精品可編輯PPT | “新基建”在數字化智慧高速公路中的支撐應用方案智慧建筑智慧交通解決方案施工行業解決方案

本文詳細闡述了“新基建”在數字化智慧高速公路中的支撐應用方案&#xff0c;從政策背景出發&#xff0c;指出國家在交通領域的一系列發展規劃和指導意見&#xff0c;強調了智慧交通建設的重要性。分析了當前高速公路存在的問題&#xff0c;如基礎感知設施不足、協同水平低、服…

C語言求3到100之間的素數

一、代碼展示 二、運行結果 三、感悟思考 注意: 這個題思路他是一個試除法的一個思路 先進入一個for循環 遍歷3到100之間的數字 第二個for循環則是 判斷他不是素數 那么就直接退出 這里用break 是素數就打印出來 在第一個for循環內 第二個for循環外