bash
# 登录云服务器
ssh ley@120.48.170.222
# 更新系统
sudo apt update
sudo apt upgrade -y
# 安装指定版本OpenVPN
sudo apt install openvpn=2.6.12-0ubuntu0.24.04.3~bpo22.04.1 -y
# 安装Easy-RSA(证书管理工具)
sudo apt install easy-rsa -ybash
# 创建工作目录
mkdir ~/openvpn-ca
cd ~/openvpn-ca
# 复制Easy-RSA模板
cp -r /usr/share/easy-rsa/* .
# 初始化PKI
./easyrsa init-pki
# 创建CA证书(按提示输入信息)
./easyrsa build-ca
# 创建服务器证书和密钥
./easyrsa gen-req server nopass
./easyrsa sign-req server server
# 创建Diffie-Hellman参数(可能需要一些时间)
./easyrsa gen-dh
# 创建HMAC签名密钥
openvpn --genkey secret ta.keybash
# 为公司PC创建证书
./easyrsa gen-req company-pc nopass
./easyrsa sign-req client company-pc
Common Name (eg: your user, host, or server name) [company-pc]:mac
Keypair and certificate request completed. Your files are:
req: /usr/local/ley/easy-rsa/pki/reqs/company-pc.req
key: /usr/local/ley/easy-rsa/pki/private/company-pc.key
Certificate created at: /usr/local/ley/easy-rsa/pki/issued/company-pc.crt
# 为家庭笔记本创建证书
./easyrsa gen-req family-pc nopass
./easyrsa sign-req client family-pc
Common Name (eg: your user, host, or server name) [family-pc]:huawei
Keypair and certificate request completed. Your files are:
req: /usr/local/ley/easy-rsa/pki/reqs/family-pc.req
key: /usr/local/ley/easy-rsa/pki/private/family-pc.key
Certificate created at: /usr/local/ley/easy-rsa/pki/issued/family-pc.crtbash
# 复制配置文件
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
# 编辑服务器配置
sudo nano /etc/openvpn/server/server.conf以下是关键配置内容:
conf
port 1194
proto udp
dev tun
# 证书和密钥路径
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
# VPN子网配置
server 10.8.0.0 255.255.255.0
# 推送路由到客户端
push "route 192.168.66.0 255.255.255.0"
push "route 192.168.3.0 255.255.255.0"
# 保持客户端配置(IP地址持久化)
ifconfig-pool-persist /var/log/openvpn/ipp.txt
# 客户端到客户端通信
client-to-client
# 保持连接
keepalive 10 120
# 加密设置
cipher AES-256-GCM
auth SHA256
# 其他设置
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1bash
# 启用IP转发
sudo nano /etc/sysctl.conf
# 添加或取消注释以下行:
# net.ipv4.ip_forward=1
# 应用配置
sudo sysctl -p
# 配置防火墙(如果使用ufw)
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
# 配置NAT转发
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# 保存iptables规则
sudo apt install iptables-persistent -y
sudo netfilter-persistent savebash
# 启动服务
sudo systemctl start openvpn-server@server
# 启用开机自启
sudo systemctl enable openvpn-server@server
# 检查状态
sudo systemctl status openvpn-server@server在服务器上创建客户端配置文件:
bash
# 创建客户端配置目录
mkdir /usr/local/ley/easy-rsa/client-configs
cd /usr/local/ley/easy-rsa/client-configs
# 创建基础配置文件
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /usr/local/ley/easy-rsa/client-configs/base.conf
# 编辑基础配置
nano /usr/local/ley/easy-rsa/client-configs/base.conf基础配置文件内容:
conf
client
dev tun
proto udp
remote 120.48.170.222 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3bash
nano /usr/local/ley/easy-rsa/client-configs/make_config.sh脚本内容:
bash
#!/bin/bash
# 第一个参数:客户端名称
KEY_DIR=/usr/local/ley/easy-rsa/pki
OUTPUT_DIR=/usr/local/ley/easy-rsa/client-configs/files
BASE_CONFIG=/usr/local/ley/easy-rsa/client-configs/base.conf
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>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpnbash
# 创建输出目录
mkdir -p /usr/local/ley/easy-rsa/client-configs/files
# 使脚本可执行
chmod 700 /usr/local/ley/easy-rsa/client-configs/make_config.sh
# 生成公司PC配置文件
cd /usr/local/ley/easy-rsa/client-configs
./make_config.sh company-pc
# 生成家庭笔记本配置文件
./make_config.sh family-pc
# 下载配置文件到本地
# 可以使用scp或SFTP工具下载
ll files/
-rw-rw-r-- 1 ley ley 11696 Dec 2 14:34 company-pc.ovpn
-rw-rw-r-- 1 ley ley 11707 Dec 2 14:37 family-pc.ovpn安装OpenVPN客户端
# 使用Homebrew安装
brew install openvpn
# 或下载Tunnelblick GUI客户端
# https://tunnelblick.net/导入配置文件
将company-pc.ovpn复制到Mac
如果使用Tunnelblick,双击.ovpn文件导入
连接VPN
打开Tunnelblick
选择配置并点击连接
安装OpenVPN客户端
安装OpenVPN GUI
导入配置文件
将family-pc.ovpn复制到C:\Program Files\OpenVPN\config\
或通过OpenVPN GUI导入
连接VPN
右键点击系统托盘中的OpenVPN图标
选择连接
登录路由器管理界面
浏览器访问:192.168.66.1
输入管理员密码
配置静态路由
进入"高级设置" → "路由设置"
添加以下静态路由:
注意:192.168.66.100是家庭笔记本的本地IP
配置DHCP(可选)
确保家庭笔记本获得固定IP(192.168.66.100)
或配置DHCP保留地址
启用IP转发
powershell
# 以管理员身份打开PowerShell
# 启用IP转发
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "IpEnableRouter" -Value 1
# 重启生效
Restart-Computer配置防火墙允许转发
powershell
# 允许ICMP(ping)通过
netsh advfirewall firewall add rule name="ICMP Allow" dir=in action=allow protocol=icmpv4
# 允许VPN子网访问
netsh advfirewall firewall add rule name="VPN Subnet" dir=in action=allow remoteip=10.8.0.0/24
netsh advfirewall firewall add rule name="Company Subnet" dir=in action=allow remoteip=192.168.3.0/24
# 允许本地子网访问VPN
netsh advfirewall firewall add rule name="Local to VPN" dir=out action=allow remoteip=10.8.0.0/24bash
# 在云服务器上添加路由表
sudo ip route add 192.168.66.0/24 via 10.8.0.3
sudo ip route add 192.168.3.0/24 via 10.8.0.2
# 使路由永久生效
sudo nano /etc/rc.local
# 在exit 0前添加:
# ip route add 192.168.66.0/24 via 10.8.0.3
# ip route add 192.168.3.0/24 via 10.8.0.2修改客户端配置文件,添加特定路由:
对于公司PC配置文件:
conf
# 在company-pc.ovpn中添加
route 192.168.66.0 255.255.255.0对于家庭笔记本配置文件:
conf
# 在family-pc.ovpn中添加
route 192.168.3.0 255.255.255.0
route 192.168.66.0 255.255.255.0 vpn_gateway测试VPN连接
bash
# 在公司PC上
ping 10.8.0.1 # 应该能ping通服务器VPN IP
# 在家庭笔记本上
ping 10.8.0.1 # 应该能ping通服务器VPN IP测试客户端间通信
bash
# 在公司PC上
ping 10.8.0.3 # 应该能ping通家庭笔记本的VPN IP
# 在家庭笔记本上
ping 10.8.0.2 # 应该能ping通公司PC的VPN IP从公司PC访问家庭网络
bash
# 测试访问家庭路由器
ping 192.168.66.1
# 测试访问家庭其他设备
ping 192.168.66.101 # 假设是NAS设备从家庭网络访问公司PC
bash
# 在家庭网络的任一设备上
ping 192.168.3.23测试具体服务
bash
# 测试SMB共享(如果公司PC有共享)
# 在家庭设备上:
smbclient //192.168.3.23/shared -U username
# 测试HTTP服务
curl http://192.168.3.23:8080跟踪路由路径
bash
# 在公司PC上
traceroute 192.168.66.100
# 在家庭设备上
traceroute 192.168.3.23如果遇到连接问题,使用以下工具排查:
bash
# 1. 检查OpenVPN日志
sudo tail -f /var/log/openvpn/openvpn.log
# 2. 检查连接状态
sudo systemctl status openvpn-server@server
# 3. 检查路由表
ip route show
# 4. 检查iptables规则
sudo iptables -L -n -v
sudo iptables -t nat -L -n -v
# 5. 测试端口连通性
nc -zv 120.48.170.222 1194
# 6. 客户端诊断
# 在Windows上:
openvpn --config "config.ovpn" --verb 4bash
# 1. 带宽测试
# 安装iperf3
sudo apt install iperf3
# 在服务器端运行
iperf3 -s
# 在客户端运行
iperf3 -c 10.8.0.1
# 2. 延迟测试
ping -c 100 10.8.0.1 | grep "min/avg/max"验证加密设置
bash
# 检查OpenVPN使用的加密
openvpn --show-tls检查证书有效期
bash
openssl x509 -in ~/openvpn-ca/pki/ca.crt -noout -dates定期更新证书(建议每6-12个月)
使用强密码保护私钥文件
考虑启用双因素认证
限制VPN访问权限
调整MTU大小以提高性能
conf
# 在服务器配置中添加
mssfix 1400启用压缩(如果CPU资源充足)
conf
compress lz4-v2
push "compress lz4-v2"调整keepalive参数
conf
keepalive 5 30如果连接不稳定,尝试切换为TCP协议
如果速度慢,考虑升级服务器带宽
定期检查日志中的错误信息
这个配置方案应该能够实现您的网络目标。如果在实施过程中遇到问题,请根据第四阶段的故障排查部分进行检查。
提示:如遇链接失效,请在评论区留言反馈