在Ubuntu系统中搭建VPN服务器可以帮助用户实现安全远程访问或突破网络限制,以下是使用OpenVPN协议搭建详细步骤,整个过程基于Ubuntu 20.04/22.04 LTS系统,需具备root或sudo权限。

首先更新系统并安装必要依赖,执行apt update && apt upgrade -y更新软件包列表,然后安装openvpn、easy-rsa和openssl。easy-rsa用于管理证书,OpenVPN依赖SSL/TLS加密,安装完成后,创建证书目录:mkdir -p /etc/openvpn/easy-rsa,从GitHub下载最新版Easy-RSA脚本到该目录。
接下来生成CA证书和服务器证书,进入证书目录cd /etc/openvpn/easy-rsa,初始化PKI结构:./easyrsa init-pki,创建根CA证书:./easyrsa build-ca nopass(nopass参数避免输入密码,适合自动化场景),然后生成服务器证书和密钥:./easyrsa gen-req server nopass,使用./easyrsa sign-req server server签署请求(需输入CA密码),最后生成Diffie-Hellman参数:./easyrsa gen-dh,耗时较长,耐心等待。
配置OpenVPN服务器,复制示例配置文件:cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/,编辑核心参数:nano /etc/openvpn/server.conf,关键配置包括:proto udp(推荐UDP协议,穿透性强)、port 1194(默认端口)、dev tun(使用TAP虚拟网卡)、ca /etc/openvpn/easy-rsa/pki/ca.crt、cert /etc/openvpn/easy-rsa/pki/issued/server.crt、key /etc/openvpn/easy-rsa/pki/private/server.key、dh /etc/openvpn/easy-rsa/pki/dh.pem,启用加密算法:cipher AES-256-CBC,auth SHA256,并添加user nobody和group nogroup提升安全性,开启IP转发:编辑/etc/sysctl.conf,取消注释net.ipv4.ip_forward=1,执行sysctl -p生效。
配置客户端访问,生成客户端证书:./easyrsa gen-req client1 nopass并签署,创建客户端配置文件/etc/openvpn/client.conf,包含以下内容:

client
proto udp
remote your_server_ip 1194
dev tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
auth SHA256
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo no
verb 3
将ca.crt、client1.crt、client1.key和client.conf打包给客户端。
启动服务并设置开机自启,执行systemctl start openvpn@server,systemctl enable openvpn@server检查状态:systemctl status openvpn@server,配置防火墙允许1194端口UDP和转发规则:ufw allow 1194/udp,ufw allow OpenSSH,ufw enable。
常见问题排查:若客户端连接失败,检查服务器防火墙规则和/var/log/syslog中的OpenVPN日志;若速度慢,尝试更换端口或协议为TCP。
相关问答FAQs:

-
如何限制客户端IP地址访问?
在server.conf中添加client-config-dir ccd,创建目录mkdir /etc/openvpn/ccd,为每个客户端创建文件(如client1为ifconfig-push 10.8.0.2 255.255.255.252,固定客户端IP。 -
如何支持移动设备客户端配置?
使用ovpn-genkey工具生成Android/iOS兼容的配置文件,或手动将client.conf中的证书内容合并为单个.ovpn文件,包含<ca>、<cert>、<key>标签段,方便移动设备直接导入。
