Open Source VPN 之不嚴謹比較

文章目錄

Open Source VPN

  1. 目前市面上 Open Source VPN 有一堆, 查了一下 OpenSource 的就有一堆, 眼花撩亂, 不知該選誰...

    1. OpenVPN: https://openvpn.net/
    2. SoftEther VPN: https://softether.org/
    3. Libreswan VPN: https://libreswan.org/
    4. OpenSwan VPN: https://openswan.org/
    5. strongSwan VPN: https://www.strongswan.org/
    6. FreeLan VPN: https://www.freelan.org/
    7. Open Connect VPN: https://www.infradead.org/openconnect/
  2. 先看一下大家在 GitHub 上的星星數, 前兩名是 OpenVPN 和 SoftEther VPN

    OpenVPN SoftEther LibreSwan OpenSwan StrongSwan FreeLan OpenConnect
    GitHub star 7.2K 9K 662 770 1.4K 1.2K N/A
    Last release 2022/5/24 2021/6/24 2022/5/25 2021/1/22 2022/4/29 2019/5/7 2022/4/29
  3. 再用 Google Trend 比一下, 結果也滿明顯的, 第一名是 OpenVPN, 第二名是 SoftEther VPN, 那就比這兩個就好. (因為 Google Trend 只能比 5 個, 另外兩個沒放上來的基本上也是躺平)

測速比較

  • 測速情境如下
    1. 使用 iPerf3 來測速
    2. OpenVPN 使用預設的環境 (預設沒有開啟壓縮, 因為設定畫面上有提到開啟壓所可能會影響 security)
    3. SoftEther VPN 選擇的是他自己的 protocol (走 5555 那個)
  1. 不透過 VPN 直接連線, 每秒約 556Mbits

     1Connecting to host 211.73.81.92, port 5201
     2[  4] local 10.100.201.3 port 49787 connected to 211.73.81.92 port 5201
     3[ ID] Interval           Transfer     Bandwidth
     4[  4]   0.00-1.00   sec  43.4 MBytes   363 Mbits/sec
     5[  4]   1.00-2.00   sec  20.5 MBytes   172 Mbits/sec
     6[  4]   2.00-3.00   sec  35.1 MBytes   295 Mbits/sec
     7[  4]   3.00-4.00   sec  67.0 MBytes   562 Mbits/sec
     8[  4]   4.00-5.00   sec  86.4 MBytes   725 Mbits/sec
     9[  4]   5.00-6.00   sec  81.1 MBytes   679 Mbits/sec
    10[  4]   6.00-7.00   sec  81.5 MBytes   686 Mbits/sec
    11[  4]   7.00-8.00   sec  82.8 MBytes   693 Mbits/sec
    12[  4]   8.00-9.00   sec  81.8 MBytes   687 Mbits/sec
    13[  4]   9.00-10.00  sec  83.0 MBytes   695 Mbits/sec
    14- - - - - - - - - - - - - - - - - - - - - - - - -
    15[ ID] Interval           Transfer     Bandwidth
    16[  4]   0.00-10.00  sec   662 MBytes   556 Mbits/sec             sender
    17[  4]   0.00-10.00  sec   662 MBytes   556 Mbits/sec             receiver
    
  2. 透過 OpenVPN 連線, 每秒約 193Mbits

     1Accepted connection from 192.168.211.4, port 49750
     2[  5] local 192.168.211.3 port 5201 connected to 192.168.211.4 port 49751
     3[ ID] Interval           Transfer     Bitrate
     4[  5]   0.00-1.00   sec  28.5 MBytes   239 Mbits/sec
     5[  5]   1.00-2.00   sec  21.3 MBytes   179 Mbits/sec
     6[  5]   2.00-3.00   sec  21.1 MBytes   177 Mbits/sec
     7[  5]   3.00-4.00   sec  20.6 MBytes   173 Mbits/sec
     8[  5]   4.00-5.00   sec  18.7 MBytes   157 Mbits/sec
     9[  5]   5.00-6.00   sec  21.6 MBytes   181 Mbits/sec
    10[  5]   6.00-7.00   sec  25.4 MBytes   213 Mbits/sec
    11[  5]   7.00-8.00   sec  23.6 MBytes   198 Mbits/sec
    12[  5]   8.00-9.00   sec  23.8 MBytes   200 Mbits/sec
    13[  5]   9.00-10.00  sec  25.3 MBytes   212 Mbits/sec
    14[  5]  10.00-10.03  sec   660 KBytes   175 Mbits/sec
    15- - - - - - - - - - - - - - - - - - - - - - - - -
    16[ ID] Interval           Transfer     Bitrate
    17[  5]   0.00-10.03  sec   230 MBytes   193 Mbits/sec                  receiver
    
  3. 透過 SoftEther VPN 連線, 每秒約 98.8Mbits

     1Accepted connection from 192.168.211.4, port 37244
     2[  5] local 192.168.211.3 port 5201 connected to 192.168.211.4 port 37246
     3[ ID] Interval           Transfer     Bitrate
     4[  5]   0.00-1.00   sec  11.5 MBytes  96.1 Mbits/sec
     5[  5]   1.00-2.00   sec  15.1 MBytes   127 Mbits/sec
     6[  5]   2.00-3.00   sec  10.7 MBytes  89.9 Mbits/sec
     7[  5]   3.00-4.00   sec  9.61 MBytes  80.6 Mbits/sec
     8[  5]   4.00-5.00   sec  12.1 MBytes   101 Mbits/sec
     9[  5]   5.00-6.00   sec  9.89 MBytes  83.0 Mbits/sec
    10[  5]   6.00-7.00   sec  6.34 MBytes  53.2 Mbits/sec
    11[  5]   7.00-8.00   sec  11.1 MBytes  92.7 Mbits/sec
    12[  5]   8.00-9.00   sec  15.7 MBytes   131 Mbits/sec
    13[  5]   9.00-10.00  sec  15.8 MBytes   132 Mbits/sec
    14[  5]  10.00-10.01  sec   235 KBytes   148 Mbits/sec
    15- - - - - - - - - - - - - - - - - - - - - - - - -
    16[ ID] Interval           Transfer     Bitrate
    17[  5]   0.00-10.01  sec   118 MBytes  98.8 Mbits/sec                  receiver
    

