运行简单的命令就可以在Debian 10 Buster操作系统上安装OpenConnect VPN Server了,本教程将向你展示如何通过在Debian 10 Buster上安装OpenConnect VPN服务器来运行你自己的VPN服务器。OpenConnect VPN服务器,又名ocserv,是Cisco AnyConnnect VPN协议的开源实现,广泛用于企业和大学,AnyConnect是一种基于SSL的VPN协议,允许单个用户连接到远程网络。
安装方法 通过SSH登录Debian 10 Buster服务器(参考:安装和使用EasySSH在Linux上设置SSH连接的方法),然后使用apt从Debian存储库安装ocserv包: sudo apt update sudo apt install ocserv 安装后,OpenConnect VPN服务器将自动启动,你可以通过以下方式检查其状态: systemctl status ocserv 样本输出如下图:
提示:如果上述命令没有立即退出,你可以按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。
相关主题 |