📌  相关文章
📜  创建一个 vpn 服务器 linux - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:36:52.837000             🧑  作者: Mango

创建一个 VPN 服务器 - Linux Shell/Bash

在本教程中,我们将介绍创建一个 VPN 服务器的步骤。我们使用的是 Linux Shell/Bash,因为在大多数 Linux 发行版中都已经包括了一些用于 VPN 配置的工具。

确定服务器类型

首先,我们需要确定要使用哪种类型的 VPN 服务器。可供选择的两种主要类型是:

  • PPTP (Point-to-Point Tunneling Protocol)
  • OpenVPN

虽然 PPTP 通常比较易于设置,但安全性较差。因此,我们建议选择 OpenVPN 服务器。

安装 OpenVPN

要安装 OpenVPN,可以使用以下命令:

sudo apt-get update
sudo apt-get install openvpn

安装完成后,你必须禁用 IPv6,因为 VPN 不支持 IPv6。为此,请使用以下命令:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
生成 SSL 证书和密钥

现在,我们需要生成 SSL 证书和密钥。运行以下命令:

cd /etc/openvpn
sudo openssl req -new -nodes -keyout server.key -out server.csr
sudo openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

现在,我们已经创建了一个自签名 SSL 证书和密钥,用于给所有客户端提供加密和认证。

配置 OpenVPN 服务器

下一步是配置 OpenVPN 服务器。我们需要相应地配置服务器。我们将创建一个名为 server.conf 的文件,该文件将指定 OpenVPN 服务器的配置。打开一个编辑器,并将以下内容复制到文件中:

##### '/etc/openvpn/server.conf' #####
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
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
tls-auth ta.key 0
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

该文件包含了必要的配置信息,以使 OpenVPN 服务器正常运行。请确保使用正确的证书和密钥文件名。

创建客户端配置文件

要让客户端连接到 OpenVPN 服务器,我们需要创建一个客户端配置文件。打开编辑器,并将以下内容复制到新的文件中:

##### '/etc/openvpn/client.ovpn' #####
client
dev tun
proto udp
remote YOUR_SERVER_IP_ADDRESS 1194
resolv-retry infinite
nobind
comp-lzo
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
verb 3

请将 YOUR_SERVER_IP_ADDRESS 替换为实际的 IP 地址。

现在,你可以将此文件下载到你的客户端设备中,并使用 OpenVPN 客户端应用程序导入它。在连接到服务器之前,你需要将证书和密钥放在正确的位置。

启动 OpenVPN 服务器

现在我们已经准备好启动 OpenVPN 服务器了。运行以下命令:

sudo systemctl start openvpn@server
配置防火墙

最后一步是向防火墙添加规则,以允许 OpenVPN 流量通过。在使用 Ubuntu 或类似的 Linux 发行版时,请使用以下命令:

sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw enable
结论

至此,我们已经介绍了如何在 Linux Shell/Bash 中创建一个 VPN 服务器。这只是一个简单的示例,因为 OpenVPN 支持更多的配置选项。更多的选项请参考 OpenVPN 官方文档。

参考资料
  1. OpenVPN - Ubuntu Wiki
  2. EasyRSA - OpenVPN