openvpn: 在client 端自訂route

為滿足mobile 連接openvpn 通常會在 server 端下一個push default gateway
不過在mac 上也幫我全轉就令我有點困擾,手動來改一下ovpn

# 忽略push 過來的 gateway
# 2.4版後建議的最佳解法,別問我2.4以前怎麼處理... 請升級
pull-filter ignore redirect-gateway

# 要去的網段: 192.168.1.0/24
# openvpn server tun ip : 10.254.254.1
route 192.168.1.0 255.255.255.0 10.254.154.1

重連vpn 就生效了

openvpn client 設定檔合併

原生設定檔需把有key 放一起,設定檔直接指向檔案

我習慣把他合成一個檔案

 

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 就失效了
  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 會被引用
  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 下
  16. 其他說明 :
    1. win7測試正常 ,但android 測試下只要勾選了 "指引VPN客戶端重定向 Internet 流量" 或在ovpn 檔內指定了route-gateway 192.168.1.254redirect-gateway
      也會不通 , 但是不指定就不會跳到N16的IP , 不確定這樣VPN有沒有起作用 , 不過有點懶的測 , 基本上 , 我不會用手機連VPN  , 連了也不知道要幹嘛 ....
    2. 在建KEY時可能會產生一些找不到資料夾的問題 , 但是沒關係 , 不用管他,我們的目地只是把KEY產生出來 ,路徑不修正也不要緊