在 Linux 上配置 OpenVPN 服务器

安装 OpenVPN 后,就该配置它了。
25 位读者喜欢这篇文章。
Lock

JanBaby,通过 Pixabay CC0。

OpenVPN 在两点之间创建加密隧道,防止第三方访问您的网络流量。 通过设置您的虚拟专用网络 (VPN) 服务器,您将成为自己的 VPN 提供商。 许多流行的 VPN 服务已经使用 OpenVPN,因此当您可以完全控制时,为什么要将您的连接绑定到特定的提供商?

本系列文章的第一篇文章设置了 VPN 服务器,第二篇文章演示了如何安装和配置 OpenVPN 服务器软件。 第三篇文章展示了如何启动具有身份验证的 OpenVPN。

要设置 OpenVPN 服务器,您必须

  • 创建配置文件。
  • 设置 sysctl 值为 net.ipv4.ip_forward = 1 以启用路由。
  • 为所有配置和身份验证文件设置适当的所有权,以便在非 root 帐户下运行 OpenVPN 服务器守护程序。
  • 将 OpenVPN 设置为使用适当的配置文件启动。
  • 配置您的防火墙。

配置文件

您必须在 /etc/openvpn/server/ 中创建一个服务器配置文件。 如果您愿意,可以从头开始,OpenVPN 包含多个示例配置文件,可用作起点。 查看 /usr/share/doc/openvpn/sample/sample-config-files/ 以查看所有这些文件。

如果您想手动构建配置文件,请从 server.confroadwarrior-server.conf(视情况而定)开始,并将您的配置文件放在 /etc/openvpn/server 中。 这两个文件都有大量的注释,因此请阅读注释并决定哪个最适合您的情况。

您可以使用我预先构建的服务器和客户端配置文件模板以及 sysctl 文件来打开网络路由,从而节省时间和麻烦。 此配置还包括对连接和断开连接进行日志记录的自定义设置。 它将日志保存在 OpenVPN 服务器上的 /etc/openvpn/server/logs 中。

如果您使用我的模板,您需要编辑它们以使用您的 IP 地址和主机名。

要使用我预先构建的配置模板、脚本和 sysctl 来打开 IP 转发,请下载我的脚本

$ curl \
https://www.dgregscott.com/ovpn/OVPNdownloads.sh > \
OVPNdownloads.sh

阅读脚本以了解它的作用。 以下是其操作的快速概述

  • 在您的 OpenVPN 服务器上创建相应的目录
  • 从我的网站下载服务器和客户端配置文件模板
  • 下载我的自定义脚本并将其放入具有正确权限的正确目录中
  • 下载 99-ipforward.conf 并将其放入 /etc/sysctl.d 中,以便在下次启动时打开 IP 转发
  • /etc/openvpn 中的所有内容设置所有权

一旦您确信您了解脚本的作用,使其可执行并运行它

$ chmod +x OVPNdownloads.sh
$ sudo ./OVPNdownloads.sh

以下是它复制的文件(注意文件所有权)

$ ls -al -R /etc/openvpn
/etc/openvpn:
total 12
drwxr-xr-x.   4 openvpn openvpn   34 Apr  6 20:35 .
drwxr-xr-x. 139 root    root    8192 Apr  6 20:35 ..
drwxr-xr-x.   2 openvpn openvpn   33 Apr  6 20:35 client
drwxr-xr-x.   4 openvpn openvpn   56 Apr  6 20:35 server

/etc/openvpn/client:
total 4
drwxr-xr-x. 2 openvpn openvpn   33 Apr  6 20:35 .
drwxr-xr-x. 4 openvpn openvpn   34 Apr  6 20:35 ..
-rw-r--r--. 1 openvpn openvpn 1764 Apr  6 20:35 OVPNclient2020.ovpn

/etc/openvpn/server:
total 4
drwxr-xr-x. 4 openvpn openvpn   56 Apr  6 20:35 .
drwxr-xr-x. 4 openvpn openvpn   34 Apr  6 20:35 ..
drwxr-xr-x. 2 openvpn openvpn   59 Apr  6 20:35 ccd
drwxr-xr-x. 2 openvpn openvpn    6 Apr  6 20:35 logs
-rw-r--r--. 1 openvpn openvpn 2588 Apr  6 20:35 OVPNserver2020.conf

/etc/openvpn/server/ccd:
total 8
drwxr-xr-x. 2 openvpn openvpn  59 Apr  6 20:35 .
drwxr-xr-x. 4 openvpn openvpn  56 Apr  6 20:35 ..
-rwxr-xr-x. 1 openvpn openvpn 917 Apr  6 20:35 client-connect.sh
-rwxr-xr-x. 1 openvpn openvpn 990 Apr  6 20:35 client-disconnect.sh

/etc/openvpn/server/logs:
total 0
drwxr-xr-x. 2 openvpn openvpn  6 Apr  6 20:35 .
drwxr-xr-x. 4 openvpn openvpn 56 Apr  6 20:35 ..

这是 99-ipforward.conf 文件

# Turn on IP forwarding. OpenVPN servers need to do routing
net.ipv4.ip_forward = 1

编辑 OVPNserver2020.confOVPNclient2020.ovpn 以包含您的 IP 地址。 此外,编辑 OVPNserver2020.conf 以包含您之前的服务器证书名称。 稍后,您将重命名并编辑 OVPNclient2020.ovpn 的副本,以供您的客户端计算机使用。 以 ***? 开头的块显示您需要编辑的位置。

文件所有权

如果您使用了我网站上的自动脚本,则文件所有权已经到位。 如果没有,您必须确保您的系统有一个名为 openvpn 的用户,该用户是名为 openvpn 的组的成员。 您必须将 /etc/openvpn 中所有内容的所有权设置为该用户和组。 如果您不确定用户和组是否已经存在,这样做是安全的,因为 useradd 会拒绝创建与已存在的用户同名的用户

$ sudo useradd openvpn
$ sudo chown -R openvpn.openvpn /etc/openvpn

防火墙

如果您决定不在步骤 1 中禁用 firewalld 服务,则您的服务器的防火墙服务可能默认不允许 VPN 流量。 使用 firewall-cmd 命令,您可以启用 OpenVPN 服务,这将打开必要的端口并根据需要路由流量

$ sudo firewall-cmd --add-service openvpn --permanent
$ sudo firewall-cmd --reload

无需迷失在 iptables 的迷宫中!

启动您的服务器

您现在可以启动您的 OpenVPN 服务器。 为了使其在重启后自动启动,请使用 systemctlenable 子命令

systemctl enable --now openvpn-server@OVPNserver2020.service

最后步骤

本系列文章的第四篇也是最后一篇文章将演示如何设置客户端以从远处连接到您的 OpenVPN。


本文基于 D. Greg Scott 的 博客,经许可转载。

接下来读什么
Greg Scott head shot
在 Digital Equipment Corporation(当时一家大型计算机公司)经历了多轮裁员后,我于 1994 年创立了 Scott Consulting。 一家更大的公司在 1999 年收购了 Scott Consulting,当时正值互联网泡沫摧毁 IT 服务行业。

1 条评论

没想到微服务也会构成安全威胁。 感谢您提醒我们。 非常有见地的文章,非常感谢您发布它。

谢谢
jackyjoy

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.