logo

Ubuntu 16.04安装OpenVPN并配置客户端作为子网网关指南

作者:问题终结者2025.09.26 20:26浏览量:0

简介:本文详细介绍了在Ubuntu 16.04系统上安装和配置OpenVPN服务,并实现客户端作为网关连接子网的全过程,包括依赖安装、证书生成、服务端配置、客户端配置及路由设置。

在当今的分布式系统和远程办公环境中,虚拟专用网络(VPN)成为保障数据传输安全和连接远程资源的关键工具。OpenVPN作为一种开源的VPN解决方案,因其高安全性、灵活性和跨平台支持而广受欢迎。本文将详细介绍如何在Ubuntu 16.04系统上安装和配置OpenVPN服务,并实现客户端作为网关连接子网的功能,满足企业或个人用户对安全远程访问的需求。

一、环境准备与依赖安装

在开始配置之前,确保Ubuntu 16.04系统已更新至最新状态,并安装必要的依赖包。这包括OpenVPN本身、Easy-RSA(用于生成SSL证书)以及iptables(用于配置网络路由)。

  1. 更新系统

    1. sudo apt-get update
    2. sudo apt-get upgrade
  2. 安装OpenVPN和Easy-RSA

    1. sudo apt-get install openvpn easy-rsa
  3. 安装iptables(如果尚未安装):

    1. sudo apt-get install iptables

二、生成SSL证书

OpenVPN使用SSL/TLS协议进行加密通信,因此需要生成服务器和客户端的证书及密钥。

  1. 初始化PKI(公钥基础设施)

    1. make-cadir ~/openvpn-ca
    2. cd ~/openvpn-ca
  2. 编辑vars文件:设置证书相关的变量,如国家、组织等。

    1. nano vars

    修改相应的变量值后保存退出。

  3. 清理并初始化CA

    1. ./clean-all
    2. ./build-ca
  4. 生成服务器证书

    1. ./build-key-server server

    按照提示填写信息。

  5. 生成客户端证书

    1. ./build-key client1

    为每个客户端生成独立的证书。

  6. 生成Diffie-Hellman参数(用于密钥交换):

    1. ./build-dh
  7. 生成TLS认证密钥(增强安全性):

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

三、配置OpenVPN服务端

  1. 复制模板配置文件

    1. sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
    2. sudo gzip -d /etc/openvpn/server.conf.gz
  2. 编辑server.conf

    1. sudo nano /etc/openvpn/server.conf

    修改以下关键配置:

    • ca ca.crtcert server.crtkey server.key:指向之前生成的证书和密钥文件。
    • dh dh.pem:指向Diffie-Hellman参数文件。
    • tls-auth ta.key 0:启用TLS认证。
    • push "redirect-gateway def1 bypass-dhcp":使客户端流量通过VPN。
    • push "dhcp-option DNS 8.8.8.8":指定DNS服务器。
    • user nobodygroup nogroup:设置运行用户和组。
    • log /var/log/openvpn.log:指定日志文件。
  3. 创建证书目录并复制文件

    1. sudo mkdir /etc/openvpn/easy-rsa
    2. sudo cp -r ~/openvpn-ca/{keys,openssl-easyrsa.cnf} /etc/openvpn/easy-rsa/
  4. 启动OpenVPN服务

    1. sudo systemctl start openvpn@server
    2. sudo systemctl enable openvpn@server

四、配置客户端作为网关连接子网

为了使客户端能够作为网关连接子网,需要在客户端和服务器端进行额外的配置。

  1. 客户端配置

    • 复制客户端证书和密钥到客户端机器。
    • 创建客户端配置文件(如client.ovpn),内容类似服务器配置,但指向客户端证书和密钥,并添加以下行以启用客户端作为网关:
      1. client
      2. dev tun
      3. proto udp
      4. remote <服务器IP> 1194
      5. resolv-retry infinite
      6. nobind
      7. user nobody
      8. group nogroup
      9. persist-key
      10. persist-tun
      11. remote-cert-tls server
      12. cipher AES-256-CBC
      13. verb 3
      14. <ca>
      15. # 粘贴CA证书内容
      16. </ca>
      17. <cert>
      18. # 粘贴客户端证书内容
      19. </cert>
      20. <key>
      21. # 粘贴客户端密钥内容
      22. </key>
      23. <tls-auth>
      24. # 粘贴TLS认证密钥内容
      25. </tls-auth>
      26. key-direction 1
      27. script-security 2
      28. up /etc/openvpn/update-resolv-conf
      29. down /etc/openvpn/update-resolv-conf
      30. # 以下为使客户端作为网关的关键配置
      31. pull-filter ignore "redirect-gateway"
      32. route <子网IP> <子网掩码>
  2. 服务器端配置调整

    • 在server.conf中添加或修改以下行,以允许客户端推送路由:
      1. client-to-client
      2. push "route <子网IP> <子网掩码>"
  3. 配置iptables(在服务器上):

    • 允许VPN流量通过:
      1. sudo iptables -A INPUT -i tun0 -j ACCEPT
      2. sudo iptables -A OUTPUT -o tun0 -j ACCEPT
    • 设置NAT,使子网流量通过VPN客户端:
      1. sudo iptables -t nat -A POSTROUTING -s <子网IP>/<子网掩码位数> -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
    • 保存iptables规则(使用iptables-persistent或其他方法)。

五、测试与验证

  1. 在客户端上连接VPN

    1. sudo openvpn --config client.ovpn
  2. 验证连接

    • 在客户端上ping子网内的其他机器,确认能够连通。
    • 检查服务器上的日志文件(/var/log/openvpn.log),确认没有错误。
  3. 检查iptables规则

    1. sudo iptables -L -n -v
    2. sudo iptables -t nat -L -n -v

通过以上步骤,您可以在Ubuntu 16.04系统上成功安装和配置OpenVPN服务,并实现客户端作为网关连接子网的功能。这不仅提高了数据传输的安全性,还使得远程访问子网资源变得更加便捷和灵活。

相关文章推荐

发表评论

活动