云网牛站
所在位置:首页 > Linux云服务器 > 在Debian 10 Buster上安装OpenConnect VPN Server的方法

在Debian 10 Buster上安装OpenConnect VPN Server的方法

2019-08-08 11:09:42作者:符天稿源:云网牛站

运行简单的命令就可以在Debian 10 Buster操作系统上安装OpenConnect VPN Server了,本教程将向你展示如何通过在Debian 10 Buster上安装OpenConnect VPN服务器来运行你自己的VPN服务器。OpenConnect VPN服务器,又名ocserv,是Cisco AnyConnnect VPN协议的开源实现,广泛用于企业和大学,AnyConnect是一种基于SSL的VPN协议,允许单个用户连接到远程网络。

在Debian 10 Buster上安装OpenConnect VPN Server的方法

 

安装方法

通过SSH登录Debian 10 Buster服务器(参考:安装和使用EasySSH在Linux上设置SSH连接的方法),然后使用apt从Debian存储库安装ocserv包:

sudo apt update

sudo apt install ocserv

安装后,OpenConnect VPN服务器将自动启动,你可以通过以下方式检查其状态:

systemctl status ocserv

样本输出如下图:

在Debian 10 Buster上安装OpenConnect VPN Server的方法

提示:如果上述命令没有立即退出,你可以按Q键获得对终端的控制权。

如果它没有运行,那么你可以用以下命令启动它:

sudo systemctl start ocserv

默认情况下,OpenConnect VPN服务器侦听TCP和UDP 443端口,如果Web服务器正在使用它,则无法启动VPN服务器,我们将在稍后看到如何更改OpenConnect VPN配置文件中的端口。

如果服务器上运行了防火墙,则需要打开80和443端口,例如,如果使用UFW,则运行以下命令:

sudo ufw allow 80/tcp

sudo ufw allow 443/tcp

参考:Debian、Ubuntu、Linux Mint系统中的UFW防火墙入门教程

 

编辑OpenConnect VPN服务器配置文件

编辑ocserv配置文件:

sudo nano /etc/ocserv/ocserv.conf

首先,配置密码验证,默认情况下,启用通过PAM(可插入身份验证模块)进行密码身份验证,这允许你使用Debian系统帐户从VPN客户端登录,可以通过注释掉以下行来禁用此行为:

auth = "pam[gid-min=1000]"

如果我们希望用户使用单独的VPN帐户而不是系统帐户登录,我们需要添加以下行以使用密码文件启用密码身份验证:

auth = "plain[passwd=/etc/ocserv/ocpasswd]"

完成编辑此配置文件后,我们将看到如何使用ocpasswd工具生成/etc/ocserv/ocpasswd文件,该文件包含用户名和编码密码列表。

接下来,如果你不希望ocserv使用TCP和UDP 443端口(使用443端口的Web服务器),则找到以下两行并更改端口号,否则不管它们:

tcp-port = 443

udp-port = 443

然后找到以下两行,我们需要改变它们:

server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem

server-key = /etc/ssl/private/ssl-cert-snakeoil.key

将默认设置替换为Let的加密服务器证书和服务器密钥文件的路径,注意更换vpn.example.com:

server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem

server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem

然后,设置最大客户端数,默认值为128,无限制设置为零:

max-clients = 128

设置用户可以同时登录的设备数量,默认值为2,无限制设置为零:

max-same-clients = 2

接下来,找到以下行,将false更改为true以启用MTU discovery,这可以优化VPN性能:

try-mtu-discovery = false

可以通过以下两个参数设置允许客户端在连接之前保持空闲的时间,如果你希望客户端无限期保持连接,请注释掉这两个参数:

idle-timeout=1200

mobile-idle-timeout=1800

之后,将默认域设置为vpn.example.com:

default-domain = vpn.example.com

默认情况下,IPv4网络配置如下,这将导致问题,因为大多数家用路由器还将IPv4网络范围设置为192.168.1.0/24:

