在 Ubuntu 24.04 VPS部署 SoftEtherVPN 服务器(二)

我们在上一节介绍了SoftEther的安装,这一节我们介绍它的配置,配置完后,就可以工作啦。接下来我们配置DNS服务器。配置的目的是,拨号连接上的客户端通过这台SoftEtherVPN服务器来访问互连网,当然你也可以设置成访问专网时访问这台SoftEtherVPN服务器,其他流量通过工作站本地互联网访问。如果是后一种则无需要此配置DNS服务器。

一:在SoftEtherVPN服务器安装DNS服务

上一节我们将 VPN 服务器指定为客户端的 DNS 服务器,因此我们需要在 VPN 服务器上运行 DNS 解析器。我们可以安装 bind9 DNS 服务器。

sudo apt install -y bind9

安装后,BIND 将自动启动。您可以通过以下方式检查其状态:

systemctl status named

使用以下命令启动它:

sudo systemctl start named

编辑 BIND DNS 服务器的配置文件。

sudo vim /etc/bind/named.conf.options

#添加以下行以允许 VPN 客户端发送递归 DNS 查询。
allow-recursion { 127.0.0.1; 192.168.30.0/24; };

然后编辑named文件

sudo vim /etc/default/named

添加到 以确保 BIND 可以查询根 DNS 服务器。

OPTIONS="-u bind -4"

默认情况下,BIND 启用 DNSSEC,我们可以使用以下命令重建托管密钥数据库。

sudo rndc managed-keys destroy
sudo rndc reconfig

重新启动 BIND9 以使更改生效。

sudo systemctl restart named

打开 VPN 客户端连接端口 53。

二:Cerbot获取信任TLS证书

使用 Let's Encrypt 证书的优势在于它是免费的、更易于设置并且受到 VPN 客户端软件的信任。

从默认 Ubuntu 存储库安装 Let's Encrypt 客户端 (certbot)

sudo apt install -y certbot

要检查版本号,请运行

certbot --version

输出:

certbot 2.9.0

如果您的 Ubuntu 24.04 VPS 上没有运行 Web 服务器,并且您希望 SoftEther VPN 服务器使用端口 443,那么您可以使用独立插件从 Let's Encrypt 获取 TLS 证书。

sudo certbot certonly --standalone --preferred-challenges http --key-type rsa --agree-tos --email you@example.com -d vpn.example.com

参数解释:

certonly:获取证书但不安装它。

--standalone:使用独立插件获取证书

--preferred-challenges http:执行 http-01 质询以验证我们的域,该域将使用端口 80。

--key-type rsa:Let's Encrypt 默认使用 ECDSA 密钥,但 SoftEther 目前支持 RSA 密钥。

--agree-tos:同意 Let's Encrypt 服务条款。

--email:电子邮件地址用于帐户注册和恢复。

-d:指定域名。

成功后的信息如下:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/vpn.example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/vpn.example.com/privkey.pem
This certificate expires on 2024-09-26.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le

执行此指令前,请确保域名已正确解析,目前国内的VPS有报错,尚未查明原因,但国外主机都可以一次性成功。

三:Nginx浏览器设置

使用的是 Nginx

sudo vim /etc/nginx/conf.d/vpn.example.com.conf

编辑内容如下:

server {
      listen 80;
      server_name vpn.example.com;

      root /var/www/html/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

创建 Web 根目录

sudo mkdir -p /var/www/html

#设置访问权限
sudo chown -R www-data:www-data /var/www/html

重新加载 Nginx 以使更改生效

sudo systemctl reload nginx

创建并启用虚拟主机后,运行以下命令以使用 webroot 插件获取 Let's Encrypt 证书。

sudo certbot certonly --webroot --agree-tos --key-type rsa --email you@exmaple.com -d vpn.example.com -w /var/www/html

提示选项,因为前面使用过,所以这里选了2,进行Renew。

四:登录控制台

以 root 身份登录 VPN 管理控制台。

sudo /opt/softether/vpncmd 127.0.0.1:5555

选择管理 VPN 服务器。您需要输入管理员密码

然后执行以下命令,设置 TLS 证书和 VPN 服务器的私钥。

然后执行以下命令,设置 TLS 证书和 VPN 服务器的私钥。

VPN Server>ServerCertSet

输入证书的以下路径。

此信息为前面申请证书时生成证书的路径。

最后,退出管理

exit

五:Win11拨号设置

参数解读:

VPN 提供商:Windows (Built-in)

连接名称:SoftEther

服务器名称或地址:(请不要添加https://前缀vpn.example.com

VPN 类型:Secure Socket Tunneling Protocol (SSTP)

登录信息类型:username and password

用户名:您的 SoftEther VPN 用户名

Password:您的 SoftEther VPN 密码

六:Ubuntu Linux 安装 SSTP VPN 客户端

1、安装客户端

sudo apt install sstp-client network-manager-sstp

2、建立VPN连接

sudo sstpc --cert-warn --save-server-route --user vpn_username --password vpn_password vpn.example.com:443 usepeerdns require-mschap-v2 noauth noipdefault nobsdcomp nodeflate

3、设置开机启动

sudo vim /etc/systemd/system/softether-vpnclient.service

内容如下:

[Unit]
  Description=SoftEther VPN Client
  After=network-online.target systemd-resolved.service
  Wants=network-online.target

[Service]
  Type=simple
  ExecStart=/usr/sbin/sstpc --cert-warn --save-server-route --user vpn_username --password vpn_password vpn.example.com:443 usepeerdns require-mschap-v2 noauth noipdefault nobsdcomp nodeflate
  ExecStartPost=/bin/bash -c 'sleep 7; route add default ppp0'
  ExecStop=pkill sstpc
  Restart=Always

[Install]
  WantedBy=multi-user.target

其他操作:

#使生效
sudo systemctl enable softether-vpnclient.service

#要停止此 Systemd 服务,请运行
sudo systemctl stop softether-vpnclient.service

非常好用的一个软件,有兴趣的小伙伴可以试试吧。

相关推荐
Annuo、2 分钟前
php中根据指定日期获取所在天,周,月,年的开始日期与结束日期
java·服务器·前端
FGGIT16 分钟前
使用Docker快速本地部署RSSHub结合内网穿透访问RSS订阅源
运维·docker·容器
x66ccff17 分钟前
【linux】轻松掌握文件管理:安装Ranger并设置Micro为默认编辑器
linux·运维·编辑器
荔枝要好学23 分钟前
node.js从入门到快速开发一个简易的web服务器
服务器·前端·node.js
2401_8260976227 分钟前
linux-vim的使用
linux·运维·vim
速盾cdn30 分钟前
速盾:cdn一般多长时间清理下缓存?
服务器·网络·安全·web安全
-纸短情长39 分钟前
负载均衡--会话保持失败原因及解决方案(五)
运维·负载均衡
乱蜂朝王1 小时前
Ubuntu篇——Ubuntu20.04备份成ISO镜像文件并安装到其他电脑上(完整步骤)
linux·运维·ubuntu
第六五1 小时前
ubuntu命令行设置wifi和宽带连接
服务器·ubuntu
心之所想,行之将至1 小时前
gitlab集成CI/CD,shell方式部署
运维·ci/cd·gitlab