N16 吃完蕃茄配 OPENVPN

分類:硬道理


以在 windows 環境下製做為主 , 系統 : win 7 x64 怕有什麼風險就先備份一下設定檔 , 因為Js 第一次做完整台N16 出錯回到預設值 …..

  1. openvpn client http://openvpn.net/index.php/download/community-downloads.html 下載完預設安裝即可
  2. openssl http://slproweb.com/products/Win32OpenSSL.html 下載完預設安裝後再建環境變數 , 這裡僅做一次性設定,請在cmd內輸入 ,請用這個cmd 做完下面的流程 , 關閉cmd 就失效了
    set path=%path%;C:\OpenSSL-Win64\bin
  3. easy-rsa https://github.com/OpenVPN/easy-rsa下載完取出2.0 跟 easy_rsa/windows 資料夾就好  , 我放在 D:\ 下 , 再取出 2.0資料夾內的 openssl-1.0.0.cnf 放到d:\windows 裡
  4. 用cmd 進到 D:\windows 內 先執行init-config.bat資料夾內會產生一個 vars.bat 的檔 , 先編輯這個檔案,找到下面幾個set 改成自己的資訊 ,後續建KEY 會被引用
    set KEY_COUNTRY=TW
    set KEY_PROVINCE=Taiwan
    set KEY_CITY=Taichung
    set KEY_ORG=OpenVPN
    set KEY_EMAIL=mail@host.domain
    set KEY_CN=changeme
    set KEY_NAME=changeme
    set KEY_OU=changeme
  5. 執行 vars.bat
  6. clean-all.bat  #清除已除在的key
  7. 再執行 vars.bat
  8. build-ca.bat   #建立CA build-ca.png
  9. build-dh.bat #建立 pem檔 , 會稍微久一點 build-dh.png
  10. build-key-server.bat server  #建立server key build-server.png [y/n] 問題要填一下y
  11. build-key client #建立客戶端 key , 在 common name 時 切勿使用和server 相同的名稱common name.png
  12. 設定N16上的openvpn vpe_set1.pngvpe_set2.png金鑰設定(檔案在 d:\windows\keys 裡): 認證中心 = ca.crt 伺服器憑證=server.crt 伺服器金鑰=server.key Diffie Hellman 參數=dh2048.pem
  13. 啟用JFFS jffs.png
  14. 使用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
  15. 建立 ovpn 檔,放到 openvpn/config 下
    client
    proto udp
    dev tun
    remote your_server 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    comp-lzo
    verb 3
    auth-user-pass
    dhcp-option DNS 8.8.4.4
    dhcp-option DNS 168.95.192.1
    
    -----BEGIN CERTIFICATE-----
    MIIExzCCA6+gAwIBAgIJAOgRb7MNku3CMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
    Z/09yeJDHO/MC0vn+WL3
    yxcyZFv/dUMOKwElz/qkOIPhzu8TyANgQHkn
    -----END CERTIFICATE-----
    
    
    Certificate:
        Digital Signature
        Signature Algorithm: sha256WithRSAEncryption
            3b: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/OgAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBnTELMAkGA1UEBhMCVFcx
    DO95HdeHA+D2brxqMpcGxtS8m
    dUAuzHCgQFjJ7zfnn7RNldF3VomNKsc4R2KUgBbkvK6+frLEZbcjR6/KYR8ZmAM=
    -----END CERTIFICATE-----
    
    
    -----BEGIN PRIVATE KEY-----
    MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDLo5TmK9roFYO4
    lTNjY+41SjwzmFjvx8WtJW8b
    9FJ4o06SJbAUkiszM2uqzg==
    -----END PRIVATE KEY-----
    
  16. 其他說明 :
    1. win7測試正常 ,但android 測試下只要勾選了 "指引VPN客戶端重定向 Internet 流量" 或在ovpn 檔內指定了route-gateway 192.168.1.254redirect-gateway 也會不通 , 但是不指定就不會跳到N16的IP , 不確定這樣VPN有沒有起作用 , 不過有點懶的測 , 基本上 , 我不會用手機連VPN  , 連了也不知道要幹嘛 ....
    2. 在建KEY時可能會產生一些找不到資料夾的問題 , 但是沒關係 , 不用管他,我們的目地只是把KEY產生出來 ,路徑不修正也不要緊

Tags:n16 · openvpn · tomato