SoftEther

**SoftEther VPN** 是一個由日本程式設計師登大遊（日語：登 大遊）因就讀筑波大學時的碩士論文研究主題而開發的開源、跨平台、多重協定之虛擬私人網路方案，此方案讓一些虛擬私人網路協定像是 SSL VPN、L2TP、IPsec、OpenVPN 以及微軟 SSTP 都由同一個 VPN 伺服器提供。在 2014 年 1 月 4 日以 GNU 通用公共授權條款的方式轉變為開源軟體。2019 年 1 月 21 日轉變為 Apache License 2.0 授權。

SoftEther VPN 是專門被設計為穿過防火牆的，支援 NAT 穿透，使其能越過政府或組織的防火牆建立 VPN 通道。2013 年 3 月，官方開始提供 VPN Gate 公共 VPN 中繼伺服器列表外掛程式，以簡化高強度網路審查地區有突破網路封鎖（翻牆）需求的使用者的操作複雜程度。因為用了 HTTPS 來偽裝連接，防火牆的深度封包檢測無法偵測到 SoftEther 的 VPN 傳送封包構成的 VPN 通道。但 SoftEther 的 SSL VPN 協定在中國大陸的部分地區仍然被封鎖。

效能優化也是 SoftEther VPN 的一個目標。它使用像是利用全部乙太網影格的策略，減少了記憶體複製的操作、平行傳輸和群集，這減少了通常 VPN 連接會有的延遲並增加了運輸吞吐量。

## 互用性

VPN 伺服器和 VPN 橋接器支援微軟、Linux、Mac OS X (除了 10.9.x)、FreeBSD 還有 Solaris 這些作業系統。SoftEther VPN 支援自己的 VPN 協定但可以和 OpenVPN、微軟 Secure Socket Tunneling Protocol (SSTP)、SSL VPN、EtherIP、L2TPv3、IPsec 相容。藉由 L2TP/IPsec/OpenVPN/SSTP，可以支援行動裝置系統如 iOS、安卓、微軟 Windows 手機。SoftEther 自身的 VPN 客戶端支援微軟、Linux、Mac。支援其他 VPN 協定的 VPN 客戶端和終端也可能會被使用；這包括了來自諸如思科、Juniper、Linksys (有 DD-WRT)、Asus 等等公司生產的各式各樣的路由器。

## 軟體組成

### VPN 伺服器

SoftEther VPN 伺服器和其他 VPN 伺服器一樣，功能是接聽來自客戶端或橋接器使用各式協定的連接。

一個 VPN 伺服器可以有好幾個虛擬的集線器和交換器。虛擬集線器和實體的交換器一樣，有完整的第二層網路封包交換功能。此外，虛擬集線器能被組態來定義 IP 封包過濾項目，過濾經過集線器的封包。虛擬的 Network layer 層交換器則像實體的路由器一樣，有第三層 IP 靜態路由功能。

一個 VPN 伺服器可以有內建的橋接器。這個橋接器是一個在實體網路轉接器和虛擬集線器之間的封包交換結構。系統管理員定義連接虛擬集線器和現有的企業網路之間的橋接器，去建立一個遠端存取的或站對站的 VPN 伺服器。

### VPN 客戶端

SoftEther VPN 客戶端是個虛擬化的網路適配器。一個有安裝客戶端程式的電腦能建立與伺服器的連接。因為 VPN 伺服器支援多種 VPN 協定的關係，VPN 使用者並不需要在電腦上安裝 SofthEther VPN 客戶端，而是用內建在作業系統內的 VPN 客戶端程式建立連接。然而，SoftEther VPN 客戶端比系統內建程式還多了些進階功能。想要充分利用 SothEther VPN 伺服器的全部效能的話，建議還是安裝客戶端程式。

### VPN 橋接器

SoftEther VPN 橋接器是個建立站對站 VPN 的程式。要建立這樣的 VPN，系統管理員必須安裝 SoftEther VPN 伺服器程式在中央電腦，然後要一個以上的遠端電腦安裝 VPN 橋接器。VPN 橋接器會以級聯連接連接中央 VPN 伺服器。級連連接類似在兩個實體網路交換機之間，一個虛擬化的上行連接。

### VPN 伺服器微軟版管理程式

這是個 SoftEther VPN 伺服器和橋接器會用到的圖型化介面管理工具。系統管理員可用來連接遠端的伺服器或橋接器並管理。連接使用了 SSL，管理指令則用 RPC 在 SSL 上傳輸。

### VPN 命令列管理實用工具

vpncmd 是個自訂介面管理工具，用在伺服器、各戶端和橋接器上。它可以在所有支援的作業系統上執行。當有使用者無法用 Wine 執行微軟或 Linux 時，它可以轉換到 vpncmd 來管理 VPN。vpncmd 也很適合用來執行批次操作，例如在虛擬集線器上建立好幾個使用者，或在伺服器上建立好幾個虛擬集線器。

## 架構

SoftEther VPN 某些部分的架構有別一般傳統使用 IPsec 的 VPN 系統。

### 虛擬集線器

虛擬集線器就是以軟體方式類比網路交換機。它會更新和維持自身擁有的轉發資料對照表（MAC 位址表）。雖然傳統的網路交換機將這功能做在硬體上，SoftEther VPN 以軟體實現了同樣功能。一個 VPN 伺服器可以有好幾個虛擬集線器，各自獨立。VPN 客戶端和橋接端的連接就是以集線器用封包交換來處理。

當一個伺服器上有數個虛擬的集線器時，為了安全，這些集線器都會獨立分開。各個不同的管理員可以對相應的虛擬集線器授予權限。每個虛擬極限的管理員可以限定使用者物件和 ACLs，而這僅限於被授權的集線器上。

