●目錄 章 智能路由器概述 1 1.1 OpenWrt簡介 1 1.2 整體功能組件 3 1.2.1 整體架構 3 1.2.2 網絡功能 5 1.2.3 繫統管理 5 1.2.4 狀態監控 6 1.3 開源嵌入式操作繫統比較 7 1.3.1 和Android比較 9 1.3.2 和其他WRT比較 10 1.4 參考資料 12 第2章 開發環境及編譯分析 13 2.1 安裝編譯環境 13 2.1.1 Ubuntu安裝 13 2.1.2 安裝編譯工具 15 2.1.3 代碼 17 2.1.4 配置及編譯 19 2.2 編譯腳本分析 27 2.2.1 頂層目錄概述 27 2.2.2 編譯腳本 29 2.2.3 工具 29 2.2.4 patch-kernel.sh 30 2.2.5 編譯擴展機制feeds 31 2.3 使用VirtualBox部署 34 2.4 編譯部署出現問題的解決方法 37 2.5 VirtualBox虛擬機網絡設置 38 2.5.1 網絡地址轉換模式 39 2.5.2 橋接網絡模式 40 2.5.3 內部網絡模式 41 2.5.4 僅主機網絡模式 41 2.5.5 網絡模式比較 42 2.5.6 組建路由器實驗環境 42 2.6 參考資料 43 第3章 OpenWrt包管理繫統 44 3.1 工作原理 44 3.2 OPKG命令 45 3.2.1 命令用法 45 3.2.2 軟件包的管理 46 3.2.3 查詢信息 48 3.2.4 選項 49 3.3 OPKG配置 50 3.3.1 調整軟件倉庫地址 50 3.3.2 調整安裝目錄 51 3.3.3 代理設置 51 3.4 使用舉例 52 3.4.1 安裝軟件包 52 3.4.2 查詢已安裝的OPKG 軟件包文件列表 53 3.4.3 自定義安裝目錄 53 3.5 OPKG包結構 55 3.6 參考資料 57 第4章 OpenWrt配置 58 4.1 UCI簡介 58 4.1.1 文件語法 58 4.1.2 統一配置原理 60 4.1.3 UCI工具 61 4.1.4 配置腳本 66 4.2 UCI API編程接口 68 4.2.1 Libubox 69 4.2.2 UCI 69 4.2.3 UCI API接口 70 4.3 繫統內核設置 71 4.3.1 sysctl.conf 71 4.3.2 sysctl 72 4.4 繫統配置 73 4.4.1 /etc/rc.local 74 4.4.2 /etc/profile 74 4.4.3 /etc/shells 75 4.4.4 /etc/fstab 75 4.4.5 /etc/services 76 4.4.6 /etc/protocols 77 4.5 名詞解釋 78 4.6 參考資料 78 第5章 軟件開發 79 5.1 編譯構建繫統 79 5.1.1 概述 79 5.1.2 變量定義 85 5.1.3 軟件包定義 87 5.1.4 構建 88 5.2 HelloWorld 89 5.2.1 目錄結構 91 5.2.2 Makefile 92 5.2.3 編譯 94 5.3 軟件啟動機制 95 5.4 補丁生成及應用工具 99 5.4.1 補丁 99 5.4.2 diff工具 100 5.4.3 patch工具 102 5.5 參考資料 104 第6章 GDB調試 105 6.1 什麼是GDB 105 6.2 如何啟動程序調試 106 6.2.1 使用GDB啟動程序 106 6.2.2 環境變量設置 107 6.2.3 設置日志文件 108 6.2.4 獲取幫助 108 6.2.5 命令總結 109 6.3 斷點管理 110 6.3.1 指令斷點管理 110 6.3.2 觀察點管理 112 6.3.3 捕獲點管理 113 6.3.4 單步調試 113 6.3.5 命令總結 114 6.4 查看程序運行狀態 115 6.4.1 查看棧幀信息 115 6.4.2 查看運行中的源程序 信息 117 6.4.3 查看運行時數據 117 6.4.4 命令總結 119 6.5 動態改變——改變程序的執行 120 6.6 名詞解釋 121 6.7 參考資料 121 第7章 網絡基礎知識 122 7.1 概述 122 7.1.1 網絡設備 123 7.1.2 計算機網絡分類 124 7.2 數據鏈路層 124 7.2.1 以太網 124 7.2.2 MAC尋址 125 7.2.3 衝突和衝突域 125 7.2.4 廣播域 126 7.2.5 ARP協議 126 7.3 IP協議 127 7.3.1 IP報文格式 127 7.3.2 IP地址分類 129 7.3.3 協議功能 131 7.4 ICMP 132 7.4.1 概述 132 7.4.2 報文格式 133 7.4.3 差錯報文 134 7.4.4 查詢報文及響應報文 135 7.4.5 ping 136 7.4.6 TraceRoute 137 7.5 傳輸層協議 137 7.6 綜合 138 7.7 名詞解釋 141 7.8 參考資料 141 第8章 路由器基礎軟件模塊 143 8.1 libubox 143 8.1.1 libubox 143 8.1.2 jshn 145 8.2 ubus 147 8.2.1 ubusd 148 8.2.2 ubus命令行工具 149 8.3 netifd 152 8.3.1 概述 152 8.3.2 netifd方法 154 8.3.3 netifd文件 158 8.3.4 網絡配置 159 8.4 ubox 160 8.5 procd 163 8.5.1 reload_config 164 8.5.2 procd進程 164 8.5.3 procd.sh 167 8.5.4 rc.common 169 8.5.5 綜合示例 170 8.6 參考資料 172 第9章 常用軟件模塊 173 9.1 CWMP 173 9.1.1 概述 173 9.1.2 方法和流程 174 9.1.3 如何配置 176 9.2 SSH服務器 177 9.2.1 概述 177 9.2.2 配置 177 9.3 QoS 178 9.3.1 服務模型 178 9.3.2 QoS配置 180 9.4 uHTTPd服務器 181 9.4.1 概述 181 9.4.2 配置 182 9.5 SMTP 183 9.6 NTP 184 9.7 PPPoE 185 9.7.1 CHAP驗證過程 186 9.7.2 PPPoE配置 188 9.8 無線基礎 188 9.8.1 什麼是無線 188 9.8.2 優點 188 9.8.3 缺點 188 9.8.4 安全 189 9.8.5 認識OpenWrt無線 接口 189 9.8.6 OpenWrt無線配置 191 9.9 參考資料 192 0章 IP路由 194 10.1 路由分類 194 10.2 單播路由 195 10.2.1 路由表管理 195 10.2.2 靜態路由配置 198 10.3 策略路由 199 10.3.1 概述 199 10.3.2 配置策略路由 200 10.3.3 典型配置舉例 203 10.4 組播路由 205 10.4.1 組播原理 205 10.4.2 IGMP原理 207 10.4.3 IGMP代理 207 10.4.4 IGMP Proxy管理 209 10.4.5 驗證及調試 210 10.5 名詞解釋 211 10.6 參考資料 212 1章 DNS與DHCP 213 11.1 主機繫統 213 11.2 DNS基礎 215 11.2.1 域名結構 215 11.2.2 DNS報文格式 216 11.2.3 域名解析器原理 217 11.2.4 域名解析實例 218 11.3 DHCP基礎 220 11.3.1 引言 220 11.3.2 DHCP原理 220 11.3.3 DHCP報文 221 11.3.4 DHCP工作流程 222 11.4 dnsmasq 223 11.4.1 概述 223 11.4.2 配置 224 11.5 動態DNS 228 11.5.1 DDNS原理 228 11.5.2 DDNS配置 229 11.5.3 DNS更新協議及 算法 230 11.6 DNS測試工具 232 11.6.1 nslookup 232 11.6.2 dig 232 11.7 參考資料 234 2章 iptables防火牆 235 12.1 防火牆概述 235 12.2 iptables中的表 236 12.2.1 filter(過濾表) 236 12.2.2 nat(網絡地址轉換表) 237 12.2.3 mangle(修改表) 237 12.2.4 raw(原始表) 238 12.3 處理目標 238 12.3.1 REJECT(拒絕) 239 12.3.2 DNAT(目的網絡地址 轉換) 240 12.3.3 SNAT(源網絡地址轉換) 240 12.3.4 MASQUERADE(偽裝) 241 12.3.5 LOG 241 12.3.6 REDIRECT 241 12.4 報文處理流程 242 12.5 報文規則匹配 245 12.6 管理防火牆規則 247 12.7 其他工具集 249 12.8 小結 250 12.9 參考資料 250 3章 UCI防火牆 251 13.1 概述 251 13.2 防火牆配置 252 13.2.1 Defaults 252 13.2.2 Zones-安全域 253 13.2.3 轉發 253 13.2.4 重定向 254 13.2.5 規則 255 13.2.6 include 257 13.3 常見用法 258 13.3.1 MAC地址黑白 名單 258 13.3.2 家長控制 260 13.4 防火牆管理及調試 261 13.4.1 管理防火牆 261 13.4.2 測試防火牆 262 13.5 名詞解釋 263 13.6 參考資料 263 4章 UPnP 264 14.1 UPnP簡介 264 14.1.1 起源 264 14.1.2 概述 264 14.2 UPnP架構 265 14.2.1 UPnP協議術語 265 14.2.2 UPnP組件 266 14.3 UPnP協議 267 14.4 UPnP工作流程 268 14.4.1 尋址 268 14.4.2 發現 269 14.4.3 描述 269 14.4.4 控制 270 14.4.5 事件 270 14.4.6 表達 272 14.5 UPnP應用之IGD 272 14.5.1 IGD框架 272 14.5.2 端口映射在IGD中的應用 274 14.6 參考資料 277 5章 網絡測試及分析工具 278 15.1 NetCat 278 15.2 TcpDump 283 15.2.1 抓取報文 283 15.2.2 匹配規則 285 15.2.3 使用舉例 287 15.3 參考資料 288
內容簡介
OpenWrt是在實現路由器功能方面很受歡迎的開源軟件之一。本書基於OpenWrt,詳細介紹了智能路由器的開發。 本書共計15章,按照認識路由器的順序進行編寫,介紹了智能路由器、開發環境及編譯分析、OpenWrt包管理繫統、OpenWrt配置、軟件開發、GDB調試、網絡基礎知識、路由器基礎軟件模塊、常用軟件模塊、IP路由、DNS與DHCP、iptables防火牆、UCI防火牆、UPnP、網絡測試及分析工具等。豐富的理論知識和代碼示例可以幫助讀者深入認識和理解OpenWrt技術,並能夠提升開發水平和開發效率。 本書適合軟件架構師、軟件開發工程師、軟件測試工程師以及計算機相關專業的學生閱讀。讀者通過閱讀本書,不僅可以掌握OpenWrt技術,還能進一步提升自己的軟件開發水平。