CentOS 7上安装配置VPN服务详细教程

目录

  1. VPN基本概念
  2. 安装前准备
  3. 安装OpenVPN服务
  4. 配置OpenVPN服务器
  5. 配置OpenVPN客户端
  6. 常见问题解答

VPN基本概念

VPN(Virtual Private Network,虚拟专用网络)是一种建立在公共网络基础之上的私人网络技术。VPN通过加密和认证机制,可以在公共网络上建立安全可靠的专用网络连接,为用户提供数据传输的隐私和安全性。

常见的VPN技术包括PPTP、L2TP/IPSec、SSL/TLS等。其中,OpenVPN是一种基于SSL/TLS的开源VPN解决方案,广泛应用于企业和个人用户的远程访问、跨地域网络互联等场景。

安装前准备

在安装OpenVPN服务之前,需要做好以下准备工作:

  • 确保服务器已经安装了epel-release扩展源
  • 确保服务器已经安装了必要的依赖包,如easy-rsa、openvpn等

安装OpenVPN服务

  1. 安装OpenVPN软件包:

    yum install -y openvpn easy-rsa

  2. 生成OpenVPN所需的密钥和证书:

    cd /usr/share/easy-rsa/

    ./easyrsa init-pki

    ./easyrsa build-ca nopass

    ./easyrsa build-server-full server nopass

    ./easyrsa build-client-full client1 nopass

  3. 复制证书文件到OpenVPN配置目录:

    mkdir -p /etc/openvpn/server

    cp -a pki/ca.crt /etc/openvpn/server/ cp -a pki/issued/server.crt /etc/openvpn/server/ cp -a pki/private/server.key /etc/openvpn/server/ cp -a pki/issued/client1.crt /etc/openvpn/server/ cp -a pki/private/client1.key /etc/openvpn/server/

配置OpenVPN服务器

  1. 创建OpenVPN服务器端配置文件:

    cd /etc/openvpn/server

    vim server.conf

  2. 在server.conf文件中添加以下配置:

    port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh none topology subnet server 10.8.0.0 255.255.255.0 push “redirect-gateway def1 bypass-dhcp” push “dhcp-option DNS 8.8.8.8” push “dhcp-option DNS 8.8.4.4” keepalive 10 120 cipher AES-256-CBC auth SHA512 user nobody group nobody persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3

  3. 启动OpenVPN服务:

    systemctl enable openvpn-server@server systemctl start openvpn-server@server

配置OpenVPN客户端

  1. 在客户端系统上安装OpenVPN软件:

    yum install -y openvpn

  2. 将服务器端生成的客户端证书文件拷贝到客户端:

    mkdir -p /etc/openvpn/client

    scp user@server:/etc/openvpn/server/client1.crt /etc/openvpn/client/ scp user@server:/etc/openvpn/server/client1.key /etc/openvpn/client/ scp user@server:/etc/openvpn/server/ca.crt /etc/openvpn/client/

  3. 创建OpenVPN客户端配置文件:

    cd /etc/openvpn/client

    vim client.conf

  4. 在client.conf文件中添加以下配置:

    client dev tun proto udp remote your-server-ip 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 3

  5. 启动OpenVPN客户端:

    openvpn –config /etc/openvpn/client/client.conf

常见问题解答

Q1: 如何查看OpenVPN服务的状态和日志?

A1: 可以使用以下命令查看OpenVPN服务的状态和日志:

  • 查看服务状态: systemctl status openvpn-server@server
  • 查看服务日志: journalctl -u openvpn-server@server

Q2: 如何添加更多的OpenVPN客户端?

A2: 可以使用easy-rsa工具生成新的客户端证书和密钥,具体步骤如下:

  1. 进入easy-rsa目录: cd /usr/share/easy-rsa/
  2. 生成新的客户端证书和密钥: ./easyrsa build-client-full client2 nopass
  3. 将新生成的证书和密钥文件拷贝到OpenVPN服务器的配置目录: cp -a pki/issued/client2.crt /etc/openvpn/server/cp -a pki/private/client2.key /etc/openvpn/server/
  4. 在客户端系统上,创建新的客户端配置文件,并将对应的证书和密钥文件拷贝过去。

Q3: 如何在OpenVPN服务器上开启转发功能?

A3: 为了让OpenVPN客户端能够访问服务器后面的内部网络,需要在OpenVPN服务器上开启IP转发功能:

  1. 编辑 /etc/sysctl.conf 文件,取消注释 net.ipv4.ip_forward=1 这一行。
  2. 执行 sysctl -p 命令使配置生效。
  3. server.conf 文件中添加 push "route 192.168.1.0 255.255.255.0" 配置,其中 192.168.1.0/24 是内部网段的地址范围。
  4. 重启OpenVPN服务以使配置生效。

Q4: 如何在客户端上配置自动连接OpenVPN?

A4: 可以使用systemd服务来实现OpenVPN客户端的自动连接:

  1. 创建 /etc/systemd/system/openvpn-client@.service 文件,内容如下:

    [Unit] Description=OpenVPN Client Connection After=network-online.target Wants=network-online.target

    [Service] Type=simple ExecStart=/usr/sbin/openvpn –config /etc/openvpn/client/%i.conf Restart=on-failure RestartSec=5

    [Install] WantedBy=multi-user.target

  2. 启用并启动OpenVPN客户端服务: systemctl enable openvpn-client@client && systemctl start openvpn-client@client

之后,OpenVPN客户端会在系统启动时自动连接到VPN服务器。

正文完