Mikrotik RouterOS設定OpenVPN,支援Windows、macOS、Android、與iOS

設備:Mikrotik RouterBoard RB2011UiAS-RM
1111_l

RouterOS版本:v.6.37.3 Released on 2016-Nov-28

  1. 首先於RouterOS設置Certificate憑證,這是設定OpenVPN最重要的步驟,Mikrotik介紹兩種方式,詳情參考這個網頁,一種透過CACert.org,另一種由OpenVPN提供的工具easy-rsa工具來產生的certificate憑證。這裡介紹第二種easy-rsa的方式,並且在windows上的openvpn client來產生的憑證。
  2. 到OpenVPN網站下載OpenVPN Client for Windows,下載安裝後,假設安裝的目錄於C:\Program Files\OpenVPN
  3. 以Administrator(系統管理者)的權限打開cmd視窗,然後cd到C:\Program Files\OpenVPN\easy-rsa目錄。
  4. 執行以下指令:
      1. init-config (只要執行一次即可,主要是複製環境設置的批次程式)。
      2. vars(設定環境設置)
      3. clean-all清除
      4. build-dh(產生表頭DH檔案)
      5. build-ca(產生CA,Certificate Authority憑證)

    snip20161214_1
    snip20161214_2

  5. 產生的憑證存在於keys這個子目錄,D:\Program Files\OpenVPN\easy-rsa\keys,將這個目錄下的ca.crt與ca.key取出來,準備上傳到RouterOS。
    snip20161214_3
  6. 上傳到RouterOS的檔案夾之後,開啟終端機(terminal)執行下面兩個指令將憑證匯入到系統裡:
    [jerry@routeros] /certificate>import file=ca.crt
    [jerry@routeros] /certificate>import file=ca.key
  7. 在Winbos或網頁管理介面檢查是否匯入正常
    snip20161214_4
  8. 若匯入正常則前面標籤為KT。
  9. 接著設定OPENVPN,利用WINBOS/網頁,按下PPP –> OVPN Server,再依照下面圖示輸入並選擇:PORT, Mode, Certificate的憑證,以及最後面支援的認證加密方式即可。
    snip20161214_7
  10. 設定帳號、Profile、IP POOL、與防火牆就不在此多做敘述,可參考這個地方

Windows客戶端設置:

  1. 先下載客戶端軟體:點擊到下載處,下載後安裝過程不再敘述。
  2. 將RouterOS的ca.crt與ca.key兩個檔案下載,並存放到客戶端軟體安裝目錄下的config位置,例如D:\Program Files\OpenVPN\config,另外製作一個auth.cfg,這檔案存放登入的帳號密碼,格式如下:
    user1
    1234
    

    user1:帳號, 1234:密碼

  3. 在同一個目錄再製作設定檔,副檔名必須為ovpn例如client.ovpn,內容如下範例:
    client
    dev tun
    proto tcp
    remote "xxx.xxx.xxx.xxx" 1194
    ca ca.crt
    keepalive 10 120
    cipher AES-256-CBC
    auth SHA1
    auth-user-pass auth.cfg 
    verb 5
    ;push "redirect-gateway local def1"
    ;push redirect-gateway
    route 0.0.0.0 0.0.0.0 192.168.89.1
    
  4. remote 後面接routeros的網址,後面連接的Port位置。
  5. ca 就是告知憑證的地方
  6. auth-user-pass告知採用帳密方式登入,帳密則儲存於auth.cfg這個檔案。
  7. 一般採用push redirect-gateway或push redirect-gateway local def1就可以指定把所有流量導入vpn接口,但有時候採用無線網路或其他網路會更改WAN時無效,所以可以加入route指令強迫將default gateway轉入。
  8. 到此基本上已經完成,只要在下面的icon點擊,按右鍵在按下connect即可連線。

snip20161214_8

snip20161214_9

最後確認是否連線,只要打開cmd視窗,執行tracert www.hinet.net看看是否從routeros出去即可。

