wifidog 原始碼初分析 1 轉

2021-07-22 08:40:29 字數 1086 閱讀 2567

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...