这里的client.key如何获得?
安装了openvpn后在/etc/openvpn/server下没有看到任何文件,我要如何获得client.ovpn
导出时间:2026/5/27 22:58:04
来源地址:https://www.doubao.com/chat/9253783052046082
消息数量:19
/etc/openvpn/server目录为空是正常的,因为安装包仅提供基础组件,配置文件和证书需要手动生成。下面我将为你提供完整的步骤来创建client.ovpn配置文件:sudo mkdir -p /etc/openvpn/server
sudo mkdir -p /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
sudo apt install easy-rsa
sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa
sudo ./easyrsa init-pki
vars文件(sudo nano vars),设置以下参数:set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Shanghai"
set_var EASYRSA_REQ_CITY "Shanghai"
set_var EASYRSA_REQ_ORG "MyVPN"
set_var EASYRSA_REQ_EMAIL "admin@example.com"
set_var EASYRSA_REQ_OU "Community"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
sudo ./easyrsa build-ca nopass
sudo ./easyrsa gen-req server nopass
sudo ./easyrsa sign-req server server
sudo ./easyrsa gen-dh
sudo openvpn --genkey --secret /etc/openvpn/server/ta.key
sudo nano /etc/openvpn/server/server.conf
port 1194
proto udp
dev tun
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
tls-auth /etc/openvpn/server/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"
keepalive 10 120
cipher AES-256-CBC
auth SHA256
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
sudo nano /etc/sysctl.conf
# 取消注释并设置:
net.ipv4.ip_forward=1
# 应用更改
sudo sysctl -p
# 允许OpenVPN流量
sudo ufw allow 1194/udp
# 允许转发流量
sudo ufw route allow in on tun0 out on eth0
# 设置NAT(替换eth0为你的外网网卡名)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 保存规则
sudo netfilter-persistent save
cd /etc/openvpn/easy-rsa
sudo ./easyrsa gen-req client1 nopass
sudo ./easyrsa sign-req client client1
sudo mkdir -p /etc/openvpn/client-configs/files
sudo nano /etc/openvpn/client-configs/base.conf
SERVER_IP为你的服务器公网 IP):client
dev tun
proto udp
remote SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
cipher AES-256-CBC
auth SHA256
<ca>
# CA证书内容将在此处插入
</ca>
<cert>
# 客户端证书内容将在此处插入
</cert>
<key>
# 客户端私钥内容将在此处插入
</key>
key-direction 1
<tls-auth>
# TA密钥内容将在此处插入
</tls-auth>
# 创建生成脚本
sudo nano /etc/openvpn/client-configs/make_config.sh
#!/bin/bash
# 客户端配置目录
KEY_DIR=/etc/openvpn/easy-rsa/pki
OUTPUT_DIR=/etc/openvpn/client-configs/files
BASE_CONFIG=/etc/openvpn/client-configs/base.conf
# 替换为你的服务器公网IP
SERVER_IP=your_server_ip
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/issued/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/private/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
/etc/openvpn/server/ta.key \
<(echo -e '</tls-auth>') \
| sed "s/SERVER_IP/${SERVER_IP}/" \
> ${OUTPUT_DIR}/${1}.ovpn
# 设置正确的权限
chmod 600 ${OUTPUT_DIR}/${1}.ovpn
sudo chmod +x /etc/openvpn/client-configs/make_config.sh
sudo /etc/openvpn/client-configs/make_config.sh client1
client1.ovpn位于/etc/openvpn/client-configs/files/目录下。# 启动服务并设置开机自启
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
# 检查状态
sudo systemctl status openvpn@server
# 从服务器下载(使用scp或SFTP)
scp username@server_ip:/etc/openvpn/client-configs/files/client1.ovpn ~/Downloads/
openssl verify命令检查证书有效性。sudo apt install openvpn命令,能够成功安装 OpenVPN 的社区版本。下面为你详细介绍相关情况:openvpn --version
OpenVPN 2.5.1 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD]
library versions: OpenSSL 3.0.2 15 Mar 2022, LZO 2.10
network-manager-openvpn。openvpn-auth-ldap等相关软件包。sudo apt update && sudo apt upgrade
client.key是 OpenVPN 客户端的私钥文件,需要通过服务器端的证书颁发机构(CA)生成。根据你之前的操作,若已安装并配置好 OpenVPN 服务器,可按以下步骤获取client.key:cd /etc/openvpn/easy-rsa
sudo ./easyrsa gen-req client1 nopass # 生成客户端证书请求(client1是客户端名称,可自定义)
sudo ./easyrsa sign-req client client1 # 用CA签署客户端证书
/etc/openvpn/easy-rsa/pki/private/client1.key(即client.key)/etc/openvpn/easy-rsa/pki/issued/client1.crtclient1.keyclient1.crt/etc/openvpn/easy-rsa/pki/ca.crt/etc/openvpn/server/ta.key# 在客户端执行,从服务器下载文件
scp username@server_ip:/etc/openvpn/easy-rsa/pki/private/client1.key ~/Downloads/
scp username@server_ip:/etc/openvpn/easy-rsa/pki/issued/client1.crt ~/Downloads/
scp username@server_ip:/etc/openvpn/easy-rsa/pki/ca.crt ~/Downloads/
scp username@server_ip:/etc/openvpn/server/ta.key ~/Downloads/
client.ovpn中:cat > ~/.openvpn/client.ovpn <<EOF
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
<ca>
$(cat ~/Downloads/ca.crt)
</ca>
<cert>
$(cat ~/Downloads/client1.crt)
</cert>
<key>
$(cat ~/Downloads/client1.key)
</key>
key-direction 1
<tls-auth>
$(cat ~/Downloads/ta.key)
</tls-auth>
EOF
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca /path/to/ca.crt
cert /path/to/client1.crt
key /path/to/client1.key
tls-auth /path/to/ta.key 1
client.key是敏感文件,生成后需确保只有授权用户可访问(chmod 600 client.key)。client2.key、client3.key),避免密钥共享。openvpn --config ~/.openvpn/client.ovpn
Initialization Sequence Completed
ECONNREFUSED(连接被拒绝),这表明客户端无法与服务器的 1194/UDP 端口建立通信。下面我会针对这个问题进行详细分析并给出解决办法。2025-06-17 23:01:28 read UDPv4 [ECONNREFUSED]: Connection refused (fd=3,code=111)
ECONNREFUSED一般由以下原因造成:sudo systemctl status openvpn@server
sudo systemctl start openvpn@server
sudo journalctl -u openvpn@server
# 查看防火墙状态(Ubuntu默认使用ufw)
sudo ufw status
# 若未开放1194/UDP,执行以下命令
sudo ufw allow 1194/udp
sudo ufw reload
0.0.0.0/0(表示允许所有 IP)。client1.ovpn中的服务器地址和端口是否正确:grep 'remote ' ~/.openvpn/client1.ovpn
# 输出应类似:remote 34.199.45.31 1194
curl ifconfig.me
ping 34.199.45.31
nc -vzu 34.199.45.31 1194
Connection to 34.199.45.31 1194 port [udp/openvpn] succeeded!;若超时,则表示存在网络阻塞。client1.ovpn中添加comp-lzo no以禁用压缩。cipher AES-256-CBC修改为data-ciphers AES-256-GCM。client1.ovpn中添加verify-x509-name "server" name(假设服务器证书的通用名称为 "server")。# 临时禁用AppArmor(仅用于测试)
sudo aa-disable openvpn
# 永久禁用SELinux(编辑/etc/selinux/config)
SELINUX=disabled
# 在服务器上重启OpenVPN
sudo systemctl restart openvpn@server
# 在客户端重新连接
openvpn --config ~/.openvpn/client1.ovpn
Initialization Sequence Completed
ECONNREFUSED错误通常是由网络配置问题引起的,按照上述步骤检查服务器服务状态、防火墙配置和客户端设置,应该能够解决连接问题。如果仍然无法连接,请提供服务器端的 OpenVPN 日志(/var/log/syslog或/var/log/openvpn.log)以便进一步排查。nc -vzu命令无输出通常表示端口未开放或被防火墙拦截。UDP 协议的特性导致nc命令在端口未开放时不会返回明确的错误信息(不像 TCP 会返回Connection refused),因此无输出等同于端口不通。# 在服务器上执行
sudo systemctl status openvpn@server
sudo netstat -ulpn | grep 1194
sudo systemctl start openvpn@server
# 查看ufw状态(Ubuntu默认防火墙)
sudo ufw status
# 若未开放1194/UDP,执行:
sudo ufw allow 1194/udp
sudo ufw reload
| 类型 | 协议 | 端口范围 | 来源 |
|---|---|---|---|
| OpenVPN | UDP | 1194 | 0.0.0.0/0 |
# 在客户端安装socat(若未安装)
sudo apt install socat
# 发送测试包并等待响应
echo "test" | socat - UDP-DATAGRAM:34.199.45.31:1194,sourceport=50000 -
| 原因 | 解决方案 |
|---|---|
| OpenVPN 服务未启动 | sudo systemctl start openvpn@server |
| 防火墙阻止 1194/UDP | sudo ufw allow 1194/udp 或调整云安全组规则 |
| 服务器 IP / 端口错误 | 检查client1.ovpn中的remote行,使用curl ifconfig.me确认服务器公网 IP |
| 路由问题 | 联系服务器提供商确认网络路由配置 |
# 客户端再次测试(应显示连接成功)
nc -vzu 34.199.45.31 1194
# 预期输出:
# Connection to 34.199.45.31 1194 port [udp/openvpn] succeeded!
# 重新启动OpenVPN客户端
openvpn --config ~/.openvpn/client1.ovpn
sudo systemctl status openvpn@server 的输出sudo ufw status 的输出.ovpn)的下载和分发流程与社区版有较大差异。以下是获取和配置客户端 OVPN 文件的完整步骤:943(如https://your-server-ip:943/admin)。使用管理员账号登录(默认用户名:openvpn,密码为安装时设置的密码)。.ovpn 格式。https://your-server-ip:943(无需/admin路径)。使用已授权的用户账号登录(如未创建,需管理员在 User Management 中添加)。cd /usr/local/openvpn_as/scripts
./sacli --user <username> --key "type_config" --value "generated" UserPropPut
./sacli --user <username> --key "prop_filename" --value "<filename>.ovpn" UserPropPut
./sacli --user <username> GenConfigFile
<username> 替换为实际用户名,<filename> 为自定义文件名。/usr/local/openvpn_as/ccd/<username>,可通过 SFTP 或 scp 下载:scp username@your-server-ip:/usr/local/openvpn_as/ccd/<username> ~/Downloads/
.ovpn 文件已包含所有必要证书和密钥(嵌入式格式),无需额外导入。openvpn 命令行或 NetworkManager 插件。sudo systemctl status openvpnas。echo "test" | socat - UDP-DATAGRAM:34.199.45.31:1194,sourceport=50000。这个命令的作用是通过 socat 工具向服务器的 34.199.45.31:1194 端口发送一个 UDP 数据包,内容为 "test",并且源端口设置为 50000。socat 是一个用于创建和连接各种网络连接的工具,这里用来测试 UDP 通信是否正常。socat命令,这是在通过UDP协议向服务器34.199.45.31:1194发送测试数据包。若命令无输出或超时,通常表明UDP通信仍存在阻塞。以下是分步排查方案:# 服务器执行(新开终端)
sudo tcpdump -i any port 1194 -n
# 客户端执行socat后,服务器应捕获到UDP包:
14:30:22.123456 IP 客户端IP.50000 > 34.199.45.31.1194: UDP, length 4
# 查看带编号的规则
sudo ufw status numbered
# 若缺少1194/UDP规则,执行(假设规则编号为5)
sudo ufw delete 5 # 先删除可能的错误规则
sudo ufw allow 1194/udp
sudo ufw reload
# 确认规则生效
sudo ufw status | grep 1194
类型:自定义UDP规则
端口范围:1194
来源:0.0.0.0/0(或指定客户端IP)
# 在服务器上执行(新开终端)
socat UDP-LISTEN:1194 -
# 在服务器另一终端执行
echo "test" | socat - UDP-DATAGRAM:127.0.0.1:1194,sourceport=50000
# 若正常,应在监听终端看到"test"
# 服务器执行
curl ifconfig.me
# 确保输出与客户端配置的remote IP一致
/etc/openvpn/server.conf):port 443
proto udp
client1.ovpn):remote 34.199.45.31 443
proto udp
sudo systemctl restart openvpn@server
port 443
proto tcp
remote 34.199.45.31 443
proto tcp
# 服务器执行(危险!测试后立即恢复)
sudo ufw disable # 关闭防火墙
sudo iptables -F # 清空iptables规则
# 客户端执行socat
echo "test" | socat - UDP-DATAGRAM:34.199.45.31:1194,sourceport=50000
# 若成功,逐步恢复防火墙规则并定位阻塞规则
| 检查项 | 正确状态示例 | 异常处理方式 |
|---|---|---|
| AWS安全组入站规则 | 存在UDP:1194/0.0.0.0/0 | 立即添加规则 |
| ufw规则 | 1194/udp ALLOW IN | sudo ufw allow 1194/udp |
| OpenVPN服务端口监听 | udp 0 0 0.0.0.0:1194 ... | sudo systemctl restart openvpn@server |
| 服务器公网IP与client.ovpn一致 | 34.199.45.31 | 修改client.ovpn中的remote IP |
| socat本地回环测试 | 监听终端收到"test" | 检查OpenVPN配置文件路径正确性 |
ufw status numbered的完整输出socat命令的完整终端日志(包括耗时)ping -c 4 google.com
curl -v http://8.8.8.8
cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
127.0.0.1),需重新配置。sudo nano /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nslookup us-east-1.ec2.archive.ubuntu.com
sudo systemd-resolve --flush-caches
sudo /etc/init.d/nscd restart # 若安装了nscd服务
sudo systemctl stop NetworkManager
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo systemctl start NetworkManager
sudo netplan apply # 若使用netplan(Ubuntu 18.04+)
openvpn --config /path/to/client.ovpn --disconnect
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo nano /etc/apt/sources.list
us-east-1.ec2.archive.ubuntu.com替换为其他镜像(如阿里云):deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
# 其他源同理替换
sudo apt update
sudo nano /etc/hosts
ping us-east-1.ec2.archive.ubuntu.com获取):192.0.2.1 us-east-1.ec2.archive.ubuntu.com
dig us-east-1.ec2.archive.ubuntu.com @8.8.8.8
connection timed out,说明无法访问 DNS 服务器。no answer,说明 DNS 服务器无法解析该域名。ping -c 4 8.8.8.8