SoftEther VPN

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项目
- SoftEtherVPN/SoftEtherVPN
- VPN Gate

## 基本资料

- 作者：筑波大学的SoftEther VPN 项目
- 开发者：Daiyuu Nobori、Tetsuo Sugiyama、Takao Ito、Christopher Smith、Mei Sharie Ann Yamaguchi和其他开发者
- 编程语言：C语言及C++
- 操作系统：Windows、Linux、MacOS、FreeBSD、Solaris、iOS、Android
- 语言：英文、日文、简体中文
- 类型：VPN
- 许可协议：GPL v2、Apache License 2.0（自2019年1月21日起）