Total Pageviews

Sunday, 30 September 2018

使用 SoftEther VPN 搭建私有局域网

Preface

Linux 下并不是所有软件都能设置代理,于是我想起了很久以前用过但没用明白的 SoftEther VPN。
本文将描述 SoftEther VPN(以下简称 sevpn) 在 Linux 服务器和客户端的搭建过程。

准备工作

  1. 到 softether.org 下载 Windows 和 Linux 的 client 和 server,共2个exe和2个tgz包
  2. Wine 或运行 Windows 的虚拟机,用来运行 sevpn 的图形界面
  3. GCC 用来编译 Linux 版的 sevpn

sevpn 的编译和安装

编译 Linux 版的可执行文件

前面准备工作里下载的 linux 版 sevpn 只包含源码,需要调用 .install.sh 来编译成可执行文件。
编译完成后,一共有3个文件,{vpnserver 或 vpnclientvpncmdhamcore.se2} 是运行 sevpn 的必备文件。

安装管理工具

注: 该工具可以用 Wine 安装和运行。
安装很简单,在 “Select Software Components to Install” 界面选择 “Admin Tools Only” 那一项即可。

搭建 sevpn 服务器

启动 vpnserver

  1. 在服务器上运行 sudo vpnserver start
  2. 打开 SEVPN Server Manager(也就是 GUI 版的管理工具)
  3. 点击 “New Setting”,在弹出的窗口中设置如下信息
    Server Name: 显示在管理工具主界面的服务器名称
    Host Name: 服务器的IP地址或域名
    Port Number: 端口号
    然后点击 OK
  4. 回到主界面后,列表里会多出一项,双击它,会要求设置新密码,请设置一个复杂的密码
  5. 设置完密码后点OK,然后会提示密码设置成功,点击OK

搭建 Virtual Hub

  1. 弹出 SEVPN Easy Setup,关掉它即可
  2. 然后会弹出 “Do you want to seup the IPSec?”,点 No 即可
  3. 删掉列表里名为 “DEFAULT” 的 HUB
  4. 点击 “Create New Hub”,给 Hub 起个名字,以后会用到这个名字。
    然后设置该 Hub 的密码,请务必设置一个复杂的密码。
    然后勾选 “No Enumerate to Anonymous Users”,勾选此项后,客户端想要连接服务器,必须手动填写 Hub 的名称。
    然后点击 OK。
  5. 选中列表中刚创建的 Hub,点击 “Manage Virtual Hub”
  6. 然后点击 “Manage User”,添加一个用户,这个用户用来登录到该 VPN 服务器
  7. 然后回到管理 Hub 的界面(”Management of Virtual Hub”)
  8. 点击 “Virtual NAT and Virtual DHCP Server (SecureNAT)”,然后点击 “Enable SecureNAT”,然后点击 “Yes”。
    SecureNAT 是用来在服务器上可以自动为客户端分配一个 IP 地址。
  9. 然后按数次 Exit 后回到 Manage VPN Server 界面
  10. 点击 “Encryption and Network”,考虑更换 “Encryption Algorithm”
  11. 取消勾选 “Use Keep Alive Internet Connection”
  12. 可选: 点击 “VPN over ICMP / DNS Settings”,勾选那两个复选框
  13. 点击数次 OK 回到 “Manage VPN Server”

端口设置

在 Management of Listeners 列表里删除不需要的端口监听,并按需求添加需要的端口。
如果服务器有防火墙,则需要添加规则以放行指定端口的数据包。
至此,服务器端已经搭建完成。

使用客户端连接服务器

启动 vpnclient

  1. 运行 sudo vpnclient start
  2. 启动 SEVPN Client Manager,分2种情况
    1. 使用 Wine 运行 SEVPN Client Manager 的话,直接运行它即可
    2. 在 Windows 虚拟机内运行的话,找到 vpncmgr.exe,使用命令行运行 vpncmgr.exe /remote,然后填写宿主机的IP地址。连接不上的话,请检查防火墙设定。

创建虚拟网卡

菜单栏 -> Virtual Adapter -> New Virtual Network Adapter,然后按照说明创建一个虚拟网卡即可。假定新建的虚拟网卡名称为 vpn_0

创建 VPN 连接

  1. 运行命令,允许本机直接发送数据包到服务器
    ip route add <server_ip> via <gateway> dev <interface>
    server_ip: VPN 服务器的 IP
    gateway: 当前所在网络内的默认 gateway
    interface: 通过哪个网络设备发送数据包
  2. 菜单栏 -> Connect -> New VPN Connection Setting
    Server Name: 该 VPN 连接的名称
    Host Name: VPN 服务器的IP地址或域名
    Port Number: VPN 服务器的端口号
    Virtual Hub Name: 填写前面创建的 Virtual Hub 的名字
    Virtual Network Adapter to Use: 选择刚才创建的虚拟网卡
    User Authenication Setting: 填写前面创建 Hub 后,在 Hub 里创建的用户名和密码
    点击 OK
  3. 右键刚刚新建的连接 -> Connect
  4. 运行命令 dhclient vpn_0,该命令将让虚拟网卡获得一个 IP 地址

断开 VPN 连接

  1. 在 VPN 连接上右键 -> Disconnect
  2. 删除虚拟网卡,这样就会在路由表里自动删除虚拟网卡的路由
  3. 文件 /etc/resolv.conf 会在连接 VPN 后被修改成 VPN 内的网关,断开 VPN 后需要改回原来的 nameserver.

from https://oing9179.github.io/blog/2018/201807-Setup-private-LAN-using-SoftEther-VPN/