macOS客戶端設置:

    1. 首先,下載客戶端軟體:按這裡
    2. Tunnelblick.com是個開放原始碼的軟體,好用又方便,比OpenVPN Connect好用許多。
    3. 下載安裝後,仍採用ovpn設定檔進行匯入,設定檔的範例如下:
      client
      dev tun
      proto tcp
      remote xxx.xxx.xxx.xxx 998
      ca /Users/xxxxx/openvpn_files/ca.crt
      keepalive 10 120
      cipher AES-256-CBC
      auth SHA1
      auth-user-pass /Users/xxx/openvpn_files/auth.cfg
      verb 5
      push redirect-gateway
      
    4. 首先也是要把routeros的ca.crt與ca.key放到一個指定目錄,例如:自身的目錄底下做一個openvpn_files的子目錄,把ca.crt, ca.key放到這裡,另外,帳密檔案(前面已述)也放在同一個目錄,然後依照上面的設定檔指定位置即可。
    5. 另外,auth.cfg如windows所述,也要放在同一個目錄下。
    6. 最後用push redirect-gateway來告知流量都要往vpn導入,但是還有個地方必須設定才可以,在設定裡要把第一項,如下圖,打勾才行!!snip20161214_10
    7. 以上設定好基本上就已經完成,再依照下面方式點擊登入即可。

snip20161214_11

 

Android客戶端設置:

首先,須先製作一個設定檔,此設定檔可以提供Android與iOS來使用,除了類似Windows/macOS的寫法外,最主要把ca內容也寫進去,就不再提供ca.crt/ca.key兩個檔案了。因此,只要匯入此設定檔與auth.cfg即可。

client
dev tun
proto tcp
remote xxx.xxx.xxx.xxx 998
keepalive 10 120
cipher AES-256-CBC
auth SHA1
auth-user-pass auth.cfg
verb 5
redirect-gateway
<ca>
-----BEGIN CERTIFICATE-----
MIID6TCCA1KgAwIBAgIJAMdQ8zo5QJVoMA0GCSqGSIb3DQEBCwUAMIGqMQswCQYD
VQQGEwJUVzELMAkGA1UECBMCVFcxDzANBgNVBAcTBlRhaXBlaTEiMCAGA1UEChMZ
<<<< ca.crt裡面的內容拷貝複製到這個地方>>>>
yWXDkv30Z7gfDCiZcJcF5PfROJeDpPQoVIgRTOzCAz8N3+awWIkRLUyFCk3FWiBH
CO6mikuz8szxhtNNZZkntnEsFyjW3s0aGuYSzQAJ3Rp2XRiYm7X5sPerBGTL
-----END CERTIFICATE-----
</ca>

<key>
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOmHGjK2riMqBq4+
JgSUNJqKoz9fz9SY3Wsol423syUZNNX4htlLP/XtJ6U9r0f4Rqr+P/YaXb4c8AAc
<<<< ca.key裡面的內容拷貝複製到這個地方>>>>
gw7RBGga25wpEyRFyPIoGP5oG7uEsBlv0wRdzLr/7dqORIXWVXH01xkCQDpWw9zW
J+3h8UyEWKIaeIMsffxchQzjpxFqr5w/NBAcZdJUndExpPb5c6dDWT5la0wjo/un
up1QejfWdFR9vuU=
-----END PRIVATE KEY-----
</key>
接著到GOOGLE PLAY下載軟體:GOOGLE PLAY
然後,將此設定檔(xxx.ovpn)與auth.cfg透過usb,拷貝到一個目錄下,然後打開openvpn app,進行匯入
import --> import Profile from SD card,然後選擇所存放的目錄,找到該ovpn檔案,進行匯入即可。
接著按下Connect即可連線到RouterOS的VPN Server

iOS客戶端設置:

App下載網址:iTunes App Store

iOS的設定檔與Android可共用,就不再多述。只要將設定檔與auth.cfg匯入即可。方法如下:

將iPhone/iPad連到電腦,打開iTunes,然後將這設定檔與auth.cfg複製到OpenVPN的地方,如下所示,即可。

snip20161214_12 然後在iPhone/iPad打開openvpn,即會出現設定檔的名稱,加入即可。