自己組裝路由器
很長時間沒有更新博客了。這段時間,很多智能化的新產品層出不窮,穿戴設
備,智能路由器啥的,可以說,移動互聯的時代正在到來。所以,本著人生苦短,
及時折騰的原則,投身其中,也買了幾塊板子開始折騰。
先上張圖:

個人mini服務器。
目前,我們的長城越來越強大,google可以算是歇菜了,現在查資料,基本上
靠運氣。寫個博客、圍脖啥的,稍微一不小心,就碰到敏感詞,都沒啥積極性了,
去年,弄了塊pcduino的開發板,征用了兒子幾塊樂高積木,自己組了個服務器,
上面博客、文件共享、代碼管理能帶的都帶上。空閑的時候,記記日記,貼貼照片,
,順帶文件備份啥的,自娛自樂。當然,光靠開發板自帶的存儲空間是不夠的,需
要附加存儲。考慮電源的功率問題和靜音要求,弄了個ssd加移動硬盤盒。現在跑
得不錯,已經運行了79天。板子買的較早,加上ssd的成本,在800 RMB 左右。
第二張圖:

去年開始,新的,基于ARM芯片可以玩的板子越來越多了。樹莓就不說了,
cubieboard、swift board、beaglebone等,性能、接口等都比以前好。所以,又
入手了一塊。 banana pi,1G內存,關鍵是帶一個千兆網口,可以配合使用的系統
也多。繼續折騰。再配塊便宜點的64G ssd,總價格在500 RMB 左右。
相對來說,用這個開發板組個無線路由器還是很簡單的。找個支持的無線網卡,
NAT,配上相關的軟件,很容易實現,網上也有教程。
但是路由器,如果僅僅實現NAT轉發上網,qos等功能,其實還算是很簡單的。
相比軟路由,上網行為管理,應用層協議分析,協議過濾等功能,還是缺很多的。
我想要的功能,就是記錄每個人上網,什么時候,都上了些什么網,做分析和
統計。這個功能,在目前市面上100多的路由器中,因為硬件成本的關系,基本上
都是沒有的。盡管刷openwrt系統的路由,如果配上外接存儲,能把日志存下來,
但因為內存有限,效果不好。
但是,如果用linux做軟路由,內存足夠的情況下,可以通過iptable+squid的
方式實現。現在的開發板,內存可以到1G,芯片都是雙核1.6G,性能已經足夠強大。
所以,本次折騰的目標就是用開發板,實現透明代理,用以記錄所有人員的上網日
志。
一個網口,配合LINUX虛擬網卡,也可以實現路由功能。
操作系統:
Lubuntu for arm,寫到SD卡上啟動。
接下來介紹步驟:
1、LINUX啟動數據包轉發。
2、設置網卡eth0的ip地址,網關等。
3、設置虛擬網卡,作為內網網段。
ifconfig eh0:0 192.168.0.1 netmask 255.255.255.0
虛擬網卡不用設網關。
4、安裝和設置dnsmasq,啟動dns cache和dhcp服務
5、安裝squid3,設置訪問規則和其他參數,作為透明代理使用
http_port 192.168.0.1:3128 transparent
考慮日志存在SD卡上較慢,可以把日志存在內存中。
6、設置iptabes,啟動NAT和端口轉發
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0/24 --dport 80 -j
REDIRECT --to-ports 3128
其他說明:
因為是一個網口做路由,所以需要一個HUB或交換機,連接上行網絡和內網。
吞吐量測試:
使用一臺NAS模擬外網機器,計算機模擬內網,都接千兆交換機。拷貝文件測試。
4G數據文件,路由工作在千兆雙工模式
下行:
20MB/s 左右,系統負載峰值0.09左右
上行:
16.5MB/s 左右,系統負載峰值0.26左右。
日志分析:
squid的日志,有現成工具進行分析。sarg,安裝后,指定日志文件和輸出路
徑就可以了。
后記:
因為功率和靜音的需要,硬盤選了低端的64G SSD,190左右。對比前段時間比
較火的小米路由,缺雙頻的無線WIFI。但內存相對來說高一點,加上軟件豐富,可
玩性更高一些。