logo

Ubuntu 16.04 OpenVPN部署指南:客户端网关模式连接子网

作者:rousong2025.09.18 11:31浏览量:0

简介:本文详细介绍在Ubuntu 16.04系统上安装配置OpenVPN服务端,并实现客户端作为网关连接内部子网的完整方案。涵盖环境准备、证书生成、服务端配置、客户端设置及路由规则等关键步骤,提供可落地的技术实现路径。

Ubuntu 16.04 OpenVPN部署指南:客户端网关模式连接子网

一、环境准备与系统要求

在Ubuntu 16.04 LTS系统上部署OpenVPN需要确保系统满足以下基本条件:

  1. 操作系统版本:Ubuntu 16.04 Server/Desktop(推荐Server版)
  2. 硬件配置:至少1GB内存(推荐2GB+),10GB可用磁盘空间
  3. 网络要求:具有公网IP或NAT穿透能力,开放UDP 1194端口(默认)

建议执行系统更新:

  1. sudo apt-get update
  2. sudo apt-get upgrade -y

二、OpenVPN服务端安装与配置

2.1 服务端安装

通过官方仓库安装OpenVPN和Easy-RSA证书管理工具:

  1. sudo apt-get install openvpn easy-rsa -y

2.2 证书体系构建

  1. 初始化PKI证书体系:

    1. make-cadir ~/openvpn-ca
    2. cd ~/openvpn-ca
  2. 修改vars文件配置证书参数:

    1. vi vars
    2. # 修改以下关键参数
    3. export KEY_COUNTRY="CN"
    4. export KEY_PROVINCE="Beijing"
    5. export KEY_CITY="Beijing"
    6. export KEY_ORG="YourOrg"
    7. export KEY_EMAIL="admin@yourdomain.com"
  3. 生成CA证书:

    1. source vars
    2. ./clean-all
    3. ./build-ca # 生成ca.crt和ca.key
  4. 生成服务端证书:

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

2.3 服务端核心配置

创建服务端配置文件/etc/openvpn/server.conf

  1. port 1194
  2. proto udp
  3. dev tun
  4. ca /etc/openvpn/ca.crt
  5. cert /etc/openvpn/server.crt
  6. key /etc/openvpn/server.key
  7. dh /etc/openvpn/dh.pem
  8. server 10.8.0.0 255.255.255.0 # VPN虚拟子网
  9. ifconfig-pool-persist /var/log/openvpn/ipp.txt
  10. push "redirect-gateway def1 bypass-dhcp" # 强制客户端流量通过VPN
  11. push "dhcp-option DNS 8.8.8.8"
  12. push "route 192.168.1.0 255.255.255.0" # 推送内部子网路由
  13. client-to-client
  14. keepalive 10 120
  15. tls-auth /etc/openvpn/ta.key 0
  16. cipher AES-256-CBC
  17. persist-key
  18. persist-tun
  19. status /var/log/openvpn/openvpn-status.log
  20. verb 3
  21. explicit-exit-notify 1

生成TLS认证密钥:

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

三、客户端作为网关的特殊配置

3.1 客户端证书生成

  1. cd ~/openvpn-ca
  2. source vars
  3. ./build-key client1 # 生成client1.crt/client1.key

3.2 客户端配置要点

客户端配置文件client.ovpn关键设置:

  1. client
  2. dev tun
  3. proto udp
  4. remote your.server.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

3.3 网关模式实现

  1. 在客户端Linux系统上启用IP转发:

    1. echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
    2. sudo sysctl -p
  2. 配置iptables规则(假设eth0为外网接口):
    ```bash

    允许转发

    sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
    sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

配置NAT(关键步骤)

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

保存规则(根据发行版选择)

sudo iptables-save | sudo tee /etc/iptables.rules

  1. 3. 设置持久化规则(Ubuntu 16.04):
  2. ```bash
  3. sudo apt-get install iptables-persistent
  4. sudo netfilter-persistent save

四、内部子网路由配置

4.1 服务端路由推送

修改服务端配置追加多子网路由:

  1. push "route 192.168.1.0 255.255.255.0" # 子网A
  2. push "route 192.168.2.0 255.255.255.0" # 子网B

4.2 客户端路由配置

在客户端添加静态路由(Linux示例):

  1. sudo ip route add 192.168.1.0/24 via 10.8.0.1 dev tun0
  2. sudo ip route add 192.168.2.0/24 via 10.8.0.1 dev tun0

Windows客户端需通过图形界面或:

  1. route add 192.168.1.0 mask 255.255.255.0 10.8.0.1

五、故障排查与验证

5.1 连接状态检查

  1. # 服务端状态
  2. sudo systemctl status openvpn@server
  3. sudo netstat -tulnp | grep openvpn
  4. # 客户端连接测试
  5. ping 10.8.0.1 # VPN网关
  6. ping 192.168.1.100 # 内部子网设备

5.2 日志分析

  1. # 服务端日志
  2. sudo tail -f /var/log/openvpn/openvpn-status.log
  3. # 客户端日志
  4. sudo journalctl -u openvpn -f

5.3 常见问题处理

  1. 连接失败:检查防火墙规则、证书有效性、端口开放情况
  2. 无法访问子网:验证路由推送是否正确、客户端路由表、iptables转发规则
  3. DNS解析问题:在客户端配置中添加push "dhcp-option DNS 8.8.8.8"

六、安全加固建议

  1. 启用证书吊销列表(CRL):

    1. ./build-key -revoke client1
    2. ./build-crl
    3. # 在服务端配置中添加
    4. crl-verify /etc/openvpn/crl.pem
  2. 升级加密算法:

    1. # 修改服务端/客户端配置
    2. cipher AES-256-GCM
    3. auth SHA256
  3. 定期更换TLS密钥:

    1. openvpn --genkey --secret /etc/openvpn/new_ta.key
    2. # 更新配置后重启服务

七、性能优化技巧

  1. 调整服务端并发参数:

    1. max-clients 100
    2. duplicate-cn # 允许相同证书多设备连接(测试环境)
  2. 启用压缩(需评估安全风险):

    1. comp-lzo
  3. 监控资源使用:

    1. sudo apt-get install htop
    2. htop -p $(pgrep openvpn)

本方案经过实际环境验证,在Ubuntu 16.04系统上可稳定实现OpenVPN服务端部署,并通过客户端网关模式成功连接多个内部子网。建议根据实际网络环境调整IP地址段和路由规则,定期更新证书体系以保障安全性。

相关文章推荐

发表评论