用腾讯轻量服务器和利用frp做内网穿透
Contents
准备
- 参考资料: frp: NAS 篇十一:小白上手教程,自建Frp内网穿透,实现外网访问nas设备_存储设备_什么值得买 - https://post.smzdm.com/p/ag87m8xw/
- 买了个3年腾讯轻量云.frps.1315 <-> 群晖.frpc.5000
- 群晖v6+
- ssh/docker/docker-compose/docker.image(snowdreamtech/frpc and snowdreamtech/frps)
- 为了安全,请限制端口的访问源地址
- 为了安全,请用frp的token验证或更高级别的验证 common: authentication_method = token token = 你自己定义
开始
#frp server side
root@VM-24-7-ubuntu:~/nfs/frp# pwd
/root/nfs/frp
root@VM-24-7-ubuntu:~/nfs/frp# cat frps.ini
# 复制如下配置,自行修改密码
[common]
bind_port = 10000
vhost_http_port = 10001
vhost_https_port = 10002
dashboard_addr = 0.0.0.0
dashboard_port = 10003
dashboard_user = your_dashboard_user
dashboard_pwd = your_dashboard_password
authentication_method = token
token = 你自己定义
root@VM-24-7-ubuntu:~/nfs/frp# cat start.sh
# 复制如下配置,挂载容器的frps.ini目录请自行修改
#!/bin/bash
docker run -d \
--restart always \
--network host \
--name frps \
-v /root/nfs/frp/frps.ini:/etc/frp/frps.ini \
snowdreamtech/frps
#frp client side
root@DiskStation:/opt/frpc/frp# cat frpc.ini
# 复制如下配置
[common]
server_addr = 123.xx.xx.29[你的云服务器IP地址]
server_port = 10000
authentication_method = token
token = 你自己定义
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[nginx]
type = tcp
local_ip = 127.0.0.1
local_port = 1313
remote_port = 6001
[synlogy5000]
type = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = 1315
root@DiskStation:/opt/frpc/frp# cat start.sh
# 复制如下配置,挂载容器的frps.ini目录请自行修改
#!/bin/bash
docker run -d \
--restart always \
--network host \
--name frpc \
-v /opt/frpc/frp/frpc.ini:/etc/frp/frpc.ini \
snowdreamtech/frpc
总结
frp真是太方便简单了,我尝试ngrok都要废了也搞不定.
路由的访问顺序是(加入nginx解析):
http复杂一些: external.weburl -> nginx:443 -> localhost:6001 -> frpserver:10000(random.43156) -> frpclient(random.53198) -> frpclient.1313 -> docker.hugo.1313
ssh就简单许多: tencent_server:6000 -> frpserver:10000 -> frpclient -> frpclient.22
http.直给(无nginx path路由): tencent_server:1315 -> frpserver:10000 -> frpclient -> frpclient.5000 群晖管理界面
另外按path路由服务的话用如下的nginx配置就可以了,另外腾讯轻量云的https证书生成非常好用,云平台点点就可以了.
#腾讯云服务器
root@VM-24-7-ubuntu:/etc/nginx/conf.d# cat mahonealex.com.conf
server {
listen 1316 ssl; #由于备案没下来,所以先用1316, 等下来改成443就可以了
server_name mahonealex.com *.mahonealex.com; # 监听域名
server_tokens off;
keepalive_timeout 5;
server_name jimmyzhang.top; #填写您的证书绑定的域名,例如:www.cloud.tencent.com
ssl_certificate /etc/nginx/crt_key/1_mahonealex.com_bundle.crt; #填写您的证书文件名称,例如:1_cloud.tencent.com_bundle.crt
ssl_certificate_key /etc/nginx/crt_key/2_mahonealex.com.key; #填写您的私钥文件名称,例如:2_cloud.tencent.com.key
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 可参考此 SSL 协议进行配置
underscores_in_headers on; # 允许传递带_ 的参数 默认 off。 比如你研发 header 中带 access_token 。不开启将无法传递
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:6001; # 这里的端口号是开启容器时 ngrok 监听的端口号
}
}
Author JimmyZhang
LastMod 2021-12-11