项目说明:本篇文章介绍利用PiVPN快速搭建OpenVPN和WireGuardVPN实现移动办公,或者分支互联。
一、项目准备 {#一-项目准备}
1.1、VMware ESXi {#1-1-VMware-ESXi}
我家里的是一台8核心,20G内存,2T的N5105工控机,我选的ESXi镜像是:VMware vSphere Hypervisor (ESXi) 8.0U2 VMware ESXi
-
VMware vSphere Hypervisor (ESXi) 8.0U2: ESXi 是 VMware 的虚拟化操作系统,用于在物理服务器上运行虚拟机。它是构建 VMware 虚拟化平台的关键组件。
-
VMware vCenter Server 8.0U2a: vCenter Server 是用于集中管理和监控虚拟化基础设施的中心化管理平台。它可以帮助您管理多个 ESXi 主机和虚拟机。
-
VMware vSphere Replication 8.8.0.2: vSphere Replication 是一种灾难恢复解决方案,可实现虚拟机级别的复制和备份。
-
VMware Aria Automation Orchestrator 8.14.1: Automation Orchestrator 是用于自动化 IT 运维工作流程的工具,使您能够创建、管理和执行自动化任务。
-
VMware NSX 4.1.2.1 For vShield Endpoint: NSX 是软件定义网络(SDN)平台,为虚拟化环境提供网络虚拟化和安全性功能。
-
VMware Tools 12.3.5: VMware Tools 是安装在虚拟机中的增强工具,提供了增强的性能、协作和管理功能。
1.2、Ubuntu镜像 {#1-2-Ubuntu镜像}
Ubuntu 22.04.3 ISO
- arm64: 这是针对 64 位 ARM 架构的镜像。ARM 是一种流行的处理器架构,在许多嵌入式设备、移动设备和单板计算机中使用,例如 Raspberry Pi 和某些 Android 设备。
- ppc64el: 这是 PowerPC 64 位架构(ppc64le)的镜像。PowerPC 架构曾用于苹果 Macintosh 计算机和某些服务器,ppc64el 则是用于支持低端序(little-endian)的 64 位 PowerPC 架构。
- s390x: 这是针对 IBM 的 System z 架构的镜像。System z 是用于大型企业的主机和服务器架构,s390x 是其 64 位版本。
1.3、Debian镜像 {#1-3-Debian镜像}
Debian 12.4.0 ISO
- Cinnamon: 这是一种由 Linux Mint 开发的桌面环境,基于 GNOME 3,提供直观的用户界面和现代化的体验。
- GNOME: 这是一个流行的桌面环境,具有现代化、简洁和用户友好的界面,适合寻求简单和美观的用户。
- KDE: 这是一个称为 KDE Plasma 的桌面环境,提供高度可定制性和功能丰富的体验。它通常被认为是功能强大且外观漂亮的桌面环境。
- LXDE: 这是一个轻量级的桌面环境,注重性能和资源使用效率,适合旧设备或对系统资源要求较低的用户。
- MATE: 这是一个由 GNOME 2 衍生出来的桌面环境,保留了传统的桌面设计风格,并提供了一些现代特性。
- Standard: 这通常是指基本的 Debian 安装,没有特定的桌面环境,默认使用基本的命令行终端。
- Xfce: 这是一个轻量级但功能齐全的桌面环境,注重性能和资源利用率,同时提供良好的用户体验。
1.4、PiVPN官网 {#1-4-PiVPN官网}
1.5、OpenVPN官网 {#1-5-OpenVPN官网}
OpenVPN Client
1.6、WireGuard官网 {#1-6-WireGuard官网}
WireGuard ALL Client
1.7、SSH工具 {#1-7-SSH工具}
MobaXterm
1.7.1、MobaXterm激活 {#1-7-1-MobaXterm激活}
二、部署Ubuntu {#二-部署Ubuntu}
Ubuntu系统在VMware ESXi中安装设置请参考 Ubuntu搭建OpenVPN配置分流规则指南!第二步)
三、安装PiVPN+OpenVPN {#三-安装PiVPN-OpenVPN}
说明:根据官方介绍,只需要下面一行代码即可,但是我部署完发现官方代码在同一台Linux上,一次只能部署OpenVPN或者WireGuard,所以接下来的操作步骤我是在同一台Linux上先部署OpenVPN,然后在部署WirdGuard,实现同一台Linux部署俩个VPN服务且互不影响。默认你的Ubuntu或者Debian都已经更新好了所有的软件包。
3.1、PiVPN之OpenVPN {#3-1-PiVPN之OpenVPN}
创建pivpn文件夹,进入文件夹
mkdir pivpn && cd pivpn
执行安装pivpn命令
curl -L https://install.pivpn.io | bash
告知会把服务器装成OpenVPN或者WireGuard,回车:OK
告知作为OpenVPN或者WireGuard服务器需要有IP地址上网,回车:OK
告知是否强制客户端IPV6流量都走VPN,提醒虽然我当前这台内网服务器没有IPV6地址,但是还是建议选择yes,可以防止ipv6泄漏,保护数据安全,回车:yes
告知我们的系统因为不是树莓派(确实我的是x86系统),所以程序这一步不会为我设置静态IP或者让我DHCP获取IP,回车:OK
告知让我们选一个保存OVPN配置的本地用户,回车:OK
告知没有找到除root以外的账户,所以要我们建一个,参考截图,新建用户自定义即可,然后回车:OK
告知输入这个openvpn用户的密码,然后回车:OK
选择openvpn这个用户,回车:OK
选择OpenVPN部署,回车:OK
告知是否使用默认的OpenVPN设定的端口以及TLS加密方式,和默认域名后缀功能,如果要改则选Yes,不改则选No,回车:No
告知是否要修改OpenVPN默认的端口号1194,保持默认回车:OK
再次询问端口是否正确,回车:Yes
询问需要给客户端设置什么DNS来解析域名,默认给了一些海外的DNS。如果你的内网有DNS服务器选择最后一个自定义,如果你的服务器在海外你搭建这个VPN用于科学上网,那就选Google的DNS,如果没有科学上网场景,同样建议自定义写国内的DNS,这样访问国内网站不至于很慢,比如阿里云DNS:223.5.5.5和223.6.6.6,我有内网绿色DNS,所以我写内网的DNS,然后回车:OK
再次询问DNS是否正确,回车:Yes
告知需要用什么方式连接OpenVPN,第一种是用映射后的公网IP加端口进行连接,第二种是用解析好的域名加端口进行连接,如果你的服务器是VPS有公网IP这里会显示公网IP,如果服务器在内网需要做端口映射,另外如果你的域名已经解析到了你的公网IP上,那这里就选第二种DNS Entry,我的已经解析好了,所以选第二个用域名加端口连接OpenVPN,这里你根据自己的实际情况选择,然后回车:OK
输入我解析好的域名,回车:OK
再次确认域名是否正确,回车:Yes
告知生成服务器密钥和HMAC,回车:OK
告知服务器会对公网暴露1194端口,所以服务器要设定组件的一些更新以及建议我们要不定时重启系统,防止漏洞被利用,回车:OK
再次确认是否要启动无人管理模式,系统将自动更新组件软件包避免漏洞被利用,回车:Yes
告知OpenVPN服务器安装完成,运行:pivpn add来添加客户端配置,回车:OK
告知安装好之后建议重启一次服务器,建议重启,选择回车:Yes
再次提醒服务器将重启,回车:OK
3.2、OpenVPN服务端配置优化 {#3-2-OpenVPN服务端配置优化}
默认客户端网卡下发的IP是PiVPN自定义的,可以通过ip addr查看tun0网卡,也就是OpenVPN网卡的IP地址
ip addr
进入openvpn服务端配置文件把server注释掉,换成下面的100段避免10段和内网有冲突,这个server的配置是给客户端网卡用的,可以自定义
nano /etc/openvpn/server.conf
server 100.255.255.0 255.255.255.0
重启服务
systemctl restart openvpn@server.service
查看tun0网卡是否变化
ip addr
查看服务状态
3.3、创建客户端配置文件 {#3-3-创建客户端配置文件}
后续如果安装完WireGuard后还想创建OpenVPN用户,运行这个命令:pivpn ovpn -a -n client-name
pivpn add
3.4、修改配置文件 {#3-4-修改配置文件}
nano /home/openvpn/ovpns/pi-ovpn.ovpn
3.5、MobaXterm左侧下载 {#3-5-MobaXterm左侧下载}
3.6、OpenVPN连接测试 {#3-6-OpenVPN连接测试}
四、安装PiVPN+WireGuard {#四-安装PiVPN-WireGuard}
4.1、PiVPN之WireGuard {#4-1-PiVPN之WireGuard}
新建一个wireguard用户
sudo adduser wireguard
4.2、重新运行PiVPN {#4-2-重新运行PiVPN}
curl -L https://install.pivpn.io | bash
告知我们在/etc/pivpn/openvpn/setupVars.conf已经存在安装信息,第一行让我们更新OpenVPN,第二行让我们沿用/etc/pivpn/openvpn/setupVars.conf配置重新配置OpenVPN,第三行让我们重新配置PiVPN,我们选择:Reconfigure,回车:OK
下面的操作步骤和上面安装OpenVPN选择步骤相同,不同之处我在做说明
这里用户选我们刚刚创建的wireguard,回车:OK
这里选择安装WireGuard,回车:OK
让我们设置WireGuard的端口(可以不改),回车:OK
确认端口是否正确,回车:OK
设置用户端DNS(这一步说明参考OpenVPN,原理和用处一样的),回车:OK
4.3、重启进入 {#4-3-重启进入}
查看网卡发现多了一张wg0网卡,但是也是10网段的,同样我们改一下不用10。
ip addr
4.4、修改wg0网卡ip {#4-4-修改wg0网卡ip}
nano /etc/wireguard/wg0.conf
4.5、重启服务 {#4-5-重启服务}
systemctl restart wg-quick@wg0.service
4.6、查看服务 {#4-6-查看服务}
systemctl status wg-quick@wg0.service
4.7、查看wg0网卡IP {#4-7-查看wg0网卡IP}
ip addr
4.8、创建WireGuard客户端 {#4-8-创建WireGuard客户端}
还想创建OpenVPN用户,运行这个命令:pivpn ovpn -a -n client-name
pivpn wg -a -n wg0-client
4.9、查看客户端配置 {#4-9-查看客户端配置}
cat /home/wireguard/configs/wg0-client.conf
4.10、MobaXterm左侧下载 {#4-10-MobaXterm左侧下载}
4.11、测试连接 {#4-11-测试连接}
WireGuard可以正常连接,访问测试路由以全部走到VPN
五、开启上网 {#五-开启上网}
5.1、开启路由转发 {#5-1-开启路由转发}
-
临时开启路由转发:
这会立即在系统中启用路由转发,但重启后会失效。sudo sysctl -w net.ipv4.ip_forward=1
-
永久开启路由转发:
这会使系统在每次启动时都启用路由转发。-
编辑
/etc/sysctl.conf
文件:sudo nano /etc/sysctl.conf
-
在文件中找到并取消注释以下行(如果不存在,则添加):
net.ipv4.ip_forward=1
-
保存并关闭文件,然后重新加载配置:
sudo sysctl -p
-
5.2、配置iptables {#5-2-配置iptables}
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 100.255.255.0/24 -j MASQUERADE
iptables -I INPUT -p udp --dport 51820 -m comment --comment "wireguard" -j ACCEPT
iptables -t nat -A POSTROUTING -s 100.255.254.0/24 -j MASQUERADE
5.3、安装iptables-persistent
{#5-3-安装}
sudo apt-get install -y iptables-persistent
sudo service netfilter-persistent save
5.4、关闭防火墙 {#5-4-关闭防火墙}
ufw disable
5.5、重启WireGuard {#5-5-重启WireGuard}
systemctl restart wg-quick@wg0.service
5.6、重启OpenVPN {#5-6-重启OpenVPN}
systemctl restart openvpn@server.service
5.7、客户端测试 {#5-7-客户端测试}
WireGuard测试
OpenVPN测试