目录
- 使用 Ubuntu 24.04.3 LTS Server X86 镜像,使用最小化安装
- 创建证书
- 生成根证书
- 拷贝文件到 /etc/openvpn 下
- 创建服务器配置文件并启动 OpenVPN 服务
- 创建客户端证书以及配置文件
- 网络设置
- 其他问题
前言
我知道大家有很多方法建立 VPN,也许比我的更方便更好。但我也希望这个教程还是能帮到你。
准备工作
- 使用 Ubuntu 24.04.3 LTS Server X86 镜像,使用最小化安装
- 创建证书
第一步:安装组件和创建目录
sudo apt update
sudo apt install openvpn easy-rsa vim -y # 安装需要的组件
mkdir ~/openvpn-ca #创建一个文件夹
cd ~/openvpn-ca #将命令行的目录转到刚创建的目录
vi vars #创建一个名叫 vars 的空文本,并填写内容将如下文本粘贴到 vars 的空文本里面,引号""里的内容可以自定义:
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "SiChuang"
set_var EASYRSA_REQ_CITY "Chengdu"
set_var EASYRSA_REQ_ORG "MyHone"
set_var EASYRSA_REQ_EMAIL "mailto:[email protected]"
set_var EASYRSA_REQ_OU "IT"按一下 Esc,然后输入 :wq 即可保存 vars 这个文件
第二步:生成根证书
# 初始化 PKI
./easyrsa init-pki
# 如果出现 -bash: ./easyrsa: No such file or directory 请先执行这个
sudo ln -s /usr/share/easy-rsa/easyrsa ~/openvpn-ca/easyrsa
# 构建 CA ,nopass 代表不设置密码
./easyrsa build-ca nopass
# 如果出现 Common Name 可以设置个名字,然后回车即可
# 生成服务器证书和密钥 ,server 这个名字可以随意
./easyrsa gen-req server90 nopass
# 签名服务器证书
./easyrsa sign-req server server90
# 如果提示输入 yes,然后回车
# 生成 Diffie-Hellman 参数
./easyrsa gen-dh
# 生成 TLS 认证密钥
openvpn --genkey secret ta.key此时在这个目录下应该有如下文件了:
/openvpn-ca/vars
/openvpn-ca/pki/ca.crt
/openvpn-ca/pki/private/server90.key
/openvpn-ca/pki/issued/server90.crt
/openvpn-ca/pki/dh.pem
/openvpn-ca/ta.key第三步:拷贝文件到 /etc/openvpn
sudo cp pki/ca.crt /etc/openvpn/
sudo cp pki/issued/server90.crt /etc/openvpn/
sudo cp pki/private/server90.key /etc/openvpn/
sudo cp ta.key /etc/openvpn/
sudo cp pki/dh.pem /etc/openvpn/第四步:创建服务器配置文件
sudo vi /etc/openvpn/server.conf输入如下内容:
#设置端口号,建议往10000以上端口
port 13194
# 设置使用协议,建议 TCP
proto tcp
# 设置连接模式,tun三层隧道,tap网卡隧道
dev tun
# 设置证书参数
ca ca.crt
cert server90.crt
key server90.key
dh dh.pem
tls-auth ta.key 0
# 设置服务网段
server 10.8.0.0 255.255.255.0
# 设置地址池文件
ifconfig-pool-persist ipp.txt
# 设置推送信息
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "route 202.53.0.0 255.255.0.0"
# 设置心跳参数
keepalive 10 120
# 加密参数
cipher AES-256-CBC
# 持久化参数
persist-key persist-tun
# 日志参数
status openvpn-status.log
log-append /var/log/openvpn.log verb 3创建好配置文件后,即可执行如下:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
# 检查状态
sudo systemctl status openvpn@server第五步:创建客户端证书
回到 /openvpn-ca/ 目录,执行如下:
./easyrsa gen-req client90 nopass
./easyrsa sign-req client client90创建客户端 client.ovpn 配置如下:
client
dev tun
proto tcp
remote YOUR_SERVER_IP 13194
resolv-retry infinite
nobind
persist-key persist-tun
ca ca.crt
cert client90.crt
key client90.key
tls-auth ta.key 1
cipher AES-256-CBC verb 3第六步:网络设置
首先打开转发:
sudo vi /etc/sysctl.conf
# 修改 net.ipv4.ip_forward=1 并取消前面的#配置防火墙(UFW):
sudo vi /etc/ufw/before.rules
# 在 *filter 之前添加:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT或者使用 iptables:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables-save >> /etc/iptables/rules.v4然后重启服务:
sudo systemctl restart openvpn@server常见问题
客户端的证书文件怎么拷贝出来?
方法:
- 通过 ssh/http/smb/sftp 服务传输
- 通过 ssh 连接到服务器,使用 cat 查看文件,然后复制到剪切板
苹果手机端怎么操作?
openvpn 官方客户端国内商店没有提供,需要用国外 ID 下载。将客户端配置文件放到文件夹,通过 iTunes 同步到 openvpn app 目录即可。
安卓手机端怎么操作?
跟苹果端一致。
Windows 端怎么操作?
下载 OpenVPN for Windows 客户端:
将配置文件丢到 C:\Users\你的用户名\OpenVPN\config 下,双击打开客户端即可。
如果设置了密码怎么办?
- 服务器证书添加了密码,可以在配置文件里增加
askpass参数 - 客户端证书添加了密码,第一次连接时会让你记住
其他客户端(OpenWrt 爱快)怎么操作?
其他客户端一般会提供图形界面,只需要将证书和密钥以剪切板的形式复制进去即可。
注意:目前 openvpn 在国内未被封禁,可以正常使用。同样思科的 anyconnect 也可以正常使用的。但是搞特殊目的是无法使用的,流量特征太明显了。