类别:Ubantu / 日期:2025-07-06 / 浏览:58 / 评论:0
openvpn的服务器设置请参考以前文章:《RouterOS 的 OpenVPN配置(国内最完整笔记)》
在 Ubuntu 上安装和配置 OpenVPN 客户端可以通过以下步骤完成:
1. 安装 OpenVPN 客户端
OpenVPN 通常包含在 Ubuntu 的软件源中,可以通过以下命令安装:
sudo apt update sudo apt install openvpn
2. 获取 OpenVPN 配置文件
你需要从你的 VPN 服务提供商处获取以下文件:
客户端配置文件(通常以 .ovpn 结尾,如 client.ovpn)
证书/密钥文件(如 ca.crt、client.crt、client.key)
此外,还需要以下两个文件auth.txt和pass.txt
3. 配置 OpenVPN
命令行方式
将 client.ovpn、ca.crt、client.crt、client.key配置文件复制到 /etc/openvpn/
设置权限(防止泄露):
sudo chmod 600 /etc/openvpn/client/client.key
创建证书私钥密码文件
sudo vi /etc/openvpn/client/pass.txt
写入证书私钥密码(单行,无多余空格或换行。此密码为当初创建证书key时设的):
your_private_key_password
设置权限(防止泄露):
sudo chmod 600 /etc/openvpn/client/pass.txt
创建登录用户和密码文件,用户一行,密码为另一行,不能有其它多余字符,例如用户名是:admin,密码是:abc123456
sudo vi /etc/openvpn/client/auth.txt
内容:
admin abc123456
设置权限(防止泄露):
sudo chmod 600 /etc/openvpn/client/auth.txt
以上文件保存路径和权限如图所示
4.修改 client.ovpn 配置文件
sudo vi /etc/openvpn/client/client.ovpn
以下是我的配置:
client dev tun proto tcp #端口类型 remote vpn.itdog.net 9454 #远程服务器和端口 resolv-retry infinite #确保在域名解析临时失败时自动恢复 nobind persist-key persist-tun tls-client remote-cert-tls server verb 4 mute 10 cipher AES-128-CBC #这是旧版本的验证加密,要根据VPN服务器具体情况设置。因为ros当时已设好为旧版本了,所以不要修改。 auth SHA1 auth-user-pass #需要输入登录用户名和密码 auth-nocache #redirect-gateway #这个配置很关键,如果开启,所有数据走VPN。如果关闭,只有访问VPN站时才走VPN,其它都走默认路由。一般情况下关闭或删除不配置 keepalive 10 60 #保持自动重连 ca /etc/openvpn/client/ca.crt #定义CA cert /etc/openvpn/client/client.crt #定义cert key /etc/openvpn/client/client.key #定义key auth-user-pass /etc/openvpn/client/auth.txt #获取登录用户名和密码 askpass /etc/openvpn/client/pass.txt #获取证书密码
5、然后启动 OpenVPN:
sudo systemctl start openvpn-client@client
(如果文件名为 client.conf,则服务名称为 openvpn@client)
如果系统中没有 /etc/systemd/system/openvpn-client@.service 文件,说明 OpenVPN 的 systemd 服务模板未被正确安装或自定义。以下是完整的解决方案:
确认 OpenVPN 服务文件位置
默认的服务模板应位于 /lib/systemd/system/。检查是否存在:
ls /lib/systemd/system/openvpn-client@.service
解决方案:重新链接服务文件,创建自定义服务配置
sudo vi /etc/systemd/system/openvpn-client@.service
粘贴以下内容(适配 Ubuntu 22.04):
[Unit] Description=OpenVPN tunnel for %i Documentation=man:openvpn(8) After=network.target Wants=network-online.target [Service] Type=notify PrivateTmp=true WorkingDirectory=/etc/openvpn/client ExecStart=/usr/sbin/openvpn --suppress-timestamps --nobind --config /etc/openvpn/client/%i.ovpn CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE LimitNPROC=10 DeviceAllow=/dev/null rw DeviceAllow=/dev/net/tun rw [Install] WantedBy=multi-user.target
重新加载 systemd
sudo systemctl daemon-reload
然后启动 OpenVPN:
sudo systemctl start openvpn-client@client
6.设置开机自启:
sudo systemctl enable openvpn-client@client
7. 查看服务状态
sudo systemctl status openvpn-client@client
8.检查连接状态
查看 OpenVPN 日志:
sudo journalctl -u openvpn-client@client -f
检查网络接口:
ip a show tun0
或
ifconfig tun0
测试网络连通性:
curl ifconfig.me # 查看公网 IP ping 8.8.8.8 # 测试网络连通性
9.断开或重启 VPN
断开 VPN:
sudo systemctl stop openvpn-client@client
重启 VPN:
sudo systemctl restart openvpn-client@client
说一下实际应用:
办事处有一台电脑需要远程连接,系统是ubuntu,对方主路由网络没有权限开端口。本来想搞frp的,但不知怎么的到最后一步就是没成功,已排除N种可能了,最后只好放弃。干脆用openvpn一直连接就可以了。但正常上网要走默认路由的,只是ssh等几个程序需要走VPN而已。以上方案已证明可行。