下面為在Tomato(VPN Server)與Android Phone(VPN Client)使用OpenVPN的方法
(研究了三天才實作出來0rz....)
Step 1:先建立OpenVPN所需的Root CA、Server Key、Client Key、Diffie Hellman參數
這個部分需要一台有安裝OpenVPN軟體的電腦來建立這些東西,我是在Linux上建立這些東西,沒有Linux機器的人,也可以利用Windows電腦裝OpenVPN來建立這些東西
# apt-get install openvpn 安裝OpenVPN套件
#cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 利用easy-rsa來建立相關的CA & KEY
#vi vars 修改CA範例檔部分參數
export KEY_COUNTRY="TW"
export KEY_PROVINCE="Taiwan"
export KEY_CITY="自行設定"
export KEY_ORG="自行設定"
export KEY_EMAIL="自行設定"
Step 2:Linux上執行vars來建立相關檔案
#Source ./vars
#./clean-all 先清空此台Linux上的所有key
#./build-ca 建立CA
#./build-key-server YourServer(名稱自訂)建立server憑證
#./build-key Yourclient(名稱自訂)建立Client憑證
#./build-dh(安全性愈高製作時間愈久)Diffie Hellman參數
Step 3:分享器Tamoto UI裡面,點選VPN Tunnelling-->OpenVPN Server
依順序設定如下,其中Advanced頁面中的Custom Configuration額外再輸入
script-security 3
auth-user-pass-verify /etc/verify.sh via-env
key頁面中填入(Linux中可用cat ca.crt來查看內容)
Certificate Authority:貼入ca.crt裡面的內容
Server Certificate:貼入server.crt裡面的內容
Server Key: 貼入server.key裡面的內容
Diffie Hellman parameters:貼入dh1024.pem裡面的內容
設定好後,記得存檔後,將分享器給Reboot
Step 4:UI中打開 JFFS功能,要將Script寫入裡面JFFS磁碟裡
telnet先連入Tomato中,輸入以下Script
cd /etc
cat > /etc/generate.sh <
HASHPASS=\`echo -n "\$1\$2" | md5sum | sed s'/\ -//'\`
i=0
while [ \$i -lt 10 ]; do
HASHPASS=\`echo -n \$HASHPASS\$HASHPASS | md5sum | sed s'/\ -//'\`
i=\`expr \$i + 1\`
done
echo \$1:\$HASHPASS
exit 1
EOF
chmod 755 /etc/generate.sh
nvram setfile2nvram /etc/generate.sh
cat > /etc/verify.sh <
# echo "\${username}"
hash=\`/etc/generate.sh "\${username}" "\${password}"\`
USERS=\`cat /etc/vpnusers\`
for u in \$USERS; do
test "\${hash}" == "\${u}" && exit 0
done
exit 1
EOF
chmod 755 /etc/verify.sh
nvram setfile2nvram /etc/verify.sh
測試建立VPN撥入帳號
/etc/generate.sh YourAccount YourPassword >> /etc/vpnusers
nvram setfile2nvram /etc/vpnusers
測試Script是否OK可運作
export username=YourAccount
export password=YourPassword
/etc/verify.sh
echo $?
若出現0是運作正常,若出現1則有問題
存檔後,再Reboot
Step 5:設定手機上面的VPN Client,點下面的 + 建立新連線
此部分要加入在先前Linux機器上產生的 Root CA、Client crt、Client key 與在Tomato上面建立的vpnusers帳密
用手重輸入的DNS 的方式來設定 Dns
這個勾選才才會將手機的流量全導到 Vpn來再出去
成功建立SSL VPN後會上面會有key鎖頭符號出現
測試一下VPN Link後的Traceroute
Step 6:檢查分享器上已有成功VPN Client連入的上線記錄
參考資料
http://openvpn.net/index.php/open-source/documentation/howto.html#pki
http://todayguesswhat.blogspot.tw/2011/03/quick-simple-vpn-setup-guide-using.html
http://benjr.tw/node/725#vpn
2 回應:
請問TOMATO的VPN帳號密碼要在哪邊設定?
Create account in Linux System when you make CA Client Key
張貼留言