OpenWrt是在實現(xiàn)路由器功能方面很受歡迎的開源軟件之一。本書基于OpenWrt,詳細介紹了智能路由器的開發(fā)。
本書共計15章,按照認識路由器的順序進行編寫,介紹了智能路由器、開發(fā)環(huán)境及編譯分析、OpenWrt包管理系統(tǒng)、OpenWrt配置、軟件開發(fā)、GDB調(diào)試、網(wǎng)絡基礎知識、路由器基礎軟件模塊、常用軟件模塊、IP路由、DNS與DHCP、iptables防火墻、UCI防火墻、UPnP、網(wǎng)絡測試及分析工具等。豐富的理論知識和代碼示例可以幫助讀者深入認識和理解OpenWrt技術(shù),并能夠提升開發(fā)水平和開發(fā)效率。
本書適合軟件架構(gòu)師、軟件開發(fā)工程師、軟件測試工程師以及計算機相關(guān)專業(yè)的學生閱讀。讀者通過閱讀本書,不僅可以掌握OpenWrt技術(shù),還能進一步提升自己的軟件開發(fā)水平。
1. 這是一本智能路由器開發(fā)的必讀指南。
2. 本書以理論和實際相結(jié)合,以virtualBox來講解,沒有智能路由設備的開發(fā)者也可學習實踐。
3. 以代碼為基礎進行講解,代碼放在國內(nèi)托管網(wǎng)站上供大家自由下載。
4. 本書提供進一步深入閱讀的參考資料鏈接,讀者可以進一步深入學習。
張永智,1979年出生于山西省臨猗縣,本科畢業(yè)于太原理工大學,并于中國科學院大學取得碩士學位。曾在聯(lián)想、中國數(shù)碼、暢訊、山石等公司從事各種軟件研發(fā)工作。在研發(fā)崗位上,他參與了TPM安全芯片、拯救系統(tǒng)、OpenOffice、網(wǎng)絡感知與流控系統(tǒng)、可視IP電話、路由協(xié)議、防火墻、HTTP代理和VPN等功能的開發(fā),并曾在中國數(shù)碼擔任研發(fā)經(jīng)理,負責多個項目的研發(fā)工作,F(xiàn)就職于北京邦天信息技術(shù)有限公司,負責防火墻、VPN等功能的開發(fā)。
他長期致力于搭建并維護OpenWrt的代碼搜索服務,網(wǎng)址為openwrt.bjbook.net/source。除此之外,他還作為開源項目Frog的發(fā)起人,對中國人口普查數(shù)據(jù)進行研究。該項目對2010年第六次人口普查數(shù)據(jù)進行程序算法分析,預測中國人口將在2021年左右達到高峰,以后中國人口數(shù)量將逐年下降。
李章明,1986年出生于山西省昔陽縣,2009年畢業(yè)于河北科技師范學院計算機科學與技術(shù)專業(yè)。曾在華為、德信無線等公司從事通信設備研發(fā)工作。并參與過機頂盒,CDMA基站、CDMA固定臺、路由器、交換機、防火墻、VPN等設備的功能開發(fā),F(xiàn)就職于鵬博士電信傳媒集團,負責智能家居、物聯(lián)網(wǎng)設備、SDN項目的開發(fā)。
第1章 智能路由器概述 1
1.1 OpenWrt簡介 1
1.2 整體功能組件 3
1.2.1 整體架構(gòu) 3
1.2.2 網(wǎng)絡功能 5
1.2.3 系統(tǒng)管理 5
1.2.4 狀態(tài)監(jiān)控 6
1.3 開源嵌入式操作系統(tǒng)比較 7
1.3.1 和Android比較 9
1.3.2 和其他WRT比較 10
1.4 參考資料 12
第2章 開發(fā)環(huán)境及編譯分析 13
2.1 安裝編譯環(huán)境 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 編譯部署出現(xiàn)問題的解決方法 37
2.5 VirtualBox虛擬機網(wǎng)絡設置 38
2.5.1 網(wǎng)絡地址轉(zhuǎn)換模式 39
2.5.2 橋接網(wǎng)絡模式 40
2.5.3 內(nèi)部網(wǎng)絡模式 41
2.5.4 僅主機網(wǎng)絡模式 41
2.5.5 網(wǎng)絡模式比較 42
2.5.6 組建路由器實驗環(huán)境 42
2.6 參考資料 43
第3章 OpenWrt包管理系統(tǒng) 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 調(diào)整軟件倉庫地址 50
3.3.2 調(diào)整安裝目錄 51
3.3.3 代理設置 51
3.4 使用舉例 52
3.4.1 安裝軟件包 52
3.4.2 查詢已安裝的OPKG
軟件包文件列表 53
3.4.3 自定義安裝目錄 53
3.5 OPKG包結(jié)構(gòu) 55
3.6 參考資料 57
第4章 OpenWrt配置 58
4.1 UCI簡介 58
4.1.1 文件語法 58
4.1.2 統(tǒng)一配置原理 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 系統(tǒng)內(nèi)核設置 71
4.3.1 sysctl.conf 71
4.3.2 sysctl 72
4.4 系統(tǒng)配置 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章 軟件開發(fā) 79
5.1 編譯構(gòu)建系統(tǒng) 79
5.1.1 概述 79
5.1.2 變量定義 85
5.1.3 軟件包定義 87
5.1.4 構(gòu)建 88
5.2 HelloWorld 89
5.2.1 目錄結(jié)構(gòu) 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調(diào)試 105
6.1 什么是GDB 105
6.2 如何啟動程序調(diào)試 106
6.2.1 使用GDB啟動程序 106
6.2.2 環(huán)境變量設置 107
6.2.3 設置日志文件 108
6.2.4 獲取幫助 108
6.2.5 命令總結(jié) 109
6.3 斷點管理 110
6.3.1 指令斷點管理 110
6.3.2 觀察點管理 112
6.3.3 捕獲點管理 113
6.3.4 單步調(diào)試 113
6.3.5 命令總結(jié) 114
6.4 查看程序運行狀態(tài) 115
6.4.1 查看棧幀信息 115
6.4.2 查看運行中的源程序
信息 117
6.4.3 查看運行時數(shù)據(jù) 117
6.4.4 命令總結(jié) 119
6.5 動態(tài)改變——改變程序的執(zhí)行 120
6.6 名詞解釋 121
6.7 參考資料 121
第7章 網(wǎng)絡基礎知識 122
7.1 概述 122
7.1.1 網(wǎng)絡設備 123
7.1.2 計算機網(wǎng)絡分類 124
7.2 數(shù)據(jù)鏈路層 124
7.2.1 以太網(wǎng) 124
7.2.2 MAC尋址 125
7.2.3 沖突和沖突域 125
7.2.4 廣播域 126
7.2.5 ARP協(xié)議 126
7.3 IP協(xié)議 127
7.3.1 IP報文格式 127
7.3.2 IP地址分類 129
7.3.3 協(xié)議功能 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 傳輸層協(xié)議 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 網(wǎng)絡配置 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 優(yōu)點 188
9.8.3 缺點 188
9.8.4 安全 189
9.8.5 認識OpenWrt無線
接口 189
9.8.6 OpenWrt無線配置 191
9.9 參考資料 192
第10章 IP路由 194
10.1 路由分類 194
10.2 單播路由 195
10.2.1 路由表管理 195
10.2.2 靜態(tài)路由配置 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 驗證及調(diào)試 210
10.5 名詞解釋 211
10.6 參考資料 212
第11章 DNS與DHCP 213
11.1 主機系統(tǒng) 213
11.2 DNS基礎 215
11.2.1 域名結(jié)構(gòu) 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 動態(tài)DNS 228
11.5.1 DDNS原理 228
11.5.2 DDNS配置 229
11.5.3 DNS更新協(xié)議及
算法 230
11.6 DNS測試工具 232
11.6.1 nslookup 232
11.6.2 dig 232
11.7 參考資料 234
第12章 iptables防火墻 235
12.1 防火墻概述 235
12.2 iptables中的表 236
12.2.1 filter(過濾表) 236
12.2.2 nat(網(wǎng)絡地址轉(zhuǎn)換表) 237
12.2.3 mangle(修改表) 237
12.2.4 raw(原始表) 238
12.3 處理目標 238
12.3.1 REJECT(拒絕) 239
12.3.2 DNAT(目的網(wǎng)絡地址
轉(zhuǎn)換) 240
12.3.3 SNAT(源網(wǎng)絡地址轉(zhuǎn)換) 240
12.3.4 MASQUERADE(偽裝) 241
12.3.5 LOG 241
12.3.6 REDIRECT 241
12.4 報文處理流程 242
12.5 報文規(guī)則匹配 245
12.6 管理防火墻規(guī)則 247
12.7 其他工具集 249
12.8 小結(jié) 250
12.9 參考資料 250
第13章 UCI防火墻 251
13.1 概述 251
13.2 防火墻配置 252
13.2.1 Defaults 252
13.2.2 Zones-安全域 253
13.2.3 轉(zhuǎn)發(fā) 253
13.2.4 重定向 254
13.2.5 規(guī)則 255
13.2.6 include 257
13.3 常見用法 258
13.3.1 MAC地址黑白
名單 258
13.3.2 家長控制 260
13.4 防火墻管理及調(diào)試 261
13.4.1 管理防火墻 261
13.4.2 測試防火墻 262
13.5 名詞解釋 263
13.6 參考資料 263
第14章 UPnP 264
14.1 UPnP簡介 264
14.1.1 起源 264
14.1.2 概述 264
14.2 UPnP架構(gòu) 265
14.2.1 UPnP協(xié)議術(shù)語 265
14.2.2 UPnP組件 266
14.3 UPnP協(xié)議 267
14.4 UPnP工作流程 268
14.4.1 尋址 268
14.4.2 發(fā)現(xiàn) 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
第15章 網(wǎng)絡測試及分析工具 278
15.1 NetCat 278
15.2 TcpDump 283
15.2.1 抓取報文 283
15.2.2 匹配規(guī)則 285
15.2.3 使用舉例 287
15.3 參考資料 288