| 選項 | 含義 | 取值 | 狀態 |
-A | Append 規則 | 無 | 完成 |
-D | Delete 規則 | 無 | 未完成 |
-p | 端口 | short | 完成 |
-I | 操作 INPUT 鏈 | 無 | 完成 |
-O | 操作 OUTPUT 鏈 | 無 | 未完成 |
-F | 操作 FORWARD 鏈 | 無 | 未完成 |
-r | 動作 | drop | accept | 完成 |
-f | 來源 IP | IP 地址 | 完成 |
-t | 轉發目的 IP | IP 地址 | 未完成 |
3. 使用示例
# 阻止 192.168.1.105 訪問本機 80 端口
./filter_client -A -p 80 -I -r drop -f 192.168.1.105
四、構建與部署步驟
# 1. 編譯內核模組
cd kernelspace
make clean && make && sudo make install # 生成 .ko 並 insmod
# 2. 編譯用戶工具
cd ../userspace
make clean && make
# 3. 下發規則
sudo ./filter_client -A -p 80 -I -r drop -f 192.168.1.105
# 4. 查看日誌
tail -f /var/log/syslog # 或 dmesg
五、已知限制與待完善
- 刪除規則(
-D)、OUTPUT/FORWARD 鏈、轉發 IP(-t)功能未完成。
- 規則持久化、日誌級別控制、多條件組合匹配(如 IP 段、協議類型)缺失。
- 僅支援 IPv4,無 IPv6 支援。
六、學習價值
- Netfilter 掛鉤註冊、數據包解析、判斷流程的標準範式。
- 內核模組與用戶態通信(Netlink/IOCTL/Procfs)實踐。
- 內核鏈表、自旋鎖、內存分配等核心 API 使用。
- Makefile 編譯內核模組的標準流程。
七、聯繫作者
Email: 18277973721@sina.cn(非真實手機號)
歡迎提 Issue、PR 或郵件交流改進建議。
八、項目地址
https://github.com/你的用戶名/filter_firewall (原文未給具體鏈接,請自行搜索)
- 上一篇文章: 排序算法實戰:從冒泡到希爾排序的效能優化之路
- 下一篇文章: 原碼、反碼、補碼核心原理:為何計算機選擇補碼?
Copyright ©
程式碼之家 All Rights Reserved