比較意外的是, SoftEhter VPN 官方網站有提到他比 OpenVPN 快 13 倍, 但測起來卻不是這樣. 不過一來這是 2006 年的測速, 二來 SoftEther VPN 的設定很多, 也 很有可能是我沒有調整好, 所以這個測試僅供參考.

CPU 使用比較

  • 這是測試在使用 iPerf3 測速時, 同時觀察 CPU 的使用率. 注意, 這是測 OpenVPN/SoftEther VPN 在用 iPerf3 測速時的 CPU, 並不是平常無流量或低流量的 CPU 使用. 沒有連線時, 兩者消耗的 CPU 都非常非常低.
  1. 透過 OpenVPN 連線, CPU 約使用 30.7%

    1top - 15:01:40 up 2 days,  3:22,  4 users,  load average: 0.00, 0.00, 0.00
    2Tasks: 119 total,   1 running, 118 sleeping,   0 stopped,   0 zombie
    3%Cpu(s):  5.4 us,  9.9 sy,  0.0 ni, 82.8 id,  0.0 wa,  0.0 hi,  1.9 si,  0.0 st
    4MiB Mem :  16009.7 total,  13538.6 free,    417.3 used,   2053.8 buff/cache
    5MiB Swap:      0.0 total,      0.0 free,      0.0 used.  15288.2 avail Mem
    6
    7    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    8    934 openvpn+  20   0    8012   6748   5544 S  32.3   0.0   0:14.82 openvpn-openssl
    
  2. 透過 SoftEther VPN 連線, CPU 約使用 22.3%

    1top - 15:05:47 up 2 days,  3:26,  4 users,  load average: 0.00, 0.01, 0.00
    2Tasks: 120 total,   1 running, 119 sleeping,   0 stopped,   0 zombie
    3%Cpu(s):  0.3 us,  0.5 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
    4MiB Mem :  16009.7 total,  13512.0 free,    436.3 used,   2061.4 buff/cache
    5MiB Swap:      0.0 total,      0.0 free,      0.0 used.  15269.1 avail Mem
    6
    7    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    813540 ubuntu    20   0 1016272  20404   5576 S   22.7   0.1   0:03.93 vpnserver
    

結論

  1. 速度

    連線方式 速度
    直接連線 556 Mbits
    OpenVPN 193 Mbits
    SoftEther 98.8 Mbits
  2. CPU 使用率

    連線方式 CPU 使用率
    OpenVPN 32.3%
    SoftEther 22.7%

注意

  1. 有一點要注意的是, OpenVPN 雖然 Open Source, 但他的 免費版本只能有兩個連線 (參考這裡)

延伸閱讀

  1. 如果你要自己在 Linux(Ubuntu) 上安裝 OpenVPN server, 可參考 OpenVPN server 簡易安裝使用 (Ubuntu)
  2. 用果有興趣使用 Prometheus 來監控 OpenVPN server, 可參考 用 Prometheus 來監控 OpenVPN server
  3. 如果你使用的是 Asuswrt-Merlin, 他有內建 OpenVPN server, 可參考 在 Asuswrt-Merlin 使用 OpenVPN server