Kernel-Modules

載入 NetBSD 核心模組

  • March 2, 2017

我想開始npf在我的 NetBSD 伺服器上使用,而不是僅僅依靠外部防火牆進行保護。但是,我得到:

$ npfctl show
npfctl: /dev/npf: No such file or directory

好吧,也許我刪除了一個設備節點。不管:

$ grep npf /dev/MAKEDEV
       makedev bpf npf
npf)
       mkdev npf        c 198 0
# mknod /dev/npf c 198 0
$ npfctl show
npfctl: /dev/npf: Device not configured

哦,對了,得先載入驅動:

$ modstat | grep npf; echo $?
1
$ find /stand -name 'npf.kmod'
/stand/sparc64/7.0/modules/npf/npf.kmod
$ uname -sr
NetBSD 7.0.2
# modload npf
modload: Operation not permitted

為什麼我(即使是 root)不允許載入模組?

NetBSD 使用核心安全級別來確定可以在正在執行的系統上執行哪些操作。從連結:

-1 永久不安全模式

  • 不要在啟動時提高安全級別

0 不安全模式

  • init程序 (PID 1) 可能無法被、或跟踪或訪問ptrace(2)systrace(4)``procfs
  • 可以更改不可變和僅附加文件標誌
  • 所有設備都可以根據其權限進行讀取或寫入

注意:您不能在此安全級別以上執行 X11

sysutils/aperture如果您真的需要它,請嘗試。

1 安全模式

  • 安全級別 0 的所有效果
  • /dev/mem並且/dev/kmem可能不會寫入
  • 掛載文件系統的原始磁碟設備是只讀的
  • 不能刪除不可變和僅附加文件標誌
  • 核心模組可能無法載入或解除安裝
  • net.inet.ip.sourceroutesysctl(8)變數不能改變
  • 添加或刪除sysctl(9)節點被拒絕
  • RTC 偏移量可能不會改變
  • Set-id coredump 設置不得更改
  • ipkdb(4)不允許附加基於 IP 的核心調試器
  • 可用於執行原始磁碟和/或記憶體訪問的設備直通請求被拒絕
  • iopl並且ioperm電話被拒絕
  • 拒絕訪問非託管記憶體

2 高度安全模式

  • 安全級別 1 的所有效果
  • 無論是否掛載,原始磁碟設備始終是只讀的
  • 新磁碟可能無法掛載,現有掛載只能從讀寫降級為只讀
  • 系統時鐘不得向後設置或接近溢出
  • 每個程序的核心轉儲名稱可能不會更改
  • 數據包過濾和 NAT 規則不得更改

我的系統在安全級別 1 下執行,因此“可能無法載入或解除安裝核心模組”。此外,設置npf=YES不會rc.conf自動載入相關的核心模組。不能在執行時降低核心安全級別,因此可以選擇:

  • 引導到較低的安全級別,然後載入模組並提高安全級別,或者
  • 在引導期間載入模組

顯然後者是更好的選擇。要在啟動時載入核心模組,必須確保rc.conf包含:

modules=YES

然後,編輯(或創建)/etc/modules.conf以包含要載入的模組列表,每行一個。在這種情況下:

# echo npf >> /etc/modules.conf

引用自:https://unix.stackexchange.com/questions/348530