### 虛擬網路轉接器

一個 VPN 客戶端可以在自己的電腦上創立數個網路轉接器。VPN 使用者能在虛擬網路轉接器和遠端目標的虛擬集線器間建立可用連接。當建立了可用連接，使用者就能藉此和遠端的 VPN 網路溝通。它可以讓任何程式或作業系統不用特定設定就能使用，就和硬體版的使用方式一樣。

### 虛擬交換機

它以軟體方式類比了 IP 路由器。一個伺服器上可以同時間創立好幾個虛擬交換機。虛擬交換機有虛擬的 IP 介面連接虛擬集線器。它也有幾個固定的對照表上的分配項目。

虛擬交換機也適合用來做大型的站對站 VPN 網路。雖然有個簡單的方式可以達成，就是用橋接建立 VPN，但如果有很多台電腦，輸入站點間的連接的廣播封包數量就會大增。為了預防這樣規模擴張的問題，VPN 管理者用虛擬交換機來隔絕 IP 網路。

### 虛擬集線器之間的級聯連接

管理員可以在地區或遠端的虛擬集線器間定義一個級聯連接。當級聯連接被設立，原先獨立的兩個網段就被整合成一個了。所以這個級聯連接功能被用來建立站對站的橋接。

### 虛擬集線器和網路間的地區橋接器

因為虛擬集線器和虛擬網路轉接器都只是軟體類比的裝置，藉此傳送的封包是無法和硬體裝置溝通的。因此，需要一個類比和實體裝置之間的橋接，才能建立遠端存取 VPN 或站對站 VPN。要做出橋接，地區橋接器功能轉會轉換虛擬集線器和實體網路轉接器間的封包，結合兩個獨立網段成為一個單一的網段。

在 VPN 伺服器上定義過地區橋接器後，各 VPN 客戶端就可以藉由地區橋接器，連到 VPN 伺服器並和其他網路上的裝置溝通。這就是遠端存取 VPN。

如果網路管理者設立了遠端站點 VPN 橋接器，並在 VPN 伺服器和 VPN 橋接器上分別定義了兩個地區橋接，然後定義伺服器和橋接器間的級聯連接，遠端的兩個網段在第二層級上就會直接連在一起。這就是站對站 VPN。

### 防火牆，代理伺服器

SoftEther VPN 很重要的功能是對防火牆的穿透和藉助代理伺服器中轉 VPN 流量。為此，SoftEther VPN 支援 SSL-VPN。它使用 HTTPS 協定來建立 VPN 通道，可以與 Web 網站同樣使用 TCP/IP 443 埠。

### 可使用多條 TCP 連接的傳輸機制

當使用者選擇 SSL-VPN 協定時，SoftEther VPN 伺服器和客戶端會用一套平行傳輸機制來改善 SSL-VPN 通道的吞吐量。使用者可以建立 1 到 32 條 TCP 連接同時並行傳輸。當處在一個網速非常慢的地方時，這項效能調整會導致更快的吞吐量。一旦這功能被啟用，邏輯 VPN 連接將包含多個 TCP (HTTPS) 連接。所有的封包將會在適當的 TCP 連接中，被加進最佳化模組的運算。如果邏輯 VPN 連接的 TCP 連接偵測到封包的遺失，新的封包就使用其他正常的 TCP 連接。這項快速切換最佳化的功能造就高吞吐量。

### NAT 穿透

傳統的 VPN 系統需要使用者去請求公司的防火牆管理者，在防火牆或公司與網路間的 NAT 開放一個終端點 (TCP 或 UDP 埠)。為了減少需要開放終端點的情形，SoftEther VPN 伺服器有 NAT 通透功能。NAT 通透會預設是啟動狀態。只要它啟動，VPN 客戶端的電腦就能連接到被防火牆或 NAT 阻隔的 VPN 伺服器，不需要在防火牆或 NAT 上特別設定。

### 通過 ICMP 和 DNS 上的 VPN

有少數限制很多的網路只允許通過 ICMP 或 DNS 的封包。在這種情形，TCP 或 UDP 會被濾掉。為了讓 SoftEther VPN 也能在這種網路建立連接，SoftEther VPN 有特別為此設計的 VPN 功能。

這功能對穿過這樣嚴格的防火牆非常有用。所有的 VPN 封包都再度包成 ICMP 或 DNS 封包來傳輸。接收端會從外層提出內層的封包。因為有些公共 Wi-Fi 只能通過 ICMP 或 DNS 封包，這讓在公共 Wi-Fi 也能使用 VPN。如果你為了出門，安裝一個伺服器在家中或辦公室，你可以在限制網路中享受這自由協定的網路通訊。

### 缺陷

SoftEtherVPN 伺服器端同時支援 SoftEtherVPN、OpenVPN、L2TP、IPsec、SSTP 等。儘管 SoftEtherVPN 因為使用 Https 通訊可以抵抗 GFW 的深度包檢測，但伺服器端的 OpenVPN 等功能若是開啟仍會暴露出 VPN 伺服器的存在。

## VPN Gate

VPN Gate 是個 SoftEther VPN 的外掛程式，它讓使用者能連接由志願者提供，在自家電腦安裝 SoftEther 的免費公共 VPN 伺服器，此功能可用於幫助使用者繞過政府的網際網路審查。VPN Gate 由筑波大學贊助。

## 參考資料

## 外部連結

* SoftEther VPN 專案（頁面存檔備份，存於網際網路檔案館）
* GitHub 上的 SoftEtherVPN
* VPN Gate（頁面存檔備份，存於網際網路檔案館）