一 前言
由于最近家里移动宽带ipv6突然被封80/443端口,而且ipv6体验也不太稳定,只能远程工具访问,导致各种不便,故而花了200RMB买了1年的服务器,打算做内网穿透方案,顺便利用VPS额外搭个🪜
二 宝塔面板
1. 技术难点:
- Nginx、Caddy Web Server 手动配置比较复杂,使用宝塔面板配置简单化
- FRP内网穿透 端口和 🪜的Web Server 端口冲突,内网穿透需要改为非80/443端口,如此用域名穿透访问时需要带端口号不方便
- 反向代理和重定向
2. 宝塔优点:
- 配置简单,内置可安装Web Server插件Nginx,可视化设置
- 防火墙配置简单,可视化配置
- 可设置反向代理,内网穿透改端口后通过反代不需要带端口访问
- 可强制开启HTTPS 自动将http(80端口)访问重定向到https(443端口)
三 部署方案
1. 服务器
- 宝塔面板:Nginx配置、防火墙配置、重定向https访问
- FRPS: 内网穿透服务端(公网环境)
- 🪜: X-UI 魔改版 Reality方案(待测试)
2. 客户端
- 群晖:FRPC 及其他服务主要为Docker部署
四 部署步骤
⚠️ 服务器和域名及域名解析请提前查找相关资料提前准备好
1. 宝塔面板部署
⚠️ 需纯净环境部署,部署失败建议重置服务器后重新部署
- 修改系统时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看时间
date -R
- 安装宝塔面板(我的服务器是Debian11)
- 官方命令:
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec
- 配置宝塔面板
安装完成之后,复制vps给出的地址粘贴在浏览器上进入,一次输入账号和密码。
首次进入会提示
点击推荐一键安装,这个安装过程有点慢,也能需要30分钟左右,安装完成后点击网站添加你的域名
注:可先只选安装Nginx,后面需要时再安装其他
注:笔者填的是泛域名,内网穿透和🪜全部走的是A记录域名解析的服务器IP
自动签发 SSL 证书,并强制开启 HTTPS
注:强制开启HTTPS
后HTTP会自动重定向跳转到HTTPS更加安全
开启自带bbr
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr
- 配置反向代理
🐷 待FRP安装并配置完后再配置,请继续下一章节FRP安装
2. 内网穿透FRP部署
1. FRPS部署
⚠️ 部署FRPS需要公网环境(理论上家宽如果有公网可以使用家宽部署)
1.1 FRPS安装
- Install(安装)
- Gitee
wget https://gitee.com/mvscode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh chmod 700 ./install-frps.sh ./install-frps.sh install
- Github
wget https://raw.githubusercontent.com/MvsCode/frps-onekey/master/install-frps.sh -O ./install-frps.sh chmod 700 ./install-frps.sh ./install-frps.sh install
- Gitee
- Uninstall(卸载)
./install-frps.sh uninstall ```
- Update(更新)
./install-frps.sh update ```
- Server management(服务管理器)
Usage:/etc/init.d/frps
{start|stop|restart|status|config|version
}
et.frps status
注意重点:第2,3步不能使用默认80和443,需要做修改,也就是说除去80,443外,1-65535任意端口都可以,前提是不能有其他项目与本次想设定端口有重复,比如我这里用808代替80端口,909代替443,这样就可以避开其他程序占用80或443的弊端~
注:vhost_http_port
和 vhost_https_port
不能是默认80
/443
端口,否则和宝塔面板的Nginx端口冲突,应改为其他端口,笔者改为了8080/8443端口(后面会用宝塔的反向代理解决端口问题)
剩下的如图所示,一路回车即可(遇到需要修改用户名和密码的地方自己按需修改, 默认也可以,最后会把所有信息列出来)
到这里还没完,继续按回车键,等待自动安装完成~
至此,服务端全部安装完成,下面用宝塔面板配置反向代理,目的就是让我们以后访问远程设备的时候不要后面跟着端口号,用域名直达的效果~
frps config
示例
# [common] is integral section
[common]
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
bind_addr = 0.0.0.0
bind_port = 5443
# udp port used for kcp protocol, it can be same with 'bind_port'
# if not set, kcp is disabled in frps
kcp_bind_port = 5443
# if you want to configure or reload frps by dashboard, dashboard_port must be set
dashboard_port = 6443
# dashboard assets directory(only for debug mode)
dashboard_user = xxx
dashboard_pwd = xxx
# assets_dir = ./static
vhost_http_port = 8080
vhost_https_port = 8443
# console or real logFile path like ./frps.log
log_file = ./frps.log
# debug, info, warn, error
log_level = info
log_max_days = 3
# auth token
token = xxx
# It is convenient to use subdomain configure for http、https type when many people use one frps server together.
subdomain_host = frp.example.com
# only allow frpc to bind ports you list, if you set nothing, there won't be any limit
#allow_ports = 1-65535
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
1.2 反向代理配置
提前解析好一个一级域名,如果你的域名支持泛解析的话,就一起做解析,操作方法就是在A记录中添加一个“*”即可
当然很多域名解析商不支持泛解析,不过这个操作不影响我们后续的操作,把你对应的远程设备的域名都添加进宝塔面板的网站域名中即可,详细宝塔操作看下面,关于域名解析,这里就不做过多解释了,相信大家都会打开宝塔面板,添加一个网站,把需要远程控制设备的域名全部添加进去,后续有增加,也要跟着添加进来~
注:笔者使用的是泛域名,见上一章节图
php可以不用填,只用纯静态就可以,接着点击新建站点的域名,进行反向代理的配置,如图
注:笔者使用的vhost_http_port端口为8080,原作者为808,根据实际情况修改
至此反向代理配置完成~
注:笔者使用的一级域名和二级域名www作为Halo博客域名地址,一级域名需要添加重定向到www二级域名,否则后台编辑会报错网络问题
注:使用一级域名同时需要在域名解析商添加A记录解析解析(通常是@
)
2. FRPC部署
⚠️ 内网环境部署,如NAS、OpenWrt、爱快均可
- frpc.ini官方示例
[common]
server_addr = 127.0.0.1
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[开启穿透的服务名称]
type = http
local_ip = 内网ip
local_port = 内网某个服务的端口
custom_domains = 要访问的子域名
注:上述配置中SSH通过6000端口访问而不是22端口,因为和服务器默认ssh端口冲突,需要在宝塔面板放开6000端口
3. 🪜部署
五 问题解决
-
子域名服务无法访问
宝塔面板防火墙开放相应服务的访问端口 -
群晖无法访问
群晖控制面板关闭强制跳转到HTTPS -
宝塔面板后台无法访问
访问方式:ip或域名:面板端口/安全入口
六 参考资料
七 后记
🤔️ 听网友说宝塔有后门?谁来解答一下
评论区