本文基于WireGuard VPN技术,简要介绍组建HyBrid Cloud的方法,并以此实现MC服务器的公网运行。
1、VPN服务器购买:这里推荐CloudIPLC家的NAT类型的服务器,29.99元每月,搭配优惠码:welcome还有九折优惠,配置不高,但用于部署WireGuard VPN服务器已经绰绰有余了;或者喵云家的服务器也很不错;这里我选择的是一台1C 384M的云服务器,购买之后我们来到NAT VPS端口映射这里查看我们SSH登录的端口被转发到了哪里:
2、使用ssh连接到云服务器,你可以使用下面的命令简单的链接到云服务器:
ssh root@IP地址 -p 公网端口号
3、部署WireGuard VPN,这里我们选择使用CentOS 8的操作系统方便我们进行WireGuard VPN的部署:
(1)使用ELREPO仓库更新CentOS 8的内核:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
为了加快国内的访问 可更改其为国内的镜像源:
首先备份之前的ELREPO仓库:
sudo cp /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/elrepo.repo.bak
然后编辑 /etc/yum.repos.d/elrepo.repo 文件,在 mirrorlist=
开头的行前面加 #
注释掉;并将 http://elrepo.org/linux
替换为 https://mirrors.tuna.tsinghua.edu.cn/elrepo
。然后我们删除掉除了elrepo.repo以外的文件,下载阿里云CentOS 8.5.2111过期源:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
顺便启用一下EPEL软件源:
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
更换为阿里境内的镜像:
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
最后更新软件包缓存:
dnf clean all && dnf makecache
等待命令执行完成即可:
使用命令安装内核:
yum --enablerepo=elrepo-kernel install kernel-ml
等待安装完成即可,重启,查看当前启动的内核是否为6.x:
uname -a
至此 系统的基本配置已经完成。接下来即可进入WireGuard VPN的部署流程。
(2)使用脚本快速配置WireGuard:
dnf install git git-* && git clone https://git.cloudyun.top/h6223986/Linux-Shells.git
执行脚本后即可:
bash run-wireguard.sh
选择 wireguard_install
即可,等待安装完成:
我们使用命令cat /etc/wireguard/client.conf 查看我们的配置文件:
将配置文件导入到Wireguard VPN即可:
至此WireGuard的配置就基本结束了!注意去NAT服务器那里将WireGuard的UDP端口转发出去:
(3)配置nginx
安装Nginx:
dnf install nginx nginx-* vim -y
等待命令安装完成即可,然后我们编辑一下nginx的配置文件:
vim /etc/nginx/nginx.conf
想要偷懒的话可以直接拿我这里的配置覆盖nginx.conf的配置文件即可:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
stream {
log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time';
access_log /www/wwwlogs/tcp-access.log tcp_format;
error_log /www/wwwlogs/tcp-error.log;
include /www/nginx.proxy.d/*.conf;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include /www/nginx.conf.d/*.conf;
}
按照该配置文件,Nginx的四层代理配置应该在/www/nginx.proxy.d目录下
我们编辑我们的一个代理配置文件:
upstream 3389_proxy {
hash $remote_addr consistent;
server 10.77.77.2:3389 weight=5 max_fails=3 fail_timeout=30s;
}
# 提供转发的服务,即访问localhost:9001,会跳转至代理socket_proxy指定的转发地址
server {
listen 3389;
listen 3389 udp;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass 3389_proxy;
}
这里注意,我们的proxy_pass要和上面的upstream 后的代理名称保持一致,Listen后填写监听的端口。如果需要监听UDP,配置listen 端口号 udp; 这样写即可;
然后我们重新启动nginx服务:
[root@webservice nginx.proxy.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@webservice nginx.proxy.d]# systemctl restart nginx
[root@webservice nginx.proxy.d]# systemctl enable --now nginx
这样我们就将10.77.77.2的IP的服务代理到我们NAT类型服务器的端口上了;
然后我们需要回到CloudIPLC的管理面板上,选择我们的NAT端口管理,点击你的订阅服务,点击添加规则配置内网端口到公网端口的转发:
至此,就顺利的将服务器上在多层NAT下的家宽环境穿透到了公网了,接下来就可以配置一下域名解析到公网服务器即可!