在Linux上配置你的OpenVPN服务器——手把手操作

2,115 阅读4分钟

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

要设置一个OpenVPN服务器,你必须:

  • 创建一个配置文件。
  • 设置sysctlnet.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服务器了。为了使它在重启后自动启动,请使用systemctl 的子命令enable

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

最后的步骤

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