基于 Ubuntu Desktop 22.04 amd64 系统进行搭建。
安装应用 由于 APT 直接安装的 ocserv 1.1.3 在 Ubuntu 22.04 上会出现崩溃,导致客户端无法连接,所以需要手动安装 1.1.6 及之后的版本。
APT 安装 直接使用 apt 安装应用。
1 2 sudo apt update sudo apt install -y ocserv
DEB 安装 从 Ubuntu 的软件仓库中下载 ocserv 的 deb 包进行安装。
1 2 wget https://cz.archive.ubuntu.com/ubuntu/pool/universe/o/ocserv/ocserv_1.2.4-1build2_amd64.deb sudo dpkg -i ocserv_1.2.4-1build2_amd64.deb
源码安装 安装所需依赖。
1 2 sudo apt update sudo apt install -y libreadline-dev ipcalc-ng gnutls-bin pkg-config nettle-dev libgnutls28-dev libev-dev libprotobuf-c-dev libseccomp-dev
下载源码进行编译安装。
1 2 3 4 5 6 wget https://www.infradead.org/ocserv/download/ocserv-1.3.0.tar.xz tar -xvf ocserv-1.3.0.tar.xz cd ocserv-1.3.0 ./configure --sysconfdir=/etc make sudo make install
新建目录,用于存放 ocserv 的配置文件。
1 2 sudo mkdir /etc/ocserv sudo cp doc/sample.config /etc/ocserv/ocserv.conf
复制 ocserv.service
文件,创建 ocserv 服务。
1 sudo cp doc/systemd/standalone/ocserv.service /lib/systemd/system/
配置系统 编辑 /etc/sysctl.conf
文件,修改以下配置。
1 #net.ipv4.ip_forward=1 => net.ipv4.ip_forward=1
应用配置文件。
配置 iptables 防火墙的 NAT 功能。
1 sudo iptables -t nat -A POSTROUTING -j MASQUERADE
制作证书 新建任意目录,用于存放制作的自签名证书。
1 2 mkdir certificates cd certificates
新建 ca.tmpl
模板文件。
1 2 3 4 5 6 7 8 cn = "your organization’s certificate authority" organization = "your organization" serial = 1 expiration_days = 3650 ca signing_key cert_signing_key crl_signing_key
新建 server.tmpl
模板文件。
1 2 3 4 5 6 7 cn = "a sever's name, usually matches hostname" organization = "your organization" serial = 2 expiration_days = 3650 signing_key encryption_key tls_www_server
生成 CA 证书。
1 2 certtool --generate-privkey --outfile ca-key.pem certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
生成服务器证书。
1 2 certtool --generate-privkey --outfile server-key.pem certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
将服务器证书复制到 /etc/ocserv
目录。
1 sudo cp server-key.pem server-cert.pem /etc/ocserv/
配置应用 编辑 /etc/ocserv/ocserv.conf
文件,主要修改以下配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 # 使用用户名和密码进行登录 auth = "plain[passwd=/etc/ocserv/ocpasswd]" # 指定服务监听端口 tcp-port = 443 udp-port = 443 # 指定服务器证书 server-cert = /etc/ocserv/server-cert.pem server-key = /etc/ocserv/server-key.pem # 允许同时连接的客户端数量 max-clients = 4 # 限制同一客户端的并行登陆数量 max-same-clients = 2 # 自动优化 MTU 属性,尝试改善网络性能 try-mtu-discovery = true # 指定证书版本,确保服务器正确读取客户端使用的用户证书。 cert-user-oid = 2.5.4.3 # VPN 分配的网段 ipv4-network = 192.168.1.0 ipv4-netmask = 255.255.255.0 # VPN 分配的 DNS 服务器 dns = 8.8.8.8 dns = 1.1.1.1 # 注释掉所有路由,使服务器成为网关 #route = 10.0.0.0/8 #route = 172.16.0.0/12 #route = 192.168.0.0/16 # 启用 Cisco 客户端兼容性支持 cisco-client-compat = true
添加用户用于 VPN 登录。
1 sudo ocpasswd -c /etc/ocserv/ocpasswd test
运行应用 通过指定配置文件运行应用。
1 sudo ocserv -c /etc/ocserv/ocserv.conf
以调试模式运行应用。
1 sudo ocserv -c /etc/ocserv/ocserv.conf -f -d 1
启动服务,并设置开机启动。
1 2 sudo systemctl start ocserv.service sudo systemctl enable ocserv.service
查看端口确认服务是否开启。
1 2 3 $ sudo netstat -anop | grep 443tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 4280/ocserv off (0.00/0/0) udp 0 0 0.0.0.0:443 0.0.0.0:* 4280/ocserv off (0.00/0/0)
参考链接 使用 ocserv 搭建企业级 OpenConnect VPN 网关 | EdNovas 的小站
深海游弋的鱼 – 默默的点滴
Basic ocserv configuration - OpenConnect VPN how-to guides
使用ocserv搭建 VPN 畅游网络 | evilvoid
Generic - OpenConnect VPN how-to guides
[Bug 1975550] [NEW] OpenConnect VPN (ocserv): general protection fault in ocserv-worker when a client tries to connect