保存时间:2026/4/2 18:00:07
| 区域 | 价格(美元 / 小时) |
|---|---|
| 美国东部(俄亥俄) | 0.0208 |
| 美国西部(俄勒冈) | 0.0208 |
| 欧洲(斯德哥尔摩) | 0.0216 |
| 亚太(孟买) | 0.0224 |
| 欧洲(爱尔兰) | 0.0228 |
| 加拿大(中部) | 0.0232 |
| 欧洲(伦敦) | 0.0236 |
| 欧洲(巴黎) | 0.0236 |
| 欧洲(法兰克福) | 0.024 |
| 欧洲(米兰) | 0.024 |
| 美国西部(北加利福尼亚) | 0.0248 |
| 美国西部(洛杉矶) | 0.025 |
| 中东(巴林) | 0.0251 |
| 亚太(首尔) | 0.026 |
| 亚太(新加坡) | 0.0264 |
| 亚太(悉尼) | 0.0264 |
| 非洲(开普敦) | 0.0271 |
| 亚太(东京) | 0.0272 |
| 亚太(香港) | 0.0292 |
| 南美洲(圣保罗) | 0.0336 |
/etc/openvpn/server/):client.ovpn,需包含服务器 IP、端口、加密参数等)client.crt)、私钥(client.key)ca.crt)ta.key)、密码文件(若启用)1194/udp)已放行防火墙(Ubuntu 可通过ufw allow 1194/udp开放)client.ovpn。ca ca.crt
cert client.crt
key client.key
.crt, .key, ta.key)放入同一文件夹,压缩为 zip 包。sudo apt-get install openvpn
~/.openvpn/目录),确保权限正确:mkdir -p ~/.openvpn
cp client.ovpn ca.crt client.crt client.key ~/.openvpn/
chmod 600 ~/.openvpn/client.key
openvpn --config ~/.openvpn/client.ovpn
--daemon参数。sudo apt-get install network-manager-openvpn network-manager-openvpn-gnome
client.ovpn。systemctl status openvpn@server)。ca.crt与服务器端一致,证书未过期(使用openssl x509 -in ca.crt -text查看有效期)。echo 1 > /proc/sys/net/ipv4/ip_forward),并配置 NAT 规则(iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE)。route -n查看)。%ProgramFiles%\OpenVPN\log)获取详细信息。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
/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命令检查证书有效性。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 的输出# 查看ufw状态和规则
sudo ufw status verbose
# 若未开放1194/UDP,执行:
sudo ufw allow 1194/udp
sudo ufw reload
# 确认规则已添加
sudo ufw status numbered
| 类型 | 协议 | 端口范围 | 来源 | 描述 |
|---|---|---|---|---|
| 自定义 UDP | UDP | 1194 | 0.0.0.0/0 | OpenVPN |
| SSH | TCP | 22 | 你的 IP | 管理访问 |
# 临时禁用ufw(危险!完成测试后立即恢复)
sudo ufw disable
# 再次尝试从客户端连接
openvpn --config ~/.openvpn/client1.ovpn
# 测试完成后恢复防火墙
sudo ufw enable
client1.ovpn中的服务器地址与端口:# 客户端执行
cat ~/.openvpn/client1.ovpn | grep -E '^remote|^proto'
# 输出应类似:
# proto udp
# remote 34.199.45.31 1194
# 服务器执行
curl ifconfig.me
/etc/openvpn/server.conf):port 443
proto udp
sudo systemctl restart openvpn@server
client1.ovpn):remote YOUR_SERVER_IP 443
proto udp
eth0):# 检查IP转发是否启用
cat /proc/sys/net/ipv4/ip_forward
# 若输出为0,执行:
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
# 检查NAT规则
sudo iptables -t nat -L -n -v
# 若缺少POSTROUTING规则,添加:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 保存规则(Ubuntu 18.04+)
sudo netfilter-persistent save
# 检查端口监听
sudo netstat -ulpn | grep 1194
# 应输出类似:udp 0 0 0.0.0.0:1194 0.0.0.0:* 439/openvpn
# 检查防火墙规则
sudo ufw status | grep 1194
# 应输出类似:1194/udp ALLOW Anywhere
# 测试网络连通性
nc -vzu 34.199.45.31 1194
# 预期输出:
# Connection to 34.199.45.31 1194 port [udp/openvpn] succeeded!
# 重新连接OpenVPN
openvpn --config ~/.openvpn/client1.ovpn
| 问题表现 | 可能原因 | 解决方案 |
|---|---|---|
| nc 测试无响应 | 防火墙 / 安全组未开放 1194/UDP | 配置 ufw 规则和 AWS 安全组 |
| OpenVPN 客户端超时 | 服务器未监听 1194/UDP | 检查 OpenVPN 服务状态并重启 |
| 客户端提示证书验证失败 | 证书路径或内容错误 | 重新生成证书并确保client1.ovpn包含正确的<ca>, <cert>, <key> |
| 能连接但无法访问外网 | 服务器未配置 IP 转发或 NAT | 启用 IP 转发并配置 iptables NAT 规则 |
ufw status verbose的输出--verb 6参数获取详细日志)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
.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。