2015/08/31

QNAP OpenVPN + DD-WRT 讓手機(Android)連回家上網

最近弄了一臺 QNAP NAS,内建有 OpenVPN 的功能,於是想拿來試試看,讓我的中華電信 mcool 手機上網連回家用 NAS 兼上網。家裏的網路分享器是 Netgear R6300v2,早就被我換成了 DD-WRT 韌體,雖然 DD-WRT 也内建有 OpenVPN,但是設定稍微囉嗦一點。相對的,QNAP 的 OpenVPN 設定真是非常非常簡單,讓人想不試試看都不行啊。

以下分享一下我的硬體配置。Netgear 網路分享器,系統改成 DD-WRT v3.0-r27560M;QNAP TS-453mini QTS 4.2 beta。家裏的内網設定 192.168.1.0,所以 OpenVPN 給他用 192.168.2.0。


設定好之後,下載憑證就完成啦。憑證壓縮檔包含 openvpn.ovpn、ca.crt 檔案,把這兩個檔案複製到手機上,等一下會用到。如果是用 DD-WRT 的 OpenVPN 會稍微麻煩點,就是必需自己處理憑證 (可參考 Creating Certificates)。

接下來,手機安裝一套叫 OpenVPN for Android 的 app,用它新增一個 profile,匯入剛剛的 openvpn.ovpn。設定幾乎都不用改,但是我建議把 float 設定 (容許浮動的伺服器) 打開,因爲傳回的 port 可能不一樣。另外建議設定好之後,手機重開機一次,可避免奇怪的問題產生。

這時候,可以測試看看手機走行動上網,搭配 OpenVPN for Android,馬上會發現可以連回家了,打開 ES 檔案瀏覽器,也可以找到區域網路内的主機、網路磁碟機,這就表示 VPN 已經正常運作。
BUT...
如果手機打開 Chrome 想連上 Internet,應該會出現  DNS probe finished no internet 的錯誤訊息,這是因爲 DD-WRT 只允許預設的 192.168.1.0 區網可以上網,OpenVPN 所在的 192.168.2.0 必需另外設定,允許它上 Internet。

以下設定方法參考自 Multiple subnets with DD-WRT。打開網路分享器 DD-WRT 的管理界面,找到下圖的進階路由設定,新增一個靜態路由,目的地指向 192.168.2.0,因爲 OpenVPN 是在 NAS 上,所以 gateway 指向 NAS IP address,然後套用設定。

光是這樣還不夠,這時候要去 commands 下指令修改防火墻。輸入 
iptables -t nat -I POSTROUTING -o `get_wanface` -j SNAT --to `nvram get wan_ipaddr`
然後 Run Commands。Save Firewall 的目的是讓 DD-WRT 記住,下次重開也會套用。

再測試一次 OpenVPN for Android,這次應該可以連入家中的區網,又同時連上 Internet 了。

最後,如何讓手機回家連上 WIFI 時自動關閉 VPN client,出門時,行動上網自動開啓 VPN client? 目前在 Android 手機上我找到兩個方法,如果您像我一樣已經是 Tasker app 自動化的愛用者,安裝 OpenVpn Tasker Plugin 來搭配 OpenVPN for Android 就可以啦。另外一個方法比較簡單,但是必需付費,就是不用 OpenVPN for Android 而改用付費版的 OpenVPN Client app,這套 app 設計很不錯,包含流量圖形化界面哦。

沒有留言: