wifidog 的核心還是依賴於 iptables 防火牆過濾規則來實現的,所以建議對 iptables 有了了解後再去閱讀 wifidog 的原始碼。
在路由器上啟動 wifidog 之後,wifidog 在啟動時會初始化一堆的防火牆規則,如下:
[cpp]view plain
copy
/** initialize the firewall rules
*/int iptables_fw_init(void)
在該 防火牆規則的初始化過程中,會首先清除掉已有的防火牆規則,重新建立新的過濾鏈,另外,除了通過iptables_do_command("-t nat -a "table_wifidog_unknown " -p tcp --dport 80 -j redirect --to-ports %d",gw_port);這個命令將 接入裝置的 80 埠(http)的訪問重定向至閘道器自身的 http 的埠之外,還通過iptables_fw_set_authservers();函式設定了 鑑權伺服器(auth-server) 的防火牆規則:
[cpp]view plain
copy
void iptables_fw_set_authservers(void)
} }
首先從上面的**可以看出 wifidog 支援多個 鑑權伺服器,並且針對每乙個鑑權伺服器 設定了如下兩條規則:
1)在filter表中追加一條[任何訪問鑑權伺服器都被接受]的wifidog_$id$_authservers過濾鏈:
iptables -t filter -a wifidog_$id$_authservers -d auth-server位址 -j accept
2)在nat表中追加一條[任何訪問鑑權伺服器都被接受]的wifidog_$id$_authservers過濾鏈:
iptables -t nat -a wifidog_$id$_authservers -d auth-server位址 -j accept
這樣確保可以訪問鑑權伺服器,而不是拒絕所有的出口訪問。
wifidog 原始碼初分析(1) 轉
wifidog 的核心還是依賴於 iptables 防火牆過濾規則來實現的,所以建議對 iptables 有了了解後再去閱讀 wifidog 的原始碼。在路由器上啟動 wifidog 之後,wifidog 在啟動時會初始化一堆的防火牆規則,如下 cpp view plain copy initial...
wifidog 原始碼初分析(3)
之後 接入裝置 的瀏覽器接收到 wifidog 返回的 302 重定向請求後,會將頁面重定向至 auth server 的 login 頁面,並且在此 url 中會攜帶一些 路由器 閘道器 引數,以及 接入裝置的 mac 位址 和 客戶端訪問的源url 如示例中的 baidu.com 下面幾個步驟就...
String轉Integer原始碼分析
今天參加了開發類的面試,面試官問了我乙個問題,給你乙個string 讓你轉換為int。我說用parseint 方法進行轉化,沒想到他說不要用這個現成的方法,我當時還真沒想到。回來上網查了一下,看了parseint 的源 豁然開朗!這就是差距啊!下面是從網上找來的 我們經常為用到integer.val...