[RouterOS] OpenVPN server & client 設定

RouterOS: v6.43.2

在設定 OpenVPN server 前,首先需要先產生 server 需要的憑證檔案 (ca.key、ca.crt), 產生憑的方法參考這篇文章: [Ubuntu] 使用 OpenSSL 產生憑證

1. 設定 OVPN server

1.1 開啟 WinBox 上傳 server 用憑證與私鑰 (ca.crt & ca.key)

1.2 開啟 Winbox Terminal 匯入憑證與私鑰 (ca.crt & ca.key )

/certificate import file-name=ca.crt

passphrase: 
    certificates-imported: 1
    private-keys-imported: 0
           files-imported: 1
      decryption-failures: 0
 keys-with-no-certificate: 0

/certificate import file-name=ca.key

passphrase: 
    certificates-imported: 0
    private-keys-imported: 1
           files-imported: 1
      decryption-failures: 0
 keys-with-no-certificate: 0
1.3 設定 OVPN server
/ip pool add name=ovpn_pool ranges=10.10.0.1-10.10.0.254

/ppp profile add local-address=ovpn_pool name=ovpn remote-address=ovpn_pool

/interface ovpn-server server set certificate=ca.crt_0 cipher=blowfish128,aes128,aes192,aes256 default-profile=ovpn enabled=yes netmask=16

/ppp secret add name=帳號 password=密碼 profile=ovpn service=ovpn

為方便管理,使用 /ip pool 分配一段無人使用的 IP 範圍給 OVPN server 使用。

在 /ppp profile 中 remote-address 為 OVPN 連線後分配給 client 端的 IP,local-address 則為 OVPN 連線後 server 端的 IP,local-address 與 remote-address 必須在同一網段,在這裏我是直接設成 ovpn_pool 。

最後在 /ppp secret 中新增帳號密碼給 client 端用來登入連線,同一組帳號密碼可同時多人登入使用。

OpenVPN server 設成完成。

2. Client 設定 – Windows

下載並安裝 OpenVPN client 軟體,將 ca.crt 複製到 c:\Program Files\OpenVPN\config\ ,然後編輯或新增 c:\Program Files\OpenVPN\config\OpenVPN.ovpn  檔案:

OpenVPN.ovpn 檔案內容如下:

client
dev tun
proto tcp
remote YOUR_OVPN_SERVER_IP 1194
keepalive 10 120
auth SHA1
auth-user-pass
cipher AES-256-CBC
verb 5
redirect-gateway def1
dhcp-option DNS 8.8.8.8
ca ca.crt

將 YOUR_OVPN_SERVER_IP 換成實際 server domain 或 IP 即可。

在每次連線時會 OpenVPN client 軟體會詢問帳號密碼,如果不想每次都詢問則將

auth-user-pass

改成

auth-user-pass auth.txt

並在 c:\Program Files\OpenVPN\config\ 目錄中建立 auth.txt,其內容即為SERVER設定的帳號密碼:

帳號
密碼

另外,可以將 ca.crt 整合到 OpenVPN.ovpn 檔案中,將

ca ca.crt

替換成

<ca>
# 將 ca.crt 內容複製到這裏
</ca>

結果類似這樣:

<ca>
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdABCby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDEFJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBABClZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXDEFaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----
</ca>

server 與 client 設定正確的話就可以正常連線了。

3. Client 端設定 – MikroTik RouterOS

3.1 如果 client 是另一台 MikroTik RouterOS,並且想將 client 所有流量導向 OVPN 可以這樣設 :

/interface ovpn-client add connect-to=YOUR_OVPN_SERVER_IP name=ovpn-out1 password=密碼 user=帳號

/ip firewall nat add action=masquerade chain=srcnat out-interface=ovpn-out1 

/ip firewall mangle add action=mark-routing chain=prerouting new-routing-mark=ovpn_rule passthrough=no src-address=10.33.1.0/24

/ip route add distance=1 gateway=ovpn-out1 routing-mark=ovpn_rule

YOUR_OVPN_SERVER_IP 可以換成 server domain 或 IP。

/ip firewall mangle 中 src-address=10.33.1.0/24 是指哪些 IP 範圍的封包要走 OVPN, 10.33.1.0/24 是我這台 ROS 的 DHCP 設定,也就是只要接在這台 ROS 機器下的網路設備封包都會走 OVPN 出去。

3.2 如果只是想存取 server 端下的內網,一般正常上網不走 OVPN 可以這樣設:

/interface ovpn-client add connect-to=YOUR_OVPN_SERVER_IP name=ovpn-out1 password=密碼 user=帳號 

/ip firewall nat add action=masquerade chain=srcnat out-interface=ovpn-out1 

/ip route add distance=1 gateway=ovpn-out1 dst-address=192.168.1.0/24

dst-address=192.168.1.0/24 為 server 端內網 IP 範圍,表示在 client 中要存取這些 IP 範圍則透過 ovpn-out1 出去。

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *