logo

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及依赖

  1. sudo apt install openvpn easy-rsa openssl iptables -y

此命令将安装OpenVPN核心组件、证书生成工具easy-rsa、加密工具openssl及网络包过滤工具iptables。安装完成后验证版本:

  1. openvpn --version # 应显示OpenVPN 2.3.10或更高

二、证书体系构建

2.1 初始化PKI环境

  1. make-cadir ~/openvpn-ca
  2. cd ~/openvpn-ca

修改vars文件关键参数:

  1. set_var EASYRSA_REQ_COUNTRY "CN"
  2. set_var EASYRSA_REQ_PROVINCE "Beijing"
  3. set_var EASYRSA_REQ_CITY "Chaoyang"
  4. set_var EASYRSA_REQ_ORG "MyCompany"
  5. set_var EASYRSA_REQ_EMAIL "admin@example.com"
  6. set_var EASYRSA_REQ_OU "IT Department"

2.2 生成CA证书

  1. source vars
  2. ./clean-all
  3. ./build-ca # 生成ca.crt和ca.key

2.3 生成服务端证书

  1. ./build-key-server server # 生成server.crt/server.key
  2. ./build-dh # 生成DH参数文件dh2048.pem

2.4 生成客户端证书

  1. ./build-key client1 # 生成client1.crt/client1.key

三、服务端配置

3.1 基础配置文件

创建/etc/openvpn/server.conf

  1. port 1194
  2. proto udp
  3. dev tun
  4. ca ca.crt
  5. cert server.crt
  6. key server.key
  7. dh dh2048.pem
  8. server 10.8.0.0 255.255.255.0
  9. ifconfig-pool-persist /var/log/openvpn/ipp.txt
  10. push "route 192.168.1.0 255.255.255.0" # 推送子网路由
  11. client-to-client
  12. keepalive 10 120
  13. tls-auth ta.key 0
  14. cipher AES-256-CBC
  15. persist-key
  16. persist-tun
  17. status /var/log/openvpn/openvpn-status.log
  18. verb 3
  19. explicit-exit-notify 1

3.2 生成TLS认证密钥

  1. openvpn --genkey --secret /etc/openvpn/ta.key

3.3 配置系统服务

创建systemd服务文件/etc/systemd/system/openvpn@.service

  1. [Unit]
  2. Description=OpenVPN flexible server for %I
  3. After=syslog.target network-online.target
  4. Wants=network-online.target
  5. [Service]
  6. Type=forking
  7. PIDFile=/var/run/openvpn/%i.pid
  8. ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --config /etc/openvpn/%i.conf
  9. ExecReload=/bin/kill -HUP $MAINPID
  10. Restart=on-failure
  11. [Install]
  12. WantedBy=multi-user.target

四、客户端配置与网关设置

4.1 客户端基础配置

创建客户端配置文件client1.ovpn

  1. client
  2. dev tun
  3. proto udp
  4. remote [服务器IP] 1194
  5. resolv-retry infinite
  6. nobind
  7. persist-key
  8. persist-tun
  9. remote-cert-tls server
  10. cipher AES-256-CBC
  11. verb 3
  12. <ca>
  13. [粘贴ca.crt内容]
  14. </ca>
  15. <cert>
  16. [粘贴client1.crt内容]
  17. </cert>
  18. <key>
  19. [粘贴client1.key内容]
  20. </key>
  21. <tls-auth>
  22. [粘贴ta.key内容]
  23. </tls-auth>
  24. key-direction 1

4.2 客户端作为网关配置

Linux客户端配置

  1. 启用IP转发:

    1. echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
    2. sudo sysctl -p
  2. 配置iptables规则:

    1. sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    2. sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
    3. sudo iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
  3. 持久化规则:

    1. sudo apt install iptables-persistent
    2. sudo netfilter-persistent save

Windows客户端配置

  1. 修改注册表启用转发:

    1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
    2. 新建DWORD(32位)值:IPEnableRouter,值为1
  2. 配置静态路由:

    1. route add 192.168.1.0 mask 255.255.255.0 10.8.0.1

五、子网连接验证与故障排查

5.1 连接测试

  1. 服务端检查:

    1. sudo netstat -tulnp | grep openvpn
    2. sudo tail -f /var/log/openvpn/openvpn-status.log
  2. 客户端验证:

    1. ping 10.8.0.1 # 测试VPN隧道连通性
    2. ping 192.168.1.100 # 测试子网可达性

5.2 常见问题处理

连接失败排查

  1. 检查防火墙设置:

    1. sudo ufw status # 确保1194/udp端口开放
    2. sudo ufw allow 1194/udp
  2. 验证证书有效性:

    1. openssl verify -CAfile ca.crt server.crt

子网不可达处理

  1. 检查路由推送:

    1. sudo openvpn --verb 4 --config /etc/openvpn/server.conf # 查看路由推送日志
  2. 验证客户端路由表:

    1. route print # Windows
    2. ip route # Linux

六、性能优化建议

  1. 启用压缩(需权衡安全性):

    1. # 服务端和客户端配置中添加
    2. comp-lzo
  2. 调整MTU值:

    1. # 在客户端配置中添加
    2. mtu 1450
    3. mssfix 1400
  3. 多核CPU优化:

    1. # 服务端配置中添加
    2. topology subnet

七、安全加固措施

  1. 禁用非加密协议:

    1. # 服务端配置中添加
    2. tls-version-min 1.2
  2. 实施证书吊销:

    1. ./revoke-full client1 # 吊销客户端证书
    2. cp keys/crl.pem /etc/openvpn/
  3. 配置日志轮转:

    1. # 创建/etc/logrotate.d/openvpn
    2. /var/log/openvpn/*.log {
    3. weekly
    4. missingok
    5. rotate 4
    6. compress
    7. delaycompress
    8. notifempty
    9. create 640 root adm
    10. }

通过以上完整配置流程,您可以在Ubuntu 16.04上构建一个安全的OpenVPN服务,并实现客户端作为网关连接子网的功能。实际部署时,建议根据具体网络环境调整IP地址段和路由规则,同时定期更新证书体系以确保安全性。

相关文章推荐

发表评论