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项目date=20171202130746 
*SoftEtherVPN-  VPN Gatedate=20090527130329