mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-22 09:29:52 +03:00
Merge pull request #1295 from davidebeatrici/vpndrvinst-revamp
New vpndrvinst implementation, independent from Cedar and Mayaqua
This commit is contained in:
commit
8fb9bfd39c
@ -5514,6 +5514,8 @@ void CmMainWindowOnCommandEx(HWND hWnd, WPARAM wParam, LPARAM lParam, bool easy)
|
||||
ShowWindow(hWnd, SW_SHOWNORMAL);
|
||||
}
|
||||
Free(name);
|
||||
|
||||
CmRefresh(hWnd);
|
||||
}
|
||||
break;
|
||||
case CMD_DELETE_VLAN:
|
||||
@ -5554,6 +5556,8 @@ void CmMainWindowOnCommandEx(HWND hWnd, WPARAM wParam, LPARAM lParam, bool easy)
|
||||
false, false);
|
||||
}
|
||||
}
|
||||
|
||||
CmRefresh(hWnd);
|
||||
}
|
||||
break;
|
||||
case CMD_ENABLE_VLAN:
|
||||
@ -5573,6 +5577,8 @@ void CmMainWindowOnCommandEx(HWND hWnd, WPARAM wParam, LPARAM lParam, bool easy)
|
||||
CALL(hWnd, CcEnableVLan(cm->Client, &c));
|
||||
}
|
||||
Free(s);
|
||||
|
||||
CmRefresh(hWnd);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -5593,6 +5599,8 @@ void CmMainWindowOnCommandEx(HWND hWnd, WPARAM wParam, LPARAM lParam, bool easy)
|
||||
CALL(hWnd, CcDisableVLan(cm->Client, &c));
|
||||
}
|
||||
Free(s);
|
||||
|
||||
CmRefresh(hWnd);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -5643,6 +5651,8 @@ void CmMainWindowOnCommandEx(HWND hWnd, WPARAM wParam, LPARAM lParam, bool easy)
|
||||
}
|
||||
}
|
||||
Free(s);
|
||||
|
||||
CmRefresh(hWnd);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -2129,6 +2129,7 @@ bool MsExecDriverInstaller(char *arg)
|
||||
info.cbSize = sizeof(info);
|
||||
info.lpVerb = L"open";
|
||||
info.lpFile = tmp;
|
||||
info.lpDirectory = MsGetMyTempDirW();
|
||||
info.fMask = SEE_MASK_NOCLOSEPROCESS;
|
||||
info.lpParameters = arg_w;
|
||||
info.nShow = SW_SHOWNORMAL;
|
||||
|
140
src/bin/hamcore/warning_cn.txt
Normal file
140
src/bin/hamcore/warning_cn.txt
Normal file
@ -0,0 +1,140 @@
|
||||
关于 SoftEther VPN 的重要声明
|
||||
|
||||
嵌入在本软件的 VPN 通信功能比以往任何时候都要强大。这个强大的 VPN 能力将为您带来巨大的好处。然而,如果你滥用此软件, IT 可能会损害你自己。为了避免这样的风险,本文档为愿意使用本软件的客户公布了重要提示。下面的说明是非常重要的。仔细阅读并理解它。
|
||||
|
||||
|
||||
1. VPN 通信协议
|
||||
1.1. SoftEther VPN 协议
|
||||
SoftEther VPN 可以进行 VPN 通信。不同于传统的 VPN 协议, SoftEther VPN 有一个全新设计的 "SoftEther VPN 协议 (SE-VPN 协议)" 的实现。SE-VPN 协议将任何以太网数据包封装进 HTTPS (HTTP over SSL) 连接。因此 SE-VPN 协议可以越过防火墙通信,即使防火墙被网络管理员配置阻止传统的 VPN 数据包。SE-VPN 协议的设计和实施以符合 TLS 1.0 (RFC 5246) 和 HTTPS (RFC 2818)。然面,有时对 RFC 有不同的行为。如果你是一个网络管理员,要在防火墙上阻止 SE-VPN 协议,你可以在防火墙上采取 "白名单" 策略,来过滤任何在边界上的 TCP 或 UDP 数据包,除了明确允许到特定网站和服务器的数据包。
|
||||
|
||||
1.2. NAT 穿透功能
|
||||
一般来说,如果你使用传统的 VPN 系统,你必须要求网络管理员把 NAT 或防火墙设置为 "打开" 或 "中继" 特定的 TCP 或 UDP 端口。然而,也有需要以某种方式消除网络管理员的这种工作成本。为了满足这种需求, SoftEther VPN 有一个新实施的 "NAT 穿越" 功能。NAT 穿越默认情况下是启用的。一个在 NAT 或防火墙后面、在电脑上运行的 SoftEther VPN 服务器可以接受来自互联网的 VPN 连接,在防火墙或 NAT 上没有任何特殊的配置。如果你想禁用 NAT 穿越功能,修改 SoftEther VPN 服务器上的配置文件 "DisableNatTraversal" 为 "true" 。为了在客户端禁用它,在目标主机添加 "/ tcp" 后缀。
|
||||
|
||||
1.3. 动态 DNS 功能
|
||||
传统的 VPN 系统在 VPN 服务器上需要一个静态全球 IP 地址。鉴于全球 IP 地址的短缺, SoftEther 公司在 SoftEther VPN 服务器上实施了 "动态 DNS 功能" 。动态 DNS 是默认启用的。动态 DNS 功能通知计算机的当前全球 IP 地址到由 SoftEther 公司操作的动态 DNS 服务器。一个全球唯一主机名 (FQDN) ,如 "abc.softether.net" ( "ABC" 随每个用户唯一而不同) 将在 VPN 服务器上被指定。如果你告诉一个 VPN 用户这个唯一的主机名,用户可以在 VPN 客户端上将其指定为目标 VPN 服务器的主机名,将能连接到 VPN 服务器。事先无需知道 IP 地址。如果 VPN 服务器的 IP 地址变化了,相关动态 DNS 服务的主机名注册的 IP 地址会自动改变。通过这种机制,不再需要每月向 ISP 缴费的全球静态 IP 地址。您可以使用带动态 IP 地址的、消费者级、廉价的互联网连接,来操作一个企业级的 VPN 系统。如果你想禁用动态 DNS ,把 SoftEther VPN 服务器配置文件中的 "DDnsClient" 指令的 "Disabled" 项目指定为 "true" 。* 中华人民共和国的居民请注意:如果你的 VPN 服务器运行在中华人民共和国, DNS 后缀将被替换为 "sedns.cn" 域名。 "sedns.cn" 域名服务由 "北京大游索易科技有限公司" 拥有和运营的,它是一个中国本地的企业。
|
||||
|
||||
1.4. VPN over ICMP / VPN over DNS 功能
|
||||
如果你想在 SoftEther VPN 客户端 / 网桥和 SoftEther VPN 服务器之间建立一个 VPN 连接,但如果 TCP 和 UDP 数据包被防火墙禁止通过,那么你可以把有效载荷封装进 "ICMP" (被称为 Ping) 或 "DNS" 数据包。通过使用 ICMP 或 DNS ,即使防火墙或路由器阻止每个 TCP 或 UDP 连接,此功能可以实现 VPN 连接。VPN over ICMP/ VPN over DNS 功能尽可能的设计符合标准 ICMP 和 DNS 规范,但有时也不完全符合他们的行为。因此,一些劣质路由器可能会导致内存溢出或当有很多 ICMP 或 DNS 数据包通过时产生麻烦,这种路由器有时死机或重新启动。它可能会影响在同一网络上的其他用户。为了避免这样的风险,在 VPN 客户端指定的目标主机名上附加后缀 "/tcp" ,禁用 VPN over ICMP / DNS 功能。
|
||||
|
||||
1.5. VPN Azure 云服务
|
||||
如果您的 SoftEther VPN 服务器放置在 NAT 或防火墙后面,由于某种原因,你不能使用 NAT 穿透功能、动态 DNS 功能或 VPN over ICMP/DNS 功能,您可以使用 VPN Azure Cloud 服务。 SoftEther 公司在互联网上运行 VPN Azure 云。VPN 服务器连接到 VPN Azure 云,主机名 "abc.vpnazure.net" ( "abc" 是一个唯一的主机名) 通过 VPN Azure 云可以被指定连接到 VPN 服务器。实际上,这样的一个主机名指向一个由 SoftEther 公司所操作的云服务器的全球 IP 地址。如果一个 VPN 客户端连接到一个 VPN Azure 主机,那么 VPN Azure 主机转播在 VPN 客户端和 VPN 服务器之间的所有流量。VPN Azure 在默认情况下是禁用的。您可以通过使用 VPN 服务器配置工具很容易地激活它。
|
||||
|
||||
1.6. UDP 加速
|
||||
SoftEther VPN 具有 UDP 加速功能。如果一个 VPN 是由两个站点组成检测到 UDP 通道已建立, UDP 将自动使用。通过此功能, UDP 的吞吐量增加了。如果直接的 UDP 通道已被建立,直接的 UDP 数据包将被使用。但是,如果有一些障碍,如防火墙或 NAT , "UDP 冲孔" 技术将被使用。 "UDP 冲孔" 使用 SoftEther 公司在互联网上操作的云服务器。UDP 加速通过在 VPN 客户端一侧进行设置在任何时候可以被禁用。
|
||||
|
||||
|
||||
2. VPN 软件
|
||||
2.1. SoftEther VPN 客户端
|
||||
如果您在 Windows 上使用 SoftEther VPN 客户端,虚拟网络适配器设备驱动程序将安装在 Windows 上。虚拟网络适配器作为一个内核模式驱动程序实施在 Windows 上。驱动程序是数字签名的,由 VeriSign , Inc 所签发的证书,还由 Symantec Corporation (赛门铁克公司) 签署。问你要确保安装驱动程序的一条消息可能会弹出在屏幕上。如果可能的话, SoftEther VPN 客户端可能会响应消息。SoftEther VPN 客户端还优化了在 Windows 上 MMCSS (多媒体类计划程序服务) 的配置。您以后可以撤消 MMCSS 的优化。
|
||||
|
||||
2.2. SoftEther VPN 服务器 / 网桥
|
||||
如果您使用 SoftEther VPN 服务器 / 网桥在 Windows 上的 "本地网桥" 功能,你必须在电脑上安装低级别的以太网数据包处理驱动程序。驱动程序是数字签名的,由 VeriSign , Inc 所签发的证书,还由 Symantec Corporation (赛门铁克公司) 签署。SoftEther VPN 服务器 / 网桥在物理网络适配器本地网桥功能中可以禁用 TCP / IP 卸载特性。在 Windows Vista /2008 或更高版本, VPN 服务器可以注入一个符合 Windows 过滤平台 (WPF) 规范的数据包过滤驱动程序至内核以提供 IPsec 功能。数据包过滤驱动程序将被加载仅当启用 IPsec 功能时。一旦您启用 SoftEther VPN 服务器的 IPsec 功能, Windows 内置的 IPsec 功能将被禁用。在您禁用了 SoftEther VPN 服务器的 IPsec 功能之后,那么 Windows 内置的 IPsec 功能将复苏。为了提供本地桥功能, SoftEther VPN 服务器 / 网桥在操作系统上禁用 TCP / IP 卸载功能。
|
||||
|
||||
2.3. 用户模式安装
|
||||
您可以在 Windows 以 "用户模式" 安装 SoftEther VPN 服务器和 SoftEther VPN 网桥。换句话说,即使你没有 Windows 系统管理员的权限,你可以作为一个普通用户安装 SoftEther VPN。用户模式安装将禁用一些功能,但其他大部分功能都能正常工作。因此,例如,雇员可以在办公室网络中的计算机上安装 SoftEther VPN 服务器端,他将能够从他家连接到服务器。为了由用户自己实现这样的系统,在技术观点上无须系统管理员权限。然而,违反公司规定未经授权在计算机上安装软件可能会被视为不受欢迎的行为。如果你是一名雇员属于该公司,该公司的政策禁止安装软件或未经允许进行互联网通信,你必须事先从网络管理员或您公司的总裁获得许可,再安装 SoftEther VPN。如果您以用户模式安装 VPN 服务器 / 网桥,图标将出现在 Windows 任务托盘。如果您觉得该图标妨碍你了,你可以操作将其隐藏。然而,你不能利用此隐藏功能在其他人的电脑上安装 VPN 服务器作为间谍软件。这种行为可能是违反刑法的犯罪。
|
||||
|
||||
2.4. 保持活跃功能
|
||||
默认情况下, SoftEther VPN 服务器和 SoftEther VPN 网桥有保持活跃的功能。此功能的目的是为了维持互连网线路的活跃。该功能定期发送带有随机 - 字节 - 数组 - 有效载荷的 UDP 数据包。此功能为避免移动或拨号连接的自动断开是非常有用的。您可以随时禁用保持活跃功能。
|
||||
|
||||
2.5. 卸载
|
||||
SoftEther VPN 软件的卸载过程将删除所有程序文件。然而,非程序文件 (如程序运行所产生的文件和数据) 将不会被删除。由于技术原因,卸载程序的 exe 和资源文件可能仍然存在。这些剩余的文件决不会影响使用计算机,但是你可以手动删除它。内核模式驱动程序可能不会被删除,但是这样的驱动程序在 Windows 下次启动时不会被加载。您可以使用 Windows 的 "sc" 命令手动删除内核模式驱动程序。
|
||||
|
||||
2.6. 安全
|
||||
你应该在安装后在 SoftEther VPN 服务器 / 网桥设置管理员的密码。如果你没有做到这一点,其他人未经您许可可以访问 SoftEther VPN 服务器 / 网桥,并可以设置密码。这个警告可能也适用于 Linux 版本的 SoftEther VPN 客户端。
|
||||
|
||||
2.7. 自动更新通知
|
||||
Windows 版的 SoftEther VPN 软件有自动更新通知功能。它定期访问 SoftEther 更新服务器检查是否发布了最新版本的软件。如果最新版已发布,通知消息将在屏幕上弹出。为了达到这个目的,版本、语言设置、您的计算机的 IP 地址、唯一标识符、连接到 VPN 服务器的主机名将被发送到 SoftEther 的更新服务器。任何个人信息将不被发送。默认情况下自动更新通知是启用的,然而你可以在配置屏幕上禁用它。通过 VPN 服务器管理器,设置是否打开或关闭将被单独保存对应每个目标 VPN 服务器。
|
||||
|
||||
2.8. 虚拟 NAT 功能
|
||||
虚拟 HUB 在 SoftEther VPN 服务器 / 网桥上有 "虚拟 NAT 功能" 。虚拟 NAT 功能可以通过 VPN 客户端的多个私有 IP 地址共享同一个物理网络上的单一 IP 地址。有两种虚拟 NAT 的操作模式:用户模式和内核模式。在用户模式下运行,虚拟 NAT 共享主操作系统上分配的一个 IP 地址。不同于用户模式,内核模式的操作试图找到物理网络上的 DHCP 服务器。如果有两个或以上的物理网络,每个网段上的 DHCP 服务器会被自动连续寻找。如果发现 DHCP 服务器,并获取一个 IP 地址, IP 地址将被虚拟 NAT 使用。在这种情况下,作为 DHCP 客户端的 IP 条目将被登记在物理 DHCP 服务器的 IP 池。为了在互连网中和主机进行通信,物理默认网关和 DNS 服务器将被虚拟 NAT 使用。在内核模式的操作中,虚拟 HUB 上有一个运行在物理以太网段上的虚拟 MAC 地址。
|
||||
为了检查到互联网的连通性, SoftEther VPN 定期发送 DNS 查询数据包,以解析 "www.yahoo.com" 或 "www.baidu.com" 主机的 IP 地址,并尝试连接到这样结果 IP 地址的 TCP 80 端口,进行连通性检查。
|
||||
|
||||
2.9. 内核模式组件的无人值守安装
|
||||
当 SoftEther VPN 检测到需要在 Windows 安装内核模式组件, Windows 系统将出现一条确认消息。在此之际, SoftEther VPN 软件将切换到无人值守的安装模式,以回应 "是" 到 Windows。当从遥远地点进行远程管理时,这个解决方案可以防止锁死。
|
||||
|
||||
2.10. Windows 防火墙
|
||||
SoftEther VPN 软件将其自身注册为一个安全程序。这样的条目在卸载后仍被保留。您可以从 Windows 的控制面板中手动删除它。
|
||||
|
||||
|
||||
3. 互连网服务
|
||||
3.1. SoftEther 公司提供的互连网服务
|
||||
SoftEther 公司在互联网上提供了动态 DNS、NAT 穿透、和 VPN Azure 服务器服务。这些服务都是免费的。客户通过使用 SoftEther VPN 软件,经由互联网访问这些服务。这些服务计划将在以后发布的 "SoftEther VPN" 的开源版本中也提供。
|
||||
|
||||
3.2. 发送的信息和隐私保护
|
||||
为了使用上述服务, SoftEther VPN 软件可以从客户的计算机到由 SoftEther 公司操作的云服务发送 IP 地址、主机名、VPN 软件的版本。这些信息的发送是要使用这些服务的最少必须内容。无任何个人信息将被发送。 SoftEther 公司记录接收到的最少信息在云服务服务器的日志文件为 90 天。这些日志将被用于故障排除和其他合法活动。SoftEther 公司可以提供日志给属于法院、警察局和检察院的日本政府的公务人员,以遵守当局的命令。(每一个日本公务人员有责任根据法律密切保存这些信息。) 此外, IP 地址或其他信息将进行统计处理,并提供给公众,而不是暴露每一个具体的 IP 地址,以进行研究活动的发布。
|
||||
|
||||
3.3. 通过 VPN Azure 服务的通信数据
|
||||
不管以上 3.2 的规则,如果客户使用 VPN Azure 云服务的发送或接收 VPN 数据包,实际的有效载荷将在很短的时间通过服务器的易失性存储器存储和转发。这样的行为自然需要提供 "VPN 中继服务" 。无有效载荷将被记录在 "固定的" 储存设备,如硬盘驱动器。然而, "窃听罪犯程序法" (日本在 1999 年 8 月 18 日裁决的第 137 个立法) 要求电信公司允许日本政府当局进行在线窃听。物理放置在日本的 VPN Azure 服务器也是服从于这个法律。
|
||||
|
||||
3.4. 符合日本电信法
|
||||
SoftEther 公司符合日本电信法必要时通过互联网提供在线服务。
|
||||
|
||||
3.5. 免费和学术实验服务
|
||||
SoftEther 作为学术实验服务提供动态 DNS、NAT 穿透和 VPN Azure。因此,服务可以被用于免费。这些服务不是 "SoftEther VPN 软件产品" 的一部分。这些服务不提供任何保证。这些服务由于技术或操作问题可能会被暂停或终止。在这种情况下,用户将无法使用这些服务。用户必须了解这些风险,并承认由用户自行承担这样的风险。SoftEther 永远不会对结果、或使用的损害、或服务无法使用承担任何责任。即使用户已经支付 SoftEther VPN 商业版的许可费用,因为支付的费用不包含这些服务的任何费用。因此,如果在线服务将停止或终止, SoftEther 公司将不提供任何退款或损害的补偿。
|
||||
|
||||
3.6. DNS 代理云服务器
|
||||
在某些地区,当用户使用互连网,通过 ISP 线路时,一个 DNS 查询有时损坏或丢失。如果 SoftEther VPN 的服务器、客户端或网桥检测到访问实际的 VPN 服务器可能不稳定的可能性,那么 DNS 查询将被转移到由 SoftEther 公司运行的 DNS 代理云服务器。DNS 代理云服务器将回答纠正一个 IP 地址响应 DNS 查询。
|
||||
|
||||
|
||||
4. 一般注意事项
|
||||
4.1. 需要网络管理员的批准
|
||||
SoftEther VPN 具有强大的功能,不需要网络管理员的特殊设置。例如,您不必要求管理员配置现有的防火墙以 "打开" TCP / UDP 端口。这些性能特点是为了以下目的:消除网络管理员的工作时间和成本,并避免误配置风险,如在防火墙上打开特定的异常端口的任务。然而,在安装 SoftEther VPN 前,属于公司的任何员工必须获得网络管理员的批准。如果您的网络管理员忽略提供这样的批准,你可以考虑获得上级领导的批准。(例如,该公司总裁。) 如果您没有获得公司领导的批准使用 SoftEther VPN ,你可能有不利的条件。SoftEther 公司将不会对使用 SoftEther VPN 的结果或损害承担责任。
|
||||
|
||||
4.2. 遵守贵国的法律
|
||||
如果您所在国家的法律禁止加密的使用,你自己必须禁用 SoftEther VPN 的加密功能。同样,在一些国家或地区, SoftEther VPN 的某些功能可能会被法律禁止使用。其他国家的法律与 SoftEther 公司无关,因为 SoftEther 公司是一个在物理上位于并注册于日本的企业。例如,可能存在一种风险,即 SoftEther VPN 的一部分与只在某些特定区域有效的现有专利冲突。SoftEther 公司没有在日本固有领土之外这些特定区域的利益。因此,如果你想在日本以外的地区使用 SoftEther VPN ,你必须要小心不要侵犯第三人的权利。在您在这样的地区实际使用之前,您必须验证在这些特定区域使用 SoftEther VPN 的合法性。本来,在世界上有近 200 个国家,每个国家的法律都是不同的。这几乎是不可能的事先验证每一个国家的法律和法规,使软件符合所有国家的法律,再发布软件。因此 SoftEther 公司已核实 SoftEther VPN 仅对日本法律和法规的合法性。如果用户在一个特定的国家使用 SoftEther VPN , SoftEther 公司将不会赔偿政府当局的损害,也不会承担恢复或赔偿此类损害或刑事法律责任。
|
||||
|
||||
|
||||
5. VPN Gate 学术实验项目
|
||||
(本章仅适用于 SoftEther VPN 软件包,其中包含 VPN Gate 学术实验项目的扩展插件。)
|
||||
5.1. 关于 VPN Gate 学术实验项目
|
||||
VPN Gate 学术实验项目是一个在线服务,由日本筑波大学研究生院为学术研究目的运营。本研究的目的是要扩大我们对 "全球分布式公共 VPN 中继服务器" 技术 (Global Distributed Public VPN Relay Server, GDPVRS) 的认识。有关详细信息,请访问 http://www.vpngate.net/。
|
||||
|
||||
5.2. 关于 VPN Gate 服务
|
||||
SoftEther VPN 服务器和 SoftEther VPN 客户端可能含有 "VPN Gate 服务" 程序。然而, VPN Gate 服务在默认情况下是禁用的。
|
||||
VPN Gate 服务通过安装了 SoftEther VPN 服务器或 SoftEther VPN 客户端的计算机所有者的志愿目的被激活并启用。在您激活 VPN Gate 服务以后,计算机将作为全球分布式公共 VPN 中继服务器的一部分开始服务。计算机的 IP 地址、主机名和相关信息将被发送并在 VPN Gate 学术实验项目的服务器目录注册,这些信息将被公布,并向公众披露。这一机制将允许任何 VPN Gate 客户端软件的用户连接到您计算机上运行的 VPN Gate 服务。当在 VPN Gate 客户端和你的 VPN Gate 服务之间建立一个 VPN 会话, VPN Gate 客户端的用户可以发送 / 接收向互联网经由 VPN Gate 服务的任何 IP 数据包。VPN Gate 服务的主机的全球 IP 地址将作为 VPN Gate 客户端启动的这种通信的源 IP 地址被使用。
|
||||
VPN Gate 服务将发送一些信息至 VPN Gate 学术实验服务目录服务器。这些信息包括第 5.5 节中描述的运营商的信息、日志设置、正常运行时间、操作系统版本、协议类型、端口号、质量信息、统计信息、VPN Gate 客户端的日志历史数据 (包括日期,IP 地址,版本号和 ID) 和软件的版本。这些信息将被批露在目录上。VPN Gate 服务从目录服务器接收到一个密钥以进行在 5.9 章中描述的编码。
|
||||
|
||||
5.3. VPN Gate 服务行为的详细信息
|
||||
如果您手动启用 VPN Gate 服务,在默认情况下是禁用的, "VPNGATE" 虚拟 Hub 将在 SoftEther VPN 服务器上被创建。如果您使用的是 SoftEther VPN 客户端,并尝试激活 VPN Gate 服务,相当于 SoftEther VPN 服务器的程序在 SoftEther VPN 客户端的同一进程将被调用,虚拟 HUB "VPNGATE" 将被创建。虚拟 HUB "VPNGATE" 包含一个默认情况下名为 "VPN" 的用户,此用户允许在互联网上的任何人建立 VPN 连接到虚拟 HUB。一旦 VPN 客户端连接到虚拟 HUB "VPNGATE" ,用户与互联网之间的任何通信将穿过虚拟 Hub ,使用运行有 SoftEther VPN 服务器 (或 SoftEther VPN 客户端) 的计算机上的物理网络接口发送 / 接收。这将导致以下结果,目标主机通过 VPN 客户端确定通信的源发起是从 VPN Gate 服务的主机的 IP 地址指定的。不过,为了安全,目的地是在 192.168.0.0/255.255.0.0 , 172.16.0.0/255.240.0.0 或 10.0.0.0/255.0.0.0 以内的任何数据包将被虚拟 HUB "VPNGATE" 拦截,以保护您的本地网络。因此,如果在您的企业网络或私人网络运行 VPN Gate 服务,这是安全的,因为匿名 VPN 客户端用户将不被允许访问这些私人网络。VPN Gate 服务也可作为中继访问 VPN Gate 目录服务器。
|
||||
为了使 VPN Gate 服务熟悉防火墙和 NAT ,通过使用 1.2 章描述的 NAT 穿透功能打开一个 UDP 端口。还打开了一些 TCP 端口并监听,一些 TCP 和 UDP 端口将被指定为本地路由器要求的通用即插即用 (UPnP) 传输条目的目标端口。UPnP 请求数据包将被定期发送。有些路由器在设备上永久保持一个开放的 TCP/UDP 端口。如果你想关闭他们,可以手动关闭。
|
||||
VPN Gate 服务还提供了镜像网站功能 www.vpngate.net。这是一种机制,将的最新内容 www.vpngate.net 的副本被托管的镜像站点微小的 HTTP 服务器上运行的 VPN Gate 服务程序。它都将自己注册上镜的站点列表中 www.vpngate.net。然而,它从来不向 www.vpngate.net 任何其他通讯中继。
|
||||
|
||||
5.4. 互联网之间经由 VPN Gate 服务的通信
|
||||
VPN Gate 服务提供了一个用户与互联网之间的路由,通过使用 2.8 章虚拟 NAT 功能。VPN Gate 服务发送 Ping 查询数据包到位于筑波大学的服务器,和被确定为 8.8.8.8 的谷歌公共 DNS 服务器,以检查您的互联网线路的最新质量。VPN Gate 服务还发送和接收大量的随机数据包到 / 从筑波大学的速度测试服务器上。这些高质量的数据将自动地、定期地被报告给 VPN Gate 目录服务器。结果将被保存并向公众披露。这些定期的查询通信被调整,尽量不占用互联网线路,但在某些情况下可能会占用线路。
|
||||
|
||||
5.5. VPN Gate 服务的运营商信息
|
||||
如果您激活您计算机上的 VPN Gate 服务,此计算机将成为全球分布式公共 VPN 中继服务器的一部分。因此,您的 VPN Gate 服务的运营商管理信息应被报告和注册到 VPN Gate 服务目录里。运营商的信息包含了运营商的名称、滥用报告、联系的 e-mail 地址。这些信息可以被输入到屏幕上的 VPN Gate 配置里。输入的信息将被发送到 VPN Gate 目录服务器,保存并向公众披露。所以,你必须要小心地输入信息。顺便说一下,直到你指定某名称作为运营商的信息,计算机的主机名会被自动使用作为运营商名称的字段,通过在主机名后附加 "'s owner" 字符串。
|
||||
|
||||
5.6. 遵守法律运营 VPN Gate 服务
|
||||
在某些国家或地区,正打算激活和运行 VPN Gate 服务的用户,他被强制要求从 / 到政府获得许可或注册服务。如果您所在的地区有这样的规定,你必须在激活 VPN Gate 服务之前,提前完成强制流程。无论是 VPN Gate 学术实验项目的开发者和运营商对于发生的未能遵守当地法律的法律 / 刑事责任或损害都不承担任何责任。
|
||||
|
||||
5.7. 保护通信的隐私
|
||||
大多数国家有一个法律要求通信服务的运营商,包括 VPN Gate 服务运营商,以保障第三方的通信隐私。当您运营 VPN Gate 服务时,你必须始终保护用户的隐私。
|
||||
|
||||
5.8. 数据包日志
|
||||
数据包日志功能在 VPN Gate 服务上实施。它记录通过虚拟 HUB 传输的主要 TCP/IP 数据包的基本包头。此功能将有助于了解连接您的 VPN Gate 服务用户的通信发起者的 "原始 IP 地址" ,通过检查数据包日志和连接日志。数据包日志记录的仅为合法调查的目的。不会偷看,也不会泄漏数据包日志,除非正当的目的。这种行为将违反 5.7 章。
|
||||
|
||||
5.9. 数据包日志的自动存档和编码功能
|
||||
VPN Gate 学术实验服务是根据日本宪法和法律运营和运行的。日本宪法法律要求严格保护通信的隐私权。由于这项服务是根据日本的规则, VPN Gate 服务的程序实现了此 "自动日志文件编码" 的保护机制,并默认启用。
|
||||
默认情况下, VPN Gate 服务当前自动配置编码已经过去了两周或以上的数据包日志文件。为了保护通信隐私,如果一个数据包日志文件一旦被编码,即使是本地计算机管理员也无法检查数据包日志文件。这种机制保护 VPN Gate 服务最终用户的隐私。
|
||||
您可以更改 VPN Gate 服务的设置,禁用此项自动编码功能。然后数据包日志文件将永远不会被编码,即使两个星期已过去。在这样的配置中,所有数据包日志将以纯文本形式保留在磁盘上。因此,你必须要注意不要侵犯用户的隐私。
|
||||
如果你负责解码已编码的数据包日志文件 (例如:一个 VPN Gate 服务的用户非法滥用你的 VPN Gate 服务,你必须解码数据包日志以符合法律) ,请联系日本筑波大学研究生院 VPN Gate 学术实验服务的管理员。你可以从 http://www.vpngate.net/ 找到联系地址。根据法律如果有从法院或其他司法当局适当的和法律的要求, VPN Gate 服务的管理员将响应解码数据包日志。
|
||||
|
||||
5.10. 在日本领土操作 VPN Gate 服务的注意事项
|
||||
当一个用户在日本领土操作 VPN Gate 服务时,这种行为会根据日本电信法加以规范,操作受法律管辖。然而,在这样的情况下,根据 "日本电信业务竞争手册 [补充版本]" ,非营利性的通信业务不被认为是 "电信业务" 。因此,通常 VPN Gate 服务的运营商不受制于 "电信业务经营者" ,不强制要求到政府注册。即便如此,保护通信隐私的合法性仍强制实行。作为一个结论,如果你在日本领土运营 VPN Gate 服务,你不能泄露经由你操作的 VPN Gate 服务传送的通讯秘密。
|
||||
|
||||
5.11. VPN Gate 客户端
|
||||
如果 SoftEther VPN 客户端包含 VPN Gate 客户端插件,你可以在互联网上用它来获得当前操作的 VPN Gate 服务的服务器列表,使一个 VPN 连接到列表上的特定服务器。
|
||||
VPN Gate 客户端始终定期保持 VPN Gate 服务的最新列表。要小心,如果你使用的是按使用量付费的互联网线路。
|
||||
当您启动 VPN Gate 客户端软件,要求你激活或不是 VPN Gate 服务的屏幕将出现。VPN Gate 服务的详细信息,请阅读上述各节。
|
||||
|
||||
5.12. 在加入或使用 VPN Gate 学术实验项目之前的注意事项
|
||||
VPN Gate 学术实验服务是作为日本筑波大学研究生院的一个研究项目运营的。该服务受日本法律管理。其他国家的法律不受我们关注也不承担责任。
|
||||
从本质上讲,在世界上有近 200 个国家,都有不同的法律。不可能在软件发布前去验证每一个国家的法律和法规,并使我们的软件符合所有国家的法律。如果用户在一个特定的国家使用 VPN Gate 服务,损坏公务人员的权力,服务或软件的开发者将永远不会负责恢复或补偿等损害或刑事责任。
|
||||
通过使用本软件和服务,用户有自己的义务必须遵守所有相关的法律和规则。用户将完全承担任何损失和使用本软件及服务导致的责任,无论日本领土以内还是以外。
|
||||
如果你不同意也不理解上述警告,不要使用任何 VPN Gate 学术实验服务功能。
|
||||
VPN Gate 仅仅是学术目的的一个研究项目。VPN Gate 是作为 SoftEtherVPN 和 UT-VPN 的一个插件被开发的。然而, VPN Gate 的每一部分都是在筑波大学的这一研究项目被开发的。VPN Gate 的任何部分都不是 SoftEther 公司开发的。VPN Gate 研究项目不是由 SoftEther 公司引导、经营,推广和保证的。
|
||||
|
||||
5.13. VPN Gate 客户端的 P2P 中继功能可加强针对防火墙管控的规避能力
|
||||
P2P 中继功能是为了加强规避防火墙管控的能力。如果 P2P 中继功能在您的 VPN Gate 客户端被启用,那么 P2P 中继功能将接受来自 VPN Gate 用户的 VPN 连接,提供中继功能给外部远程 VPN Gate 的服务器,这是由第三方在免费的互联网环境下托管的。此 P2P 中继功能从来不提供共享 NAT 功能,也不更换 VPN Gate 用户的传出 IP 地址为你的 IP 地址,因为这个 P2P 中继功能只提供 "反射服务" (发夹中继) ,从进入的 VPN Gate 用户中继到一个外部的 VPN Gate 服务器。在这种情况下,经由您的 P2P 中继功能的 VPN 隧道将终止于外部的 VPN Gate 服务器,而不是你的 VPN Gate 客户端。然而, VPN Gate 服务器作为最终目的地将记录您的 IP 地址作为通过您的 P2P 中继功能发起的 VPN 隧道的源 IP 地址。此外,经由你的 P2P 中继功能传输的用户数据包将被记录在您的计算机的数据包日志上,如 5.8 章所述。当您安装了 VPN Gate 客户端之后,如果将 P2P 中继功能设置为自动启用,那么在 5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,5.10,5.11 和 5.12 章节中的所有事项将被应用于你的电脑,与您启用 VPN Gate 服务 (VPN Gate 服务器功能) 时的情况相同。如果你的 P2P 功能被启用,那么在第 5.5 章节中描述的您的计算机 IP 地址和默认运营商名字将被列在由 VPN Gate 项目提供的 VPN Gate 服务器列表上。您可以通过手动编辑 "vpn_gate_relay.config" 文件更改这些字符串。需要注意的是,在编辑之前您需要停止 VPN 客户端服务。如果 VPN Gate 客户端检测到您的计算机位于存在审查制度的防火墙区域, VPN 客户端会自动启用您的计算机上的 P2P 中继功能。如果您希望禁用 P2P 中继功能,您必须在 VPN 客户端的配置文件 "vpn_client.config" 上设置 "DisableRelayServer" 标志为 "true" 。需要注意的是,编辑它之前您需要停止 VPN 客户端服务。即使您的国家或地区有法律限制运行 P2P 中继功能, VPN Gate 客户端仍会激活 P2P 中继功能。如果您身处于存在这些法律限制的区域,请您遵守相关法律法规,通过设置 "DisableRelayServer" 标志手动禁用 VPN Gate 客户端的 P2P 中继功能。
|
||||
|
139
src/bin/hamcore/warning_en.txt
Normal file
139
src/bin/hamcore/warning_en.txt
Normal file
@ -0,0 +1,139 @@
|
||||
THE IMPORTANT NOTICES ABOUT SOFTETHER VPN
|
||||
|
||||
FUNCTIONS OF VPN COMMUNICATIONS EMBEDDED ON THIS SOFTWARE ARE VERY POWERFUL THAN EVER. THIS STRONG VPN ABILITY WILL BRING YOU HUGE BENEFITS. HOWEVER, IF YOU MISUSE THIS SOFTWARE, IT MIGHT DAMAGE YOURSELF. IN ORDER TO AVOID SUCH RISKS, THIS DOCUMENT ACCOUNTS IMPORTANT NOTICES FOR CUSTOMERS WHO ARE WILLING TO USE THIS SOFTWARE. THE FOLLOWING INSTRUCTIONS ARE VERY IMPORTANT. READ AND UNDERSTAND IT CAREFULLY. ADDITIONALLY, IF YOU ARE PLANNING TO USE THE DYNAMIC DNS, THE NAT TRAVERSAL OR THE VPN AZURE FUNCTIONS, READ THE SECTION 3.5 CAREFULLY. THESE FUNCTIONS ARE FREE SERVICES PROVIDED VIA THE INTERNET, ARE NOT GUARANTEED, AND ARE NOT INTENDED TO BE USED FOR BUSINESS OR COMMERCIAL USE. DO NOT USE THESE SERVICES FOR YOUR BUSINESS OR COMMERCIAL USE.
|
||||
|
||||
|
||||
1. VPN Communication Protocols
|
||||
1.1. SoftEther VPN Protocol
|
||||
SoftEther VPN can perform VPN communication. Unlike traditional VPN protocols, SoftEther VPN has an implementation of the newly-designed "SoftEther VPN Protocol (SE-VPN Protocol)" . SE-VPN protocol encapsulates any Ethernet packets into a HTTPS (HTTP over SSL) connection. Therefore SE-VPN protocol can communicate beyond firewalls even if the firewall is configured to block traditional VPN packets by network administrator. SE-VPN protocol is designed and implemented to comply TLS 1.0 (RFC 5246) and HTTPS (RFC 2818). However, it sometimes have different behavior to RFCs. If you are a network administrator and want to block SE-VPN protocols on the firewall, you can adopt a "white-list" policy on the firewall to filter any TCP or UDP packets on the border except explicitly allowed packets towards specific web sites and servers.
|
||||
|
||||
1.2. NAT Traversal Function
|
||||
Generally, if you use traditional VPN systems you have to request a network administrator to make the NAT or firewall to "open" or "relay" specific TCP or UDP ports. However, there are demands somehow to eliminate such working costs on network administrators. In order to satisfy such demands, SoftEther VPN has the newly-implemented "NAT Traversal" function. NAT Traversal is enabled by default. A SoftEther VPN Server running on the computer behind NAT or firewall can accept VPN connections from the Internet, without any special configurations on firewalls or NATs. If you want to disable the NAT Traversal function, modify the "DisableNatTraversal" to "true" on the configuration file of SoftEther VPN Server. In order to disable it on the client-side, append "/tcp" suffix on the destination hostname.
|
||||
|
||||
1.3. Dynamic DNS Function
|
||||
Traditional legacy VPN system requires a static global IP address on the VPN server. In consideration of shortage of global IP addresses, SoftEther Corporation implements the "Dynamic DNS Function" on SoftEther VPN Server. Dynamic DNS is enabled by default. Dynamic DNS function notify the current global IP address of the PC to the Dynamic DNS Servers which are operated by SoftEther Corporation. A globally-unique hostname (FQDN) such as "abc.softether.net" ( "abc" varies as unique per a user) will be assigned on the VPN Server. If you tell this unique hostname to a VPN user, the user can specify it as the destination VPN Sever hostname on the VPN Client and will be able to connect the VPN Server. No IP addresses are required to know beforehand. If the IP address of the VPN Server varies, the registered IP address related to the hostname of Dynamic DNS service will be changed automatically. By this mechanism, no longer need a static global IP address which costs monthly to ISPs. You can use consumer-level inexpensive Internet connection with dynamic IP address in order to operate an enterprise-level VPN system. If you want to disable Dynamic DNS, specify "true" on the "Disabled" items of the "DDnsClient" directive on the SoftEther VPN Server configuration file. * Note for residents in People's Republic of China: If your VPN Server is running on the People's Republic of China, the DNS suffix will be replaced to "sedns.cn" domain. The "sedns.cn" domain is the service possessed and operated by "Beijing Daiyuu SoftEther Technology Co., Ltd" which is a Chinese-local enterprise.
|
||||
|
||||
1.4. VPN over ICMP / VPN over DNS functions
|
||||
If you want to make a VPN connection between SoftEther VPN Client / Bridge and SoftEther VPN Server, but if TCP and UDP packets are prohibited by the firewall, then you can encapsulates payloads into "ICMP" (as known as Ping) or "DNS" packets. This function can realize a VPN connection by using ICMP or DNS even if the firewall or router blocks every TCP or UDP connections. VPN over ICMP / VPN over DNS functions are designed to comply standard ICMP and DNS specifications as possible, however it sometimes has a behavior not to fully comply them. Therefore, few poor-quality routers may be caused a memory-overflow or something troubles when a lot of ICMP or DNS packets are passed, and such routers sometimes freezes or reboots. It might affects other users on the same network. To avoid such risks, append the suffix "/tcp" on the destination hostname which is specified on the VPN-client side to disable VPN over ICMP / DNS functions.
|
||||
|
||||
1.5. VPN Azure Cloud Service
|
||||
If your SoftEther VPN Server is placed behind the NAT or firewall, and by some reason you cannot use NAT Traversal function, Dynamic DNS function or VPN over ICMP/DNS function, you can use VPN Azure Cloud Service. SoftEther Corporation operates VPN Azure Cloud on Internet. After the VPN Server makes a connection to the VPN Azure Cloud, the hostname "abc.vpnazure.net" ( "abc" is a unique hostname) can be specified to connect to the VPN Server via the VPN Azure Cloud. Practically, such a hostname is pointing a global IP address of one of cloud servers which are operated by SoftEther Corporation. If A VPN Client connects to such a VPN Azure host, then the VPN Azure host will relay all traffics between the VPN Client and the VPN Server. VPN Azure is disabled by default. You can activate it easily by using VPN Server Configuration Tool.
|
||||
|
||||
1.6. UDP Acceleration
|
||||
SoftEther VPN has the UDP Acceleration Function. If a VPN consists of two sites detects that UDP channel can be established, UDP will be automatically used. By this function, throughput of UDP increases. If direct UDP channel can be established, direct UDP packets will be used. However, if there is something obstacles such as firewalls or NATs, the "UDP Hole Punching" technology will be used, instead. The "UDP Hole Punching" uses the cloud servers which SoftEther Corporation operates on Internet. UDP Acceleration can be disabled anytime by setting up so on the VPN-client side.
|
||||
|
||||
|
||||
2. VPN Software
|
||||
2.1. SoftEther VPN Client
|
||||
If you use SoftEther VPN Client on Windows, the Virtual Network Adapter device driver will be installed on Windows. The Virtual Network Adapter is implemented as a kernel-mode driver for Windows. The driver is digitally-signed by a certificate issued by VeriSign, Inc. and also sub-signed by Symantec Corporation. A message to ask you want to sure install the driver might be popped up on the screen. SoftEther VPN Client may response the message if possible. SoftEther VPN Client also optimizes the configuration of MMCSS (Multimedia Class Scheduler Service) on Windows. You can undo the optimizations of MMCSS afterwards.
|
||||
|
||||
2.2. SoftEther VPN Server / Bridge
|
||||
If you use SoftEther VPN Server / Bridge on Windows with "Local Bridge" functions, you have to install the low-level Ethernet packet processing driver on the computer. The driver is digitally-signed by a certificate issued by VeriSign, Inc. and also sub-signed by Symantec Corporation. SoftEther VPN Server / Bridge may disable the TCP/IP offloading features on the physical network adapter for Local Bridge function. In Windows Vista / 2008 or greater version, VPN Server may inject a packet-filter driver which complies Windows Filter Platform (WPF) specification into the kernel in order to provide IPsec function. The packet-filter driver will be loaded available only if IPsec function is enabled. Once you enables IPsec function of SoftEther VPN Server, the built-in IPsec function of Windows will be disabled. After you disabled IPsec function of SoftEther VPN Server, then the built-in IPsec function of Windows will revive. In order to provide the Local Bridge function, SoftEther VPN Server / Bridge disables the TCP/IP offloading function on the operating system.
|
||||
|
||||
2.3. User-mode Installation
|
||||
You can install SoftEther VPN Server and SoftEther VPN Bridge as "User-mode" on Windows. In other words, even if you don't have Windows system administrator's privileges, you can install SoftEther VPN as a normal user. User-mode install will disable a few functions, however other most functions work well. Therefore, for example, an employee can install SoftEther VPN Server on the computer in the office network, and he will be able to connect to the server from his home. In order to realize such a system by user-self, no system administrative privileges are required in the view-point of technical. However, breaking rules of the company to install software on the computer without authority might be regarded as an unfavorable behavior. If you are an employee and belong to the company, and the company-policy prohibits installing software or making communications towards Internet without permission, you have to obtain a permission from the network administrator or the executive officer of your company in advance to install SoftEther VPN. If you install VPN Server / Bridge as User-mode, an icon will be appeared on the Windows task-tray. If you feel that the icon disturbs you, you can hide it by your operation. However, you must not exploit this hiding function to install VPN Server on other person's computer as a spyware. Such behavior might be an offence against the criminal law.
|
||||
|
||||
2.4. Keep Alive Function
|
||||
SoftEther VPN Server and SoftEther VPN Bridge has Keep Alive Function by default. The purpose of this function is to sustain the Internet line active. The function transmits UDP packets with a random-byte-array-payload periodically. This function is useful to avoid automatic disconnection on mobile or dial-up connections. You can disable Keep Alive Function anytime.
|
||||
|
||||
2.5. Uninstallation
|
||||
The uninstallation process of SoftEther VPN software will delete all program files. However, non-program files (such as files and data which are generated by running of programs) ) will not be deleted. For technical reason, the exe and resource files of uninstaller might remain. Such remaining files never affects to use the computer, however you can delete it manually. Kernel-mode drivers might not be deleted, however such drivers will not be loaded after the next boot of Windows. You can use "sc" command of Windows to delete kernel-mode drivers manually.
|
||||
|
||||
2.6. Security
|
||||
You should set the administrator's password on SoftEther VPN Server / Bridge after installation. If you neglect to do it, another person can access to SoftEther VPN Server / Bridge and can set the password without your permission. This caution might be also applied on SoftEther VPN Client for Linux.
|
||||
|
||||
2.7. Automatic Update Notification
|
||||
SoftEther VPN software for Windows has an automatic update notification function. It accesses to the SoftEther Update server periodically to check whether or not the latest version of software is released. If the latest version is released, the notification message will be popped up on the screen. In order to achieve this purpose, the version, language settings, the unique identifier, the IP address of your computer and the hostname of VPN Server which is connected to will be sent to the SoftEther Update server. No personal information will be sent. Automatic Update Notification is enabled by default, however you can disable it on the configuration screen. The setting whether turned on or turned off will be saved individually corresponding to each destination VPN server, by VPN Server Manager.
|
||||
|
||||
2.8. Virtual NAT Function
|
||||
A Virtual Hub on SoftEther VPN Server / Bridge has "Virtual NAT Function" . Virtual NAT Function can share a single IP address on the physical network by multiple private IP address of VPN Clients. There are two operation mode of Virtual NAT: User-mode and Kernel-mode. In the user-mode operation, Virtual NAT shares an IP address which is assigned on the host operating system. Unlike user-mode, the kernel-mode operation attempts to find DHCP servers on the physical network. If there are two or more physical networks, a DHCP server will be sought automatically for each segments serially. If a DHCP server found, and an IP address is acquired, the IP address will be used by the Virtual NAT. In this case, an IP entry as a DHCP client will be registered on the IP pool of the physical DHCP Server. The physical default gateway and the DNS server will be used by the Virtual NAT in order to communicate with hosts in Internet. In kernel-mode operation, a Virtual Hub has a virtual MAC address which is operating on the physical Ethernet segment. In order to check the connectivity to Internet, SoftEther VPN periodically sends DNS query packet to resolve the IP address of host "www.yahoo.com" or "www.baidu.com" , and attempts to connect to the TCP port 80 of such a resulted IP address for connectivity check.
|
||||
|
||||
2.9. Unattended Installation of Kernel-mode Components
|
||||
When SoftEther VPN will detect a necessity to install the kernel-mode components on Windows, a confirmation message will be appeared by Windows system. In this occasion, SoftEther VPN software will switch to the Unattended Installation mode in order to respond "Yes" to Windows. This is a solution to prevent dead-locks when a remote-administration is performed from remote place.
|
||||
|
||||
2.10. Windows Firewall
|
||||
SoftEther VPN software will register itself as a safe-program. Such an entry will be remain after the uninstallation. You can remove it manually from the Control Panel of Windows.
|
||||
|
||||
|
||||
3. Internet Services
|
||||
3.1. Internet Services which are provided by SoftEther Corporation
|
||||
SoftEther Corporation provides Dynamic DNS, NAT Traversal and VPN Azure server services on the Internet. These services are free of charge. Customers can access to the services by using SoftEther VPN software, via Internet. These service will be planned to be available from Open-Source version of "SoftEther VPN" which will be released in the future.
|
||||
|
||||
3.2. Sent Information and Privacy Protection
|
||||
SoftEther VPN software may send an IP address, hostname, the version of VPN software on the customer's computer to the cloud service operated by SoftEther Corporation, in order to use the above services. These sending of information are minimal necessary to use the services. No personal information will be sent. SoftEther Corporation records log files of the cloud service servers for 90 days at least with the received information. Such logs will be used for troubleshooting and other legitimate activities. SoftEther Corporation may provide logs to a public servant of Japanese government who are belonging to courts, police stations and the prosecutor's office, in order to comply such authorities' order. (Every Japanese public servants are liable by law to keep the information close.) Moreover, the IP addresses or other information will be processed statistically and provided to the public, not to expose the each concrete IP address, in order to release the release of research activities.
|
||||
|
||||
3.3. Communication Data via VPN Azure Service
|
||||
Regardless of the above 3.2 rule, if the customer sends or receives VPN packets using VPN Azure Cloud Service, the actual payloads will stored and forwarded via the volatile memory of the servers for very short period. Such a behavior is naturally needed to provide the "VPN relay service" . No payloads will be recorded on "fixed" storages such as hard-drives. However, the "Wiretapping for Criminals Procedures Act" (The 137th legislation ruled on August 18, 1999 in Japan) requires telecommunication companies to allow the Japanese government authority to conduct a wire-tapping on the line. VPN Azure Servers which are physically placed on Japan are subjects of this law.
|
||||
|
||||
3.4. Comply to Japanese Telecommunication Laws
|
||||
SoftEther Corporation complies with Japanese Telecommunication Laws as necessary to provide online services via Internet.
|
||||
|
||||
3.5. Free and Academic Experiment Services
|
||||
SoftEther provides Dynamic DNS, NAT Traversal and VPN Azure as academic experiment services. Therefore, there services can be used for free of charge. These services are not parts of "SoftEther VPN Software Products" . These services are provided without any warranty. The services may be suspended or discontinued by technical or operational matters. In such occasions, users will not be able to use the services. A user have to understand such risks, and to acknowledge that such risks are borne by a user-self. SoftEther will never be liable to results or damages of use or unable-to-use of the service. Even if the user has already paid the license-fee of the commercial version of SoftEther VPN, such paid fees don't include any fees of these services. Therefore, if the online services will stop or be discontinued, no refunds or recoveries of damages will be provided by SoftEther Corporation.
|
||||
|
||||
3.6. DNS Proxy Cloud Servers
|
||||
In some regions, when a user uses Internet, a DNS query sometimes broken or lost when it is passing through the ISP line. If SoftEther VPN Server, Client or Bridge detects a possibility that the accessing to the actual VPN server might be unstable, then DNS queries will be also transferred to the DNS proxy cloud servers which are operated by SoftEther Corporation. A DNS proxy cloud server will respond DNS queries with answering correct a IP address.
|
||||
|
||||
|
||||
4. General Cautions
|
||||
4.1. Needs an Approval from Network Administrator
|
||||
SoftEther VPN has powerful functions which don't require special settings by network administrators. For example, you need not to ask the administrator to configure the existing firewall in order to "open" a TCP/UDP port. Such characteristic features are for the purpose to eliminate working times and costs of network administrators, and avoid misconfiguration-risks around the tasks to open specific exception ports on the firewall. However, any employees belong to the company have to obtain an approval from the network administrator before installs SoftEther VPN. If your network administrator neglects to provide such an approval, you can consider to take an approval from an upper authority. (For example, executive officer of the company.) If you use SoftEther VPN without any approvals from the authority of your company, you might have disadvantage. SoftEther Corporation will be never liable for results or damages of using SoftEther VPN.
|
||||
|
||||
4.2. Observe Laws of Your Country
|
||||
If your country's law prohibits the use of encryption, you have to disable the encryption function of SoftEther VPN by yourself. Similarly, in some countries or regions, some functions of SoftEther VPN might be prohibited to use by laws. Other countries' laws are none of SoftEther Corporation's concern because SoftEther Corporation is an enterprise which is located and registered in Japan physically. For example, there might be a risk that a part of SoftEther VPN conflicts an existing patent which is valid only on the specific region. SoftEther Corporation has no interests in such specific region outside Japan's territory. Therefore, if you want to use SoftEther VPN in regions outside Japan, you have to be careful not to violate third-person's rights. You have to verify the legitimacy of the use of SoftEther VPN in the specific region before you actually use it in such region. By nature, there are almost 200 countries in the World, and each country's law is different each other. It is practically impossible to verify every countries' laws and regulations and make the software comply with all countries' laws in advance to release the software. Therefore SoftEther Corporation has verified the legitimacy of SoftEther VPN against the laws and regulations of only Japan. If a user uses SoftEther VPN in a specific country, and damaged by public servants of the government authority, SoftEther Corporation will never be liable to recover or compensate such damages or criminal responsibilities.
|
||||
|
||||
|
||||
5. VPN Gate Academic Experiment Project
|
||||
(This chapter applies only on SoftEther VPN software package which contains the extension plug-in for VPN Gate Academic Experiment Project.)
|
||||
5.1. About VPN Gate Academic Experiment Project
|
||||
VPN Gate Academic Experiment Project is an online service operated for just the academic research purpose at the graduate school of University of Tsukuba, Japan. The purpose of this research is to expend our knowledge about the "Global Distributed Public VPN Relay Server" (GDPVRS) technology. For details, please visit http://www.vpngate.net/.
|
||||
|
||||
5.2. About VPN Gate Service
|
||||
SoftEther VPN Server and SoftEther VPN Client may contain "VPN Gate Service" program. However, VPN Gate Service is disabled by default.
|
||||
VPN Gate Service should be activated and enabled by the voluntary intention of the owner of the computer which SoftEther VPN Server or SoftEther VPN Client is installed on. After you activate VPN Gate Service, the computer will be start to serve as a part of the Global Distributed Public VPN Relay Servers. The IP address, hostname and related information of the computer will be sent and registered to the directory server of VPN Gate Academic Experiment Project, and they will be published and disclosed to the public. This mechanism will allow any VPN Gate Client software's user to connect to the VPN Gate Service running on your computer. While the VPN session between a VPN Gate Client and your VPN Gate Service is established, the VPN Gate Client's user can send/receive any IP packets towards the Internet via the VPN Gate Service. The global IP address of the VPN Gate Service's hosing computer will be used as the source IP address of such communications which a VPN Gate Client initiates.
|
||||
VPN Gate Service will send some information to the VPN Gate Academic Experiment Service Directory Server. The information includes the operator's information which described in section 5.5, logging settings, uptime, operating system version, type of protocol, port numbers, quality information, statistical information, VPN Gate clients' log history data (includes dates, IP addresses, version numbers and IDs) and the version of the software. These information will be exposed on the directory. VPN Gate Service also receives a key for encoding which is described on the chapter 5.9 from the directory server.
|
||||
|
||||
5.3. Details of VPN Gate Service's Behavior
|
||||
If you enable VPN Gate Service manually, which is disabled by default, the "VPNGATE" Virtual Hub will be created on the SoftEther VPN Server. If you are using SoftEther VPN Client and attempt to active VPN Gate Service on it, an equivalent program to SoftEther VPN Server will be invoked on the same process of SoftEther VPN Client, and the "VPNGATE" Virtual Hub will be created. The "VPNGATE" Virtual Hub contains a user named "VPN" by default which permits anyone on the Internet to make a VPN connection to the Virtual Hub. Once a VPN Client connects to the "VPNGATE" Virtual Hub, any communication between the user and the Internet will pass through the Virtual Hub, and transmitted/received using the physical network interface on the computer which SoftEther VPN Server (or SoftEther VPN Client) is running on. This will cause the result that a destination host specified by the VPN Client will identify that the source of the communication has initiated from the VPN Gate Service's hosting computer's IP address. However, for safety, any packets which destinations are within 192.168.0.0/255.255.0.0, 172.16.0.0/255.240.0.0 or 10.0.0.0/255.0.0.0 will be blocked by the "VPNGATE" Virtual Hub in order to protect your local network. Therefore, if you run VPN Gate Service on your corporate network or private network, it is safe because anonymous VPN Client users will not be permitted to access such private networks. VPN Gate Service also serves as relay for accessing to the VPN Gate Directory Server.
|
||||
In order to make VPN Gate Service familiar with firewalls and NATs, it opens an UDP port by using the NAT Traversal function which is described on the section 1.2. It also opens and listens on some TCP ports, and some TCP and UDP ports will be specified as the target port of Universal Plug and Play (UPnP) Port Transfer entries which are requested to your local routers. UPnP request packets will be sent periodically. Some routers keep such an opened TCP/UDP port permanently on the device. If you wish to close them, do it manually.
|
||||
VPN Gate Service also provides the mirror-site function for www.vpngate.net. This is a mechanism that a copy of the latest contents from www.vpngate.net will be hosted by the mirror-site tiny HTTP server which is running on the VPN Gate Service program. It will register itself on the mirror-sites list in www.vpngate.net. However, it never relays any other communications which are not towards www.vpngate.net.
|
||||
|
||||
5.4. Communication between Internet via VPN Gate Service
|
||||
VPN Gate Service provides a routing between users and the Internet, by using the Virtual NAT Function which is described on the section 2.8. VPN Gate Service sends polling Ping packets to the server which is located on University of Tsukuba, and the Google Public DNS Server which is identified as 8.8.8.8, in order to check the latest quality of your Internet line. VPN Gate Service also sends and receives a lot of random packets to/from the Speed Test Server on University of Tsukuba. These quality data will be reported to VPN Gate Directory Server, automatically and periodically. The result will be saved and disclosed to the public. These periodical polling communication are adjusted not to occupy the Internet line, however in some circumstances they might occupy the line.
|
||||
|
||||
5.5. Operator's Information of VPN Gate Service
|
||||
If you activate VPN Gate Service on your computer, the computer will be a part of the Global Distributed Public VPN Relay Servers. Therefore, the Operator's administrative information of your VPN Gate Service should be reported and registered on the VPN Gate Service Directory. Operator's information contains the name of the operator and the abuse-reporting contact e-mail address. These information can be inputted on the screen if the VPN Gate configuration. Inputted information will be transmitted to the VPN Gate Directory Server, stored and disclosed to the public. So you have to be careful to input information. By the way, until you specify something as the operator's information, the computer's hostname will be used automatically as the field of the name of the operator, by appending the "'s owner" string after the hostname.
|
||||
|
||||
5.6. Observe Laws to Operate VPN Gate Service
|
||||
In some countries or regions, a user who is planning to activate and operate VPN Gate Service, he are mandated to obtain a license or register a service from/to the government. If your region has such a regulation, you must fulfill mandated process before activating VPN Gate Service in advance. Neither the developers nor operators of the VPN Gate Academic Experiment Project will be liable for legal/criminal responsibilities or damages which are occurred from failure to comply your local laws.
|
||||
|
||||
5.7. Protect Privacy of Communication
|
||||
Most of countries have a law which requires communication service's operators, including VPN Gate Service operators, to protect the privacy of communication of third-persons. When you operate VPN Gate Service, you must always protect user's privacy.
|
||||
|
||||
5.8. Packet Logs
|
||||
The packet logging function is implemented on VPN Gate Service. It records essential headers of major TCP/IP packets which are transmitted via the Virtual Hub. This function will be helpful to investigate the "original IP address" of the initiator of communication who was a connected user of your VPN Gate Service, by checking the packet logs and the connection logs. The packet logs are recorded only for such legitimate investigates purpose. Do not peek nor leak packet logs except the rightful purpose. Such act will be violate the section 5.7.
|
||||
|
||||
5.9. Packet Logs Automatic Archiving and Encoding Function
|
||||
The VPN Gate Academic Experiment Service is operated and running under the Japanese constitution and laws. The Japanese constitution laws demand strictly protection over the privacy of communication. Because this service is under Japanese rules, the program of VPN Gate Service implements this "Automatic Log File Encoding" protection mechanism, and enabled by default.
|
||||
The VPN Gate Service is currently configured to encode packet log files which has passed two or more weeks automatically, by default. In order to protect privacy of communication, if a packet log file is once encoded, even the administrator of the local computer cannot censor the packet log file. This mechanism protects privacy of end-users of VPN Gate Service.
|
||||
You can change the VPN Gate Service setting to disable this automatic encoding function. Then packet log files will never be encoded even after two weeks passed. In such a configuration, all packet logs will remain as plain-text on the disk. Therefore you have to take care not to violate user's privacy.
|
||||
If you are liable to decode an encoded packet log files (for example: a VPN Gate Service's user illegally abused your VPN Gate Service and you have to decode the packet logs in order to comply the laws), contact the administrator of the VPN Gate Academic Experiment Service at Graduate School of University of Tsukuba, Japan. You can find the contact address at http://www.vpngate.net/. The administrator of VPN Gate Service will respond to decode the packet logs if there is an appropriate and legal request from court or other judicial authorities, according to laws.
|
||||
|
||||
5.10. Caution if You Operate VPN Gate Service in the Japan's Territories
|
||||
When a user operates VPN Gate Service in the Japan's territories, such an act may be regulated under the Japanese Telecommunication Laws if the operation is a subject to the law. However, in such a circumstance, according to the "Japanese Telecommunication Business Compete Manual [supplemental version]" , non- profitable operations of communications are not identified as a "telecommunication business" . So usual operators of VPN Gate Service are not subjects to "telecommunication business operators" , and not be mandated to register to the government. Even so, legalities to protect the privacy of communication still imposed. As a conclusion, if you operate VPN Gate Service in the Japan's Territories, you must not leak the secrets of communications which are transmitted via your operating VPN Gate Service.
|
||||
|
||||
5.11. VPN Gate Client
|
||||
If SoftEther VPN Client contains the VPN Gate Client plug-in, you can use it to obtain the list of current operating VPN Gate Service servers in the Internet, and make a VPN connection to a specific server on the list.
|
||||
VPN Gate Client always keeps the latest list of the VPN Gate Services periodically. Be careful if you are using a pay-per-use Internet line.
|
||||
When you start the VPN Gate Client software, the screen which asks you activate or not VPN Gate Service will be appeared. For details of VPN Gate Service, read the above sections.
|
||||
|
||||
5.12. Caution before Joining or Exploiting VPN Gate Academic Experiment Project
|
||||
The VPN Gate Academic Experiment Service is operated as a research project at the graduate school on University of Tsukuba, Japan. The service is governed under the Japanese laws. Other countries' laws are none of our concerns nor responsibilities.
|
||||
By nature, there are almost 200 countries in the World, with different laws. It is impossible to verify every countries' laws and regulations and make the software comply with all countries' laws in advance to release the software. If a user uses VPN Gate service in a specific country, and damaged by public servants of the authority, the developer of either the service or software will never be liable to recover or compensate such damages or criminal responsibilities.
|
||||
By using this software and service, the user must observe all concerned laws and rules with user's own responsibility. The user will be completely liable to any damages and responsibilities which are results of using this software and service, regardless of either inside or outside of Japan's territory.
|
||||
If you don't agree nor understand the above warnings, do not use any of VPN Gate Academic Experiment Service functions.
|
||||
VPN Gate is a research project for just academic purpose only. VPN Gate was developed as a plug-in for SoftEther VPN and UT-VPN. However, all parts of VPN Gate were developed on this research project at University of Tsukuba. Any parts of VPN Gate are not developed by SoftEther Corporation. The VPN Gate Research Project is not a subject to be led, operated, promoted nor guaranteed by SoftEther Corporation.
|
||||
|
||||
5.13. The P2P Relay Function in the VPN Gate Client to strengthen the capability of circumvention of censorship firewalls
|
||||
VPN Gate Clients, which are published since January 2015, include the P2P Relay Function. The P2P Relay Function is implemented in order to strengthen the capability of circumvention of censorship firewalls. If the P2P Relay Function in your VPN Gate Client is enabled, then the P2P Relay Function will accept the incoming VPN connections from the VPN Gate users, which are located on mainly same regions around you, and will provide the relay function to the external remote VPN Gate Servers, which are hosted by third parties in the free Internet environment. This P2P Relay Function never provides the shared NAT functions nor replaces the outgoing IP address of the VPN Gate users to your IP addresses because this P2P Relay Function only provides the "reflection service" (hair-pin relaying), relaying from incoming VPN Gate users to an external VPN Gate Server. In this situation, VPN tunnels via your P2P Relay Function will be finally terminated on the external VPN Gate Server, not your VPN Gate Client. However, the VPN Gate Server as the final destination will record your IP address as the source IP address of VPN tunnels which will be initiated by your P2P Relay Function. Additionally, user packets which are transmitted via your P2P Relay Function will be recorded on your computer as packet logs as described on the section 5.8. After you installed the VPN Gate Client, and if the P2P Relay Function will be enabled automatically, then all matters on the 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.10, 5.11 and 5.12 sections will be applied to you and your computer, as same to the situation when you enabled the VPN Gate Service (the VPN Gate Server function). If your P2P Function is enabled, then your computer's IP address and the default operator's name which is described on the section 5.5 will be listed on the VPN Gate Server List which is provided by the VPN Gate Project. You can change these strings by editing the "vpn_gate_relay.config" file manually. Note that you need to stop the VPN Client service before editing it. The VPN Gate Client will automatically enable the P2P Relay Function on your computer if the VPN Gate Client detects that your computer might be located in regions where there are existing censorship firewalls. If you want to disable the P2P Relay Function, you must set the "DisableRelayServer" flag to "true" on the "vpn_client.config" file which is the configuration file of the VPN Client. Note that you need to stop the VPN Client service before editing it. The VPN Gate Client does not recognize the particular regulation of your country or your region. The VPN Gate Client activates the P2P Relay Function even if your country or your region has the law to restrict running P2P relay functions. Therefore, in such a case, you must disable the P2P Relay Function on the VPN Gate Client manually by setting the "DisableRelayServer" flag if you reside in such a restricted area, in your own responsibility.
|
||||
|
141
src/bin/hamcore/warning_ja.txt
Normal file
141
src/bin/hamcore/warning_ja.txt
Normal file
@ -0,0 +1,141 @@
|
||||
SoftEther VPN に関する重要事項説明書
|
||||
|
||||
本ソフトウェアの VPN 通信機能はかつてないほど極めて強力であり、正しい使い方によりお客様は大きな利便性と利益を手にすることができます。しかし、誤った使い方を行うと不利益が発生する危険もあります。そのような危険を避けるため、本ソフトウェアのご使用に際してお客様が事前に説明を受けるべき事項を以下に記載いたします。この内容は大変重要ですから、十分理解されるようお願いいたします。また、ダイナミック DNS、NAT トラバーサルまたは VPN Azure 機能をご使用いただく前には下記の 3.5 節の注意書きをよくお読みください。この 3 つの機能はインターネット経由で提供される無償の無保証の学術実験サービスであり、障害の発生が許されないような業務において使用することは想定されておりません。
|
||||
|
||||
|
||||
1. VPN 通信について
|
||||
1.1. SoftEther VPN プロトコルについて
|
||||
SoftEther VPN は VPN 通信を行うことができます。伝統的な VPN プロトコルとは異なり、SoftEther VPN には新たに設計された「SoftEther VPN プロトコル (SE-VPN プロトコル) 」が搭載されています。SE-VPN プロトコルは任意のパケットを HTTPS (HTTP over SSL) パケットにカプセル化して送受信します。これにより、既存のファイアウォールがネットワーク管理者によって通常の VPN プロトコルを通過しないように設定されている場合であっても、SE-VPN プロトコルは大抵の場合は通過します。SE-VPN プロトコルは TLS 1.0 (RFC 5246) および HTTPS (RFC 2818) に準拠するように実装されていますが、一部非準拠の動作を行う場合もあります。もしあなたがネットワーク管理者であり、ファイアウォールで SE-VPN プロトコルの通信を遮断したいと希望される場合は、ファイアウォールにホワイトリストルールを適用することにより、境界上を流れるすべての無許可の TCP および UDP パケットを遮断し、一部許可した Web サイトやサーバー等との間の通信のみ許可するように設定することでその希望を実現できます。
|
||||
|
||||
1.2. NAT トラバーサル機能について
|
||||
従来の VPN システムの場合、NAT やファイアウォールの内側に VPN サーバーを設置する場合はネットワーク管理者に依頼して NAT やファイアウォールにおいて「ポート開放」や「ポート転送」といった設定を行ってもらう必要があります。しかし、ネットワーク管理者にそのような手間をかけずに社内の自分のコンピュータに VPN サーバーをインストールし社外から接続したいという需要に応えるため、SoftEther VPN には強力な「NAT トラバーサル機能」が搭載されています。NAT トラバーサル機能はデフォルトで有効になっています。NAT トラバーサル機能が有効に設定されている SoftEther VPN Server は、たとえ NAT やファイアウォールの内側であっても、特別な設定なしにインターネット側から VPN 接続を受付けることができます。NAT トラバーサル機能をサーバー側で無効にするには、SoftEther VPN Server の設定ファイルの「DisableNatTraversal」項目の値を「true」に変更してください。クライアント側で無効にするには、接続先の VPN サーバーのホスト名の後に「/tcp」というサフィックスを追加してください。
|
||||
|
||||
1.3. ダイナミック DNS 機能について
|
||||
従来の VPN システムの場合、VPN サーバーには固定のグローバル IP アドレスを割当てる必要がありました。ソフトイーサ社はグローバル IP アドレスの枯渇に配慮するため、SoftEther VPN Server に「ダイナミック DNS 機能」を搭載しました。ダイナミック DNS 機能はデフォルトで有効になっています。ダイナミック DNS 機能は現在の SoftEther VPN Server が動作しているコンピュータのグローバル IP アドレスを、ソフトイーサ社が運用するダイナミック DNS サーバーに対して定期的に通知します。この際に、「abc.softether.net」 ( "abc" 部分は利用者が変更可能な任意のユニークな ID) という全世界から利用可能なホスト名 (FQDN) が割当てられます。ホスト名を知らされた VPN の利用者は、ホスト名を指定するだけで、現在の IP アドレスを知らなくてもいつでも VPN サーバーにアクセスできます。IP アドレスが変化した場合は、ダイナミック DNS サービスのホスト名に対応する IP アドレスが自動的に変化します。これにより、固定グローバル IP アドレスが不要になり、毎月発生する高額な ISP への通信コストを削減でき、法人利用であってもコンシューマ向けの安価な可変 IP アドレス接続が利用できるようになります。ダイナミック DNS 機能を無効にするには、SoftEther VPN Server の設定ファイルの「DDnsClient」ディレクティブ内の「Disabled」項目の値を「true」に変更してください。中華人民共和国でご利用される場合の注意: DNS サフィックスは中華人民共和国内で利用する場合は「sedns.cn」というドメイン名に置換されます。sedns.cn ドメインは中国企業 (北京大游索易有限公司) が運営・管理しているサービスです。
|
||||
|
||||
1.4. VPN over ICMP 機能および VPN over DNS 機能について
|
||||
SoftEther VPN Client / Bridge が SoftEther VPN Server との間で VPN 通信を行おうとする場合、TCP と UDP の両方のプロトコルが通信できない場合のために、VPN を「ICMP」 (いわゆる Ping) および「DNS」パケットにカプセル化して通信する機能が実装されています。この機能により、ネットワーク経路上のルータやファイアウォールなどが TCP や UDP の通信を遮断してしまう場合でも、ICMP または DNS の通信が可能であれば VPN 接続を行うことができます。VPN over ICMP 機能および VPN over DNS 機能は、ICMP や DNS の規格にできる限り準拠するように設計されていますが、一部非準拠の動作を行う場合もあります。一部の設計不良のルータは大量の ICMP や DNS パケットが通過するとメモリオーバーフローなどを発生し、フリーズしたり再起動したりする場合があります。これは他の利用者にも悪影響を与える可能性があります。このようなリスクを避けるために VPN over ICMP 機能および VPN over DNS 機能を無効にするには、VPN 接続元の側で接続先のホスト名文字列の後に「/tcp」というサフィックスを追加してください。
|
||||
|
||||
1.5. VPN Azure クラウドサービスについて
|
||||
SoftEther VPN Server が NAT やファイアウォールの内側にあり、何らかの理由で NAT トラバーサル機能、ダイナミック DNS 機能および VPN over ICMP/DNS 機能を利用できない場合は、VPN Azure クラウドサービスを利用できます。ソフトイーサ社はインターネット上で VPN Azure クラウドを運用しています。VPN Server は VPN Azure クラウドに一度接続すれば、それ以降は「abc.vpnazure.net」 (abc はユニークなホスト名) というホスト名が割当てられます。このホスト名は実際にはソフトイーサが運営するクラウドサーバーのグローバル IP アドレスに関連付けられています。VPN クライアントはこの VPN Azure ホストに対して接続することにより、VPN Azure は通信を折り返し中継して VPN サーバーに届けます。VPN Azure 機能はデフォルトで無効になっていますが、VPN Server 管理ツールで簡単に有効化することができます。
|
||||
|
||||
1.6. UDP 高速化機能について
|
||||
SoftEther VPN には UDP 高速化機能が搭載されています。VPN を構築する 2 拠点間で UDP チャネルの構築が可能であることが検出された場合は、自動的に UDP による通信を行います。これにより VPN のスループットが向上します。UDP チャネルの構築の際には、直接的な UDP パケットの伝送が可能な場合はそれを使いますが、途中に NAT やファイアウォールがあることが検出された場合は代わりに「UDP ホールパンチング」を使用します。UDP ホールパンチングが使用される場合には、インターネット上のソフトイーサ社が運営する UDP ホールパンチングサーバーが利用されます。UDP 高速化機能は、VPN 接続元の側の設定でいつでも無効にすることができます。
|
||||
|
||||
|
||||
2. VPN ソフトウェアについて
|
||||
2.1. SoftEther VPN Client
|
||||
SoftEther VPN Client を Windows で使用する場合は、仮想 LAN カードをコンピュータにインストールする必要があります。仮想 LAN カードは Windows 上で動作するカーネルモードドライバとして実装されています。当該ドライバは VeriSign 社の発行する証明書によってデジタル署名されており、Symantec 社による副署名もされています。ドライバのインストール時には本当にドライバをインストールするかどうかの確認メッセージが表示される場合があります。SoftEther VPN Client は可能な場合は自動的に当該確認メッセージに応答します。SoftEther VPN Client はインストール時に通信を最適化するため Windows の MMCSS (Multimedia Class Scheduler Service) の設定を最適化します。MMCSS の設定の最適化は後から元に戻すことができます。
|
||||
|
||||
2.2. SoftEther VPN Server / Bridge
|
||||
SoftEther VPN Server / Bridge を Windows で使用する場合で「ローカルブリッジ機能」を使用する場合は、低レイヤ Ethernet パケット送受信ドライバをコンピュータにインストールする必要があります。当該ドライバは VeriSign 社の発行する証明書によってデジタル署名されており、Symantec 社による副署名もされています。SoftEther VPN Server / Bridge はローカルブリッジのために物理的な LAN カードの TCP/IP オフローディング機能を無効にする場合があります。Windows Vista / 2008 以降のバージョンでは、VPN Server が IPsec 機能を提供するために Windows Filter Platform (WFP) に適合したパケットフィルタドライバをカーネルモードに挿入します。このパケットフィルタドライバは IPsec 機能を有効にした場合のみロードされます。SoftEther VPN Server の IPsec 機能を有効にすると、Windows 標準の IPsec 機能は利用できなくなります。ただし、SoftEther VPN Server の IPsec 機能を無効にすると、この現象は元に戻ります。SoftEther VPN Server / Bridge はローカルブリッジ機能を使用するために OS の TCP/IP オフローディング機能を無効に設定します。
|
||||
|
||||
2.3. ユーザーモードでのインストール
|
||||
SoftEther VPN Server および SoftEther VPN Bridge は Windows にユーザーモードでインストールすることができます。つまり、社内 PC などで Windows のシステム管理者権限を持っていない一般ユーザーであってもインストールを行えます。ユーザーモードでインストールを行うと一部の機能が制限されますが、大部分の機能は正常に動作します。これにより、たとえば社員が社内 PC に一般ユーザーとして VPN Server をインストールし、自宅から社内 LAN にアクセスすることもできます。技術的にはシステム管理者特権は一切不要ですが、だからといって企業の規則に反して勝手に VPN サーバーを構築することは好ましくない場合もあります。あなたが企業に所属する社員の場合で、企業の規則で無断のソフトウェアのインストールや外部との通信が禁止されている場合は、事前に企業の経営者またはネットワーク管理者から明示的な同意を得てからユーザーモードでのインストール作業を行ってください。ユーザーモードで VPN Server / VPN Bridge が動作している間は、Windows のタスクトレイにアイコンが表示されます。このアイコンが邪魔であると感じる場合は、ユーザーによる操作により非表示にすることもできます。ただし、この機能を悪用して他人のコンピュータに VPN Server を勝手にインストールし、スパイウェアとして利用してはなりません。そのような行為は法律に違反することになります。
|
||||
|
||||
2.4. キープアライブ通信
|
||||
SoftEther VPN Server および SoftEther VPN Bridge ではデフォルトでインターネット回線を活性化したままにしておくためのキープアライブ通信機能が有効にされています。この機能により、インターネットに対して定期的にランダムな内容の UDP パケットを送信します。この機能は、モバイル回線やダイヤルアップ回線などが自動的に切断されてしまうことを防止するために有益です。キープアライブ通信機能はいつでも無効にできます。
|
||||
|
||||
2.5. アンインストール
|
||||
SoftEther VPN ソフトウェアをアンインストールする場合は、プログラムファイルはすべて削除されます。ただし、プログラムファイル以外のファイル (たとえばプログラムの動作によって作成されたファイルやデータ) は削除されません。また、技術的な理由により、アンインストーラ本体の EXE ファイルおよびリソースファイルも削除されずに残る場合があります。これらのファイルが残留することはコンピュータの利用上悪影響はありませんが、お好みに応じて手動で削除することもできます。また、カーネルモードドライバも削除されない場合がありますが、次回 Windows 起動時から主要コードはメモリにロードされず無効になります。カーネルモードドライバも Windows の「sc」コマンドを用いてお好みに応じて手動で削除することができます。
|
||||
|
||||
2.6. セキュリティ
|
||||
SoftEther VPN Server / Bridge をインストールした後は、速やかに管理者パスワードを設定してください。管理者パスワードが空白のまま放置すると、第三者が勝手に管理者モードで SoftEther VPN Server / Bridge に接続して管理者パスワードを設定したり、設定を変更したりすることができます。この注意事項は、Linux 版の SoftEther VPN Client にも適用されます。
|
||||
|
||||
2.7. アップデート通知機能
|
||||
Windows 版の SoftEther VPN ソフトウェアには、アップデート通知機能が搭載されています。ソフトイーサ社の SoftEther Update サーバーに対して定期的に HTTP で通信を行い、最新版のソフトウェアがリリースされていないかどうかを確認します。もし最新版がリリースされている場合は、その旨を画面上に表示します。この目的を達成するために、現在のソフトウェアのバージョン、言語、固有識別子、IP アドレスおよび接続先 VPN サーバーのアドレスが SoftEther Update サーバーに対して送信されます。個人情報は一切送信されません。アップデート通知機能はデフォルトで有効になっていますが、設定画面からオフにすることもできます。オン / オフの設定は、VPN サーバー管理マネージャの場合は接続先の VPN サーバーごとに保存されます。
|
||||
|
||||
2.8. 仮想 NAT 機能
|
||||
SoftEther VPN Server / VPN Bridge の仮想 HUB には「仮想 NAT 機能」が搭載されています。仮想 NAT 機能は、1 個の物理的な IP アドレスを、複数個の仮想的なプライベート IP アドレスを割当てられた VPN Client で共有するための機能です。仮想 NAT 機能の動作モードにはユーザーモードとカーネルモードの 2 種類があります。ユーザーモードで動作する場合、NAT の外側の物理的な IP アドレスは、VPN Server を動作させるコンピュータの OS のインターフェイスが持つ IP アドレスを共有します。これと異なり、カーネルモードで動作する場合は、VPN Server はコンピュータに装着されている物理的な Ethernet ネットワークアダプタをスキャンし、利用可能な IP アドレスを 1 個、物理的な Ethernet セグメント上の DHCP サーバーから取得しようと試みます。IP アドレスの取得に成功した場合は、その IP アドレスが仮想 NAT によって使用されます。この場合、物理的な DHCP サーバー上の IP プールに DHCP クライアントエントリが作成されます。物理的な Ethernet セグメント上のデフォルトゲートウェイおよび DNS サーバーが仮想 NAT を経由したインターネットとの間の通信のために使用されます。カーネルモードで動作する場合は、仮想 NAT は物理的な Ethernet セグメント上で 1 個の仮想 MAC アドレスを持ちます。カーネルモード NAT の動作が可能かどうかを判断するため、VPN Server は定期的にインターネットへの接続性をチェックします。接続性のチェックのためには、www.yahoo.com または www.baidu.com というホスト名への DNS クエリの応答の検査と、応答された IPv4 アドレス宛の TCP ポート 80 への接続の検査が実施されます。
|
||||
|
||||
2.9. カーネルモードコンポーネントの自動セットアップ
|
||||
SoftEther VPN ソフトウェアが Windows にカーネルモードコンポーネントをインストールする必要があることが検出された場合、インストールを行うか否かを確認するメッセージが Windows によって表示される場合があります。この場合、SoftEther VPN ソフトウェアは自動的に無人セットアップモードに移行し、Windows に対してインストールを行う旨を応答します。これは、リモートから SoftEther VPN ソフトウェアを管理する際にリモート管理通信が切断され、デッドロックが発生してしまうことを防止するための措置です。
|
||||
|
||||
|
||||
2.10. Windows Firewall への登録
|
||||
SoftEther VPN ソフトウェアは、Windows Firewall に対して SoftEther VPN ソフトウェアを安全なプログラムとして自動的に登録します。この登録は、アンインストール後も残存する場合があります。登録を解除したい場合は、Windows のコントロールパネルを用いて手動で設定してください。
|
||||
|
||||
3. インターネットサービスについて
|
||||
3.1. ソフトイーサ社が提供するインターネットサービスの内容
|
||||
ソフトイーサ社は、「ダイナミック DNS」、「NAT トラバーサル」および「VPN Azure」サービスを無償で提供します。これらのサービスには SoftEther VPN のユーザーはソフトウェア内の実装を通じてインターネット経由でアクセスすることができます。これらのサービスは今後公開される予定のオープンソース版「SoftEther VPN」からも利用可能になる予定です。
|
||||
|
||||
3.2. 送信される情報とプライバシーの保護
|
||||
SoftEther VPN ソフトウェアは、上記のサービスを利用するために、コンピュータの IP アドレス、ホスト名、VPN ソフトウェアのバージョン情報をソフトイーサ社の管理するクラウドサービス上に送信します。これらの情報は上記サービスを実現するために最低限必要なものです。一切の個人情報は送信されません。ソフトイーサ社はクラウドサービス上に蓄積された上記の IP アドレス等の情報を最低 90 日間ログに記録する場合があります。これはサービスの利用に技術的な問題が発生した場合の原因究明のために利用されます。ソフトイーサ社は当該ログ情報を日本国の裁判所または捜査機関による命令に従うためにこれらの機関の公務員 (日本国の公務員は日本国の法律により守秘義務を負わされています) に開示する場合があります。また、IP アドレスなどの情報は統計処理され、その統計結果は個別の具体的な IP アドレスが判別できないようにされた上で、インターネット上で研究成果として公表される場合があります。
|
||||
|
||||
3.3. VPN Azure を経由した通信データ
|
||||
お客様が VPN Azure クラウドサービスを経由して VPN 通信を行う場合、3.2 の規定にかかわらず、お客様の実際の通信ペイロードが VPN Azure クラウドサービスを構成するサーバー上のメモリにごく短い時間蓄積される場合があります。これは VPN Azure サービスを提供するために当然に必要なことでありますが、通信内容はディスクなどの固定領域に記録されることはありません。ただし、日本国の「犯罪捜査のための通信傍受に関する法律 (平成 11 年 8 月 18 日法律第 137 号) 」が定める裁判官の令状を携行した捜査官からの要請があった場合は当該通信が日本国政府の公務員 (日本国の公務員は日本国の法律により守秘義務を負わされています) によって傍受され記録される可能性があります。この規定は、VPN Azure サービスのサーバーが物理的に日本国に存在している場合にのみ適用されます。
|
||||
|
||||
3.4. 電気通信事業法の適用
|
||||
ソフトイーサ社は上記のサービスを日本国内で運用する場合において電気通信事業法の規定を受けるべき場合については電気通信事業法の規定に従い、総務大臣に届出または申請を行っております。
|
||||
|
||||
3.5. 無償で学術実験目的のサービス
|
||||
ソフトイーサは「ダイナミック DNS」、「NAT トラバーサル」および「VPN Azure」を学術実験目的で研究開発し運営しています。そのため、これらのサービスはすべて無料でご利用いただけます。これらのサービスは「SoftEther VPN ソフトウェア製品」の一部ではなく、付随するものでもありません。これらのサービスは一切の保証がない状態で提供されるものです。実験の休止、中止や実験中の技術的問題の発生によってサービスが中断する場合があります。その場合は、ユーザーはサービスを利用できなくなります。ユーザーはこのようなリスクがあること、およびそのリスクをユーザー自身が負担することを承諾いただいた上でこれらのサービスをご利用ください。ソフトイーサ社はユーザーがこれらのサービスを利用した結果、または利用できなかった結果について一切の責任を負いません。仮にお客様が SoftEther VPN ソフトウェアの商用製品を購入され、SoftEther VPN ソフトウェアのライセンス料金をお客様がすでにお支払いいただいている場合であっても、当該料金にはこれらのサービスの対価は含まれていません。これらのサービスが中断したり利用不能になったりした場合であっても、SoftEther VPN ソフトウェアのライセンス料金は一切返金されず、その他の損害賠償も提供されません。
|
||||
|
||||
3.6. DNS プロキシ
|
||||
いくつかの地域では、インターネットを利用する際、DNS クエリによる IP アドレスの取得が回線の通信不良によりしばしば誤った値を返すようです。SoftEther VPN Server, Client または Bridge を使用している場合で、本来の DNS サーバーへのアクセスができない、またはネットワーク上の途中の経路の DNS サーバーが動作不良を起こしている可能性がある場合が検出されたときは、DNS クエリはソフトイーサが運営する DNS プロキシサーバーに転送されます。DNS プロキシサーバーは本来の DNS サーバーに対してアクセスを行い、正確な IP アドレスを取得してその IP アドレスを呼出し元に返信します。
|
||||
|
||||
|
||||
4. その他の注意事項
|
||||
4.1. ネットワーク管理者による承諾の必要性
|
||||
SoftEther VPN はネットワーク管理者による特別な設定を必要とせずに動作するようにパワフルな機能が実装されています。たとえば、ネットワーク管理者にファイアウォールの設定の変更を依頼しなくても VPN 通信を行うことができます。SoftEther VPN のこうした特徴は、あくまでも技術的にネットワーク管理者による手間やコスト削減するため、またはファイアウォール設定の変更に伴う設定ミスなどの危険を防止するためのものです。企業に所属する社員は、SoftEther VPN を企業の管理するネットワーク内のコンピュータにインストールまたは使用する場合にあたっては、必ず事前にネットワーク管理者の許諾を得なければなりません。もしネットワーク管理者がそのような承諾を提供しない場合は、代わりにネットワーク管理者よりもより上位の権限を持った経営者から許諾を得ることを検討してください。これらの正当な許諾がない状態で SoftEther VPN を使用することは、お客様にとって不利益な結果となる場合があります。ソフトイーサ社は SoftEther VPN の使用によってお客様に生じた一切の責任を負いません。
|
||||
|
||||
4.2. 各地域における法律の遵守
|
||||
VPN 通信のような暗号化通信が法律で禁止されている国・地域では、SoftEther VPN を使用する場合は必ず暗号化機能をオフにして使用してください。この他、一部の国・地域では特定の方法での SoftEther VPN の利用が法律によって禁止されている場合があります。ソフトイーサ社は日本国に所在する法人ですので、他の国・地域に制定されている法令については一切関知しておりません。たとえば、SoftEther VPN の一部の機能が特定の国・地域でのみ有効な特許権を侵害している可能性もあります。ソフトイーサ社はその国・地域に関して特段の関心はありません。したがって、SoftEther VPN の機能がお客様の居住している国・地域において法的に利用可能であるかどうかは、お客様ご自身によって事前に十分検証の上ご利用ください。そもそも世界には 200 カ国近くの国が存在しており、それぞれの国における法律は互いに異なります。すべての国の法律を調査した上でそれらすべてに適合することを保証したソフトウェアをリリースすることは事実上不可能です。ソフトイーサ社は日本国の法律のみを調査し、日本国の法律下でおいて適法に利用可能なソフトウェアを提供することのみを目的に研究開発を行っております。万一お客様が SoftEther VPN の機能をお客様の居住している国・地域の領域内で利用されたことによって国家権力により法的なペナルティを科せられるなどの損害が発生した場合であっても、ソフトイーサ社は一切責任を負いません。
|
||||
|
||||
|
||||
5. VPN Gate 学術実験プロジェクト
|
||||
(この章は VPN Gate 学術実験プロジェクトに関する機能拡張プラグインが含まれているバージョンの SoftEther VPN にのみ適用されます。商用版の SoftEther VPN ソフトウェアには VPN Gate 機能拡張プラグインは含まれていませんので、この章の内容は関係ありません。)
|
||||
5.1. VPN Gate 学術実験プロジェクトについて
|
||||
VPN Gate 学術実験プロジェクトは、日本に所在する筑波大学大学院における学術的な研究を目的として実施されているオンラインサービスです。本研究は、グローバルな分散型公開 VPN 中継サーバーに関する知見を得ることを目的としています。詳しくは http://www.vpngate.net/ をご参照ください。
|
||||
|
||||
5.2. VPN Gate サービスについて
|
||||
SoftEther VPN Server および SoftEther VPN Client には「VPN Gate サービス」と呼ばれるプログラムが同梱されている場合があります。ただし、VPN Gate サービスはデフォルトで無効となっています。
|
||||
VPN Gate サービスは、SoftEther VPN Server または SoftEther VPN Client をインストールするコンピュータの所有者が、自らの意思に基づき、VPN Gate 学術実験に参加される場合にのみ有効にしてください。VPN Gate サービスを有効にすると、コンピュータは VPN Gate 学術実験サービスにおけるグローバルな分散型公開 VPN 中継サーバーとして動作を開始します。そして、コンピュータの IP アドレスやホスト名などの情報が筑波大学内で運用されている VPN Gate 学術実験サービスのディレクトリに登録され、公衆の閲覧に供されます。これにより、世界中にある VPN Gate Client と呼ばれるクライアントソフトウェアは当該 VPN Gate サービスが稼働している VPN サーバーコンピュータに対して VPN 接続を行うことができるようになります。VPN 接続が継続している期間中は、VPN Gate Client のコンピュータはすべての通信を VPN Gate サービスを経由してインターネットとの間で行うことができます。その際は、VPN Gate サービスを動作させているコンピュータのインターネット上におけるグローバル IP アドレスが、当該通信の発信元の IP アドレスとして使用されます。
|
||||
VPN Gate サービスは、VPN Gate 学術実験サービスのディレクトリサーバーに対して、5.5 の運営者情報、ログ設定、起動時間、OS の種類、プロトコルの種類、ポート番号、回線品質情報、統計情報、VPN Gate クライアントからの接続ログ (日時、IP アドレス、バージョン番号、ID) およびソフトウェアのバージョン情報を送信します。これらの情報はディレクトリ上で公衆の閲覧に供されます。また、VPN Gate サービスは 5.9 で説明されている機能のエンコードのためのキーを VPN Gate 学術実験サービスのディレクトリサーバーから受信します。
|
||||
|
||||
5.3. VPN Gate サービスの動作の詳細
|
||||
デフォルトで無効化されている VPN Gate サービスをユーザーの操作により有効にすると、SoftEther VPN Server 内に "VPNGATE" という名称の仮想 HUB が作成されます。SoftEter VPN Client 上において VPN Gate サービスを有効にしようとすると、まず SoftEther VPN Client 内の同一プロセス上で簡易的に動作する SoftEther VPN Server と同等のプログラムが起動し、その中で "VPNGATE" という名称の仮想 HUB が作成されます。当該仮想 HUB には "VPN" という名前のユーザーが作成され、匿名でインターネット上の誰でもが当該仮想 HUB に VPN 接続を行うことができるようになります。いったん "VPNGATE" 仮想 HUB に接続した VPN クライアントコンピュータが開始したすべての通信は "VPNGATE" 仮想 HUB を通過し、SoftEther VPN Server (または SoftEther VPN Client) が動作しているコンピュータの物理的なネットワークインターフェイスを経由してインターネットに対して伝送されます。そのため、インターネット上の宛先ホストは、あたかも当該通信が SoftEther VPN Server が動作しているコンピュータから発信されたものであるかのように識別することとなります。ただし、宛先が 192.168.0.0/255.255.0.0, 172.16.0.0/255.240.0.0 および 10.0.0.0/255.0.0.0 宛のパケットはプライベートネットワーク (たとえば社内 LAN など) で使用されているものと見なされ、"VPNGATE" 仮想 HUB を経由して伝送されることはありません。VPN Gate サービスを社内 LAN などにあるコンピュータで動作させても、VPN Gate のユーザーに対して社内 LAN 上の他のコンピュータにアクセスすることを許すことにはならないため安全です。VPN Gate サービスはまた、VPN Gate ディレクトリサーバーへのアクセスの中継も実施します。
|
||||
VPN Gate サービスは、ファイアウォールや NAT などと共に良好に動作することができるようにするため、1.2 で解説されている NAT トラバーサル機能を用いて UDP ポートを開きます。また、いくつかの TCP ポートを Listen 状態とし、いくつかの TCP ポートおよび UDP ポートについて Universal Plug and Play (UPnP) プロトコルを用いて定期的にローカルのルータに対してポート開放を要求します。ルータの挙動によっては、ポートは VPN Gate サービスの停止後も開放され続ける場合がありますので、UPnP ポートを閉じたい場合は手動で閉じてください。
|
||||
VPN Gate サービスはまた、www.vpngate.net のミラーサイト機能も提供します。これは、VPN Gate Web サイトにアクセスしようとするインターネット上のユーザーに対して www.vpngate.net のサイトのコピーのコンテンツを、簡易的な HTTP サーバーを経由してホストする仕組みです。簡易的な HTTP サーバー機能は VPN Gate サービスのプログラムの一部として稼働し、自分自身を www.vpngate.net のミラーサイト一覧ページに自動的に登録します。ただし、www.vpngate.net 以外のサーバーに対する中継通信はサポートしません。
|
||||
|
||||
5.4. VPN Gate サービスにおけるインターネットとの間の通信
|
||||
VPN Gate サービスは「2.8. 仮想 NAT 機能」で説明されている機能を用いることにより、ユーザーの通信をインターネットに対してルーティングします。また、VPN Gate サービスはインターネット回線の品質を調査するため、一定時間ごとに筑波大学に設置されている Ping サーバーおよび Google 社に設置されている Public DNS Server (IP アドレス: 8.8.8.8) に対して Ping パケットを送信します。また、筑波大学に設置されている通信速度測定サーバーに対して TCP でコネクションを確立し、数十秒程度の通信を行います。これらの品質データは測定後に自動的に VPN Gate 学術実験プロジェクトの中央サーバーに伝送され保存されます。その結果は公衆の閲覧に供されます。これらの定期的な通信はネットワークに影響をできるだけ与えないようにするため最小量に調整されていますが、回線を圧迫する場合もあります。
|
||||
|
||||
5.5. VPN Gate サービスの運営者情報
|
||||
VPN Gate 学術実験プロジェクトに参加したコンピュータ上で動作する VPN Gate サービスは、インターネット上で公衆に対してサービスを提供する分散ノードの一員となります。したがって、当該コンピュータの管理者はサーバーの運営者情報を適切に申告しなければなりません。運営者情報には、運営者氏名および不正利用等があった場合の連絡先メールアドレスを含みます。運営者情報は VPN Gate サービスの設定画面からいつでも入力することができます。入力された運営者情報は自動的に VPN Gate 学術実験プロジェクトの中央サーバーに伝送され保存されます。その結果は公衆の閲覧に供されますので、入力の際には十分注意してください。なお、入力がない場合は運営者情報としてデフォルトでコンピュータのホスト名の後に "'s owner" という文字列を付加した文字が使用されます。
|
||||
|
||||
5.6. VPN Gate サービスを運営する場合の法令の遵守
|
||||
ユーザーが VPN Gate サービスを運営する場合、国・地域によってはそのようなサービスを運営することについて予め行政機関による許可を得るか、または行政機関に事前に届け出る必要がある規定がある場合があります。そのような規定が存在する場合は、VPN Gate サービスを有効にする前に必ず法令によって要求されている手続きを履行してください。本ソフトウェアの開発者または VPN Gate 学術実験プロジェクトの実施者は、VPN Gate サービスを稼働させたユーザーが法令において規定されている義務を履行しなかったことによって生じた法的責任または損害について一切責任を負いませんのでご注意ください。
|
||||
|
||||
5.7. 通信の秘密の保護
|
||||
多くの国の法令において、VPN Gate サービスの運営者は、VPN Gate サービスの内部を通過した第三者の通信についてその秘密を保護することが要求されることとなりますので、ご注意ください。
|
||||
|
||||
5.8. パケットログ
|
||||
VPN Gate サービスを経由して伝送される主要な通信パケットの重要なヘッダ部分を記録する「パケットログ」機能が VPN Gate サービスのプログラムに実装されています。パケットログは、VPN Gate サービスを経由して第三者が違法な通信を行った場合に、その事実を記録するための機能です。パケットログと VPN 接続の受付ログを参照することにより、当該通信を行った者の原 IP アドレスを特定することが可能です。このような調査などの正当な目的のためだけにパケットログを使用してください。パケットログを正当な目的以外のために閲覧したり、内容を漏洩したりすることは、5.7 の規定に反することとなります。
|
||||
|
||||
5.9. パケットログの自動アーカイブ機能
|
||||
VPN Gate 学術実験プロジェクトは日本国憲法および法律に従って運営されています。日本国憲法や法令は、通信の秘密について非常に厳しい保護を要求しています。日本国におけるルールに従うために、VPN Gate サービスのプログラムには「自動ログファイルエンコード」機能が搭載されており、デフォルトで有効になっています。
|
||||
デフォルトでは、VPN Gate サービスの現在の設定は、2 週間以上が経過したパケットログファイルを自動的にエンコードしてアーカイブするようになっています。VPN Gate サービスを経由して通信を行ったユーザーの通信の秘密を保護するため、一旦エンコードされたファイルは、VPN Gate サービスが動作しているコンピュータの管理者であっても閲覧することはできません。これにより VPN Gate サービスを利用するエンドユーザーのプライバシーが保たれます。
|
||||
パケットログファイルが生成後 2 週間以上経過した後でも自動的にエンコードされないようにするためには、VPN Gate サービスの設定を変更してください。この場合は、パケットログファイルは恒久的にディスク上に平文で残ることになります。したがって、ユーザーの通信の秘密を侵害しないように十分ご注意ください。
|
||||
VPN Gate サービスを経由してエンドユーザーが違法行為を行った際など、エンコードされたパケットログファイルをデコードし通信内容を復元する必要が生じた場合は、筑波大学大学院 VPN Gate 学術実験プロジェクトの運営者に連絡してください。連絡方法は http://www.vpngate.net/ に記載されています。プロジェクトの運営者は、既存の法令に従い、裁判所などの司法機関による要請およびこれに準じる要請があった場合にデコードに応じます。
|
||||
|
||||
5.10. 日本国の領域内で VPN Gate サービスを運営する場合の注意点
|
||||
ユーザーが日本国の領域内で VPN Gate サービスを運営する場合において、その行為が電気通信役務を他人の需要に応ずるために提供する事業に該当する場合は、当該 VPN Gate サービスの提供行為は電気通信事業法 (昭和 59 年 12 月 25 日法律第 86 号) における「電気通信事業」に該当する可能性があります。ただし、そのような場合であっても、「電気通信事業参入マニュアル[追補版]」(平成 17 年 8 月 18 日発行 総務省電気通信事業部データ通信課) によれば、収益が生じない場合は電気通信事業者には該当しないこととなります。従って、収益目的において稼働させる場合を除き、VPN Gate サービスを稼働させても登録・届出が必要な「電気通信事業者」には該当しません。たとえ電気通信事業者に該当しない場合においても、電気通信事業法で規定されている「秘密の保護」の義務は生じることとなります。これらのことから、日本国の領域内で VPN Gate サービスを運営する場合においては、VPN Gate サービスの運営者は自己の管理する VPN Gate サービスを経由して行われた第三者の通信内容の秘密を漏洩してはなりません。
|
||||
この節における注意事項は、日本国の領域外においては適用されません。
|
||||
|
||||
5.11. VPN Gate クライアント
|
||||
SoftEther VPN Client に VPN Gate クライアントプラグインが含まれている場合は、ユーザーは SoftEther VPN Client を使用してインターネット上で稼働している VPN Gate サービスの一覧を取得し、いずれかの VPN Gate サービスのサーバーを指定してそのサーバーに接続することができます。
|
||||
VPN Gate クライアントは起動中は常時、VPN Gate サービスのサーバーの一覧を取得するための通信をインターネット上のホストとの間で一定時間ごとに行います。そのため、通信量または通信時間に応じて課金が発生するようなインターネット接続回線を利用中の場合は十分ご注意ください。
|
||||
VPN Gate クライアントを起動する際には、VPN Gate サービスを有効にするかどうかを選択する画面が表示される場合があります。VPN Gate サービスについては上記の説明を参照してください。
|
||||
|
||||
5.12. VPN Gate 学術実験への参加または使用前のご注意
|
||||
VPN Gate 学術実験サービスは、日本国に所在する筑波大学大学院における研究プロジェクトとして運営されているサービスです。本サービスは日本国の法令にのみ準拠して運用されており、日本国以外の国・地域の法令については一切関知しておりません。
|
||||
そもそも世界には 200 カ国近くの国が存在しており、それぞれの国における法律は互いに異なります。すべての国の法律を調査した上でそれらすべてに適合することを保証したソフトウェアを開発することは事実上不可能です。万一ユーザーが本サービスを特定の国・地域の領域内で利用したことによって公務員により法的なペナルティを科せられるなどの損害が発生した場合であっても、プロジェクト実施者は一切責任を負いません。
|
||||
本ソフトウェアまたはサービスを使用する際には、ユーザーが適用されるすべての法令をユーザーの責任により遵守してください。本ソフトウェアまたはサービスを日本国内・国外を問わず使用された場合に発生するすべての損害と責任は、ユーザーに帰責します。本学術実験の運営者およびソフトウェアの供給者は、一切責任を負いません。
|
||||
これらの注意事項に同意いただけない場合は、VPN Gate 学術実験サービスに関連する機能を使用しないでください。
|
||||
VPN Gate は筑波大学大学院における学術目的の研究プロジェクトです。VPN Gate ソフトウェアはフリーウェアである SoftEther VPN およびオープンソースである UT-VPN を拡張するプラグインの形で開発されていますが、これは本研究プロジェクトにおいて開発されたものであり、ソフトイーサ株式会社によって開発されたものではありません。本研究はソフトイーサ株式会社が主宰、推進または保証するものではありません。
|
||||
VPN 通信が禁止されている国・地域では VPN Gate を使用しないでください。
|
||||
|
||||
5.13. VPN Gate Client に組み込まれている検閲用ファイアウォールの回避のための P2P 中継機能について
|
||||
2015 年 1 月以降にリリースされた VPN Gate Client には P2P 中継機能が搭載されています。この P2P 中継機能は検閲用ファイアウォールの回避の強化を目的としています。あなたの VPN Gate Client で P2P 中継機能が有効となっている場合は、P2P 中継機能は、専らあなたと同じ地域に居住する他の VPN Gate のユーザーからの VPN 接続を受け付け、当該 VPN 通信を、検閲用ファイアウォールの外側にある、自由な (検閲のない) インターネット接続環境にある他人が遠隔地に設置した VPN Gate Server に対して中継します。この中継機能においては、あなたの VPN Gate Client の P2P 中継機能に接続した VPN Gate ユーザーの VPN Gate 使用中における NAT の出口 IP アドレスはあなたのコンピュータに置き換わることはありません。なぜならば、当該中継機能は VPN トンネルを反射状に中継するものであり、VPN トンネルの最終的な終端点は当該他人が設置した VPN Gate Server となるためです。しかしながら、当該他人が設置した VPN Gate Server における VPN トンネルの接続元 IP アドレスとしては、あなたのコンピュータの IP アドレスが記録されます。また、あなたのコンピュータの P2P 中継機能を経由して行われたパケットは、5.8 に準じてあなたのコンピュータに記録されます。P2P 中継機能を有する VPN Gate Client をインストールした後に当該 P2P 中継機能が動作する状態となった場合には、5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.10, 5.11 および 5.12 において VPN Gate サービス (VPN サーバー機能) を明示的に有効にした場合と同じ注意事項が適用されます。P2P 中継機能が有効な場合、あなたのコンピュータの IP アドレスおよび 5.5 で述べられているデフォルトの運営者名は、VPN Gate Project が配布する VPN Gate のサーバーリストに自動的に追加されます。5.5 で述べられている情報は、"vpn_gate_relay.config" ファイルを編集することで変更することができます。設定を変更する際には、最初に VPN Client サービスを停止する必要があります。VPN Gate Client は、あなたのコンピュータの P2P 中継機能を、あなたのコンピュータが検閲用ファイアウォールが存在する地域に存在している可能性を検出した場合に自動的に有効にします。もし P2P 中継機能を無効にしたい場合は、VPN Client の設定ファイルである "vpn_client.config" ファイル内の "DisableRelayServer" フラグを "true" に設定しなければなりません。設定を変更する際には、最初に VPN Client サービスを停止する必要があります。P2P 中継機能は、法令によって検閲用ファイアウォールの回避のための P2P 中継機能の提供が禁止されている国または地域であっても、自動的に有効になる可能性があります。そのため、法令によって検閲用ファイアウォールの回避のための P2P 中継機能の提供が禁止されている国または地域のユーザーは手動で "DisableRelayServer" フラグを変更し、P2P 中継機能を自己の責任で直ちに無効にしなければなりません。
|
||||
|
140
src/bin/hamcore/warning_ko.txt
Normal file
140
src/bin/hamcore/warning_ko.txt
Normal file
@ -0,0 +1,140 @@
|
||||
SoftEther VPN에 관한 중요 사항 설명서
|
||||
|
||||
소프트웨어 VPN 통신 기능은 어느 때보 다 매우 강력하고 올바른 사용법에 따라 고객은 큰 편의와 이익을 손에 넣을 수 있습니다. 그러나 잘못 사용하면 불이익이 발생할 위험이 있습니다. 그런 위험을 피하기 위해 소프트웨어의 사용시 고객이 사전에 설명을 받아야 할 사항을 아래에 설명합니다. 이 내용은 대단히 중요하므로 충분히 이해되도록 부탁드립니다. 또한 동적 DNS NAT 통과 또는 VPN Azure 기능을 사용하기 전에 아래의 3.5 절주의 사항을 잘 읽어 보시기 바랍니다. 이 세 가지 기능은 인터넷을 통해 제공되는 무료 무보증 학술 실험 서비스이며 고장이 용인되지 않는 업무에 사용하는 것은 상정되어 있지 않습니다.
|
||||
|
||||
|
||||
1. VPN 통신에 대해
|
||||
1.1. SoftEther VPN 프로토콜
|
||||
SoftEther VPN은 VPN 통신을 할 수 있습니다. 전통적인 VPN 프로토콜과는 달리 SoftEther VPN에는 새롭게 설계된 "SoftEther VPN 프로토콜 (SE-VPN 프로토콜)」가 탑재되어 있습니다. SE-VPN 프로토콜은 어떤 패킷을 HTTPS (HTTP over SSL) 패킷에 캡슐화하여 전송합니다. 이는 기존의 방화벽이 네트워크 관리자가 일반 VPN 프로토콜을 통과하지 않도록 설정되어있는 경우에도, SE-VPN 프로토콜은 대부분의 경우 통과합니다. SE-VPN 프로토콜은 TLS 1.0 (RFC 5246) 및 HTTPS (RFC 2818)을 준수하도록 구현되어 있지만, 일부 비 호환 동작을하는 경우도 있습니다. 만약 당신이 네트워크 관리자이며 방화벽에서 SE-VPN 프로토콜의 통신을 차단하고 싶다고 희망하는 경우 방화벽에 화이트리스트 규칙을 적용하여 경계를 통과하는 모든 무단 TCP 및 UDP 패킷을 차단하고 일부 허용 한 Web 사이트 나 서버 등 사이의 통신 만 허용하도록 설정하여 그 희망을 실현할 수 있습니다.
|
||||
|
||||
1.2. NAT 탐색 기능
|
||||
기존의 VPN 시스템의 경우, NAT 및 방화벽 뒤에있는 VPN 서버를 설치하는 경우에는 네트워크 관리자에게 문의하여 NAT 및 방화벽에서 "포트 개방"과 "포트 포워딩"라는 설정을 해 줄 필요가 있습니다. 그러나 네트워크 관리자에게 그런 번거 로움없이 사내의 자신의 컴퓨터에 VPN 서버를 설치하고 외부에서 연결하고자하는 수요에 부응하기 위해 SoftEther VPN은 강력한 "NAT 탐색 기능 '이 탑재되어 합니다. NAT 탐색 기능은 기본적으로 활성화되어 있습니다. NAT 통과 기능이 활성화되어있는 SoftEther VPN Server는 비록 NAT 및 방화벽도 특별한 설정없이 인터넷 측에서 VPN 연결을 받아 들일 수 있습니다. NAT 탐색 기능을 서버 측에서 해제하려면 SoftEther VPN Server 설정 파일의 "DisableNatTraversal"항목의 값을 "true"로 변경하십시오. 클라이언트 측에서 해제하려면 연결할 VPN 서버의 호스트 이름 뒤에 "/ tcp '라는 접미사를 추가하십시오.
|
||||
|
||||
1.3 동적 DNS 기능
|
||||
기존의 VPN 시스템의 경우 VPN 서버는 고정 글로벌 IP 주소를 할당해야했습니다. 소프트 이사 Inc.는 전세계 IP 주소의 고갈을 배려하기 위해 SoftEther VPN Server에 "동적 DNS 기능」을 탑재했습니다. 동적 DNS 기능은 기본적으로 활성화되어 있습니다. 동적 DNS 기능은 현재 SoftEther VPN Server를 실행하는 컴퓨터의 공인 IP 주소를 소프트 이사 사가 운용하는 동적 DNS 서버에 주기적으로 통지합니다. 이 때 "abc.softether.net"( "abc"부분은 이용자가 변경할 수있는 임의의 고유 ID)는 전 세계에서 사용 가능한 호스트 이름 (FQDN)이 할당됩니다. 호스트 이름을 알게 된 VPN 이용자는 호스트 이름을 지정하면, 현재의 IP 주소를 몰라도 언제든지 VPN 서버에 액세스 할 수 있습니다. IP 주소가 변경 될 경우 동적 DNS 서비스 호스트 이름에 해당하는 IP 주소가 자동으로 변경됩니다. 이렇게하면 고정 IP 주소를 사용할 필요가 없습니다 매월 발생하는 고액의 ISP에 통신 비용을 줄일 수 있으며, 법인 이용도 소비자의 저렴한 가변 IP 주소 연결을 사용할 수 있습니다. 동적 DNS 기능을 사용하려면 SoftEther VPN Server 설정 파일의 "DDnsClient"지시문에서 "Disabled"항목의 값을 "true"로 변경하십시오. 중화 인민 공화국에서 이용되는 경우주의 : DNS 접미사는 중화 인민 공화국 내에서 사용하는 경우 "sedns.cn '라는 도메인 이름으로 대체됩니다. sedns.cn 도메인은 중국 기업 (베이징 游索 용이 유한 공사)이 운영 · 관리하는 서비스입니다.
|
||||
|
||||
1.4 VPN over ICMP 기능 및 VPN over DNS 기능
|
||||
SoftEther VPN Client / Bridge가 SoftEther VPN Server 사이에서 VPN 통신을하고자하는 경우 TCP 및 UDP 프로토콜이 통신 할 수없는 경우를 위해 VPN을 "ICMP"(이른바 Ping) 및 "DNS"패킷 캡슐화하여 통신하는 기능이 구현되어 있습니다. 이 기능은 네트워크 경로상의 라우터 나 방화벽이 TCP와 UDP 통신을 차단 해 버리는 경우에도 ICMP 또는 DNS 통신이 가능한 VPN 연결을 할 수 있습니다. VPN over ICMP 기능 및 VPN over DNS 기능은 ICMP 및 DNS 표준을 최대한 준수하도록 설계되어 있지만, 일부 비 호환 동작을하는 경우도 있습니다. 일부 설계 불량 라우터는 대량의 ICMP 및 DNS 패킷이 통과하면 메모리 오버플로를 발생하고 멈추거나 재시작 할 수 있습니다. 이것은 다른 이용자에게도 악영향을 미칠 수 있습니다. 이러한 위험을 피하기 위해 VPN over ICMP 기능 및 VPN over DNS 기능을 사용하려면 VPN 접속을 시도하는 측면에서 연결할 호스트 이름 문자열 뒤에 "/ tcp '라는 접미사를 추가하십시오 .
|
||||
|
||||
1.5 VPN Azure 클라우드 서비스에 대해
|
||||
SoftEther VPN Server가 NAT 및 방화벽 내부에 어떤 이유로 NAT 탐색 기능, 동적 DNS 기능 및 VPN over ICMP / DNS 기능 사용할 수없는 경우, VPN Azure 클라우드 서비스를 이용할 수 있습니다. 소프트 이사 사는 인터넷에서 VPN Azure 클라우드를 운영하고 있습니다. VPN Server는 VPN Azure 클라우드에 한 번 접속하면, 그 이후는 "abc.vpnazure.net '(abc는 독특한 호스트 이름) 호스트 이름이 할당됩니다. 이 호스트 이름은 실제로는 소프트 이사가 운영하는 클라우드 서버의 공인 IP 주소로 연결되어 있습니다. VPN 클라이언트가 VPN Azure 호스트에 연결하여 VPN Azure는 통신을 배치 중계 VPN 서버에 제공합니다. VPN Azure 기능은 기본적으로 비활성화되어 있지만 VPN Server 관리 도구에서 쉽게 활성화 할 수 있습니다.
|
||||
|
||||
1.6 UDP 고속화 기능
|
||||
SoftEther VPN은 UDP 가속화 기능이 탑재되어 있습니다. VPN을 구축하는 2 거점간에 UDP 채널의 구축이 가능하다는 것을 감지되었을 경우 자동으로 UDP 통신을합니다. 따라서 VPN 처리량이 향상됩니다. UDP 채널의 구축시에는 직접적인 UDP 패킷의 전송이 가능한 경우는 그것을 사용하지만, 도중에 NAT 및 방화벽이있는 것으로 감지 된 경우 대신 "UDP 홀 펀칭 '을 사용 합니다. UDP 홀 펀칭이 사용되는 경우에는 인터넷에서 소프트 이사 사가 운영하는 UDP 홀 펀칭 서버가 사용됩니다. UDP 속도 기능은 VPN 접속을 시도하는 쪽 설정에서 언제든지 해제 할 수 있습니다.
|
||||
|
||||
|
||||
2. VPN 소프트웨어
|
||||
2.1. SoftEther VPN Client
|
||||
SoftEther VPN Client를 Windows에서 사용하려면 가상 LAN 카드를 컴퓨터에 설치해야합니다. 가상 LAN 카드는 Windows에서 실행되는 커널 모드 드라이버로 구현되어 있습니다. 해당 드라이버는 VeriSign 사의 발급하는 인증서에 의해 디지털 서명되어 있으며, Symantec 사의 연대 서명도되어 있습니다. 드라이버를 설치할 때 정말 드라이버를 설치할지 여부를 묻는 메시지가 나타날 수 있습니다. SoftEther VPN Client는 가능하면 자동으로 해당 메시지에 응답합니다. SoftEther VPN Client는 설치시에 통신을 최적화하기 위해 Windows의 MMCSS (Multimedia Class Scheduler Service) 설정을 최적화합니다. MMCSS 설정의 최적화는 나중에 취소 할 수 있습니다.
|
||||
|
||||
2.2. SoftEther VPN Server / Bridge
|
||||
SoftEther VPN Server / Bridge를 Windows에서 사용하는 경우 '로컬 브리지 기능'을 사용하는 경우 낮은 계층 Ethernet 패킷 전송 드라이버를 컴퓨터에 설치해야합니다. 해당 드라이버는 VeriSign 사의 발급하는 인증서에 의해 디지털 서명되어 있으며, Symantec 사의 연대 서명도되어 있습니다. SoftEther VPN Server / Bridge는 로컬 브리지에 대한 물리적 인 LAN 카드의 TCP / IP 오프로드 기능을 비활성화 할 수 있습니다. Windows Vista / 2008 이상 버전에서는 VPN Server가 IPsec 기능을 제공하는 Windows Filter Platform (WFP)에 부합하는 패킷 필터 드라이버를 커널 모드에 삽입합니다. 이 패킷 필터 드라이버는 IPsec 기능을 활성화 한 경우에만로드됩니다. SoftEther VPN Server의 IPsec 기능을 활성화하면 Windows 표준 IPsec 기능을 사용할 수 없습니다. 그러나 SoftEther VPN Server의 IPsec 기능을 비활성화하면이 현상은 원래대로 돌아갑니다. SoftEther VPN Server / Bridge는 로컬 브리지 기능을 사용하기 위해 OS의 TCP / IP 오프로드 기능을 비활성화합니다.
|
||||
|
||||
2.3. 사용자 모드에서 설치
|
||||
SoftEther VPN Server 및 SoftEther VPN Bridge는 Windows 사용자 모드로 설치할 수 있습니다. 즉, 사내 PC 등에서 Windows 시스템 관리자 권한이없는 일반 사용자도 설치할 수 있습니다. 사용자 모드로 설치하면 일부 기능이 제한되지만 대부분의 기능이 제대로 작동합니다. 그러면 예를 들어 직원들이 사내 PC에 일반 사용자로 VPN Server를 설치하고 집에서 사내 LAN에 액세스 할 수 있습니다. 기술적으로 시스템 관리자 권한이 필요하지 않습니다 만, 그렇다고 기업의 규칙에 반하여 마음대로 VPN 서버를 구축하는 것은 바람직하지 않은 경우도 있습니다. 당신이 기업에 소속 된 직원의 경우 회사 규칙에 무단 소프트웨어 설치 및 외부와의 통신이 금지되는 경우에는 사전에 기업의 경영자 또는 네트워크 관리자의 명시 적 동의 후 사용자 모드에서 설치 작업을 수행합니다. 사용자 모드에서 VPN Server / VPN Bridge가 실행되는 동안 Windows 시스템 트레이에 아이콘이 표시됩니다. 이 아이콘을 방해하다고 느낄 경우 사용자 상호 작용에 의해 숨길 수 있습니다. 그러나이 기능을 이용하여 다른 사람의 컴퓨터에 VPN Server를 마음대로 설치하고 스파이웨어로 이용해서는 안됩니다. 그런 행위는 법에 위배됩니다.
|
||||
|
||||
2.4 keep-alive 통신
|
||||
SoftEther VPN Server 및 SoftEther VPN Bridge에서는 기본적으로 인터넷 회선을 활성화 한 상태로 유지하기 keep-alive 통신 기능이 활성화되어 있습니다. 이 기능을 통해 인터넷에 정기적으로 무작위 내용의 UDP 패킷을 보냅니다. 이 기능은 모바일 회선이나 전화 접속 회선이 자동으로 끊어 버리는 것을 방지하기 위해 도움이됩니다. 킵 얼라이브 통신 기능은 언제든지 해제 할 수 있습니다.
|
||||
|
||||
2.5. 제거
|
||||
SoftEther VPN 소프트웨어를 제거하려면 프로그램 파일은 모두 삭제됩니다. 그러나 프로그램 파일 이외의 파일 (예를 들어 프로그램의 동작에 의해 생성 된 파일이나 데이터)는 삭제되지 않습니다. 또한 기술적 인 이유로 제거 프로그램 본체의 EXE 파일 및 리소스 파일도 삭제되지 않고 남아있을 수 있습니다. 이러한 파일이 잔류하는 것은 컴퓨터 사용에 아무런 문제가 없지만, 취향에 따라 수동으로 삭제할 수도 있습니다. 또한 커널 모드 드라이버를 제거되지 않을 수 있지만 다음 Windows 시작시부터 주요 코드는 메모리에로드되지 않고 비활성화됩니다. 커널 모드 드라이버를 Windows의 "sc"명령을 사용하여 취향에 따라 수동으로 제거 할 수 있습니다.
|
||||
|
||||
2.6 보안
|
||||
SoftEther VPN Server / Bridge를 설치 한 후에는 즉시 관리자 암호를 설정하십시오. 관리자 암호가 빈 채로 방치하면 다른 사람이 마음대로 관리자 모드에서 SoftEther VPN Server / Bridge에 연결하여 관리자 암호를 설정하거나 설정을 변경할 수 있습니다. 이주의 사항은 Linux 용 SoftEther VPN Client에 적용됩니다.
|
||||
|
||||
2.7 업데이트 알림 기능
|
||||
Windows 버전의 SoftEther VPN 소프트웨어는 업데이트 알림 기능이 탑재되어 있습니다. 소프트 이사 사의 SoftEther Update 서버에 정기적으로 HTTP를 통해 통신하고 최신 버전의 소프트웨어가 출시되어 있는지 확인합니다. 만약 최신 버전이 출시되는 경우에는 그 취지를 화면에 표시합니다. 이 목적을 달성하기 위해 현재 소프트웨어 버전, 고유 식별자, IP 주소 및 연결 대상 VPN 서버의 주소가 SoftEther Update 서버에 전송됩니다. 개인 정보는 전송되지 않습니다. 업데이트 알림 기능은 기본적으로 활성화되어 있습니다 만, 설정 화면에서 해제 할 수 있습니다. ON / OFF 설정은 VPN 서버 관리 관리자의 경우 연결 대상 VPN 서버마다 저장됩니다.
|
||||
|
||||
2.8 가상 NAT 기능
|
||||
SoftEther VPN Server / VPN Bridge 가상 HUB는 "가상 NAT 기능 '이 탑재되어 있습니다. 가상 NAT 기능은 하나의 실제 IP 주소를 복수의 가상 사설 IP 주소를 할당 한 VPN Client에서 공유 할 수있는 기능입니다. 가상 NAT 기능의 동작 모드는 사용자 모드와 커널 모드의 두 가지가 있습니다. 사용자 모드로 동작하는 경우 NAT 외부의 물리적 IP 주소는 VPN Server를 작동시키는 컴퓨터 OS의 인터페이스를 가지는 IP 주소를 공유합니다. 이와 달리 커널 모드에서 동작하는 경우 VPN Server는 컴퓨터에 장착되어있는 물리적 Ethernet 네트워크 어댑터를 검색하여 사용 가능한 IP 주소를 1 개, 물리적 Ethernet 세그먼트의 DHCP 서버에서 취득하려고 시도합니다. IP 주소의 취득에 성공했을 경우는 IP 주소가 가상 NAT에 의해 사용됩니다. 이 경우 물리적 DHCP 서버에서 IP 풀에 DHCP 클라이언트 항목이 생성됩니다. 물리적 Ethernet 세그먼트의 기본 게이트웨이 및 DNS 서버가 가상 NAT를 통해 인터넷 사이의 통신을 위해 사용됩니다. 커널 모드에서 동작하는 경우 가상 NAT는 물리적 Ethernet 세그먼트에서 1 개의 가상 MAC 주소를가집니다. 커널 모드 NAT의 동작이 가능한지 여부를 판단하기 위해 VPN Server는 정기적으로 인터넷 연결을 확인합니다. 연결성 검사 위해서는 www.yahoo.com 또는 www.baidu.com라는 호스트 이름에 DNS 쿼리 응답을 검증하고, 응답 된 IPv4 주소로 TCP 포트 80에 연결 검사 실시 됩니다.
|
||||
|
||||
2.9 커널 모드 구성 요소의 자동 설치
|
||||
SoftEther VPN 소프트웨어가 Windows 커널 모드 구성 요소를 설치해야있는 것으로 감지 된 경우 설치를 할 지 여부를 확인하는 메시지가 Windows에 표시되는 경우가 있습니다. 이 경우 SoftEther VPN 소프트웨어는 자동으로 무인 모드로 전환하여 Windows를 설치하기 위해 취지를 응답합니다. 이것은 원격 SoftEther VPN 소프트웨어를 관리 할 때 원격 관리 통신이 끊어 교착 상태가 발생되는 것을 방지하기위한 조치입니다.
|
||||
|
||||
|
||||
2.10. Windows Firewall에 등록
|
||||
SoftEther VPN 소프트웨어는 Windows Firewall에 SoftEther VPN 소프트웨어를 안전한 프로그램으로 자동으로 등록합니다. 이 등록은 제거 후에도 잔존하는 경우가 있습니다. 등록을 취소 할 경우, Windows 제어판을 사용하여 수동으로 설정하십시오.
|
||||
|
||||
3. 인터넷 서비스에 대한
|
||||
3.1. 소프트 이사 사가 제공하는 인터넷 서비스의 내용
|
||||
소프트 이사 사는 "동적 DNS", "NAT 통과"및 "VPN Azure '서비스를 무료로 제공합니다. 이러한 서비스는 SoftEther VPN 사용자는 소프트웨어의 구현을 통해 인터넷을 통해 액세스 할 수 있습니다. 이러한 서비스는 향후 공개 될 예정의 오픈 소스 버전 "SoftEther VPN '에서도 이용 가능하게 될 예정입니다.
|
||||
|
||||
3.2. 전송되는 정보 및 개인 정보 보호
|
||||
SoftEther VPN 소프트웨어는 위의 서비스를 이용하기 위해서는 컴퓨터의 IP 주소, 호스트 이름, VPN 소프트웨어의 버전 정보를 소프트 이사 사의 관리하는 클라우드 서비스에 보냅니다. 이러한 정보는 상기 서비스를 제공하기 위해 필요한 최소한의 것입니다. 일체의 개인 정보는 전송되지 않습니다. 소프트 이사 사는 클라우드 서비스에 축적 된 위의 IP 주소 등의 정보를 최소 90 일 기록하는 경우가 있습니다. 이것은 서비스 이용에 기술적 인 문제가 발생하면 원인 규명을 위해 이용됩니다. 소프트 이사 사는 해당 로그 정보를 일본 법원 또는 수사 기관에 의한 명령에 따르기 위해 이들 기관의 공무원 (일본의 공무원은 일본의 법률에 의해 기밀을지게됩니다)에 공개 할 수 있습니다 . 또한, IP 주소 등의 정보는 통계 처리되어 그 통계 결과는 개별 구체적인 IP 주소를 확인할 수 없게 된 후, 인터넷에 연구 성과로 발표 될 수 있습니다.
|
||||
|
||||
3.3 VPN Azure를 통한 통신 데이터
|
||||
고객이 VPN Azure 클라우드 서비스를 통해 VPN 통신을 할 경우, 3.2의 규정에 불구하고 실제의 통신 페이로드가 VPN Azure 클라우드 서비스를 구성하는 서버의 메모리에 극히 짧은 시간 축적 될 수 있습니다. 이것은 VPN Azure 서비스를 제공하기 위해 당연히 필요한 것입니다 만, 통신 내용은 디스크 등의 고정 영역에 기록되는 것은 아닙니다. 그러나 일본의 '범죄 수사를위한 통신 감청에 관한 법률 (헤세이 11 년 8 월 18 일 법률 제 137 호)」이 정하는 판사의 영장을 소지 한 수사관의 요청이있을 경우 해당 통신 이 일본 정부의 공무원 (일본의 공무원은 일본의 법률에 의해 기밀을지게되어 있습니다)에 의해 포착되어 기록 될 수 있습니다. 이 규정은 VPN Azure 서비스 서버가 물리적으로 일본에 존재하는 경우에만 적용됩니다.
|
||||
|
||||
3.4. 전기 통신 사업법의 적용
|
||||
소프트 이사 회사는 상기의 서비스를 일본 국내에서 운용함에있어서 전기 통신 사업법의 규정을 받아야 할 경우에 대해서는 전기 통신 사업법의 규정에 따라 총무 대신에게 신고 또는 신청을하고 있습니다.
|
||||
|
||||
3.5. 무상으로 학술 실험 목적의 서비스
|
||||
소프트 이사는 "동적 DNS", "NAT 통과"및 "VPN Azure」을 학술 실험 목적으로 연구 개발하고 운영하고 있습니다. 따라서 이러한 서비스는 모두 무료로 이용하실 수 있습니다. 이러한 서비스는 "SoftEther VPN 소프트웨어 제품"의 일부가 아니라 부수적 인 것도 아닙니다. 이러한 서비스는 보증이없는 상태에서 제공되는 것입니다. 실험의 중단, 중지 및 실험중인 기술적 문제의 발생에 의해 서비스가 중단 될 수 있습니다. 이 경우 사용자는 서비스를 사용할 수 없습니다. 사용자는 이러한 위험이있을 수 있고 그 위험을 사용자 자신이 부담 할 것을 승낙 보신 이러한 서비스를 이용해주십시오. 소프트 이사 사는 사용자가 이러한 서비스를 이용한 결과 또는 이용하지 못한 결과에 대한 책임을지지 않습니다. 만일 고객이 SoftEther VPN 소프트웨어의 상용 제품을 구입하고 SoftEther VPN 소프트웨어 라이센스 비용을 고객이 이미 지불하신 경우에도 해당 요금에는 이러한 서비스의 대가는 포함되어 있지 않습니다. 이러한 서비스를 방해하거나 사용할 수 없게되거나하는 경우에도, SoftEther VPN 소프트웨어 라이센스 비용은 일체 환불되지 않고 기타 손해 배상도 제공되지 않습니다.
|
||||
|
||||
3.6. DNS 프록시
|
||||
일부 지역에서는 인터넷을 이용할 때 DNS 쿼리의 IP 주소를 가져 회선의 통신 불량에 의해 종종 잘못된 값을 반환합니다. SoftEther VPN Server, Client 또는 Bridge를 사용하는 경우에 본래의 DNS 서버에 액세스 할 수 없거나 네트워크의 중간 경로의 DNS 서버가 오작동을 일으키고있는 가능성이있는 경우가 발생 때 DNS 쿼리는 소프트 이사가 운영하는 DNS 프록시 서버로 전송됩니다. DNS 프록시 서버는 본래의 DNS 서버에 액세스하고, 정확한 IP 주소를 취득 해 그 IP 주소를 호출자에게 회신합니다.
|
||||
|
||||
|
||||
4. 기타주의 사항
|
||||
4.1. 네트워크 관리자의 승인 필요
|
||||
SoftEther VPN은 네트워크 관리자가 특별한 설정이 필요없이 작동하도록 강력한 기능이 구현되어 있습니다. 예를 들어, 네트워크 관리자에게 방화벽 설정 변경을 요청하지 않고도 VPN 통신을 할 수 있습니다. SoftEther VPN의 이러한 특징은 어디 까지나 기술적으로 네트워크 관리자의 수고 나 비용 절감을 위해 또는 방화벽 설정 변경에 따른 설정 미스 등의 위험을 방지하기위한 것입니다. 기업에 소속 된 직원은 SoftEther VPN을 기업 관리하는 네트워크의 컴퓨터에 설치 또는 사용하는 경우에 있어서는 반드시 사전에 네트워크 관리자의 허락을 얻어야합니다. 만약 네트워크 관리자가 이러한 동의를 제공하지 않으면 대신 네트워크 관리자보다 더 높은 권한을 가진 경영자로부터 허락을 받고 고려하십시오. 이러한 정당한 권한이없는 상태에서 SoftEther VPN을 사용하는 것은 고객에게 불리한 결과가 발생할 수 있습니다. 소프트 이사 사는 SoftEther VPN을 사용해서 고객에게 발생한 일체의 책임을지지 않습니다.
|
||||
|
||||
4.2. 각 지역의 법률 준수
|
||||
VPN 통신과 같은 암호화 통신이 법으로 금지되어있는 국가 · 지역에서 SoftEther VPN을 사용하는 경우는 반드시 암호화 기능을 끄고 사용하십시오. 이 밖에 일부 국가 · 지역에서 특정 방식으로 SoftEther VPN 사용이 법적으로 금지되어있는 경우가 있습니다. 소프트 이사 사는 일본에 소재하는 법인이므로 다른 국가 · 지역에 제정 된 법령에 대해서는 일절 관여하고 있지 않습니다. 예를 들어, SoftEther VPN의 일부 기능은 특정 국가 · 지역에서만 유효한 특허권을 침해하고있을 가능성도 있습니다. 소프트 이사 사는 나라 · 지역에 대해 특별한 관심은 없습니다. 따라서 SoftEther VPN의 기능은 여러분의 거주하고있는 국가 · 지역에서 법적으로 사용할 수 있는지 여부는 본인에 의해 사전에 충분히 확인하신 후 이용하십시오. 원래 세계에는 200 개국 가까운 나라가 존재하고 있으며, 각 국가의 법률은 서로 다릅니다. 모든 국가의 법률을 공부 한 후 그들 모두에 적합 함을 보증 한 소프트웨어를 출시하는 것은 사실상 불가능합니다. 소프트 이사 사는 일본의 법률만을 조사하고 일본의 법률 하에서두고 적법하게 사용할 수있는 소프트웨어를 제공하는 것만을 목적으로 연구 개발을 실시하고 있습니다. 만일 고객이 SoftEther VPN 기능을 귀하가 거주하고있는 국가 · 지역의 영역에서 이용 된함으로써 국가 권력에 의해 법적인 처벌을 부과 등의 손해가 발생한 경우에도 소프트 이더넷 사는 책임을지지 않습니다.
|
||||
|
||||
|
||||
5. VPN Gate 학술 실험 프로젝트
|
||||
(이 장에서는 VPN Gate 학술 실험 프로젝트에 대한 확장 플러그인이 포함되어있는 버전 SoftEther VPN에만 적용됩니다. 상용 버전의 SoftEther VPN 소프트웨어는 VPN Gate 기능 확장 플러그인이 포함되어 있지 않으므로 이 장의 내용은 관계 없습니다.)
|
||||
5.1 VPN Gate 학술 실험 프로젝트에 대해
|
||||
VPN Gate 학술 실험 프로젝트는 일본에 소재하는 츠쿠바 대학 대학원의 학술 연구를 목적으로 실시되는 온라인 서비스입니다. 본 연구는 글로벌 분산 공개 VPN 중계 서버에 관한 지식을 얻는 것을 목적으로하고 있습니다. 자세한 내용은 http://www.vpngate.net/를 참조하십시오.
|
||||
|
||||
5.2 VPN Gate 서비스 정보
|
||||
SoftEther VPN Server 및 SoftEther VPN Client는 "VPN Gate 서비스 '라는 프로그램이 포함되어있을 수 있습니다. 그러나 VPN Gate 서비스는 기본적으로 비활성화되어 있습니다.
|
||||
VPN Gate 서비스는 SoftEther VPN Server 또는 SoftEther VPN Client를 설치하는 컴퓨터의 소유자가 자신의 의사에 따라 VPN Gate 학술 실험에 참여하는 경우에만 사용하십시오. VPN Gate 서비스를 사용하면 컴퓨터가 VPN Gate 학술 실험 서비스의 글로벌 분산 공개 VPN 중계 서버로 동작을 시작합니다. 그리고 컴퓨터의 IP 주소 나 호스트 이름 등의 정보가 쓰쿠바 대학에서 운용되는 VPN Gate 학술 실험 서비스 디렉토리에 등록 된 공중의 열람에 제공됩니다. 이는 전세계에있는 VPN Gate Client라는 클라이언트 소프트웨어는 해당 VPN Gate 서비스가 실행되는 VPN 서버 컴퓨터에 VPN 연결을 할 수 있습니다. VPN 연결을 계속하고있는 동안은 VPN Gate Client 컴퓨터는 모든 통신을 VPN Gate 서비스를 통해 인터넷 사이에서 할 수 있습니다. 그 때는 VPN Gate 서비스를 동작시키고 컴퓨터의 인터넷상에서의 글로벌 IP 주소가 해당 통신의 발신 IP 주소로 사용됩니다.
|
||||
VPN Gate 서비스는 VPN Gate 학술 실험 서비스 디렉토리 서버에 대해 5.5 운영자 정보, 로그 설정, 시작 시간, OS 종류, 프로토콜 유형, 포트 번호, 회선 품질 정보, 통계, VPN Gate 클라이언트 에서 연결 로그 (일시, IP 주소, 버전 번호, ID) 및 소프트웨어의 버전 정보를 보냅니다. 이 정보는 디렉토리에서 공중의 열람에 제공됩니다. 또한 VPN Gate 서비스는 5.9에서 설명 된 기능의 인코딩을위한 키를 VPN Gate 학술 실험 서비스 디렉토리 서버에서 수신합니다.
|
||||
|
||||
5.3 VPN Gate 서비스의 동작에 대한 자세한
|
||||
기본적으로 비활성화되어있는 VPN Gate 서비스를 사용자의 조작에 의해 활성화하면 SoftEther VPN Server에 "VPNGATE"라는 이름의 가상 HUB가 생성됩니다. SoftEter VPN Client상에서 VPN Gate 서비스를 사용하려고하면 먼저 SoftEther VPN Client의 동일 프로세스상에서 간단한 작동 SoftEther VPN Server와 동일한 프로그램을 시작하고 그 속에서 "VPNGATE"라는 명칭의 가상 HUB가 생성됩니다. 해당 가상 HUB는 "VPN"라는 사용자가 생성되고 익명으로 인터넷에서 누군가가 해당 가상 HUB에 VPN 연결을 할 수 있습니다. 일단 "VPNGATE"가상 HUB에 연결하는 VPN 클라이언트 컴퓨터가 시작한 모든 통신은 "VPNGATE"가상 HUB를 통과하고 SoftEther VPN Server (또는 SoftEther VPN Client)가 실행되는 컴퓨터의 물리적 네트워크 인터페이스를 통해 인터넷에 전송됩니다. 따라서 인터넷에서 목적지 호스트는 마치 해당 통신이 SoftEther VPN Server를 실행하는 컴퓨터에서 발생 된 것이다 것처럼 식별 할 수 있습니다. 그러나 대상이 192.168.0.0/255.255.0.0, 172.16.0.0/255.240.0.0 및 10.0.0.0/255.0.0.0 앞의 패킷은 개인 네트워크 (예를 들어 사내 LAN 등)에서 사용되는 것으로 간주 " VPNGATE "가상 HUB를 통해 전송되는 것은 아닙니다. VPN Gate 서비스를 사내 LAN 등의 컴퓨터에서 작동 시켜도, VPN Gate 사용자에게 사내 LAN상의 다른 컴퓨터에 액세스하는 것을 용서해야하기 때문에 안전합니다. VPN Gate 서비스는 또한 VPN Gate 디렉토리 서버 액세스 중계도 실시합니다.
|
||||
VPN Gate 서비스는 방화벽이나 NAT 등과 함께 잘 작동 할 수 있도록하기 위해 1.2에서 설명되는 NAT 탐색 기능을 사용하여 UDP 포트를 엽니 다. 또한 일부 TCP 포트를 Listen 상태로 일부 TCP 및 UDP 포트에 대해 Universal Plug and Play (UPnP) 프로토콜을 사용하여 정기적으로 로컬 라우터에 포트 개방을 요구합니다. 라우터의 동작에 따라 포트는 VPN Gate 서비스 중지 후에도 개방되어 계속 수 있으므로 UPnP 포트를 닫으려는 경우 수동으로 닫으십시오.
|
||||
VPN Gate 서비스는 또한 www.vpngate.net 미러 기능도 제공합니다. 이것은 VPN Gate Web 사이트에 액세스하려고하는 인터넷 사용자에게 www.vpngate.net 사이트 복사본의 콘텐츠를 간이적인 HTTP 서버를 통해 호스팅하는 구조입니다. 간이적인 HTTP 서버 기능은 VPN Gate 서비스 프로그램의 일부로 실행 자신을 www.vpngate.net의 미러 목록 페이지에 자동으로 등록합니다. 그러나 www.vpngate.net 이외의 서버에 중계 통신은 지원하지 않습니다.
|
||||
|
||||
5.4 VPN Gate 서비스에서 인터넷 사이의 통신
|
||||
VPN Gate 서비스는 "2.8 가상 NAT 기능"에서 설명 된 기능을 이용하여 사용자의 통신을 인터넷에 라우팅합니다. 또한 VPN Gate 서비스는 인터넷 회선의 품질을 조사하기 위해 일정 시간마다 츠쿠바 대학에 설치되어있는 Ping 서버 및 Google 사에 설치되는 Public DNS Server (IP 주소 : 8.8.8.8)에 대해 Ping 패킷을 보냅니다. 또한 츠쿠바 대학에 설치되어있는 통신 속도 측정 서버에 TCP에서 연결을 설정하고 수십 초 정도의 통신을합니다. 이러한 품질 데이터는 측정 후 자동으로 VPN Gate 학술 실험 프로젝트 중앙 서버에 전송되어 저장됩니다. 그 결과는 공중의 열람에 제공됩니다. 이러한 정기적 인 통신 네트워크에 영향을 최대한주지 않도록하기위한 최소 금액에 조정되어 있지만 회선을 압박하는 경우도 있습니다.
|
||||
|
||||
5.5 VPN Gate 서비스 운영자 정보
|
||||
VPN Gate 학술 실험 프로젝트에 참여한 컴퓨터에서 실행되는 VPN Gate 서비스는 인터넷을 통해 공중에게 서비스를 제공하는 분산 노드의 일원입니다. 따라서 해당 컴퓨터의 관리자는 서버의 운영자 정보를 적절하게 신고하여야합니다. 운영자 정보는 운영자 이름 및 부정 이용 등이 있었을 경우의 연락처 이메일 주소를 포함합니다. 운영자 정보는 VPN Gate 서비스 설정 화면에서 언제든지 입력 할 수 있습니다. 입력 된 운영자 정보는 자동으로 VPN Gate 학술 실험 프로젝트 중앙 서버에 전송되어 저장됩니다. 그 결과는 공중의 열람에 제공되기 때문에 입력시에는 충분히주의하십시오. 또한, 입력이없는 경우 운영자 정보로서 기본적으로 컴퓨터의 호스트 이름 뒤에 " 's owner"라는 문자열을 추가 한 문자가 사용됩니다.
|
||||
|
||||
5.6 VPN Gate 서비스를 운영하는 경우 법령의 준수
|
||||
사용자가 VPN Gate 서비스를 운영하는 경우 국가 · 지역에 따라서는 이러한 서비스를 운영하는 것에 대해 미리 행정 기관에 의한 허가를 얻거나 행정 기관에 사전에 신고해야하는 규정이있는 경우가 있습니다. 그런 규정이있는 경우는 VPN Gate 서비스를 사용하기 전에 반드시 법령에 의하여 요구되는 절차를 이행하십시오. 소프트웨어 개발자 또는 VPN Gate 학술 실험 프로젝트 실시들은 VPN Gate 서비스를 실행시킨 사용자가 법령에 규정 된 의무를 이행하지 않음으로써 발생한 법적 책임 또는 손해에 대해 책임을 지지 않으므로주의하시기 바랍니다.
|
||||
|
||||
5.7. 통신 비밀의 보호
|
||||
많은 국가의 법령에서 VPN Gate 서비스 운영자는 VPN Gate 서비스의 내부를 통과 한 업체의 통신에 대해 비밀을 보호하는 것이 요구되게되므로주의하시기 바랍니다.
|
||||
|
||||
5.8 패킷 로그
|
||||
VPN Gate 서비스를 통해 전송되는 주요 통신 패킷의 중요한 헤더 부분을 기록하는 "패킷 로그"기능이 VPN Gate 서비스 프로그램에 구현되어 있습니다. 패킷 로그는 VPN Gate 서비스를 통해 제 3자가 불법 통신을 한 경우에는 그 사실을 기록하기위한 기능입니다. 패킷 로그와 VPN 연결의 접수 로그를 참조하여 해당 통신을 한 자하라 IP 주소를 확인할 수 있습니다. 이 같은 조사 등의 정당한 목적만을위한 패킷 로그를 사용하십시오. 패킷 로그를 정당한 이외의 용도로 열람하거나 내용을 누설하는 것은 5.7의 규정에 위배됩니다.
|
||||
|
||||
5.9 패킷 로그의 자동 보관 기능
|
||||
VPN Gate 학술 실험 프로젝트는 일본 국 헌법과 법률에 따라 운영되고 있습니다. 일본 국 헌법과 법령은 통신의 비밀에 대해 매우 엄격한 보호를 요구하고 있습니다. 일본에있어서의 규칙을 준수하기 위해 VPN Gate 서비스 프로그램은 "자동 로그 파일 인코딩 '기능이 탑재되어 있으며, 기본적으로 활성화되어 있습니다.
|
||||
기본적으로 VPN Gate 서비스의 현재 설정은 2 주 이상이 경과 한 패킷 로그 파일을 자동으로 인코딩하여 보관하도록되어 있습니다. VPN Gate 서비스를 통해 통신을 수행 한 사용자의 통신의 비밀을 보호하기 위해 일단 인코딩 된 파일은 VPN Gate 서비스를 실행하는 컴퓨터의 관리자도 볼 수 없습니다. 따라서 VPN Gate 서비스를 이용하는 최종 사용자의 프라이버시가 유지됩니다.
|
||||
패킷 로그 파일을 생성 후 2 주 이상 경과 한 후에도 자동으로 인코딩되지 않도록하기 위해서는 VPN Gate 서비스 설정을 변경하십시오. 이 경우 패킷 로그 파일은 영구적으로 디스크에 일반 텍스트로 남게됩니다. 따라서 사용자의 통신의 비밀을 침해하지 않도록주의하십시오.
|
||||
VPN Gate 서비스를 통해 최종 사용자가 불법 행위를 한 때 같은 인코딩 된 패킷 로그 파일을 디코딩하여 통신 내용을 복원 할 필요가 생겼을 경우, 츠쿠바 대학 대학원 VPN Gate 학술 실험 프로젝트 운영자 에 연락하십시오. 연락 방법은 http://www.vpngate.net/에 기재되어 있습니다. 프로젝트의 운영자는 기존 법령에 따라 법원 등 사법 기관의 요청 및 이에 준하는 요청이있을 경우 디코딩에 따릅니다.
|
||||
|
||||
5.10 일본 지역에서 VPN Gate 서비스를 운영하는 경우의 주의점
|
||||
사용자가 일본의 영역에서 VPN Gate 서비스를 운영하는 경우에 그 행위가 전기 통신 역무를 타인의 수요에 응하기 위하여 제공하는 사업에 해당하는 경우에는 당해 VPN Gate 서비스 제공 행위는 전기 통신 사업법 (1984 년 12 월 25 일 법률 제 86 호)의 '전기 통신 사업자'에 해당 될 수 있습니다. 그러나 그런 경우에도, "전기 통신 사업 진입 매뉴얼 [부록 판]」(2005 년 8 월 18 일 발행 총무성 전기 통신 사업부 데이터 통신과)에 따르면 수익이 발생하지 않는 경우 전기 통신 사업자에 해당하지 않을 것입니다. 따라서, 수익 목적으로 실행하는 경우를 제외하고 VPN Gate 서비스를 가동 시켜도 등록 · 신고가 필요한 '전기 통신 사업자'에 해당하지 않습니다. 비록 전기 통신 사업자에 해당하지 않는 경우에도 전기 통신 사업법에 규정 된 "비밀의 보호 '의무는 발생할 수입니다. 이러한 점에서 일본의 영역에서 VPN Gate 서비스를 운영하는 경우에는 VPN Gate 서비스 운영자는 자기 관리하는 VPN Gate 서비스를 통해 발생 된 업체의 통신 내용의 비밀 를 누설되지 않습니다.
|
||||
이 절에서주의 사항은 일본의 령역 밖에서는 적용되지 않습니다.
|
||||
|
||||
5.11. VPN Gate 클라이언트
|
||||
SoftEther VPN Client에 VPN Gate 클라이언트 플러그인이 포함되어있는 경우, 사용자는 SoftEther VPN Client를 사용하여 인터넷에서 실행되는 VPN Gate 서비스 목록을 검색하고 하나의 VPN Gate 서비스 서버 를 지정하여 해당 서버에 연결할 수 있습니다.
|
||||
VPN Gate 클라이언트는 시작하는 동안 항상 VPN Gate 서비스 서버 목록을 검색하기위한 통신 인터넷 호스트 사이에서 일정 시간마다 실시합니다. 따라서 통신량 또는 통신 시간에 따라 요금이 부과 같은 인터넷 회선을 이용중인 경우는 충분히주의하십시오.
|
||||
VPN Gate 클라이언트를 시작할 때 VPN Gate 서비스를 활성화할지 여부를 선택하는 화면이 표시 될 수 있습니다. VPN Gate 서비스는 위의 설명을 참조하십시오.
|
||||
|
||||
5.12. VPN Gate 학술 실험에 참여하거나 사용하기 전에주의 사항
|
||||
VPN Gate 학술 실험 서비스는 일본에 소재하는 츠쿠바 대학 대학원에서 연구 프로젝트로 운영되는 서비스입니다. 본 서비스는 일본 국의 법령에만 준수 운용되고 있으며, 일본 이외의 국가 · 지역의 법규에 대해서는 일절 관여하고 있지 않습니다.
|
||||
원래 세계에는 200 개국 가까운 나라가 존재하고 있으며, 각 국가의 법률은 서로 다릅니다. 모든 국가의 법률을 공부 한 후 그들 모두에 적합 함을 보증하는 소프트웨어를 개발하는 것은 사실상 불가능합니다. 만일 사용자가 본 서비스를 특정 국가 · 지역의 영역 내에서 이용함으로써 공무원에 의해 법적인 처벌을 부과 등의 손해가 발생한 경우에도 프로젝트 실시는 일체 책임을지지 않습니다.
|
||||
소프트웨어 나 서비스를 사용할 때 사용자가 적용되는 모든 법령을 사용자의 책임에 의해 준수하십시오. 소프트웨어 또는 서비스를 일본 국내외를 불문하고 사용 된 경우에 발생하는 모든 손해 및 책임은 사용자에게 귀책합니다. 본 학술 실험 운영자 및 소프트웨어 공급 업체는 책임을지지 않습니다.
|
||||
이러한주의 사항에 동의하지 않는 경우에는 VPN Gate 학술 실험 서비스 관련 기능을 사용하지 마십시오.
|
||||
VPN Gate는 츠쿠바 대학 대학원 학술 목적의 연구 프로젝트입니다. VPN Gate 소프트웨어는 프리웨어이다 SoftEther VPN 및 오픈 소스 인 UT-VPN을 확장하는 플러그인 형태로 개발되어 있지만, 이는 본 연구 프로젝트에서 개발 된 것이며, 소프트 이사 (주)에 의해 개발 된 것은 아닙니다. 본 연구는 소프트 이사 주식회사가 주재 추진하거나 보증하지 않습니다.
|
||||
VPN 통신이 금지되는 국가 · 지역에서는 VPN Gate를 사용하지 마십시오.
|
||||
|
||||
5.13. VPN Gate Client에 포함 된 검열 방화벽의 회피를위한 P2P 중계 기능
|
||||
2015 년 1 월 이후 출시 된 VPN Gate Client는 P2P 중계 기능이 탑재되어 있습니다. 이 P2P 중계 기능은 검열 방화벽 우회 강화를 목적으로하고 있습니다. 당신의 VPN Gate Client에서 P2P 중계 기능이 활성화되어있는 경우 P2P 릴레이 기능은 오로지 당신과 같은 지역에 거주하는 다른 VPN Gate 사용자의 VPN 연결을 허용하고 해당 VPN 통신을 검열 용 방화벽 외부에있는 자유로운 (검열없이) 인터넷 접속 환경에있는 사람이 원격지에 설치 한 VPN Gate Server에 중계합니다. 이 중계 기능에서는 당신의 VPN Gate Client의 P2P 중계 기능에 연결된 VPN Gate 사용자의 VPN Gate 사용중에서 NAT 출구 IP 주소는 당신의 컴퓨터를 대체하지 않습니다. 왜냐하면 그 중계 기능은 VPN 터널을 반사 형태로 중계하는 것이며, VPN 터널의 최종 종결 점은 그 사람이 설치 한 VPN Gate Server하기 때문입니다. 그러나 그 사람이 설치 한 VPN Gate Server의 VPN 터널의 접근 IP 주소가 귀하의 컴퓨터의 IP 주소가 기록됩니다. 또한 당신의 컴퓨터 P2P 중계 기능을 통해 발생 된 패킷은 5.8에 따라 당신의 컴퓨터에 기록됩니다. P2P 중계 기능을 갖는 VPN Gate Client를 설치 한 후 해당 P2P 중계 기능이 작동하는 상태가되었을 경우에는 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.10, 5.11 및 5.12에서 VPN Gate 서비스 (VPN 서버 기능)을 명시 적으로 사용했을 경우와 같은주의 사항이 적용됩니다. P2P 중계 기능이 활성화되면 당신의 컴퓨터의 IP 주소 및 5.5에서 언급 된 기본 운영자 이름은 VPN Gate Project가 배포하는 VPN Gate 서버 목록에 자동으로 추가됩니다. 5.5에서 언급 된 정보는 "vpn_gate_relay.config"파일을 편집하여 변경할 수 있습니다. 설정을 변경하는 경우에는 먼저 VPN Client 서비스를 중지해야합니다. VPN Gate Client는 당신의 컴퓨터의 P2P 중계 기능을 당신의 컴퓨터가 검열 방화벽이 존재하는 지역에 존재하는 가능성을 감지하면 자동으로 활성화합니다. 만약 P2P 중계 기능을 해제하려면 VPN Client의 설정 파일 인 "vpn_client.config"파일의 "DisableRelayServer"플래그를 "true"로 설정해야합니다. 설정을 변경하는 경우에는 먼저 VPN Client 서비스를 중지해야합니다. P2P 릴레이 기능은 법령에 의해 검열 방화벽의 회피를위한 P2P 중계 기능의 제공이 금지 된 국가 나 지역도 자동으로 활성화 될 수 있습니다. 따라서 법령에 의해 검열 방화벽의 회피를위한 P2P 중계 기능의 제공이 금지되어있는 국가 또는 지역의 사용자는 수동으로 "DisableRelayServer"플래그를 변경하여 P2P 중계 기능을 자기 책임으로 즉시 해제해야 합니 않습니다.
|
139
src/bin/hamcore/warning_ru.txt
Normal file
139
src/bin/hamcore/warning_ru.txt
Normal file
@ -0,0 +1,139 @@
|
||||
THE IMPORTANT NOTICES ABOUT SOFTETHER VPN
|
||||
|
||||
FUNCTIONS OF VPN COMMUNICATIONS EMBEDDED ON THIS SOFTWARE ARE VERY POWERFUL THAN EVER. THIS STRONG VPN ABILITY WILL BRING YOU HUGE BENEFITS. HOWEVER, IF YOU MISUSE THIS SOFTWARE, IT MIGHT DAMAGE YOURSELF. IN ORDER TO AVOID SUCH RISKS, THIS DOCUMENT ACCOUNTS IMPORTANT NOTICES FOR CUSTOMERS WHO ARE WILLING TO USE THIS SOFTWARE. THE FOLLOWING INSTRUCTIONS ARE VERY IMPORTANT. READ AND UNDERSTAND IT CAREFULLY. ADDITIONALLY, IF YOU ARE PLANNING TO USE THE DYNAMIC DNS, THE NAT TRAVERSAL OR THE VPN AZURE FUNCTIONS, READ THE SECTION 3.5 CAREFULLY. THESE FUNCTIONS ARE FREE SERVICES PROVIDED VIA THE INTERNET, ARE NOT GUARANTEED, AND ARE NOT INTENDED TO BE USED FOR BUSINESS OR COMMERCIAL USE. DO NOT USE THESE SERVICES FOR YOUR BUSINESS OR COMMERCIAL USE.
|
||||
|
||||
|
||||
1. VPN Communication Protocols
|
||||
1.1. SoftEther VPN Protocol
|
||||
SoftEther VPN can perform VPN communication. Unlike traditional VPN protocols, SoftEther VPN has an implementation of the newly-designed "SoftEther VPN Protocol (SE-VPN Protocol)" . SE-VPN protocol encapsulates any Ethernet packets into a HTTPS (HTTP over SSL) connection. Therefore SE-VPN protocol can communicate beyond firewalls even if the firewall is configured to block traditional VPN packets by network administrator. SE-VPN protocol is designed and implemented to comply TLS 1.0 (RFC 5246) and HTTPS (RFC 2818). However, it sometimes have different behavior to RFCs. If you are a network administrator and want to block SE-VPN protocols on the firewall, you can adopt a "white-list" policy on the firewall to filter any TCP or UDP packets on the border except explicitly allowed packets towards specific web sites and servers.
|
||||
|
||||
1.2. NAT Traversal Function
|
||||
Generally, if you use traditional VPN systems you have to request a network administrator to make the NAT or firewall to "open" or "relay" specific TCP or UDP ports. However, there are demands somehow to eliminate such working costs on network administrators. In order to satisfy such demands, SoftEther VPN has the newly-implemented "NAT Traversal" function. NAT Traversal is enabled by default. A SoftEther VPN Server running on the computer behind NAT or firewall can accept VPN connections from the Internet, without any special configurations on firewalls or NATs. If you want to disable the NAT Traversal function, modify the "DisableNatTraversal" to "true" on the configuration file of SoftEther VPN Server. In order to disable it on the client-side, append "/tcp" suffix on the destination hostname.
|
||||
|
||||
1.3. Dynamic DNS Function
|
||||
Traditional legacy VPN system requires a static global IP address on the VPN server. In consideration of shortage of global IP addresses, SoftEther Corporation implements the "Dynamic DNS Function" on SoftEther VPN Server. Dynamic DNS is enabled by default. Dynamic DNS function notify the current global IP address of the PC to the Dynamic DNS Servers which are operated by SoftEther Corporation. A globally-unique hostname (FQDN) such as "abc.softether.net" ( "abc" varies as unique per a user) will be assigned on the VPN Server. If you tell this unique hostname to a VPN user, the user can specify it as the destination VPN Sever hostname on the VPN Client and will be able to connect the VPN Server. No IP addresses are required to know beforehand. If the IP address of the VPN Server varies, the registered IP address related to the hostname of Dynamic DNS service will be changed automatically. By this mechanism, no longer need a static global IP address which costs monthly to ISPs. You can use consumer-level inexpensive Internet connection with dynamic IP address in order to operate an enterprise-level VPN system. If you want to disable Dynamic DNS, specify "true" on the "Disabled" items of the "DDnsClient" directive on the SoftEther VPN Server configuration file. * Note for residents in People's Republic of China: If your VPN Server is running on the People's Republic of China, the DNS suffix will be replaced to "sedns.cn" domain. The "sedns.cn" domain is the service possessed and operated by "Beijing Daiyuu SoftEther Technology Co., Ltd" which is a Chinese-local enterprise.
|
||||
|
||||
1.4. VPN over ICMP / VPN over DNS functions
|
||||
If you want to make a VPN connection between SoftEther VPN Client / Bridge and SoftEther VPN Server, but if TCP and UDP packets are prohibited by the firewall, then you can encapsulates payloads into "ICMP" (as known as Ping) or "DNS" packets. This function can realize a VPN connection by using ICMP or DNS even if the firewall or router blocks every TCP or UDP connections. VPN over ICMP / VPN over DNS functions are designed to comply standard ICMP and DNS specifications as possible, however it sometimes has a behavior not to fully comply them. Therefore, few poor-quality routers may be caused a memory-overflow or something troubles when a lot of ICMP or DNS packets are passed, and such routers sometimes freezes or reboots. It might affects other users on the same network. To avoid such risks, append the suffix "/tcp" on the destination hostname which is specified on the VPN-client side to disable VPN over ICMP / DNS functions.
|
||||
|
||||
1.5. VPN Azure Cloud Service
|
||||
If your SoftEther VPN Server is placed behind the NAT or firewall, and by some reason you cannot use NAT Traversal function, Dynamic DNS function or VPN over ICMP/DNS function, you can use VPN Azure Cloud Service. SoftEther Corporation operates VPN Azure Cloud on Internet. After the VPN Server makes a connection to the VPN Azure Cloud, the hostname "abc.vpnazure.net" ( "abc" is a unique hostname) can be specified to connect to the VPN Server via the VPN Azure Cloud. Practically, such a hostname is pointing a global IP address of one of cloud servers which are operated by SoftEther Corporation. If A VPN Client connects to such a VPN Azure host, then the VPN Azure host will relay all traffics between the VPN Client and the VPN Server. VPN Azure is disabled by default. You can activate it easily by using VPN Server Configuration Tool.
|
||||
|
||||
1.6. UDP Acceleration
|
||||
SoftEther VPN has the UDP Acceleration Function. If a VPN consists of two sites detects that UDP channel can be established, UDP will be automatically used. By this function, throughput of UDP increases. If direct UDP channel can be established, direct UDP packets will be used. However, if there is something obstacles such as firewalls or NATs, the "UDP Hole Punching" technology will be used, instead. The "UDP Hole Punching" uses the cloud servers which SoftEther Corporation operates on Internet. UDP Acceleration can be disabled anytime by setting up so on the VPN-client side.
|
||||
|
||||
|
||||
2. VPN Software
|
||||
2.1. SoftEther VPN Client
|
||||
If you use SoftEther VPN Client on Windows, the Virtual Network Adapter device driver will be installed on Windows. The Virtual Network Adapter is implemented as a kernel-mode driver for Windows. The driver is digitally-signed by a certificate issued by VeriSign, Inc. and also sub-signed by Symantec Corporation. A message to ask you want to sure install the driver might be popped up on the screen. SoftEther VPN Client may response the message if possible. SoftEther VPN Client also optimizes the configuration of MMCSS (Multimedia Class Scheduler Service) on Windows. You can undo the optimizations of MMCSS afterwards.
|
||||
|
||||
2.2. SoftEther VPN Server / Bridge
|
||||
If you use SoftEther VPN Server / Bridge on Windows with "Local Bridge" functions, you have to install the low-level Ethernet packet processing driver on the computer. The driver is digitally-signed by a certificate issued by VeriSign, Inc. and also sub-signed by Symantec Corporation. SoftEther VPN Server / Bridge may disable the TCP/IP offloading features on the physical network adapter for Local Bridge function. In Windows Vista / 2008 or greater version, VPN Server may inject a packet-filter driver which complies Windows Filter Platform (WPF) specification into the kernel in order to provide IPsec function. The packet-filter driver will be loaded available only if IPsec function is enabled. Once you enables IPsec function of SoftEther VPN Server, the built-in IPsec function of Windows will be disabled. After you disabled IPsec function of SoftEther VPN Server, then the built-in IPsec function of Windows will revive. In order to provide the Local Bridge function, SoftEther VPN Server / Bridge disables the TCP/IP offloading function on the operating system.
|
||||
|
||||
2.3. User-mode Installation
|
||||
You can install SoftEther VPN Server and SoftEther VPN Bridge as "User-mode" on Windows. In other words, even if you don't have Windows system administrator's privileges, you can install SoftEther VPN as a normal user. User-mode install will disable a few functions, however other most functions work well. Therefore, for example, an employee can install SoftEther VPN Server on the computer in the office network, and he will be able to connect to the server from his home. In order to realize such a system by user-self, no system administrative privileges are required in the view-point of technical. However, breaking rules of the company to install software on the computer without authority might be regarded as an unfavorable behavior. If you are an employee and belong to the company, and the company-policy prohibits installing software or making communications towards Internet without permission, you have to obtain a permission from the network administrator or the executive officer of your company in advance to install SoftEther VPN. If you install VPN Server / Bridge as User-mode, an icon will be appeared on the Windows task-tray. If you feel that the icon disturbs you, you can hide it by your operation. However, you must not exploit this hiding function to install VPN Server on other person's computer as a spyware. Such behavior might be an offence against the criminal law.
|
||||
|
||||
2.4. Keep Alive Function
|
||||
SoftEther VPN Server and SoftEther VPN Bridge has Keep Alive Function by default. The purpose of this function is to sustain the Internet line active. The function transmits UDP packets with a random-byte-array-payload periodically. This function is useful to avoid automatic disconnection on mobile or dial-up connections. You can disable Keep Alive Function anytime.
|
||||
|
||||
2.5. Uninstallation
|
||||
The uninstallation process of SoftEther VPN software will delete all program files. However, non-program files (such as files and data which are generated by running of programs) ) will not be deleted. For technical reason, the exe and resource files of uninstaller might remain. Such remaining files never affects to use the computer, however you can delete it manually. Kernel-mode drivers might not be deleted, however such drivers will not be loaded after the next boot of Windows. You can use "sc" command of Windows to delete kernel-mode drivers manually.
|
||||
|
||||
2.6. Security
|
||||
You should set the administrator's password on SoftEther VPN Server / Bridge after installation. If you neglect to do it, another person can access to SoftEther VPN Server / Bridge and can set the password without your permission. This caution might be also applied on SoftEther VPN Client for Linux.
|
||||
|
||||
2.7. Automatic Update Notification
|
||||
SoftEther VPN software for Windows has an automatic update notification function. It accesses to the SoftEther Update server periodically to check whether or not the latest version of software is released. If the latest version is released, the notification message will be popped up on the screen. In order to achieve this purpose, the version, language settings, the unique identifier, the IP address of your computer and the hostname of VPN Server which is connected to will be sent to the SoftEther Update server. No personal information will be sent. Automatic Update Notification is enabled by default, however you can disable it on the configuration screen. The setting whether turned on or turned off will be saved individually corresponding to each destination VPN server, by VPN Server Manager.
|
||||
|
||||
2.8. Virtual NAT Function
|
||||
A Virtual Hub on SoftEther VPN Server / Bridge has "Virtual NAT Function" . Virtual NAT Function can share a single IP address on the physical network by multiple private IP address of VPN Clients. There are two operation mode of Virtual NAT: User-mode and Kernel-mode. In the user-mode operation, Virtual NAT shares an IP address which is assigned on the host operating system. Unlike user-mode, the kernel-mode operation attempts to find DHCP servers on the physical network. If there are two or more physical networks, a DHCP server will be sought automatically for each segments serially. If a DHCP server found, and an IP address is acquired, the IP address will be used by the Virtual NAT. In this case, an IP entry as a DHCP client will be registered on the IP pool of the physical DHCP Server. The physical default gateway and the DNS server will be used by the Virtual NAT in order to communicate with hosts in Internet. In kernel-mode operation, a Virtual Hub has a virtual MAC address which is operating on the physical Ethernet segment. In order to check the connectivity to Internet, SoftEther VPN periodically sends DNS query packet to resolve the IP address of host "www.yahoo.com" or "www.baidu.com" , and attempts to connect to the TCP port 80 of such a resulted IP address for connectivity check.
|
||||
|
||||
2.9. Unattended Installation of Kernel-mode Components
|
||||
When SoftEther VPN will detect a necessity to install the kernel-mode components on Windows, a confirmation message will be appeared by Windows system. In this occasion, SoftEther VPN software will switch to the Unattended Installation mode in order to respond "Yes" to Windows. This is a solution to prevent dead-locks when a remote-administration is performed from remote place.
|
||||
|
||||
2.10. Windows Firewall
|
||||
SoftEther VPN software will register itself as a safe-program. Such an entry will be remain after the uninstallation. You can remove it manually from the Control Panel of Windows.
|
||||
|
||||
|
||||
3. Internet Services
|
||||
3.1. Internet Services which are provided by SoftEther Corporation
|
||||
SoftEther Corporation provides Dynamic DNS, NAT Traversal and VPN Azure server services on the Internet. These services are free of charge. Customers can access to the services by using SoftEther VPN software, via Internet. These service will be planned to be available from Open-Source version of "SoftEther VPN" which will be released in the future.
|
||||
|
||||
3.2. Sent Information and Privacy Protection
|
||||
SoftEther VPN software may send an IP address, hostname, the version of VPN software on the customer's computer to the cloud service operated by SoftEther Corporation, in order to use the above services. These sending of information are minimal necessary to use the services. No personal information will be sent. SoftEther Corporation records log files of the cloud service servers for 90 days at least with the received information. Such logs will be used for troubleshooting and other legitimate activities. SoftEther Corporation may provide logs to a public servant of Japanese government who are belonging to courts, police stations and the prosecutor's office, in order to comply such authorities' order. (Every Japanese public servants are liable by law to keep the information close.) Moreover, the IP addresses or other information will be processed statistically and provided to the public, not to expose the each concrete IP address, in order to release the release of research activities.
|
||||
|
||||
3.3. Communication Data via VPN Azure Service
|
||||
Regardless of the above 3.2 rule, if the customer sends or receives VPN packets using VPN Azure Cloud Service, the actual payloads will stored and forwarded via the volatile memory of the servers for very short period. Such a behavior is naturally needed to provide the "VPN relay service" . No payloads will be recorded on "fixed" storages such as hard-drives. However, the "Wiretapping for Criminals Procedures Act" (The 137th legislation ruled on August 18, 1999 in Japan) requires telecommunication companies to allow the Japanese government authority to conduct a wire-tapping on the line. VPN Azure Servers which are physically placed on Japan are subjects of this law.
|
||||
|
||||
3.4. Comply to Japanese Telecommunication Laws
|
||||
SoftEther Corporation complies with Japanese Telecommunication Laws as necessary to provide online services via Internet.
|
||||
|
||||
3.5. Free and Academic Experiment Services
|
||||
SoftEther provides Dynamic DNS, NAT Traversal and VPN Azure as academic experiment services. Therefore, there services can be used for free of charge. These services are not parts of "SoftEther VPN Software Products" . These services are provided without any warranty. The services may be suspended or discontinued by technical or operational matters. In such occasions, users will not be able to use the services. A user have to understand such risks, and to acknowledge that such risks are borne by a user-self. SoftEther will never be liable to results or damages of use or unable-to-use of the service. Even if the user has already paid the license-fee of the commercial version of SoftEther VPN, such paid fees don't include any fees of these services. Therefore, if the online services will stop or be discontinued, no refunds or recoveries of damages will be provided by SoftEther Corporation.
|
||||
|
||||
3.6. DNS Proxy Cloud Servers
|
||||
In some regions, when a user uses Internet, a DNS query sometimes broken or lost when it is passing through the ISP line. If SoftEther VPN Server, Client or Bridge detects a possibility that the accessing to the actual VPN server might be unstable, then DNS queries will be also transferred to the DNS proxy cloud servers which are operated by SoftEther Corporation. A DNS proxy cloud server will respond DNS queries with answering correct a IP address.
|
||||
|
||||
|
||||
4. General Cautions
|
||||
4.1. Needs an Approval from Network Administrator
|
||||
SoftEther VPN has powerful functions which don't require special settings by network administrators. For example, you need not to ask the administrator to configure the existing firewall in order to "open" a TCP/UDP port. Such characteristic features are for the purpose to eliminate working times and costs of network administrators, and avoid misconfiguration-risks around the tasks to open specific exception ports on the firewall. However, any employees belong to the company have to obtain an approval from the network administrator before installs SoftEther VPN. If your network administrator neglects to provide such an approval, you can consider to take an approval from an upper authority. (For example, executive officer of the company.) If you use SoftEther VPN without any approvals from the authority of your company, you might have disadvantage. SoftEther Corporation will be never liable for results or damages of using SoftEther VPN.
|
||||
|
||||
4.2. Observe Laws of Your Country
|
||||
If your country's law prohibits the use of encryption, you have to disable the encryption function of SoftEther VPN by yourself. Similarly, in some countries or regions, some functions of SoftEther VPN might be prohibited to use by laws. Other countries' laws are none of SoftEther Corporation's concern because SoftEther Corporation is an enterprise which is located and registered in Japan physically. For example, there might be a risk that a part of SoftEther VPN conflicts an existing patent which is valid only on the specific region. SoftEther Corporation has no interests in such specific region outside Japan's territory. Therefore, if you want to use SoftEther VPN in regions outside Japan, you have to be careful not to violate third-person's rights. You have to verify the legitimacy of the use of SoftEther VPN in the specific region before you actually use it in such region. By nature, there are almost 200 countries in the World, and each country's law is different each other. It is practically impossible to verify every countries' laws and regulations and make the software comply with all countries' laws in advance to release the software. Therefore SoftEther Corporation has verified the legitimacy of SoftEther VPN against the laws and regulations of only Japan. If a user uses SoftEther VPN in a specific country, and damaged by public servants of the government authority, SoftEther Corporation will never be liable to recover or compensate such damages or criminal responsibilities.
|
||||
|
||||
|
||||
5. VPN Gate Academic Experiment Project
|
||||
(This chapter applies only on SoftEther VPN software package which contains the extension plug-in for VPN Gate Academic Experiment Project.)
|
||||
5.1. About VPN Gate Academic Experiment Project
|
||||
VPN Gate Academic Experiment Project is an online service operated for just the academic research purpose at the graduate school of University of Tsukuba, Japan. The purpose of this research is to expend our knowledge about the "Global Distributed Public VPN Relay Server" (GDPVRS) technology. For details, please visit http://www.vpngate.net/.
|
||||
|
||||
5.2. About VPN Gate Service
|
||||
SoftEther VPN Server and SoftEther VPN Client may contain "VPN Gate Service" program. However, VPN Gate Service is disabled by default.
|
||||
VPN Gate Service should be activated and enabled by the voluntary intention of the owner of the computer which SoftEther VPN Server or SoftEther VPN Client is installed on. After you activate VPN Gate Service, the computer will be start to serve as a part of the Global Distributed Public VPN Relay Servers. The IP address, hostname and related information of the computer will be sent and registered to the directory server of VPN Gate Academic Experiment Project, and they will be published and disclosed to the public. This mechanism will allow any VPN Gate Client software's user to connect to the VPN Gate Service running on your computer. While the VPN session between a VPN Gate Client and your VPN Gate Service is established, the VPN Gate Client's user can send/receive any IP packets towards the Internet via the VPN Gate Service. The global IP address of the VPN Gate Service's hosing computer will be used as the source IP address of such communications which a VPN Gate Client initiates.
|
||||
VPN Gate Service will send some information to the VPN Gate Academic Experiment Service Directory Server. The information includes the operator's information which described in section 5.5, logging settings, uptime, operating system version, type of protocol, port numbers, quality information, statistical information, VPN Gate clients' log history data (includes dates, IP addresses, version numbers and IDs) and the version of the software. These information will be exposed on the directory. VPN Gate Service also receives a key for encoding which is described on the chapter 5.9 from the directory server.
|
||||
|
||||
5.3. Details of VPN Gate Service's Behavior
|
||||
If you enable VPN Gate Service manually, which is disabled by default, the "VPNGATE" Virtual Hub will be created on the SoftEther VPN Server. If you are using SoftEther VPN Client and attempt to active VPN Gate Service on it, an equivalent program to SoftEther VPN Server will be invoked on the same process of SoftEther VPN Client, and the "VPNGATE" Virtual Hub will be created. The "VPNGATE" Virtual Hub contains a user named "VPN" by default which permits anyone on the Internet to make a VPN connection to the Virtual Hub. Once a VPN Client connects to the "VPNGATE" Virtual Hub, any communication between the user and the Internet will pass through the Virtual Hub, and transmitted/received using the physical network interface on the computer which SoftEther VPN Server (or SoftEther VPN Client) is running on. This will cause the result that a destination host specified by the VPN Client will identify that the source of the communication has initiated from the VPN Gate Service's hosting computer's IP address. However, for safety, any packets which destinations are within 192.168.0.0/255.255.0.0, 172.16.0.0/255.240.0.0 or 10.0.0.0/255.0.0.0 will be blocked by the "VPNGATE" Virtual Hub in order to protect your local network. Therefore, if you run VPN Gate Service on your corporate network or private network, it is safe because anonymous VPN Client users will not be permitted to access such private networks. VPN Gate Service also serves as relay for accessing to the VPN Gate Directory Server.
|
||||
In order to make VPN Gate Service familiar with firewalls and NATs, it opens an UDP port by using the NAT Traversal function which is described on the section 1.2. It also opens and listens on some TCP ports, and some TCP and UDP ports will be specified as the target port of Universal Plug and Play (UPnP) Port Transfer entries which are requested to your local routers. UPnP request packets will be sent periodically. Some routers keep such an opened TCP/UDP port permanently on the device. If you wish to close them, do it manually.
|
||||
VPN Gate Service also provides the mirror-site function for www.vpngate.net. This is a mechanism that a copy of the latest contents from www.vpngate.net will be hosted by the mirror-site tiny HTTP server which is running on the VPN Gate Service program. It will register itself on the mirror-sites list in www.vpngate.net. However, it never relays any other communications which are not towards www.vpngate.net.
|
||||
|
||||
5.4. Communication between Internet via VPN Gate Service
|
||||
VPN Gate Service provides a routing between users and the Internet, by using the Virtual NAT Function which is described on the section 2.8. VPN Gate Service sends polling Ping packets to the server which is located on University of Tsukuba, and the Google Public DNS Server which is identified as 8.8.8.8, in order to check the latest quality of your Internet line. VPN Gate Service also sends and receives a lot of random packets to/from the Speed Test Server on University of Tsukuba. These quality data will be reported to VPN Gate Directory Server, automatically and periodically. The result will be saved and disclosed to the public. These periodical polling communication are adjusted not to occupy the Internet line, however in some circumstances they might occupy the line.
|
||||
|
||||
5.5. Operator's Information of VPN Gate Service
|
||||
If you activate VPN Gate Service on your computer, the computer will be a part of the Global Distributed Public VPN Relay Servers. Therefore, the Operator's administrative information of your VPN Gate Service should be reported and registered on the VPN Gate Service Directory. Operator's information contains the name of the operator and the abuse-reporting contact e-mail address. These information can be inputted on the screen if the VPN Gate configuration. Inputted information will be transmitted to the VPN Gate Directory Server, stored and disclosed to the public. So you have to be careful to input information. By the way, until you specify something as the operator's information, the computer's hostname will be used automatically as the field of the name of the operator, by appending the "'s owner" string after the hostname.
|
||||
|
||||
5.6. Observe Laws to Operate VPN Gate Service
|
||||
In some countries or regions, a user who is planning to activate and operate VPN Gate Service, he are mandated to obtain a license or register a service from/to the government. If your region has such a regulation, you must fulfill mandated process before activating VPN Gate Service in advance. Neither the developers nor operators of the VPN Gate Academic Experiment Project will be liable for legal/criminal responsibilities or damages which are occurred from failure to comply your local laws.
|
||||
|
||||
5.7. Protect Privacy of Communication
|
||||
Most of countries have a law which requires communication service's operators, including VPN Gate Service operators, to protect the privacy of communication of third-persons. When you operate VPN Gate Service, you must always protect user's privacy.
|
||||
|
||||
5.8. Packet Logs
|
||||
The packet logging function is implemented on VPN Gate Service. It records essential headers of major TCP/IP packets which are transmitted via the Virtual Hub. This function will be helpful to investigate the "original IP address" of the initiator of communication who was a connected user of your VPN Gate Service, by checking the packet logs and the connection logs. The packet logs are recorded only for such legitimate investigates purpose. Do not peek nor leak packet logs except the rightful purpose. Such act will be violate the section 5.7.
|
||||
|
||||
5.9. Packet Logs Automatic Archiving and Encoding Function
|
||||
The VPN Gate Academic Experiment Service is operated and running under the Japanese constitution and laws. The Japanese constitution laws demand strictly protection over the privacy of communication. Because this service is under Japanese rules, the program of VPN Gate Service implements this "Automatic Log File Encoding" protection mechanism, and enabled by default.
|
||||
The VPN Gate Service is currently configured to encode packet log files which has passed two or more weeks automatically, by default. In order to protect privacy of communication, if a packet log file is once encoded, even the administrator of the local computer cannot censor the packet log file. This mechanism protects privacy of end-users of VPN Gate Service.
|
||||
You can change the VPN Gate Service setting to disable this automatic encoding function. Then packet log files will never be encoded even after two weeks passed. In such a configuration, all packet logs will remain as plain-text on the disk. Therefore you have to take care not to violate user's privacy.
|
||||
If you are liable to decode an encoded packet log files (for example: a VPN Gate Service's user illegally abused your VPN Gate Service and you have to decode the packet logs in order to comply the laws), contact the administrator of the VPN Gate Academic Experiment Service at Graduate School of University of Tsukuba, Japan. You can find the contact address at http://www.vpngate.net/. The administrator of VPN Gate Service will respond to decode the packet logs if there is an appropriate and legal request from court or other judicial authorities, according to laws.
|
||||
|
||||
5.10. Caution if You Operate VPN Gate Service in the Japan's Territories
|
||||
When a user operates VPN Gate Service in the Japan's territories, such an act may be regulated under the Japanese Telecommunication Laws if the operation is a subject to the law. However, in such a circumstance, according to the "Japanese Telecommunication Business Compete Manual [supplemental version]" , non- profitable operations of communications are not identified as a "telecommunication business" . So usual operators of VPN Gate Service are not subjects to "telecommunication business operators" , and not be mandated to register to the government. Even so, legalities to protect the privacy of communication still imposed. As a conclusion, if you operate VPN Gate Service in the Japan's Territories, you must not leak the secrets of communications which are transmitted via your operating VPN Gate Service.
|
||||
|
||||
5.11. VPN Gate Client
|
||||
If SoftEther VPN Client contains the VPN Gate Client plug-in, you can use it to obtain the list of current operating VPN Gate Service servers in the Internet, and make a VPN connection to a specific server on the list.
|
||||
VPN Gate Client always keeps the latest list of the VPN Gate Services periodically. Be careful if you are using a pay-per-use Internet line.
|
||||
When you start the VPN Gate Client software, the screen which asks you activate or not VPN Gate Service will be appeared. For details of VPN Gate Service, read the above sections.
|
||||
|
||||
5.12. Caution before Joining or Exploiting VPN Gate Academic Experiment Project
|
||||
The VPN Gate Academic Experiment Service is operated as a research project at the graduate school on University of Tsukuba, Japan. The service is governed under the Japanese laws. Other countries' laws are none of our concerns nor responsibilities.
|
||||
By nature, there are almost 200 countries in the World, with different laws. It is impossible to verify every countries' laws and regulations and make the software comply with all countries' laws in advance to release the software. If a user uses VPN Gate service in a specific country, and damaged by public servants of the authority, the developer of either the service or software will never be liable to recover or compensate such damages or criminal responsibilities.
|
||||
By using this software and service, the user must observe all concerned laws and rules with user's own responsibility. The user will be completely liable to any damages and responsibilities which are results of using this software and service, regardless of either inside or outside of Japan's territory.
|
||||
If you don't agree nor understand the above warnings, do not use any of VPN Gate Academic Experiment Service functions.
|
||||
VPN Gate is a research project for just academic purpose only. VPN Gate was developed as a plug-in for SoftEther VPN and UT-VPN. However, all parts of VPN Gate were developed on this research project at University of Tsukuba. Any parts of VPN Gate are not developed by SoftEther Corporation. The VPN Gate Research Project is not a subject to be led, operated, promoted nor guaranteed by SoftEther Corporation.
|
||||
|
||||
5.13. The P2P Relay Function in the VPN Gate Client to strengthen the capability of circumvention of censorship firewalls
|
||||
VPN Gate Clients, which are published since January 2015, include the P2P Relay Function. The P2P Relay Function is implemented in order to strengthen the capability of circumvention of censorship firewalls. If the P2P Relay Function in your VPN Gate Client is enabled, then the P2P Relay Function will accept the incoming VPN connections from the VPN Gate users, which are located on mainly same regions around you, and will provide the relay function to the external remote VPN Gate Servers, which are hosted by third parties in the free Internet environment. This P2P Relay Function never provides the shared NAT functions nor replaces the outgoing IP address of the VPN Gate users to your IP addresses because this P2P Relay Function only provides the "reflection service" (hair-pin relaying), relaying from incoming VPN Gate users to an external VPN Gate Server. In this situation, VPN tunnels via your P2P Relay Function will be finally terminated on the external VPN Gate Server, not your VPN Gate Client. However, the VPN Gate Server as the final destination will record your IP address as the source IP address of VPN tunnels which will be initiated by your P2P Relay Function. Additionally, user packets which are transmitted via your P2P Relay Function will be recorded on your computer as packet logs as described on the section 5.8. After you installed the VPN Gate Client, and if the P2P Relay Function will be enabled automatically, then all matters on the 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.10, 5.11 and 5.12 sections will be applied to you and your computer, as same to the situation when you enabled the VPN Gate Service (the VPN Gate Server function). If your P2P Function is enabled, then your computer's IP address and the default operator's name which is described on the section 5.5 will be listed on the VPN Gate Server List which is provided by the VPN Gate Project. You can change these strings by editing the "vpn_gate_relay.config" file manually. Note that you need to stop the VPN Client service before editing it. The VPN Gate Client will automatically enable the P2P Relay Function on your computer if the VPN Gate Client detects that your computer might be located in regions where there are existing censorship firewalls. If you want to disable the P2P Relay Function, you must set the "DisableRelayServer" flag to "true" on the "vpn_client.config" file which is the configuration file of the VPN Client. Note that you need to stop the VPN Client service before editing it. The VPN Gate Client does not recognize the particular regulation of your country or your region. The VPN Gate Client activates the P2P Relay Function even if your country or your region has the law to restrict running P2P relay functions. Therefore, in such a case, you must disable the P2P Relay Function on the VPN Gate Client manually by setting the "DisableRelayServer" flag if you reside in such a restricted area, in your own responsibility.
|
||||
|
140
src/bin/hamcore/warning_tw.txt
Normal file
140
src/bin/hamcore/warning_tw.txt
Normal file
@ -0,0 +1,140 @@
|
||||
關於 SoftEther VPN 的重要聲明
|
||||
|
||||
嵌入在本軟體的 VPN 通信功能比以往任何時候都要強大。這個強大的 VPN 能力將為您帶來巨大的好處。然而,如果你濫用此軟體, IT 可能會損害你自己。為了避免這樣的風險,本文件為願意使用本軟體的客戶公佈了重要提示。下面的說明是非常重要的。請仔細閱讀並理解它。
|
||||
|
||||
|
||||
1. VPN 通信協議
|
||||
1.1. SoftEther VPN 協定
|
||||
SoftEther VPN 可以進行 VPN 通信。不同於傳統的 VPN 協定, SoftEther VPN 有一個全新設計的 "SoftEther VPN 協定 (SE-VPN 協定)" 的實現。SE-VPN 協定將任何乙太網封包封裝進 HTTPS (HTTP over SSL) 連接。因此 SE-VPN 協議可以越過防火牆通信,即使防火牆被網路系統管理員配置阻止傳統的 VPN 封包。SE-VPN 協議的設計和實施以符合 TLS 1.0 (RFC 5246) 和 HTTPS (RFC 2818)。然面,有時對 RFC 有不同的行為。如果你是一個網路系統管理員,要在防火牆上阻止 SE-VPN 協議,你可以在防火牆上採取 "白名單" 策略,來過濾任何在邊界上的 TCP 或 UDP 封包,除了明確允許到特定網站和伺服器的封包。
|
||||
|
||||
1.2. NAT 穿透功能
|
||||
一般來說,如果你使用傳統的 VPN 系統,你必須要求網路系統管理員把 NAT 或防火牆設置為 "打開" 或 "中繼" 特定的 TCP 或 UDP 埠。然而,也有需要以某種方式消除網路系統管理員的這種工作成本。為了滿足這種需求, SoftEther VPN 有一個新實施的 "NAT 穿越" 功能。NAT 穿越預設情況下是啟用的。一個在 NAT 或防火牆後面、在電腦上運行的 SoftEther VPN 伺服器可以接受來自網際網路的 VPN 連接,在防火牆或 NAT 上沒有任何特殊的配置。如果你想禁用 NAT 穿越功能,修改 SoftEther VPN 伺服器上的設定檔 "DisableNatTraversal" 為 "true" 。為了在用戶端禁用它,在目標主機添加 "/ tcp" 尾碼。
|
||||
|
||||
1.3. 動態 DNS 功能
|
||||
傳統的 VPN 系統在 VPN 伺服器上需要一個靜態全球 IP 位址。鑒於全球 IP 位址的短缺, SoftEther 公司在 SoftEther VPN 伺服器上實施了 "動態 DNS 功能" 。動態 DNS 是預設啟用的。動態 DNS 功能通知電腦的當前全球 IP 位址到由 SoftEther 公司操作的動態 DNS 伺服器。一個全球唯一主機名稱 (FQDN) ,如 "abc.softether.net" ( "ABC" 隨每個用戶唯一而不同) 將在 VPN 伺服器上被指定。如果你告訴一個 VPN 用戶這個唯一的主機名稱,用戶可以在 VPN 用戶端上將其指定為目標 VPN 伺服器的主機名稱,將能連接到 VPN 伺服器。事先無需知道 IP 位址。如果 VPN 伺服器的 IP 位址變化了,相關動態 DNS 服務的主機名稱註冊的 IP 位址會自動改變。通過這種機制,不再需要每月向 ISP 繳費的全球靜態 IP 位址。您可以使用帶動態 IP 位址的、消費者級、廉價的網際網路連接,來操作一個企業級的 VPN 系統。如果你想禁用動態 DNS ,把 SoftEther VPN 伺服器設定檔中的 "DDnsClient" 指令的 "Disabled" 專案指定為 "true" 。* 中華人民共和國的居民請注意:如果你的 VPN 伺服器運行在中華人民共和國, DNS 尾碼將被替換為 "sedns.cn" 功能變數名稱。 "sedns.cn" 功能變數名稱服務由 "北京大游索易科技有限公司" 擁有和運營,它是一個中國本地的企業。
|
||||
|
||||
1.4. VPN over ICMP / VPN over DNS 功能
|
||||
如果你想在 SoftEther VPN 用戶端 / 橋接器和 SoftEther VPN 伺服器之間建立一個 VPN 連接,但如果 TCP 和 UDP 封包被防火牆禁止通過,那麼你可以把有效載荷封裝進 "ICMP" (被稱為 Ping) 或 "DNS" 封包。通過使用 ICMP 或 DNS ,即使防火牆或路由器阻止每個 TCP 或 UDP 連接,此功能可以實現 VPN 連接。VPN over ICMP/ VPN over DNS 功能盡可能的設計符合標準 ICMP 和 DNS 規範,但有時也不完全符合他們的行為。因此,一些劣質路由器可能會導致記憶體溢出或當有很多 ICMP 或 DNS 封包通過時產生麻煩,這種路由器有時當機或重新啟動。它可能會影響在同一網路上的其他使用者。為了避免這樣的風險,在 VPN 用戶端指定的目標主機名稱上附加尾碼 "/tcp" ,禁用 VPN over ICMP / DNS 功能。
|
||||
|
||||
1.5. VPN Azure 雲服務
|
||||
如果您的 SoftEther VPN 伺服器放置在 NAT 或防火牆後面,由於某種原因,你不能使用 NAT 穿透功能、動態 DNS 功能或 VPN over ICMP/DNS 功能,您可以使用 VPN Azure Cloud 服務。 SoftEther 公司在網際網路上運行 VPN Azure 雲。VPN 伺服器連接到 VPN Azure 雲,主機名稱 "abc.vpnazure.net" ( "abc" 是一個唯一的主機名稱) 通過 VPN Azure 雲可以被指定連接到 VPN 伺服器。實際上,這樣的一個主機名稱指向一個由 SoftEther 公司所操作的雲伺服器的全球 IP 位址。如果一個 VPN 用戶端連接到一個 VPN Azure 主機,那麼 VPN Azure 主機轉播在 VPN 用戶端和 VPN 伺服器之間的所有流量。VPN Azure 在預設情況下是禁用的。您可以通過使用 VPN 伺服器配置工具很容易地啟動它。
|
||||
|
||||
1.6. UDP 加速
|
||||
SoftEther VPN 具有 UDP 加速功能。如果一個 VPN 是由兩個網站組成檢測到 UDP 通道已建立, UDP 將自動使用。通過此功能, UDP 的輸送量增加了。如果直接的 UDP 通道已被建立,直接的 UDP 封包將被使用。但是,如果有一些障礙,如防火牆或 NAT , "UDP 沖孔" 技術將被使用。 "UDP 沖孔" 使用 SoftEther 公司在網際網路上操作的雲伺服器。UDP 加速通過在 VPN 用戶端一側進行設置在任何時候可以被禁用。
|
||||
|
||||
|
||||
2. VPN 軟體
|
||||
2.1. SoftEther VPN 用戶端
|
||||
如果您在 Windows 上使用 SoftEther VPN 用戶端,虛擬網路介面卡設備驅動程式將安裝在 Windows 上。虛擬網路介面卡作為一個核心模式驅動程式實施在 Windows 上。驅動程式是數位簽章的,由 VeriSign , Inc 所簽發的證書,還由 Symantec Corporation (賽門鐵克公司) 簽署。問你要確保安裝驅動程式的一條消息可能會彈出在螢幕上。如果可能的話, SoftEther VPN 用戶端可能會回應訊息。SoftEther VPN 用戶端還優化了在 Windows 上 MMCSS (多媒體類計畫程式服務) 的配置。您以後可以撤銷 MMCSS 的優化。
|
||||
|
||||
2.2. SoftEther VPN 伺服器 / 橋接器
|
||||
如果您使用 SoftEther VPN 伺服器 / 橋接器在 Windows 上的 "本地橋接器" 功能,你必須在電腦上安裝低級別的乙太網封包處理驅動程式。驅動程式是數位簽章的,由 VeriSign , Inc 所簽發的證書,還由 Symantec Corporation (賽門鐵克公司) 簽署。SoftEther VPN 伺服器 / 橋接器在物理網路介面卡本地橋接器功能中可以禁用 TCP / IP 卸載特性。在 Windows Vista /2008 或更高版本, VPN 伺服器可以注入一個符合 Windows 過濾平臺 (WPF) 規範的封包過濾驅動程式至內核以提供 IPsec 功能。封包過濾驅動程式將被載入僅當啟用 IPsec 功能時。一旦您啟用 SoftEther VPN 伺服器的 IPsec 功能, Windows 內置的 IPsec 功能將被禁用。在您禁用了 SoftEther VPN 伺服器的 IPsec 功能之後,那麼 Windows 內置的 IPsec 功能將復蘇。為了提供本地橋功能, SoftEther VPN 伺服器 / 橋接器在作業系統上禁用 TCP / IP 卸載功能。
|
||||
|
||||
2.3. 使用者模式安裝
|
||||
您可以在 Windows 以 "使用者模式" 安裝 SoftEther VPN 伺服器和 SoftEther VPN 橋接器。換句話說,即使你沒有 Windows 系統管理員的許可權,你可以作為一個普通用戶安裝 SoftEther VPN。使用者模式安裝將禁用一些功能,但其他大部分功能都能正常工作。因此,例如,雇員可以在辦公室網路中的電腦上安裝 SoftEther VPN 伺服器端,他將能夠從他家連接到伺服器。為了由使用者自己實現這樣的系統,在技術觀點上無須系統管理員許可權。然而,違反公司規定未經授權在電腦上安裝軟體可能會被視為不受歡迎的行為。如果你是一名雇員屬於該公司,該公司的政策禁止安裝軟體或未經允許進行網際網路通信,你必須事先從網路系統管理員或您公司的總裁獲得許可,再安裝 SoftEther VPN。如果您以使用者模式安裝 VPN 伺服器 / 橋接器,圖示將出現在 Windows 任務託盤。如果您覺得該圖示妨礙你了,你可以操作將其隱藏。然而,你不能利用此隱藏功能在其他人的電腦上安裝 VPN 伺服器作為間諜軟體。這種行為可能是違反刑法的犯罪。
|
||||
|
||||
2.4. 保持活躍功能
|
||||
預設情況下, SoftEther VPN 伺服器和 SoftEther VPN 橋接器有保持活躍的功能。此功能的目的是為了維持互連網線路的活躍。該功能定期發送帶有隨機 - 位元組 - 陣列 - 有效載荷的 UDP 封包。此功能為避免移動或撥號連線的自動斷開是非常有用的。您可以隨時禁用保持活躍功能。
|
||||
|
||||
2.5. 卸載
|
||||
SoftEther VPN 軟體的卸載過程將刪除所有程式檔。然而,非程式檔 (如程式運行所產生的檔和資料) 將不會被刪除。由於技術原因,卸載程式的 exe 和資源檔可能仍然存在。這些剩餘的檔決不會影響使用電腦,但是你可以手動刪除它。核心模式驅動程式可能不會被刪除,但是這樣的驅動程式在 Windows 下次啟動時不會被載入。您可以使用 Windows 的 "sc" 命令手動刪除核心模式驅動程式。
|
||||
|
||||
2.6. 安全
|
||||
你應該在安裝後在 SoftEther VPN 伺服器 / 橋接器設置管理員的密碼。如果你沒有做到這一點,其他人未經您許可可以訪問 SoftEther VPN 伺服器 / 橋接器,並可以設置密碼。這個警告可能也適用於 Linux 版本的 SoftEther VPN 用戶端。
|
||||
|
||||
2.7. 自動更新通知
|
||||
Windows 版的 SoftEther VPN 軟體有自動更新通知功能。它定期訪問 SoftEther 更新伺服器檢查是否發佈了最新版本的軟體。如果最新版已發佈,通知消息將在螢幕上彈出。為了達到這個目的,版本、語言設置、您的電腦的 IP 位址、唯一識別碼、連接到 VPN 伺服器的主機名稱將被發送到 SoftEther 的更新伺服器。任何個人資訊將不被發送。預設情況下自動更新通知是啟用的,然而你可以在配置螢幕上禁用它。通過 VPN 伺服器管理器,設置是否打開或關閉將被單獨保存對應每個目標 VPN 伺服器。
|
||||
|
||||
2.8. 虛擬 NAT 功能
|
||||
虛擬 HUB 在 SoftEther VPN 伺服器 / 橋接器上有 "虛擬 NAT 功能" 。虛擬 NAT 功能可以通過 VPN 用戶端的多個私有 IP 位址共用同一個物理網路上的單一 IP 位址。有兩種虛擬 NAT 的操作模式:使用者模式和核心模式。在使用者模式下運行,虛擬 NAT 共用主作業系統上分配的一個 IP 位址。不同於使用者模式,核心模式的操作試圖找到物理網路上的 DHCP 伺服器。如果有兩個或以上的物理網路,每個網段上的 DHCP 伺服器會被自動連續尋找。如果發現 DHCP 伺服器,並獲取一個 IP 位址, IP 位址將被虛擬 NAT 使用。在這種情況下,作為 DHCP 用戶端的 IP 條目將被登記在物理 DHCP 伺服器的 IP 池。為了在互連網中和主機進行通信,物理預設閘道器和 DNS 伺服器將被虛擬 NAT 使用。在核心模式的操作中,虛擬 HUB 上有一個運行在物理乙太網段上的虛擬 MAC 位址。
|
||||
為了檢查到網際網路的連通性, SoftEther VPN 定期發送 DNS 查詢封包,以解析 "www.yahoo.com" 或 "www.baidu.com" 主機的 IP 位址,並嘗試連接到這樣結果 IP 位址的 TCP 80 埠,進行連通性檢查。
|
||||
|
||||
2.9. 核心模式組件的無人值守安裝
|
||||
當 SoftEther VPN 檢測到需要在 Windows 安裝核心模式元件, Windows 系統將出現一條確認消息。在此之際, SoftEther VPN 軟體將切換到無人值守的安裝模式,以回應 "是" 到 Windows。當從遙遠地點進行遠端系統管理時,這個解決方案可以防止鎖死。
|
||||
|
||||
2.10. Windows 防火牆
|
||||
SoftEther VPN 軟體將其自身註冊為一個安全程式。這樣的條目在卸載後仍被保留。您可以從 Windows 的控制台中手動刪除它。
|
||||
|
||||
|
||||
3. 互連網服務
|
||||
3.1. SoftEther 公司提供的互連網服務
|
||||
SoftEther 公司在網際網路上提供了動態 DNS、NAT 穿透、和 VPN Azure 伺服器服務。這些服務都是免費的。客戶通過使用 SoftEther VPN 軟體,經由網際網路訪問這些服務。這些服務計畫將在以後發佈的 "SoftEther VPN" 的開源版本中也提供。
|
||||
|
||||
3.2. 發送的資訊和隱私保護
|
||||
為了使用上述服務, SoftEther VPN 軟體可以從客戶的電腦到由 SoftEther 公司操作的雲服務發送 IP 位址、主機名稱、VPN 軟體的版本。這些資訊的發送是要使用這些服務的最少必須內容。無任何個人資訊將被發送。 SoftEther 公司記錄接收到的最少資訊在雲服務伺服器的日誌檔為 90 天。這些日誌將被用於故障排除和其他合法活動。SoftEther 公司可以提供日誌給屬於法院、警察局和檢察院的日本政府的公務人員,以遵守當局的命令。(每一個日本公務人員有責任根據法律密切保存這些資訊。) 此外, IP 位址或其他資訊將進行統計處理,並提供給公眾,而不是暴露每一個具體的 IP 位址,以進行研究活動的發佈。
|
||||
|
||||
3.3. 通過 VPN Azure 服務的通信資料
|
||||
不管以上 3.2 的規則,如果客戶使用 VPN Azure 雲服務的發送或接收 VPN 封包,實際的有效載荷將在很短的時間通過伺服器的易失性記憶體存儲和轉發。這樣的行為自然需要提供 "VPN 中繼服務" 。無有效載荷將被記錄在 "固定的" 儲存設備,如硬碟驅動器。然而, "竊聽罪犯程式法" (日本在 1999 年 8 月 18 日裁決的第 137 個立法) 要求電信公司允許日本政府當局進行線上竊聽。物理放置在日本的 VPN Azure 伺服器也是服從於這個法律。
|
||||
|
||||
3.4. 符合日本電信法
|
||||
SoftEther 公司符合日本電信法必要時通過網際網路提供線上服務。
|
||||
|
||||
3.5. 免費和學術實驗服務
|
||||
SoftEther 作為學術實驗服務提供動態 DNS、NAT 穿透和 VPN Azure。因此,服務可以被用於免費。這些服務不是 "SoftEther VPN 軟體產品" 的一部分。這些服務不提供任何保證。這些服務由於技術或操作問題可能會被暫停或終止。在這種情況下,使用者將無法使用這些服務。用戶必須瞭解這些風險,並承認由用戶自行承擔這樣的風險。SoftEther 永遠不會對結果、或使用的損害、或服務無法使用承擔任何責任。即使用戶已經支付 SoftEther VPN 商業版的許可費用,因為支付的費用不包含這些服務的任何費用。因此,如果線上服務將停止或終止, SoftEther 公司將不提供任何退款或損害的補償。
|
||||
|
||||
3.6. DNS 代理雲伺服器
|
||||
在某些地區,當使用者使用互連網,通過 ISP 線路時,一個 DNS 查詢有時損壞或丟失。如果 SoftEther VPN 的伺服器、用戶端或橋接器檢測到訪問實際的 VPN 伺服器可能不穩定的可能性,那麼 DNS 查詢將被轉移到由 SoftEther 公司運行的 DNS 代理雲伺服器。DNS 代理雲伺服器將回答糾正一個 IP 位址響應 DNS 查詢。
|
||||
|
||||
|
||||
4. 一般注意事項
|
||||
4.1. 需要網路系統管理員的批准
|
||||
SoftEther VPN 具有強大的功能,不需要網路系統管理員的特殊設置。例如,您不必要求管理員配置現有的防火牆以 "打開" TCP / UDP 埠。這些性能特點是為了以下目的:消除網路系統管理員的工作時間和成本,並避免誤配置風險,如在防火牆上打開特定的異常埠的任務。然而,在安裝 SoftEther VPN 前,屬於公司的任何員工必須獲得網路系統管理員的批准。如果您的網路系統管理員忽略提供這樣的批准,你可以考慮獲得上級領導的批准。(例如,該公司總裁。) 如果您沒有獲得公司領導的批准使用 SoftEther VPN ,你可能有不利的條件。SoftEther 公司將不會對使用 SoftEther VPN 的結果或損害承擔責任。
|
||||
|
||||
4.2. 遵守貴國的法律
|
||||
如果您所在國家的法律禁止加密的使用,你自己必須禁用 SoftEther VPN 的加密功能。同樣,在一些國家或地區, SoftEther VPN 的某些功能可能會被法律禁止使用。其他國家的法律與 SoftEther 公司無關,因為 SoftEther 公司是一個在物理上位於並註冊於日本的企業。例如,可能存在一種風險,即 SoftEther VPN 的一部分與只在某些特定區域有效的現有專利衝突。SoftEther 公司沒有在日本固有領土之外這些特定區域的利益。因此,如果你想在日本以外的地區使用 SoftEther VPN ,你必須要小心不要侵犯第三人的權利。在您在這樣的地區實際使用之前,您必須驗證在這些特定區域使用 SoftEther VPN 的合法性。本來,在世界上有近 200 個國家,每個國家的法律都是不同的。這幾乎是不可能的事先驗證每一個國家的法律和法規,使軟體符合所有國家的法律,再發佈軟體。因此 SoftEther 公司已核實 SoftEther VPN 僅對日本法律和法規的合法性。如果用戶在一個特定的國家使用 SoftEther VPN , SoftEther 公司將不會賠償政府當局的損害,也不會承擔恢復或賠償此類損害或刑事法律責任。
|
||||
|
||||
|
||||
5. VPN Gate 學術實驗專案
|
||||
(本章僅適用於 SoftEther VPN 套裝軟體,其中包含 VPN Gate 學術實驗項目的擴展外掛程式。)
|
||||
5.1. 關於 VPN Gate 學術實驗專案
|
||||
VPN Gate 學術實驗專案是一個線上服務,由日本筑波大學研究生院為學術研究目的運營。本研究的目的是要擴大我們對 "全球分散式公共 VPN 中繼伺服器" 技術 (Global Distributed Public VPN Relay Server, GDPVRS) 的認識。有關詳細資訊,請訪問 http://www.vpngate.net/。
|
||||
|
||||
5.2. 關於 VPN Gate 服務
|
||||
SoftEther VPN 伺服器和 SoftEther VPN 用戶端可能含有 "VPN Gate 服務" 程式。然而, VPN Gate 服務在預設情況下是禁用的。
|
||||
VPN Gate 服務通過安裝了 SoftEther VPN 伺服器或 SoftEther VPN 用戶端的電腦所有者的志願目的被啟動並啟用。在您啟動 VPN Gate 服務以後,電腦將作為全球分散式公共 VPN 中繼伺服器的一部分開始服務。電腦的 IP 位址、主機名稱和相關資訊將被發送並在 VPN Gate 學術實驗專案的伺服器目錄註冊,這些資訊將被公佈,並向公眾披露。這一機制將允許任何 VPN Gate 用戶端軟體的使用者連接到您電腦上運行的 VPN Gate 服務。當在 VPN Gate 用戶端和你的 VPN Gate 服務之間建立一個 VPN 會話, VPN Gate 用戶端的用戶可以發送 / 接收向網際網路經由 VPN Gate 服務的任何 IP 封包。VPN Gate 服務的主機的全球 IP 位址將作為 VPN Gate 用戶端啟動的這種通信的源 IP 位址被使用。
|
||||
VPN Gate 服務將發送一些資訊至 VPN Gate 學術實驗服務目錄伺服器。這些資訊包括第 5.5 節中描述的運營商的資訊、日誌設置、正常執行時間、作業系統版本、協定類型、埠號、品質資訊、統計資訊、VPN Gate 用戶端的日誌歷史資料 (包括日期,IP 位址,版本號和 ID) 和軟體的版本。這些資訊將被批露在目錄上。VPN Gate 服務從目錄伺服器接收到一個金鑰以進行在 5.9 章中描述的編碼。
|
||||
|
||||
5.3. VPN Gate 服務行為的詳細資訊
|
||||
如果您手動啟用 VPN Gate 服務,在預設情況下是禁用的, "VPNGATE" 虛擬 Hub 將在 SoftEther VPN 伺服器上被創建。如果您使用的是 SoftEther VPN 用戶端,並嘗試啟動 VPN Gate 服務,相當於 SoftEther VPN 伺服器的程式在 SoftEther VPN 用戶端的同一進程將被調用,虛擬 HUB "VPNGATE" 將被創建。虛擬 HUB "VPNGATE" 包含一個預設情況下名為 "VPN" 的用戶,此用戶允許在網際網路上的任何人建立 VPN 連接到虛擬 HUB。一旦 VPN 用戶端連接到虛擬 HUB "VPNGATE" ,用戶與網際網路之間的任何通信將穿過虛擬 Hub ,使用運行有 SoftEther VPN 伺服器 (或 SoftEther VPN 用戶端) 的電腦上的物理網路介面發送 / 接收。這將導致以下結果,目標主機通過 VPN 用戶端確定通信的源發起是從 VPN Gate 服務的主機的 IP 位址指定的。不過,為了安全,目的地是在 192.168.0.0/255.255.0.0 , 172.16.0.0/255.240.0.0 或 10.0.0.0/255.0.0.0 以內的任何封包將被虛擬 HUB "VPNGATE" 攔截,以保護您的本地網路。因此,如果在您的企業網路或私人網路運行 VPN Gate 服務,這是安全的,因為匿名 VPN 用戶端用戶將不被允許訪問這些私人網路。VPN Gate 服務也可作為中繼訪問 VPN Gate 目錄伺服器。
|
||||
為了使 VPN Gate 服務熟悉防火牆和 NAT ,通過使用 1.2 章描述的 NAT 穿透功能打開一個 UDP 埠。還打開了一些 TCP 埠並監聽,一些 TCP 和 UDP 埠將被指定為本地路由器要求的通用隨插即用 (UPnP) 傳輸條目的目標埠。UPnP 請求封包將被定期發送。有些路由器在設備上永久保持一個開放的 TCP/UDP 埠。如果你想關閉他們,可以手動關閉。
|
||||
VPN Gate 服務還提供了鏡像網站功能 www.vpngate.net。這是一種機制,將的最新內容 www.vpngate.net 的副本被託管的鏡像網站微小的 HTTP 伺服器上運行的 VPN Gate 服務程式。它都將自己註冊上鏡的網站列表中 www.vpngate.net。然而,它從來不向 www.vpngate.net 任何其他通訊中繼。
|
||||
|
||||
5.4. 網際網路之間經由 VPN Gate 服務的通信
|
||||
VPN Gate 服務提供了一個使用者與網際網路之間的路由,通過使用 2.8 章虛擬 NAT 功能。VPN Gate 服務發送 Ping 查詢封包到位於筑波大學的伺服器,和被確定為 8.8.8.8 的 Google 公共 DNS 伺服器,以檢查您的網際網路線路的最新品質。VPN Gate 服務還發送和接收大量的亂數據包到 / 從筑波大學的速度測試伺服器上。這些高品質的資料將自動地、定期地被報告給 VPN Gate 目錄伺服器。結果將被保存並向公眾披露。這些定期的查詢通信被調整,儘量不佔用網際網路線路,但在某些情況下可能會佔用線路。
|
||||
|
||||
5.5. VPN Gate 服務的運營商資訊
|
||||
如果您啟動您電腦上的 VPN Gate 服務,此電腦將成為全球分散式公共 VPN 中繼伺服器的一部分。因此,您的 VPN Gate 服務的運營商管理資訊應被報告和註冊到 VPN Gate 服務目錄裡。運營商的資訊包含了運營商的名稱、濫用報告、聯繫的 e-mail 地址。這些資訊可以被輸入到螢幕上的 VPN Gate 配置裡。輸入的資訊將被發送到 VPN Gate 目錄伺服器,保存並向公眾披露。所以,你必須要小心地輸入資訊。順便說一下,直到你指定某名稱作為運營商的資訊,電腦的主機名稱會被自動使用作為運營商名稱的欄位,通過在主機名稱後附加 "'s owner" 字串。
|
||||
|
||||
5.6. 遵守法律運營 VPN Gate 服務
|
||||
在某些國家或地區,正打算啟動和運行 VPN Gate 服務的使用者,他被強制要求從 / 到政府獲得許可或註冊服務。如果您所在的地區有這樣的規定,你必須在啟動 VPN Gate 服務之前,提前完成強制流程。無論是 VPN Gate 學術實驗專案的開發者和運營商對於發生的未能遵守當地法律的法律 / 刑事責任或損害都不承擔任何責任。
|
||||
|
||||
5.7. 保護通信的隱私
|
||||
大多數國家有一個法律要求通信服務的運營商,包括 VPN Gate 服務運營商,以保障協力廠商的通信隱私。當您運營 VPN Gate 服務時,你必須始終保護用戶的隱私。
|
||||
|
||||
5.8. 封包日誌
|
||||
封包日誌功能在 VPN Gate 服務上實施。它記錄通過虛擬 HUB 傳輸的主要 TCP/IP 封包的基本包頭。此功能將有助於瞭解連接您的 VPN Gate 服務使用者的通信發起者的 "原始 IP 位址" ,通過檢查封包日誌和連接日誌。封包日誌記錄的僅為合法調查的目的。不會偷看,也不會洩漏封包日誌,除非正當的目的。這種行為將違反 5.7 章。
|
||||
|
||||
5.9. 封包日誌的自動封存和編碼功能
|
||||
VPN Gate 學術實驗服務是根據日本憲法和法律運營和運行的。日本憲法法律要求嚴格保護通信的隱私權。由於這項服務是根據日本的規則, VPN Gate 服務的程式實現了此 "自動日誌檔編碼" 的保護機制,並默認啟用。
|
||||
預設情況下, VPN Gate 服務當前自動配置編碼已經過去了兩周或以上的封包日誌檔。為了保護通信隱私,如果一個封包日誌檔一旦被編碼,即使是本地電腦系統管理員也無法檢查封包日誌檔。這種機制保護 VPN Gate 服務最終使用者的隱私。
|
||||
您可以更改 VPN Gate 服務的設置,禁用此項自動編碼功能。然後封包日誌檔將永遠不會被編碼,即使兩個星期已過去。在這樣的配置中,所有封包日誌將以純文字形式保留在磁片上。因此,你必須要注意不要侵犯用戶的隱私。
|
||||
如果你負責解碼已編碼的封包日誌檔 (例如:一個 VPN Gate 服務的使用者非法濫用你的 VPN Gate 服務,你必須解碼封包日誌以符合法律) ,請聯繫日本筑波大學研究生院 VPN Gate 學術實驗服務的管理員。你可以從 http://www.vpngate.net/ 找到聯繫地址。根據法律如果有從法院或其他司法當局適當的和法律的要求, VPN Gate 服務的管理員將回應解碼封包日誌。
|
||||
|
||||
5.10. 在日本領土操作 VPN Gate 服務的注意事項
|
||||
當一個使用者在日本領土操作 VPN Gate 服務時,這種行為會根據日本電信法加以規範,操作受法律管轄。然而,在這樣的情況下,根據 "日本電信業務競爭手冊 [補充版本]" ,非營利性的通信業務不被認為是 "電信業務" 。因此,通常 VPN Gate 服務的運營商不受制於 "電信業務經營者" ,不強制要求到政府註冊。即便如此,保護通信隱私的合法性仍強制實行。作為一個結論,如果你在日本領土運營 VPN Gate 服務,你不能洩露經由你操作的 VPN Gate 服務傳送的通訊秘密。
|
||||
|
||||
5.11. VPN Gate 用戶端
|
||||
如果 SoftEther VPN 用戶端包含 VPN Gate 用戶端外掛程式,你可以在網際網路上用它來獲得當前操作的 VPN Gate 服務的伺服器清單,使一個 VPN 連接到列表上的特定伺服器。
|
||||
VPN Gate 用戶端始終定期保持 VPN Gate 服務的最新清單。要小心,如果你使用的是按使用量付費的網際網路線路。
|
||||
當您啟動 VPN Gate 用戶端軟體,要求你啟動或不是 VPN Gate 服務的螢幕將出現。VPN Gate 服務的詳細資訊,請閱讀上述各節。
|
||||
|
||||
5.12. 在加入或使用 VPN Gate 學術實驗專案之前的注意事項
|
||||
VPN Gate 學術實驗服務是作為日本筑波大學研究生院的一個研究項目運營的。該服務受日本法律管理。其他國家的法律不受我們關注也不承擔責任。
|
||||
從本質上講,在世界上有近 200 個國家,都有不同的法律。不可能在軟體發佈前去驗證每一個國家的法律和法規,並使我們的軟體符合所有國家的法律。如果使用者在一個特定的國家使用 VPN Gate 服務,損壞公務人員的權力,服務或軟體的開發者將永遠不會負責恢復或補償等損害或刑事責任。
|
||||
通過使用本軟體和服務,使用者有自己的義務必須遵守所有相關的法律和規則。使用者將完全承擔任何損失和使用本軟體及服務導致的責任,無論日本領土以內還是以外。
|
||||
如果你不同意也不理解上述警告,不要使用任何 VPN Gate 學術實驗服務功能。
|
||||
VPN Gate 僅僅是學術目的的一個研究專案。VPN Gate 是作為 SoftEtherVPN 和 UT-VPN 的一個外掛程式被開發的。然而, VPN Gate 的每一部分都是在筑波大學的這一研究項目被開發的。VPN Gate 的任何部分都不是 SoftEther 公司開發的。VPN Gate 研究項目不是由 SoftEther 公司引導、經營,推廣和保證的。
|
||||
|
||||
5.13. VPN Gate 用戶端的 P2P 中繼功能可加強針對防火牆管控的規避能力
|
||||
P2P 中繼功能是為了加強規避防火牆管控的能力。如果 P2P 中繼功能在您的 VPN Gate 用戶端被啟用,那麼 P2P 中繼功能將接受來自 VPN Gate 用戶的 VPN 連接,提供中繼功能給外部遠端 VPN Gate 的伺服器,這是由協力廠商在免費的網際網路環境下託管的。此 P2P 中繼功能從來不提供共用 NAT 功能,也不更換 VPN Gate 用戶的傳出 IP 地址為你的 IP 地址,因為這個 P2P 中繼功能只提供 "反射服務" (髮夾中繼) ,從進入的 VPN Gate 用戶中繼到一個外部的 VPN Gate 伺服器。在這種情況下,經由您的 P2P 中繼功能的 VPN 隧道將終止於外部的 VPN Gate 伺服器,而不是你的 VPN Gate 用戶端。然而, VPN Gate 伺服器作為最終目的地將記錄您的 IP 位址作為通過您的 P2P 中繼功能發起的 VPN 隧道的源 IP 地址。此外,經由你的 P2P 中繼功能傳輸的使用者封包將被記錄在您的電腦的封包日誌上,如 5.8 章所述。當您安裝了 VPN Gate 用戶端之後,如果將 P2P 中繼功能設置為自動啟用,那麼在 5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,5.10,5.11 和 5.12 章節中的所有事項將被應用於你的電腦,與您啟用 VPN Gate 服務 (VPN Gate 伺服器功能) 時的情況相同。如果你的 P2P 功能被啟用,那麼在第 5.5 章節中描述的您的電腦 IP 位址和預設運營商名字將被列在由 VPN Gate 項目提供的 VPN Gate 伺服器列表上。您可以通過手動編輯 "vpn_gate_relay.config" 檔更改這些字串。需要注意的是,在編輯之前您需要停止 VPN 用戶端服務。如果 VPN Gate 用戶端檢測到您的電腦位於存在審查制度的防火牆區域, VPN 用戶端會自動啟用您的電腦上的 P2P 中繼功能。如果您希望禁用 P2P 中繼功能,您必須在 VPN 用戶端的設定檔 "vpn_client.config" 上設置 "DisableRelayServer" 標誌為 "true" 。需要注意的是,編輯它之前您需要停止 VPN 用戶端服務。即使您的國家或地區有法律限制運行 P2P 中繼功能, VPN Gate 用戶端仍會啟動 P2P 中繼功能。如果您身處於存在這些法律限制的區域,請您遵守相關法律法規,通過設置 "DisableRelayServer" 標誌手動禁用 VPN Gate 用戶端的 P2P 中繼功能。
|
||||
|
@ -5,7 +5,17 @@ endif()
|
||||
set(COMPONENT_NAME "Driver Installer")
|
||||
set(COMPONENT_INTERNAL_NAME "vpndrvinst")
|
||||
|
||||
add_executable(vpndrvinst WIN32 vpndrvinst.c vpndrvinst.h)
|
||||
add_executable(vpndrvinst
|
||||
main.c
|
||||
Device.c
|
||||
Device.h
|
||||
Dialog.c
|
||||
Dialog.h
|
||||
Driver.c
|
||||
Driver.h
|
||||
Str.c
|
||||
Str.h
|
||||
)
|
||||
|
||||
get_filename_component(COMPONENT_FILE_NAME vpndrvinst NAME)
|
||||
set(COMPONENT_FILE_NAME "${COMPONENT_FILE_NAME}.exe")
|
||||
@ -18,6 +28,9 @@ if(MSVC)
|
||||
set_target_properties(vpndrvinst PROPERTIES LINK_FLAGS "/manifestuac:level='requireAdministrator'")
|
||||
endif()
|
||||
|
||||
# Hide console while keeping main() as entry point
|
||||
target_link_options(vpndrvinst PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup")
|
||||
|
||||
if(${COMPILER_ARCHITECTURE} STREQUAL "x64")
|
||||
target_sources(vpndrvinst PRIVATE "${TOP_DIRECTORY}/src/BuildFiles/Manifests/x64_admin.manifest")
|
||||
else()
|
||||
@ -32,4 +45,9 @@ set_target_properties(vpndrvinst
|
||||
PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
|
||||
)
|
||||
|
||||
target_link_libraries(vpndrvinst cedar mayaqua)
|
||||
target_link_libraries(vpndrvinst
|
||||
PRIVATE
|
||||
libhamcore
|
||||
newdev.lib
|
||||
SetupAPI.Lib
|
||||
)
|
||||
|
564
src/vpndrvinst/Device.c
Normal file
564
src/vpndrvinst/Device.c
Normal file
@ -0,0 +1,564 @@
|
||||
#include "Device.h"
|
||||
|
||||
#include "Dialog.h"
|
||||
#include "Driver.h"
|
||||
#include "Str.h"
|
||||
|
||||
#include "Hamcore.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
#include <cfgmgr32.h>
|
||||
#include <devguid.h>
|
||||
#include <newdev.h>
|
||||
#include <RegStr.h>
|
||||
#include <SetupAPI.h>
|
||||
|
||||
HDEVINFO GetDeviceInfo(SP_DEVINFO_DATA *devinfo_data, const char *instance)
|
||||
{
|
||||
if (!devinfo_data || !instance)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
HDEVINFO devinfo = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, NULL, NULL, DIGCF_PRESENT);
|
||||
if (devinfo == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ShowWarning("GetDeviceInfo()", "SetupDiGetClassDevs() failed with error %lu!", GetLastError());
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SP_DEVINFO_LIST_DETAIL_DATA detail_data;
|
||||
detail_data.cbSize = sizeof(detail_data);
|
||||
|
||||
if (!SetupDiGetDeviceInfoListDetail(devinfo, &detail_data))
|
||||
{
|
||||
ShowWarning("GetDeviceInfo()", "SetupDiGetDeviceInfoListDetail() failed with error %lu!", GetLastError());
|
||||
FreeDeviceInfo(devinfo);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char id[MAX_PATH];
|
||||
snprintf(id, sizeof(id), DRIVER_DEVICE_ID_TAG, instance);
|
||||
|
||||
bool found = false;
|
||||
SP_DEVINFO_DATA data;
|
||||
data.cbSize = sizeof(data);
|
||||
|
||||
for (DWORD i = 0; SetupDiEnumDeviceInfo(devinfo, i, &data); ++i)
|
||||
{
|
||||
DWORD size;
|
||||
if (!SetupDiGetDeviceRegistryProperty(devinfo, &data, SPDRP_HARDWAREID, NULL, NULL, 0, &size))
|
||||
{
|
||||
const DWORD error = GetLastError();
|
||||
if (error != ERROR_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
ShowWarning("GetDeviceInfo()", "SetupDiGetDeviceRegistryProperty() failed with error %lu!", error);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
char *buffer = malloc(size);
|
||||
if (!SetupDiGetDeviceRegistryProperty(devinfo, &data, SPDRP_HARDWAREID, NULL, (BYTE *)buffer, size, NULL))
|
||||
{
|
||||
ShowWarning("GetDeviceInfo()", "SetupDiGetDeviceRegistryProperty() failed with error %lu!", GetLastError());
|
||||
free(buffer);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strcmp(buffer, id) == 0)
|
||||
{
|
||||
found = true;
|
||||
}
|
||||
|
||||
free(buffer);
|
||||
|
||||
if (found)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
{
|
||||
FreeDeviceInfo(devinfo);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memcpy(devinfo_data, &data, sizeof(data));
|
||||
return devinfo;
|
||||
}
|
||||
|
||||
void FreeDeviceInfo(HDEVINFO info)
|
||||
{
|
||||
if (info)
|
||||
{
|
||||
SetupDiDestroyDeviceInfoList(info);
|
||||
}
|
||||
}
|
||||
|
||||
bool ToggleDevice(const char *instance, const bool enable)
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SP_DEVINFO_DATA data;
|
||||
HDEVINFO info = GetDeviceInfo(&data, instance);
|
||||
if (!info)
|
||||
{
|
||||
ShowWarning("ToggleDevice()", "The specified device was not found!");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
|
||||
SP_PROPCHANGE_PARAMS params;
|
||||
params.HwProfile = 0;
|
||||
params.Scope = DICS_FLAG_CONFIGSPECIFIC;
|
||||
params.StateChange = enable ? DICS_ENABLE : DICS_DISABLE;
|
||||
params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
|
||||
params.ClassInstallHeader.cbSize = sizeof(params.ClassInstallHeader);
|
||||
|
||||
if (!SetupDiSetClassInstallParams(info, &data, ¶ms.ClassInstallHeader, sizeof(params)))
|
||||
{
|
||||
ShowWarning("ToggleDevice()", "SetupDiSetClassInstallParams() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, info, &data))
|
||||
{
|
||||
ShowWarning("ToggleDevice()", "SetupDiCallClassInstaller() failed with error %lu!", GetLastError());
|
||||
|
||||
// Clear parameters, otherwise the device may remain in an inconsistent state
|
||||
// (e.g. with the enabled icon even if disabled).
|
||||
SetupDiSetClassInstallParams(info, &data, NULL, 0);
|
||||
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
ok = true;
|
||||
FINAL:
|
||||
FreeDeviceInfo(info);
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool InstallDevice(const char *instance)
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char mac[MAC_BUFFER_SIZE];
|
||||
GenMacAddress(mac, sizeof(mac));
|
||||
|
||||
return InstallDeviceWithMac(instance, mac);
|
||||
}
|
||||
|
||||
bool InstallDeviceWithMac(const char *instance, const char *mac)
|
||||
{
|
||||
if (!instance || !mac)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SP_DEVINFO_DATA data;
|
||||
HDEVINFO info = GetDeviceInfo(&data, instance);
|
||||
if (info)
|
||||
{
|
||||
ShowWarning("InstallDevice()", "The specified device already exists!");
|
||||
return false;
|
||||
}
|
||||
|
||||
HAMCORE *hamcore = HamcoreOpen("hamcore.se2");
|
||||
if (!hamcore)
|
||||
{
|
||||
ShowWarning("InstallDevice()", "Failed to open hamcore.se2!");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
bool delete_files = false;
|
||||
|
||||
if (!IsInstanceNameOK(hamcore, instance))
|
||||
{
|
||||
ShowWarning("InstallDevice()", "\"%s\" cannot be used as instance name, please choose another!", instance);
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
char cat[MAX_PATH];
|
||||
if (!PrepareCat(hamcore, cat, sizeof(cat), instance))
|
||||
{
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
char sys[MAX_PATH];
|
||||
if (!PrepareSys(hamcore, sys, sizeof(sys), instance))
|
||||
{
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
char inf[MAX_PATH];
|
||||
if (!PrepareInf(hamcore, inf, sizeof(inf), instance, sys, mac))
|
||||
{
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
delete_files = true;
|
||||
|
||||
GUID inf_guid;
|
||||
char inf_class[MAX_CLASS_NAME_LEN];
|
||||
if (!SetupDiGetINFClass(inf, &inf_guid, inf_class, sizeof(inf_class), NULL))
|
||||
{
|
||||
ShowWarning("InstallDevice()", "SetupDiGetINFClass() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
info = SetupDiCreateDeviceInfoList(&inf_guid, NULL);
|
||||
if (info == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ShowWarning("InstallDevice()", "SetupDiCreateDeviceInfoList() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
SP_DEVINFO_DATA info_data;
|
||||
info_data.cbSize = sizeof(info_data);
|
||||
if (!SetupDiCreateDeviceInfo(info, inf_class, &inf_guid, NULL, NULL, DICD_GENERATE_ID, &info_data))
|
||||
{
|
||||
ShowWarning("InstallDevice()", "SetupDiCreateDeviceInfo() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
char id[MAX_PATH];
|
||||
snprintf(id, sizeof(id), DRIVER_DEVICE_ID_TAG, instance);
|
||||
|
||||
// Passing the full buffer size caused a second hardware ID containing random symbols to appear
|
||||
// on a fresh Windows 7 VM several times when using long instance names.
|
||||
// As a simple and effective solution, we simply pass the string length + 1 for the NULL char.
|
||||
if (!SetupDiSetDeviceRegistryProperty(info, &info_data, SPDRP_HARDWAREID, (BYTE *)id, (DWORD)strlen(id) + 1))
|
||||
{
|
||||
ShowWarning("InstallDevice()", "SetupDiSetDeviceRegistryProperty() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
if (!SetupDiCallClassInstaller(DIF_REGISTERDEVICE, info, &info_data))
|
||||
{
|
||||
ShowWarning("InstallDevice()", "SetupDiCallClassInstaller() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
BOOL reboot_required;
|
||||
if (!UpdateDriverForPlugAndPlayDevices(NULL, id, inf, INSTALLFLAG_FORCE, &reboot_required))
|
||||
{
|
||||
ShowWarning("InstallDevice()", "UpdateDriverForPlugAndPlayDevices() failed with error %lu!", GetLastError());
|
||||
|
||||
if (!SetupDiCallClassInstaller(DIF_REMOVE, info, &info_data))
|
||||
{
|
||||
ShowWarning("InstallDevice()", "SetupDiCallClassInstaller() failed with error %lu!", GetLastError());
|
||||
}
|
||||
|
||||
if (!SetupDiRemoveDevice(info, &info_data))
|
||||
{
|
||||
ShowWarning("InstallDevice()", "SetupDiRemoveDevice() failed with error %lu!", GetLastError());
|
||||
}
|
||||
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
if (IsMacAddressManual())
|
||||
{
|
||||
SetDeviceMac(instance, mac);
|
||||
}
|
||||
|
||||
SetDeviceNetConfig(instance);
|
||||
|
||||
ok = true;
|
||||
FINAL:
|
||||
if (delete_files)
|
||||
{
|
||||
DeleteFile(cat);
|
||||
DeleteFile(sys);
|
||||
DeleteFile(inf);
|
||||
}
|
||||
|
||||
HamcoreClose(hamcore);
|
||||
FreeDeviceInfo(info);
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool UninstallDevice(const char *instance)
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SP_DEVINFO_DATA info_data;
|
||||
HDEVINFO info = GetDeviceInfo(&info_data, instance);
|
||||
if (!info)
|
||||
{
|
||||
ShowWarning("UninstallDevice()", "The specified device was not found!");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
|
||||
SP_DEVINFO_LIST_DETAIL_DATA detail_data;
|
||||
detail_data.cbSize = sizeof(detail_data);
|
||||
if (!SetupDiGetDeviceInfoListDetail(info, &detail_data))
|
||||
{
|
||||
ShowWarning("UninstallDevice()", "SetupDiGetDeviceInfoListDetail() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
SP_REMOVEDEVICE_PARAMS params;
|
||||
params.Scope = DI_REMOVEDEVICE_GLOBAL;
|
||||
params.ClassInstallHeader.InstallFunction = DIF_REMOVE;
|
||||
params.ClassInstallHeader.cbSize = sizeof(params.ClassInstallHeader);
|
||||
|
||||
if (!SetupDiSetClassInstallParams(info, &info_data, ¶ms.ClassInstallHeader, sizeof(params)))
|
||||
{
|
||||
ShowWarning("UninstallDevice()", "SetupDiSetClassInstallParams() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
if (!SetupDiCallClassInstaller(DIF_REMOVE, info, &info_data))
|
||||
{
|
||||
ShowWarning("UninstallDevice()", "SetupDiCallClassInstaller() failed with error %lu!", GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
ok = true;
|
||||
FINAL:
|
||||
FreeDeviceInfo(info);
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool UpgradeDevice(const char *instance)
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SP_DEVINFO_DATA data;
|
||||
HDEVINFO info = GetDeviceInfo(&data, instance);
|
||||
if (!info)
|
||||
{
|
||||
ShowWarning("UpgradeDevice()", "The specified device was not found!");
|
||||
return false;
|
||||
}
|
||||
|
||||
FreeDeviceInfo(info);
|
||||
|
||||
char mac[MAC_BUFFER_SIZE];
|
||||
if (!GetDeviceMac(instance, mac, sizeof(mac)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!UninstallDevice(instance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!InstallDeviceWithMac(instance, mac))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsMacAddressManual())
|
||||
{
|
||||
SetDeviceMac(instance, mac);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GetDeviceMac(const char *instance, char *dst, const size_t size)
|
||||
{
|
||||
if (!instance || !dst || size == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
HKEY key = GetDeviceRegKey(instance, false);
|
||||
if (!key)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
DWORD buffer_size = (DWORD)size;
|
||||
LSTATUS ret = RegGetValue(key, NULL, "NetworkAddress", RRF_RT_REG_SZ, NULL, dst, &buffer_size);
|
||||
RegCloseKey(key);
|
||||
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
ShowWarning("GetDeviceMac()", "RegGetValue() failed with error %ld!", ret);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SetDeviceMac(const char *instance, const char *src)
|
||||
{
|
||||
if (!instance || !src)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
HKEY key = GetDeviceRegKey(instance, true);
|
||||
if (!key)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LSTATUS ret = RegSetKeyValue(key, NULL, "NetworkAddress", REG_SZ, src, (DWORD)strlen(src) + 1);
|
||||
RegCloseKey(key);
|
||||
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
ShowWarning("SetDeviceMac()", "RegSetValue() failed with error %ld!", ret);
|
||||
return false;
|
||||
}
|
||||
|
||||
ToggleDevice(instance, false);
|
||||
ToggleDevice(instance, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SetDeviceNetConfig(const char *instance)
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
HKEY key = GetDeviceRegKey(instance, true);
|
||||
if (!key)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char path[MAX_PATH] = REGSTR_PATH_SERVICES "\\Tcpip\\Parameters\\Interfaces\\";
|
||||
const size_t path_len = strlen(path);
|
||||
|
||||
DWORD buffer_size = sizeof(path) - path_len;
|
||||
LSTATUS ret = RegGetValue(key, NULL, "NetCfgInstanceId", RRF_RT_REG_SZ, NULL, path + path_len, &buffer_size);
|
||||
RegCloseKey(key);
|
||||
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
ShowWarning("SetDeviceNetConfig()", "RegGetValue() failed with error %ld!", ret);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ok = true;
|
||||
|
||||
DWORD tmp = 0;
|
||||
ret = RegSetKeyValue(HKEY_LOCAL_MACHINE, path, "EnableDeadGWDetect", REG_DWORD, &tmp, sizeof(tmp));
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
ShowWarning("SetDeviceNetConfig()", "RegSetKeyValue() failed to set EnableDeadGWDetect with error %ld!", ret);
|
||||
ok = false;
|
||||
}
|
||||
|
||||
tmp = 1;
|
||||
ret = RegSetKeyValue(HKEY_LOCAL_MACHINE, path, "InterfaceMetric", REG_DWORD, &tmp, sizeof(tmp));
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
ShowWarning("SetDeviceNetConfig()", "RegSetKeyValue() failed to set InterfaceMetric with error %ld!", ret);
|
||||
ok = false;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
HKEY GetDeviceRegKey(const char *instance, const bool writable)
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char path[MAX_PATH] = REGSTR_PATH_CLASS_NT "\\";
|
||||
const size_t path_len = strlen(path);
|
||||
StrFromGUID(path + path_len, sizeof(path) - path_len, &GUID_DEVCLASS_NET);
|
||||
|
||||
HKEY key_list;
|
||||
LSTATUS ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_READ, &key_list);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
ShowWarning("GetDeviceRegKey()", "RegOpenKeyEx() failed to open \"%s\", with error %ld!", path, ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char device_id[MAX_PATH];
|
||||
snprintf(device_id, sizeof(device_id), DRIVER_DEVICE_ID_TAG, instance);
|
||||
|
||||
char driver_desc[MAX_PATH];
|
||||
snprintf(driver_desc, sizeof(driver_desc), VLAN_ADAPTER_NAME_TAG, instance);
|
||||
|
||||
for (DWORD i = 0; ++i;)
|
||||
{
|
||||
char key_name[MAX_PATH];
|
||||
DWORD key_name_size = sizeof(key_name);
|
||||
ret = RegEnumKeyEx(key_list, i, key_name, &key_name_size, 0, NULL, 0, NULL);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
if (ret != ERROR_NO_MORE_ITEMS)
|
||||
{
|
||||
ShowWarning("GetDeviceRegKey()", "RegEnumKeyEx() failed at index %lu with error %ld!", i, ret);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
HKEY key;
|
||||
if (RegOpenKeyEx(key_list, key_name, 0, writable ? KEY_READ | KEY_WRITE : KEY_READ, &key) != ERROR_SUCCESS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
char buffer[MAX_PATH];
|
||||
DWORD buffer_size = sizeof(buffer);
|
||||
|
||||
if (RegGetValue(key, NULL, REGSTR_VAL_MATCHINGDEVID, RRF_RT_REG_SZ, NULL, buffer, &buffer_size) != ERROR_SUCCESS)
|
||||
{
|
||||
RegCloseKey(key);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strncmp(buffer, device_id, buffer_size) == 0)
|
||||
{
|
||||
return key;
|
||||
}
|
||||
|
||||
buffer_size = sizeof(buffer);
|
||||
|
||||
if (RegGetValue(key, NULL, REGSTR_VAL_DRVDESC, RRF_RT_REG_SZ, NULL, buffer, &buffer_size) != ERROR_SUCCESS)
|
||||
{
|
||||
RegCloseKey(key);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strncmp(buffer, driver_desc, buffer_size) == 0)
|
||||
{
|
||||
return key;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
30
src/vpndrvinst/Device.h
Normal file
30
src/vpndrvinst/Device.h
Normal file
@ -0,0 +1,30 @@
|
||||
#ifndef DEVICE_H
|
||||
#define DEVICE_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
typedef void *PVOID;
|
||||
typedef PVOID HDEVINFO;
|
||||
|
||||
typedef struct HKEY__ *HKEY;
|
||||
typedef struct _SP_DEVINFO_DATA SP_DEVINFO_DATA;
|
||||
|
||||
HDEVINFO GetDeviceInfo(SP_DEVINFO_DATA *devinfo_data, const char *instance);
|
||||
void FreeDeviceInfo(HDEVINFO info);
|
||||
|
||||
bool ToggleDevice(const char *instance, const bool enable);
|
||||
|
||||
bool InstallDevice(const char *instance);
|
||||
bool InstallDeviceWithMac(const char *instance, const char *mac);
|
||||
bool UninstallDevice(const char *instance);
|
||||
bool UpgradeDevice(const char *instance);
|
||||
|
||||
bool GetDeviceMac(const char *instance, char *dst, const size_t size);
|
||||
bool SetDeviceMac(const char *instance, const char *src);
|
||||
|
||||
bool SetDeviceNetConfig(const char *instance);
|
||||
|
||||
HKEY GetDeviceRegKey(const char *instance, const bool writable);
|
||||
|
||||
#endif
|
36
src/vpndrvinst/Dialog.c
Normal file
36
src/vpndrvinst/Dialog.c
Normal file
@ -0,0 +1,36 @@
|
||||
#include "Dialog.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
int ShowMessage(const char *title, const char *message, const unsigned int type, const va_list args)
|
||||
{
|
||||
char buf[MAX_MESSAGE_SIZE];
|
||||
vsnprintf(buf, sizeof(buf), message, args);
|
||||
return MessageBox(NULL, buf, title, type);
|
||||
}
|
||||
|
||||
int ShowInformation(const char *title, const char *message, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, message);
|
||||
const int ret = ShowMessage(title, message, MB_OK | MB_ICONINFORMATION, args);
|
||||
va_end(args);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ShowWarning(const char *title, const char *message, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, message);
|
||||
const int ret = ShowMessage(title, message, MB_OK | MB_ICONWARNING, args);
|
||||
va_end(args);
|
||||
|
||||
return ret;
|
||||
}
|
9
src/vpndrvinst/Dialog.h
Normal file
9
src/vpndrvinst/Dialog.h
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef DIALOG_H
|
||||
#define DIALOG_H
|
||||
|
||||
#define MAX_MESSAGE_SIZE 1024
|
||||
|
||||
int ShowInformation(const char *title, const char *message, ...);
|
||||
int ShowWarning(const char *title, const char *message, ...);
|
||||
|
||||
#endif
|
378
src/vpndrvinst/Driver.c
Normal file
378
src/vpndrvinst/Driver.c
Normal file
@ -0,0 +1,378 @@
|
||||
#include "Driver.h"
|
||||
|
||||
#include "Dialog.h"
|
||||
#include "Str.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <Hamcore.h>
|
||||
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
#include <VersionHelpers.h>
|
||||
|
||||
const char *GetArch()
|
||||
{
|
||||
SYSTEM_INFO info;
|
||||
GetNativeSystemInfo(&info);
|
||||
switch (info.wProcessorArchitecture)
|
||||
{
|
||||
case PROCESSOR_ARCHITECTURE_AMD64:
|
||||
return "x64";
|
||||
case PROCESSOR_ARCHITECTURE_INTEL:
|
||||
return "x86";
|
||||
case PROCESSOR_ARCHITECTURE_ARM64:
|
||||
return "arm64";
|
||||
case PROCESSOR_ARCHITECTURE_ARM:
|
||||
return "arm";
|
||||
case PROCESSOR_ARCHITECTURE_IA64:
|
||||
return "ia64";
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *GetDriverPath()
|
||||
{
|
||||
static char path[MAX_PATH];
|
||||
|
||||
static bool set = false;
|
||||
if (set)
|
||||
{
|
||||
return path;
|
||||
}
|
||||
|
||||
const char *type_folder;
|
||||
if (IsWindows10OrGreater())
|
||||
{
|
||||
type_folder = "Neo6_Win10";
|
||||
}
|
||||
else if (IsWindows8OrGreater())
|
||||
{
|
||||
type_folder = "Neo6_Win8";
|
||||
}
|
||||
else if (IsWindows7OrGreater())
|
||||
{
|
||||
type_folder = "Neo6";
|
||||
}
|
||||
else
|
||||
{
|
||||
type_folder = "Neo";
|
||||
}
|
||||
|
||||
snprintf(path, sizeof(path), "DriverPackages/%s/%s/", type_folder, GetArch());
|
||||
|
||||
set = true;
|
||||
return path;
|
||||
}
|
||||
|
||||
const char *GetTmpPath()
|
||||
{
|
||||
static char path[MAX_PATH];
|
||||
|
||||
static bool set = false;
|
||||
if (set)
|
||||
{
|
||||
return path;
|
||||
}
|
||||
|
||||
if (!GetTempPath(sizeof(path), path))
|
||||
{
|
||||
ShowWarning("GetTmpPath()", "GetTempPath() failed with error %lu!", GetLastError());
|
||||
return NULL;
|
||||
}
|
||||
|
||||
set = true;
|
||||
return path;
|
||||
}
|
||||
|
||||
void GetCatPath(char *dst, const size_t size, const char *instance)
|
||||
{
|
||||
if (!dst || size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsWindows10OrGreater())
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf(dst, size, "%sNeo6_%s_%s.cat", GetDriverPath(), GetArch(), instance);
|
||||
}
|
||||
else if (IsWindows8OrGreater())
|
||||
{
|
||||
snprintf(dst, size, "%sinf2.cat", GetDriverPath());
|
||||
}
|
||||
}
|
||||
|
||||
void GetInfPath(char *dst, const size_t size, const char *instance)
|
||||
{
|
||||
if (!dst || size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsWindows8OrGreater())
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf(dst, size, "%sNeo6_%s_%s.inf", GetDriverPath(), GetArch(), instance);
|
||||
}
|
||||
else if (IsWindows7OrGreater())
|
||||
{
|
||||
snprintf(dst, size, "%sNeo6_%s.inf", GetDriverPath(), GetArch());
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(dst, size, "%sNeo_%s.inf", GetDriverPath(), GetArch());
|
||||
}
|
||||
}
|
||||
|
||||
void GetSysPath(char *dst, const size_t size, const char *instance)
|
||||
{
|
||||
if (!dst || size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsWindows10OrGreater())
|
||||
{
|
||||
if (!instance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf(dst, size, "%sNeo6_%s_%s.sys", GetDriverPath(), GetArch(), instance);
|
||||
}
|
||||
else if (IsWindows7OrGreater())
|
||||
{
|
||||
snprintf(dst, size, "%sNeo6_%s.sys", GetDriverPath(), GetArch());
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(dst, size, "%sNeo_%s.sys", GetDriverPath(), GetArch());
|
||||
}
|
||||
}
|
||||
|
||||
bool IsInstanceNameOK(HAMCORE *hamcore, const char *instance)
|
||||
{
|
||||
if (!IsWindows8OrGreater())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!hamcore || !instance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char path[MAX_PATH];
|
||||
GetInfPath(path, sizeof(path), instance);
|
||||
|
||||
const HAMCORE_FILE *file = HamcoreFind(hamcore, path);
|
||||
return file ? true : false;
|
||||
}
|
||||
|
||||
bool IsMacAddressManual()
|
||||
{
|
||||
return IsWindows8OrGreater();
|
||||
}
|
||||
|
||||
bool PrepareCat(HAMCORE *hamcore, char *dst, const size_t size, const char *instance)
|
||||
{
|
||||
if (!IsWindows8OrGreater())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!hamcore || !dst || size == 0 || !instance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char src[MAX_PATH];
|
||||
GetCatPath(src, sizeof(src), instance);
|
||||
|
||||
const HAMCORE_FILE *hamcore_file = HamcoreFind(hamcore, src);
|
||||
if (!hamcore_file)
|
||||
{
|
||||
ShowWarning("PrepareCat()", "%s not found in hamcore archive!", src);
|
||||
return false;
|
||||
}
|
||||
|
||||
void *buf = malloc(hamcore_file->OriginalSize);
|
||||
if (!HamcoreRead(hamcore, buf, hamcore_file))
|
||||
{
|
||||
ShowWarning("PrepareCat()", "Failed to read %s from hamcore archive!", src);
|
||||
free(buf);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsWindows10OrGreater())
|
||||
{
|
||||
snprintf(dst, size, "%s%s", GetTmpPath(), PathFileName(src, false));
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(dst, size, "%sinf_%s.cat", GetTmpPath(), instance);
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
|
||||
HANDLE file = CreateFile(dst, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if (file == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ShowWarning("PrepareCat()", "CreateFile() failed to open \"%s\" with error %lu!", dst, GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
DWORD processed;
|
||||
ok = WriteFile(file, buf, (DWORD)hamcore_file->OriginalSize, &processed, NULL);
|
||||
CloseHandle(file);
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
ShowWarning("PrepareCat()", "WriteFile() failed with error %lu!", src, GetLastError());
|
||||
DeleteFile(dst);
|
||||
}
|
||||
FINAL:
|
||||
free(buf);
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool PrepareInf(HAMCORE *hamcore, char *dst, const size_t size, const char *instance, const char *sys, const char *mac)
|
||||
{
|
||||
if (!hamcore || !dst || size == 0 || !instance || !sys || !mac)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char src[MAX_PATH];
|
||||
GetInfPath(src, sizeof(src), instance);
|
||||
|
||||
const HAMCORE_FILE *hamcore_file = HamcoreFind(hamcore, src);
|
||||
if (!hamcore_file)
|
||||
{
|
||||
ShowWarning("PrepareInf()", "%s not found in hamcore archive!", src);
|
||||
return false;
|
||||
}
|
||||
|
||||
size_t buf_size = hamcore_file->OriginalSize;
|
||||
char *buf = malloc(buf_size);
|
||||
|
||||
if (!HamcoreRead(hamcore, buf, hamcore_file))
|
||||
{
|
||||
ShowWarning("PrepareInf()", "Failed to read %s from hamcore archive!", src);
|
||||
free(buf);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsWindows10OrGreater())
|
||||
{
|
||||
snprintf(dst, size, "%s%s", GetTmpPath(), PathFileName(src, false));
|
||||
}
|
||||
else if (IsWindows7OrGreater())
|
||||
{
|
||||
snprintf(dst, size, "%sNeo6_%s_%s.inf", GetTmpPath(), GetArch(), instance);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(dst, size, "%sNeo_%s_%s.inf", GetTmpPath(), GetArch(), instance);
|
||||
}
|
||||
|
||||
if (!IsWindows8OrGreater())
|
||||
{
|
||||
buf = StrReplace(buf, &buf_size, "$TAG_INSTANCE_NAME$", instance, false);
|
||||
buf = StrReplace(buf, &buf_size, "$TAG_MAC_ADDRESS$", mac, false);
|
||||
buf = StrReplace(buf, &buf_size, "$TAG_SYS_NAME$", PathFileName(sys, true), true);
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
|
||||
HANDLE file = CreateFile(dst, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if (file == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ShowWarning("PrepareInf()", "CreateFile() failed to open \"%s\" with error %lu!", dst, GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
DWORD processed;
|
||||
ok = WriteFile(file, buf, (DWORD)buf_size, &processed, NULL);
|
||||
CloseHandle(file);
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
ShowWarning("PrepareInf()", "WriteFile() failed with error %lu!", src, GetLastError());
|
||||
DeleteFile(dst);
|
||||
}
|
||||
FINAL:
|
||||
free(buf);
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool PrepareSys(HAMCORE *hamcore, char *dst, const size_t size, const char *instance)
|
||||
{
|
||||
if (!hamcore || !dst || size == 0 || !instance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char src[MAX_PATH];
|
||||
GetSysPath(src, sizeof(src), instance);
|
||||
|
||||
const HAMCORE_FILE *hamcore_file = HamcoreFind(hamcore, src);
|
||||
if (!hamcore_file)
|
||||
{
|
||||
ShowWarning("PrepareSys()", "%s not found in hamcore archive!", src);
|
||||
return false;
|
||||
}
|
||||
|
||||
void *buf = malloc(hamcore_file->OriginalSize);
|
||||
if (!HamcoreRead(hamcore, buf, hamcore_file))
|
||||
{
|
||||
ShowWarning("PrepareSys()", "Failed to read %s from hamcore archive!", src);
|
||||
free(buf);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsWindows10OrGreater())
|
||||
{
|
||||
snprintf(dst, size, "%s%s", GetTmpPath(), PathFileName(src, false));
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(dst, size, "%sNeo_%s.sys", GetTmpPath(), instance);
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
|
||||
HANDLE file = CreateFile(dst, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if (file == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ShowWarning("PrepareSys()", "CreateFile() failed to open \"%s\" with error %lu!", dst, GetLastError());
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
DWORD processed;
|
||||
ok = WriteFile(file, buf, (DWORD)hamcore_file->OriginalSize, &processed, NULL);
|
||||
CloseHandle(file);
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
ShowWarning("PrepareSys()", "WriteFile() failed with error %lu!", src, GetLastError());
|
||||
DeleteFile(dst);
|
||||
}
|
||||
FINAL:
|
||||
free(buf);
|
||||
return ok;
|
||||
}
|
27
src/vpndrvinst/Driver.h
Normal file
27
src/vpndrvinst/Driver.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef DRIVER_H
|
||||
#define DRIVER_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define DRIVER_DEVICE_ID_TAG "NeoAdapter_%s"
|
||||
#define VLAN_ADAPTER_NAME_TAG "VPN Client Adapter - %s"
|
||||
|
||||
typedef struct HAMCORE HAMCORE;
|
||||
|
||||
const char *GetArch();
|
||||
const char *GetDriverPath();
|
||||
const char *GetTmpPath();
|
||||
|
||||
void GetCatPath(char *dst, const size_t size, const char *instance);
|
||||
void GetInfPath(char *dst, const size_t size, const char *instance);
|
||||
void GetSysPath(char *dst, const size_t size, const char *instance);
|
||||
|
||||
bool IsInstanceNameOK(HAMCORE *hamcore, const char *instance);
|
||||
bool IsMacAddressManual();
|
||||
|
||||
bool PrepareCat(HAMCORE *hamcore, char *dst, const size_t size, const char *instance);
|
||||
bool PrepareInf(HAMCORE *hamcore, char *dst, const size_t size, const char *instance, const char *sys, const char *mac);
|
||||
bool PrepareSys(HAMCORE *hamcore, char *dst, const size_t size, const char *instance);
|
||||
|
||||
#endif
|
111
src/vpndrvinst/Str.c
Normal file
111
src/vpndrvinst/Str.c
Normal file
@ -0,0 +1,111 @@
|
||||
#include "Str.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <guiddef.h>
|
||||
|
||||
void GenMacAddress(char *dst, const size_t size)
|
||||
{
|
||||
if (!dst || size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
srand((unsigned int)time(NULL));
|
||||
|
||||
uint8_t mac[6];
|
||||
mac[0] = 0x5E;
|
||||
mac[1] = rand() % 256;
|
||||
mac[2] = rand() % 256;
|
||||
mac[3] = rand() % 256;
|
||||
mac[4] = rand() % 256;
|
||||
mac[5] = rand() % 256;
|
||||
|
||||
snprintf(dst, size, "%02X%02X%02X%02X%02X%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
}
|
||||
|
||||
const char *PathFileName(const char *path, const bool backslash)
|
||||
{
|
||||
if (!path)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *ret = strrchr(path, backslash ? '\\' : '/');
|
||||
if (ret)
|
||||
{
|
||||
++ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void StrFromGUID(char *dst, const size_t size, const GUID *guid)
|
||||
{
|
||||
if (!dst || size == 0 || !guid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf(dst, size, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
|
||||
guid->Data1, guid->Data2, guid->Data3,
|
||||
guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
|
||||
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
|
||||
}
|
||||
|
||||
char *StrReplace(char *str, size_t *size, const char *target, const char *replacement, const bool shrink)
|
||||
{
|
||||
if (!str || !size || !target || !replacement)
|
||||
{
|
||||
return str;
|
||||
}
|
||||
|
||||
const char *seek = str;
|
||||
|
||||
size_t str_len = strlen(str);
|
||||
const size_t target_len = strlen(target);
|
||||
const size_t replacement_len = strlen(replacement);
|
||||
|
||||
char *at_target;
|
||||
while ((at_target = strstr(seek, target)))
|
||||
{
|
||||
size_t new_str_len = str_len;
|
||||
|
||||
if (target_len > replacement_len)
|
||||
{
|
||||
new_str_len -= target_len - replacement_len;
|
||||
}
|
||||
else
|
||||
{
|
||||
new_str_len += replacement_len - target_len;
|
||||
const size_t required_size = new_str_len + 1;
|
||||
if (*size < required_size)
|
||||
{
|
||||
const char *old_str = str;
|
||||
|
||||
*size = required_size;
|
||||
str = realloc(str, *size);
|
||||
seek = str + (seek - old_str);
|
||||
at_target = str + (at_target - old_str);
|
||||
}
|
||||
}
|
||||
|
||||
const char *after_target = at_target + target_len;
|
||||
memmove(at_target + replacement_len, after_target, str_len - (after_target - seek) + 1);
|
||||
memcpy(at_target, replacement, replacement_len);
|
||||
|
||||
str_len = new_str_len;
|
||||
}
|
||||
|
||||
if (shrink && *size > str_len + 1)
|
||||
{
|
||||
*size = str_len + 1;
|
||||
str = realloc(str, *size);
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
19
src/vpndrvinst/Str.h
Normal file
19
src/vpndrvinst/Str.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef STR_H
|
||||
#define STR_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define MAC_BUFFER_SIZE 13
|
||||
|
||||
typedef struct _GUID GUID;
|
||||
|
||||
void GenMacAddress(char *dst, const size_t size);
|
||||
|
||||
const char *PathFileName(const char *path, const bool backslash);
|
||||
|
||||
void StrFromGUID(char *dst, const size_t size, const GUID *guid);
|
||||
|
||||
char *StrReplace(char *str, size_t *size, const char *target, const char *replacement, const bool shrink);
|
||||
|
||||
#endif
|
59
src/vpndrvinst/main.c
Normal file
59
src/vpndrvinst/main.c
Normal file
@ -0,0 +1,59 @@
|
||||
#include "Device.h"
|
||||
#include "Dialog.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void ShowUsage()
|
||||
{
|
||||
const char *message =
|
||||
"Usage: vpndrvinst <action> <instance>\n"
|
||||
"\n"
|
||||
"\"instvlan\": Installs a new virtual network interface\n"
|
||||
"\"uninstvlan\": Uninstalls an existing virtual network interface\n"
|
||||
"\"upgradevlan\": Updates the driver for an existing virtual network interface\n"
|
||||
"\"enablevlan\": Enables an existing virtual network interface\n"
|
||||
"\"disablevlan\": Disables an existing virtual network interface\n"
|
||||
"\n"
|
||||
"Example: vpndrvinst instvlan VPN21";
|
||||
|
||||
ShowInformation("Usage", message);
|
||||
}
|
||||
|
||||
int main(const int argc, const char **argv)
|
||||
{
|
||||
if (argc < 3)
|
||||
{
|
||||
ShowUsage();
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool ok = true;
|
||||
|
||||
const char* action = argv[1];
|
||||
if (strcmp(action, "instvlan") == 0)
|
||||
{
|
||||
ok = InstallDevice(argv[2]);
|
||||
}
|
||||
else if (strcmp(action, "uninstvlan") == 0)
|
||||
{
|
||||
ok = UninstallDevice(argv[2]);
|
||||
}
|
||||
else if (strcmp(action, "upgradevlan") == 0)
|
||||
{
|
||||
ok = UpgradeDevice(argv[2]);
|
||||
}
|
||||
else if (strcmp(action, "enablevlan") == 0)
|
||||
{
|
||||
ok = ToggleDevice(argv[2], true);
|
||||
}
|
||||
else if (strcmp(action, "disablevlan") == 0)
|
||||
{
|
||||
ok = ToggleDevice(argv[2], false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowUsage();
|
||||
}
|
||||
|
||||
return ok ? 0 : 1;
|
||||
}
|
@ -1,253 +0,0 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// VPN Driver Installer
|
||||
|
||||
|
||||
#include <GlobalConst.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#define HAM_WIN32
|
||||
#define _WIN32_WINNT 0x0502
|
||||
#define WINVER 0x0502
|
||||
#include <winsock2.h>
|
||||
#include <Ws2tcpip.h>
|
||||
#include <windows.h>
|
||||
#include <DbgHelp.h>
|
||||
#include <Iphlpapi.h>
|
||||
#include <wtsapi32.h>
|
||||
#include "../pencore/resource.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <wchar.h>
|
||||
#include <stdarg.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <Mayaqua/Mayaqua.h>
|
||||
#include <Cedar/Cedar.h>
|
||||
#include "vpndrvinst.h"
|
||||
|
||||
void disablevlan(UINT num, char **arg)
|
||||
{
|
||||
bool ok;
|
||||
if (num < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ok = MsDisableVLan(arg[0]);
|
||||
|
||||
if (ok == false)
|
||||
{
|
||||
_exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
_exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
void enablevlan(UINT num, char **arg)
|
||||
{
|
||||
bool ok;
|
||||
if (num < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ok = MsEnableVLan(arg[0]);
|
||||
|
||||
if (ok == false)
|
||||
{
|
||||
_exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
_exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
void instvlan(UINT num, char **arg)
|
||||
{
|
||||
KAKUSHI *k = NULL;
|
||||
MS_DRIVER_VER ver;
|
||||
bool ok;
|
||||
if (num < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
InitWinUi(L"VPN", _SS("DEFAULT_FONT"), _II("DEFAULT_FONT_SIZE"));
|
||||
|
||||
if (MsIsNt())
|
||||
{
|
||||
k = InitKakushi();
|
||||
}
|
||||
|
||||
CiInitDriverVerStruct(&ver);
|
||||
|
||||
ok = MsInstallVLan(VLAN_ADAPTER_NAME_TAG, VLAN_CONNECTION_NAME, arg[0], &ver);
|
||||
|
||||
FreeKakushi(k);
|
||||
|
||||
FreeWinUi();
|
||||
|
||||
if (ok == false)
|
||||
{
|
||||
_exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
_exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
void upgradevlan(UINT num, char **arg)
|
||||
{
|
||||
bool ok;
|
||||
KAKUSHI *k = NULL;
|
||||
MS_DRIVER_VER ver;
|
||||
if (num < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
InitWinUi(L"VPN", _SS("DEFAULT_FONT"), _II("DEFAULT_FONT_SIZE"));
|
||||
|
||||
if (MsIsNt())
|
||||
{
|
||||
k = InitKakushi();
|
||||
}
|
||||
|
||||
CiInitDriverVerStruct(&ver);
|
||||
|
||||
ok = MsUpgradeVLan(VLAN_ADAPTER_NAME_TAG, VLAN_CONNECTION_NAME, arg[0], &ver);
|
||||
|
||||
FreeKakushi(k);
|
||||
|
||||
FreeWinUi();
|
||||
|
||||
if (ok == false)
|
||||
{
|
||||
_exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
_exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
void uninstvlan(UINT num, char **arg)
|
||||
{
|
||||
bool ok;
|
||||
if (num < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ok = MsUninstallVLan(arg[0]);
|
||||
|
||||
if (ok == false)
|
||||
{
|
||||
_exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
_exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_LIST test_list[] =
|
||||
{
|
||||
{"instvlan", instvlan},
|
||||
{"uninstvlan", uninstvlan},
|
||||
{"upgradevlan", upgradevlan},
|
||||
{"enablevlan", enablevlan},
|
||||
{"disablevlan", disablevlan},
|
||||
};
|
||||
|
||||
// Main function
|
||||
void MainFunction(char *cmd)
|
||||
{
|
||||
char tmp[MAX_SIZE];
|
||||
bool first = true;
|
||||
bool exit_now = false;
|
||||
|
||||
while (true)
|
||||
{
|
||||
if (first && StrLen(cmd) != 0 && g_memcheck == false)
|
||||
{
|
||||
first = false;
|
||||
StrCpy(tmp, sizeof(tmp), cmd);
|
||||
exit_now = true;
|
||||
Print("%s\n", cmd);
|
||||
}
|
||||
else
|
||||
{
|
||||
_exit(0);
|
||||
}
|
||||
Trim(tmp);
|
||||
if (StrLen(tmp) != 0)
|
||||
{
|
||||
UINT i, num;
|
||||
bool b = false;
|
||||
TOKEN_LIST *token = ParseCmdLine(tmp);
|
||||
char *cmd = token->Token[0];
|
||||
|
||||
num = sizeof(test_list) / sizeof(TEST_LIST);
|
||||
for (i = 0;i < num;i++)
|
||||
{
|
||||
if (!StrCmpi(test_list[i].command_str, cmd))
|
||||
{
|
||||
char **arg = Malloc(sizeof(char *) * (token->NumTokens - 1));
|
||||
UINT j;
|
||||
for (j = 0;j < token->NumTokens - 1;j++)
|
||||
{
|
||||
arg[j] = CopyStr(token->Token[j + 1]);
|
||||
}
|
||||
test_list[i].proc(token->NumTokens - 1, arg);
|
||||
for (j = 0;j < token->NumTokens - 1;j++)
|
||||
{
|
||||
Free(arg[j]);
|
||||
}
|
||||
Free(arg);
|
||||
b = true;
|
||||
_exit(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
FreeToken(token);
|
||||
|
||||
if (exit_now)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// winmain function
|
||||
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, char *CmdLine, int CmdShow)
|
||||
{
|
||||
InitProcessCallOnce();
|
||||
|
||||
#if defined(_DEBUG) || defined(DEBUG) // In VC++ compilers, the macro is "_DEBUG", not "DEBUG".
|
||||
// If set memcheck = true, the program will be vitally slow since it will log all malloc() / realloc() / free() calls to find the cause of memory leak.
|
||||
// For normal debug we set memcheck = false.
|
||||
// Please set memcheck = true if you want to test the cause of memory leaks.
|
||||
InitMayaqua(false, true, 0, NULL);
|
||||
#else
|
||||
InitMayaqua(false, false, 0, NULL);
|
||||
#endif
|
||||
EnableProbe(false);
|
||||
InitCedar();
|
||||
SetHamMode();
|
||||
MainFunction(cmdline);
|
||||
FreeCedar();
|
||||
FreeMayaqua();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,23 +0,0 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// VPN Driver Installer
|
||||
|
||||
// List of test functions
|
||||
typedef void (TEST_PROC)(UINT num, char **arg);
|
||||
|
||||
typedef struct TEST_LIST
|
||||
{
|
||||
char *command_str;
|
||||
TEST_PROC *proc;
|
||||
} TEST_LIST;
|
||||
|
||||
// function prototypes
|
||||
void disablevlan(UINT num, char **arg);
|
||||
void enablevlan(UINT num, char **arg);
|
||||
void instvlan(UINT num, char **arg);
|
||||
void upgradevlan(UINT num, char **arg);
|
||||
void uninstvlan(UINT num, char **arg);
|
||||
|
||||
void MainFunction(char *cmd);
|
||||
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, char *CmdLine, int CmdShow);
|
||||
|
||||
|
@ -1,72 +1 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "winres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Japanese resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
#pragma code_page(932)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_ICON2 ICON "vpndrvinst.ico"
|
||||
#endif // Japanese resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "vpndrvinst.ico"
|
||||
|
Loading…
Reference in New Issue
Block a user