ipv4-network = 192.168.1.0

ipv4-netmask = 255.255.255.0

我们可以使用另一个私有IP地址范围(例如10.10.10.0/24)来避免IP地址冲突,所以将ipv4-network的值更改为:

ipv4-network = 10.10.10.0

现在取消注释以下行以通过VPN隧道传输所有DNS查询:

tunnel-all-dns = true

更改DNS解析程序地址,可以使用Google的公共DNS服务器:

dns = 8.8.8.8

dns = 8.8.4.4

或Cloudflare的公共DNS服务器:

dns = 1.1.1.1

dns = 1.0.0.1

注意:如果你是VPN服务提供商,最好运行自己的DNS解析程序,如果在同一服务器上运行DNS解析程序,则将DNS指定为:

dns = 10.10.10.1

10.10.10.1是VPN LAN中OpenConnect VPN服务器的IP地址,这将为客户端加快DNS查找速度,因为消除了VPN服务器和DNS解析器之间的网络延迟。

然后注释掉所有路由参数(在以下行的开头添加#字符),这将把服务器设置为客户端的默认网关:

#route = 10.0.0.0/8

#route = 172.16.0.0/12

#route = 192.168.0.0/16

#route = fd00::/8

#route = default

#no-route = 192.168.5.0/255.255.255.0

保存并关闭文件然后重新启动VPN服务器以使更改生效:

sudo systemctl restart ocserv

 

创建VPN帐户

现在使用ocpasswd工具生成VPN帐户:

sudo ocpasswd -c /etc/ocserv/ocpasswd ywnz

系统将要求你为用户设置密码,并将信息保存到/etc/ocserv/ocpasswd文件中,以上设置的是ywnz,要重置密码,只需再次运行上述命令即可。

 

在Linux内核中启用IP转发

为了使VPN服务器在VPN客户端和Internet之间路由数据包,我们需要启用IP转发,编辑sysctl.conf文件:

sudo nano /etc/sysctl.conf

在此文件的末尾添加以下行:

net.ipv4.ip_forward = 1

保存并关闭文件,然后使用以下命令应用更改,-p选项将从/etc/sysctl.conf文件加载sysctl设置,此命令将在系统重新引导后保留我们的更改:

sudo sysctl -p

 

在Debian 10 Buster桌面上安装和使用OpenConnect VPN客户端

运行以下命令在Debian桌面上安装OpenConnect VPN命令行客户端:

sudo apt install openconnect

你可以从命令行连接到VPN,如下所示,-b参数将在连接建立后使其在后台运行:

sudo openconnect -b vpn.example.com

默认情况下,openconnect客户端将联系服务器的443端口,如果为服务器配置了不同的端口,则可以添加端口号:

sudo openconnect -b vpn.example.com:port-number

系统将要求你输入VPN用户名和密码,如果成功建立连接,将看到以下消息:

Got CONNECT response: HTTP/1.1 200 CONNECTED

CSTP connected. DPD 60, Keepalive 300

Connected as 10.10.10.139, using SSL + LZ4, with DTLS + LZ4 in progress

Continuing in background; pid 17050

如果连接失败,可以检查ocserv日志以找出原因(也许你没有正确输入密码):

sudo journaltcl -eu ocserv

要停止连接,请运行:

sudo pkill openconnect

要以非交互方式运行客户端,请使用以下语法:

echo -n password | sudo openconnect -b vpn.example.com -u username --passwd-on-stdin

如果要使用网络管理器来管理VPN连接,则需要安装这些软件包:

sudo apt install network-manager-openconnect network-manager-openconnect-gnome

如果你已成功连接到VPN服务器,但你的公共IP地址没有更改,那是因为IP转发或IP伪装无法正常工作,我曾经在我的iptables命令中输入错误,这导致我的计算机无法浏览Internet。

 

相关主题

使用Linux系统下的OpenConnect SSL VPN客户端连接到VPN Server

精选文章
热门文章