Ubuntu16.0部署OpenVPN:客户端网关模式连接子网指南
2025.09.18 11:31浏览量:0简介:本文详细介绍在Ubuntu 16.04系统上安装配置OpenVPN服务端,并实现客户端作为网关连接子网的完整流程。涵盖依赖安装、证书生成、服务端配置、客户端设置及路由调整等关键步骤,提供可复制的配置模板和故障排查建议。
一、环境准备与依赖安装
1.1 系统环境确认
确保Ubuntu 16.04系统已安装最新安全补丁,执行sudo apt update && sudo apt upgrade -y
完成系统更新。检查内核版本(uname -r
)建议不低于4.4.0-xx,以获得最佳网络性能支持。
1.2 安装OpenVPN及依赖
sudo apt install openvpn easy-rsa openssl iptables -y
此命令将安装OpenVPN核心组件、证书生成工具easy-rsa、加密工具openssl及网络包过滤工具iptables。安装完成后验证版本:
openvpn --version # 应显示OpenVPN 2.3.10或更高
二、证书体系构建
2.1 初始化PKI环境
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
修改vars
文件关键参数:
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "Chaoyang"
set_var EASYRSA_REQ_ORG "MyCompany"
set_var EASYRSA_REQ_EMAIL "admin@example.com"
set_var EASYRSA_REQ_OU "IT Department"
2.2 生成CA证书
source vars
./clean-all
./build-ca # 生成ca.crt和ca.key
2.3 生成服务端证书
./build-key-server server # 生成server.crt/server.key
./build-dh # 生成DH参数文件dh2048.pem
2.4 生成客户端证书
./build-key client1 # 生成client1.crt/client1.key
三、服务端配置
3.1 基础配置文件
创建/etc/openvpn/server.conf
:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "route 192.168.1.0 255.255.255.0" # 推送子网路由
client-to-client
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
3.2 生成TLS认证密钥
openvpn --genkey --secret /etc/openvpn/ta.key
3.3 配置系统服务
创建systemd服务文件/etc/systemd/system/openvpn@.service
:
[Unit]
Description=OpenVPN flexible server for %I
After=syslog.target network-online.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --config /etc/openvpn/%i.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
四、客户端配置与网关设置
4.1 客户端基础配置
创建客户端配置文件client1.ovpn
:
client
dev tun
proto udp
remote [服务器IP] 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
<ca>
[粘贴ca.crt内容]
</ca>
<cert>
[粘贴client1.crt内容]
</cert>
<key>
[粘贴client1.key内容]
</key>
<tls-auth>
[粘贴ta.key内容]
</tls-auth>
key-direction 1
4.2 客户端作为网关配置
Linux客户端配置
启用IP转发:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
配置iptables规则:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
持久化规则:
sudo apt install iptables-persistent
sudo netfilter-persistent save
Windows客户端配置
修改注册表启用转发:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD(32位)值:IPEnableRouter,值为1
配置静态路由:
route add 192.168.1.0 mask 255.255.255.0 10.8.0.1
五、子网连接验证与故障排查
5.1 连接测试
服务端检查:
sudo netstat -tulnp | grep openvpn
sudo tail -f /var/log/openvpn/openvpn-status.log
客户端验证:
ping 10.8.0.1 # 测试VPN隧道连通性
ping 192.168.1.100 # 测试子网可达性
5.2 常见问题处理
连接失败排查
检查防火墙设置:
sudo ufw status # 确保1194/udp端口开放
sudo ufw allow 1194/udp
验证证书有效性:
openssl verify -CAfile ca.crt server.crt
子网不可达处理
检查路由推送:
sudo openvpn --verb 4 --config /etc/openvpn/server.conf # 查看路由推送日志
验证客户端路由表:
route print # Windows
ip route # Linux
六、性能优化建议
启用压缩(需权衡安全性):
# 服务端和客户端配置中添加
comp-lzo
调整MTU值:
# 在客户端配置中添加
mtu 1450
mssfix 1400
多核CPU优化:
# 服务端配置中添加
topology subnet
七、安全加固措施
禁用非加密协议:
# 服务端配置中添加
tls-version-min 1.2
实施证书吊销:
./revoke-full client1 # 吊销客户端证书
cp keys/crl.pem /etc/openvpn/
配置日志轮转:
# 创建/etc/logrotate.d/openvpn
/var/log/openvpn/*.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 640 root adm
}
通过以上完整配置流程,您可以在Ubuntu 16.04上构建一个安全的OpenVPN服务,并实现客户端作为网关连接子网的功能。实际部署时,建议根据具体网络环境调整IP地址段和路由规则,同时定期更新证书体系以确保安全性。
发表评论
登录后可评论,请前往 登录 或 注册