設備:Mikrotik RouterBoard RB2011UiAS-RM
RouterOS版本:v.6.37.3 Released on 2016-Nov-28
- 首先於RouterOS設置Certificate憑證,這是設定OpenVPN最重要的步驟,Mikrotik介紹兩種方式,詳情參考這個網頁,一種透過CACert.org,另一種由OpenVPN提供的工具easy-rsa工具來產生的certificate憑證。這裡介紹第二種easy-rsa的方式,並且在windows上的openvpn client來產生的憑證。
- 到OpenVPN網站下載OpenVPN Client for Windows,下載安裝後,假設安裝的目錄於C:\Program Files\OpenVPN
- 以Administrator(系統管理者)的權限打開cmd視窗,然後cd到C:\Program Files\OpenVPN\easy-rsa目錄。
- 執行以下指令:
- init-config (只要執行一次即可,主要是複製環境設置的批次程式)。
- vars(設定環境設置)
- clean-all清除
- build-dh(產生表頭DH檔案)
- build-ca(產生CA,Certificate Authority憑證)
- 產生的憑證存在於keys這個子目錄,D:\Program Files\OpenVPN\easy-rsa\keys,將這個目錄下的ca.crt與ca.key取出來,準備上傳到RouterOS。
- 上傳到RouterOS的檔案夾之後,開啟終端機(terminal)執行下面兩個指令將憑證匯入到系統裡:
[jerry@routeros] /certificate>import file=ca.crt [jerry@routeros] /certificate>import file=ca.key
- 在Winbos或網頁管理介面檢查是否匯入正常
- 若匯入正常則前面標籤為KT。
- 接著設定OPENVPN,利用WINBOS/網頁,按下PPP –> OVPN Server,再依照下面圖示輸入並選擇:PORT, Mode, Certificate的憑證,以及最後面支援的認證加密方式即可。
- 設定帳號、Profile、IP POOL、與防火牆就不在此多做敘述,可參考這個地方。
Windows客戶端設置:
- 先下載客戶端軟體:點擊到下載處,下載後安裝過程不再敘述。
- 將RouterOS的ca.crt與ca.key兩個檔案下載,並存放到客戶端軟體安裝目錄下的config位置,例如D:\Program Files\OpenVPN\config,另外製作一個auth.cfg,這檔案存放登入的帳號密碼,格式如下:
user1 1234
user1:帳號, 1234:密碼
- 在同一個目錄再製作設定檔,副檔名必須為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
- remote 後面接routeros的網址,後面連接的Port位置。
- ca 就是告知憑證的地方
- auth-user-pass告知採用帳密方式登入,帳密則儲存於auth.cfg這個檔案。
- 一般採用push redirect-gateway或push redirect-gateway local def1就可以指定把所有流量導入vpn接口,但有時候採用無線網路或其他網路會更改WAN時無效,所以可以加入route指令強迫將default gateway轉入。
- 到此基本上已經完成,只要在下面的icon點擊,按右鍵在按下connect即可連線。
最後確認是否連線,只要打開cmd視窗,執行tracert www.hinet.net看看是否從routeros出去即可。
macOS客戶端設置:
- 首先,下載客戶端軟體:按這裡。
- Tunnelblick.com是個開放原始碼的軟體,好用又方便,比OpenVPN Connect好用許多。
- 下載安裝後,仍採用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
- 首先也是要把routeros的ca.crt與ca.key放到一個指定目錄,例如:自身的目錄底下做一個openvpn_files的子目錄,把ca.crt, ca.key放到這裡,另外,帳密檔案(前面已述)也放在同一個目錄,然後依照上面的設定檔指定位置即可。
- 另外,auth.cfg如windows所述,也要放在同一個目錄下。
- 最後用push redirect-gateway來告知流量都要往vpn導入,但是還有個地方必須設定才可以,在設定裡要把第一項,如下圖,打勾才行!!
- 以上設定好基本上就已經完成,再依照下面方式點擊登入即可。
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的地方,如下所示,即可。