以在 windows 環境下製做為主 , 系統 : win 7 x64
怕有什麼風險就先備份一下設定檔 , 因為Js 第一次做完整台N16 出錯回到預設值 .....
- openvpn client http://openvpn.net/index.php/download/community-downloads.html
下載完預設安裝即可 - openssl http://slproweb.com/products/Win32OpenSSL.html
下載完預設安裝後再建環境變數 , 這裡僅做一次性設定,請在cmd內輸入 ,請用這個cmd 做完下面的流程 , 關閉cmd 就失效了
1set path=%path%;C:\OpenSSL-Win64\bin - easy-rsa https://github.com/OpenVPN/easy-rsa下載完取出2.0 跟 easy_rsa/windows 資料夾就好 , 我放在 D:\ 下 , 再取出 2.0資料夾內的 openssl-1.0.0.cnf 放到d:\windows 裡
- 用cmd 進到 D:\windows 內 先執行init-config.bat資料夾內會產生一個 vars.bat 的檔 , 先編輯這個檔案,找到下面幾個set 改成自己的資訊 ,後續建KEY 會被引用
12345678set KEY_COUNTRY=TWset KEY_PROVINCE=Taiwanset KEY_CITY=Taichungset KEY_ORG=OpenVPNset KEY_EMAIL=mail@host.domainset KEY_CN=changemeset KEY_NAME=changemeset KEY_OU=changeme - 執行 vars.bat
- clean-all.bat #清除已除在的key
- 再執行 vars.bat
- build-ca.bat #建立CA
- build-dh.bat #建立 pem檔 , 會稍微久一點
- build-key-server.bat server #建立server key
[y/n] 問題要填一下y - build-key client #建立客戶端 key , 在 common name 時 切勿使用和server 相同的名稱
- 設定N16上的openvpn
金鑰設定(檔案在 d:\windows\keys 裡):
認證中心 = ca.crt
伺服器憑證=server.crt
伺服器金鑰=server.key
Diffie Hellman 參數=dh2048.pem - 啟用JFFS
- 使用telnet 或 ssh 進入 N16
cd /etc
vi generate.sh
#內容:
#!/bin/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
#:wq離開chmod 755 /etc/generate.sh
nvram setfile2nvram /etc/generate.sh
vi verify.sh
#內容:
#!/bin/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
#:wq離開
chmod 755 /etc/verify.sh
nvram setfile2nvram /etc/verify.sh
#測試建立VPN撥入帳號
/etc/generate.sh user1 passwd1 >> /etc/vpnusers
nvram setfile2nvram /etc/vpnusers
nvram commit#測試Script是否OK可運作
export username=user1
export password=passwd1
/etc/verify.sh
echo $?
#若出現0是運作正常,若出現1則有問題 , 沒問題就reboot - 建立 ovpn 檔,放到 openvpn/config 下
1234567891011121314151617181920212223242526272829303132333435363738394041clientproto udpdev tunremote your_server 1194resolv-retry infinitenobindpersist-keypersist-tuncomp-lzoverb 3auth-user-passdhcp-option DNS 8.8.4.4dhcp-option DNS 168.95.192.1<ca>-----BEGIN CERTIFICATE-----MIIExzCCA6+gAwIBAgIJAOgRb7MNku3CMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYDZ/09yeJDHO/MC0vn+WL3yxcyZFv/dUMOKwElz/qkOIPhzu8TyANgQHkn-----END CERTIFICATE-----</ca><cert>Certificate:Digital SignatureSignature Algorithm: sha256WithRSAEncryption3b:f1:30:81:08:c1:1e:17:ca:b9:ec:a1:13:c9:a4:86:83:dc:58:c9:ef:37:e7:9f:b4:4d:95:d1:77:56:89:8d:2a:c7:38:47:62:94:80:16:e4:bc:ae:be:7e:b2:c4:65:b7:23:47:af:ca:61:1f:19:98:03-----BEGIN CERTIFICATE-----MIIFCzCCA/OgAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBnTELMAkGA1UEBhMCVFcxDO95HdeHA+D2brxqMpcGxtS8mdUAuzHCgQFjJ7zfnn7RNldF3VomNKsc4R2KUgBbkvK6+frLEZbcjR6/KYR8ZmAM=-----END CERTIFICATE-----</cert><key>-----BEGIN PRIVATE KEY-----MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDLo5TmK9roFYO4lTNjY+41SjwzmFjvx8WtJW8b9FJ4o06SJbAUkiszM2uqzg==-----END PRIVATE KEY-----</key> - 其他說明 :
- win7測試正常 ,但android 測試下只要勾選了 "指引VPN客戶端重定向 Internet 流量" 或在ovpn 檔內指定了route-gateway 192.168.1.254redirect-gateway
也會不通 , 但是不指定就不會跳到N16的IP , 不確定這樣VPN有沒有起作用 , 不過有點懶的測 , 基本上 , 我不會用手機連VPN , 連了也不知道要幹嘛 .... - 在建KEY時可能會產生一些找不到資料夾的問題 , 但是沒關係 , 不用管他,我們的目地只是把KEY產生出來 ,路徑不修正也不要緊
- win7測試正常 ,但android 測試下只要勾選了 "指引VPN客戶端重定向 Internet 流量" 或在ovpn 檔內指定了route-gateway 192.168.1.254redirect-gateway