AI智能摘要
2024年,还在用复杂命令行搭建VPN?Ubuntu上从零配置OpenVPN的全流程已全面更新。本文手把手教你利用Easy-RSA生成证书、配置服务端与客户端,并打通防火墙与IP转发关键环节。无需第三方工具,完整覆盖Ubuntu 24.04 LTS下的安全部署细节,每一步皆可复制。看完即能独立搭建专属加密隧道,实现远程安全访问。
— AI 生成的文章内容摘要
系统版本号:Ubuntu 24.04.2 LTS
一、安装 OpenVPN 和 Easy-RSA
sudo apt update
sudo apt install openvpn easy-rsa -y
二、配置 CA 证书与密钥
Easy-RSA 是一个用于创建和管理 PKI (公钥基础设施)的工具集。
1、创建 Easy-RSA 工作目录
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
2、初始化 PKI
./easyrsa init-pki
3、构建 CA(输入密码用于保护私钥)
./easyrsa build-ca
三、生成服务器端密钥和证书
./easyrsa gen-req server nopass
./easyrsa sign-req server server
会提示你确认签署请求。
四、生成 Diffie-Hellman 参数和 TLS 密钥
./easyrsa gen-dh
openvpn --genkey --secret ta.key
五、生成客户端证书(以 client1 为例)
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
六、配置 OpenVPN 服务器
1. 复制所需文件
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/
2. 创建配置文件
sudo nano /etc/openvpn/server.conf
3. 示例配置 server.conf:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA256
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1
七、启用并启动服务
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server
查看状态:
sudo systemctl status openvpn@server
八、开启 IP 转发和防火墙设置
1. 编辑 sysctl 配置文件
sudo nano /etc/sysctl.conf
取消以下行的注释:
net.ipv4.ip_forward=1
使配置生效:
sudo sysctl -p
2. 设置 UFW 防火墙(以 eth0 为主网卡为例)
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo nano /etc/ufw/before.rules
在文件顶部添加:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
启用 UFW 转发:
sudo nano /etc/default/ufw
找到:
DEFAULT_FORWARD_POLICY="DROP"
改为:
DEFAULT_FORWARD_POLICY="ACCEPT"
重启 UFW:
sudo ufw disable
sudo ufw enable
九、配置客户端
1.在客户端创建 .ovpn 文件(如 client1.ovpn):
client
dev tun
proto udp
remote <服务器公网IP> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA256
cipher AES-256-CBC
key-direction 1
verb 3
<ca>
# 内容来自 ca.crt
</ca>
<cert>
# 内容来自 client1.crt
</cert>
<key>
# 内容来自 client1.key
</key>
<tls-auth>
# 内容来自 ta.key
</tls-auth>
你可以使用 scp 或其他方式把证书和配置文件传给客户端。
十、测试连接
启动客户端,观察连接日志;
使用 ifconfig 或 ip a 确认 tun0 接口是否启用;
在服务器端查看连接日志:
tail -f /var/log/syslog
- THE END -
最后修改:2026年1月27日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://ahhf.vip/ubuntu-openvpn-setup-guide/
洗马
这玩意配起来真费劲,搞了两个小时才通。
绯色之雨
ta.key是干啥的?求解释一下
夜莺轻语
之前搞过这个,确实折腾了好久,最后发现防火墙没开转发
尸王
UFW那块改完要重启服务吗?试了不行有点懵
柠檬黄蜂
感觉还行,照着步骤一步步来基本没问题
醉仙楼
服务器端证书名字能自定义不?试了下怕出错