收起左侧

全端口内网穿透方案 IPV6+openresty+cloudflare

4
回复
462
查看
[ 复制链接 ]

2

主题

6

回帖

0

牛值

江湖小虾

前置要求

  • 一台已经安装飞牛OS的主机
  • 已经实现ipv6内网穿透(搜索你家光猫型号)
  • 有一个被cloudflare接管的域名(买一个很便宜)

主要思路

由于飞牛OS的官方远程连接服务FN Connect仅支持5666端口下的访问,其他应用在外网只能使用ipv6地址才能直接访问,而又不是所有网络环境都支持ipv6,所以我想到使用特殊的反向代理方式,实现所有端口的cloudflare代理直连。

假如我有一个域名domain.com,内网nas地址为192.168.31.100

访问https://5666.domain.com:8443的时候,请求到nas机器的http://192.168.31.100:5666

这样只需要修改子域名就可以实现所有端口的外网ipv4访问,如果有ipv6网络条件还是建议直连,毕竟速度快得多。

操作流程

安装1Panel

安装1Panel主要是为了方便操作,后续不需要可以禁用掉。

安装OpenResty

打开1Panel,应用商店-全部-Web服务器 点击安装,安装时选择外部端口为http对应8080,https对应8443

image.png

配置反向代理

进入OpenResty的安装目录

image.png

我只给出我这里的路径,你要相对我的路径找到你本地真实路径。

这是主配置文件,我把日志禁用掉了,你可以不改。

/vol1/@appdata/1Panel/1panel/apps/openresty/openresty/conf/nginx.conf

user  root;
worker_processes  auto;
error_log  /var/log/nginx/error.log notice;
error_log  /dev/stdout notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    server_tokens off;
    #access_log  /var/log/nginx/access.log  main;
    #access_log /dev/stdout main;
    #sendfile        on;

    server_names_hash_bucket_size 512;
    client_header_buffer_size 32k;
    client_max_body_size 50m;
    keepalive_timeout 60;
    keepalive_requests 100000;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;
    gzip_disable   "MSIE [1-6]\.";

    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_zone $server_name zone=perserver:10m;

    include /usr/local/openresty/nginx/conf/conf.d/*.conf;
    include /usr/local/openresty/1pwaf/data/conf/waf.conf;
}

禁用自带的配置文件,删除或者后缀改掉都可以,新建一个ssl目录存放cloudflare的ssl证书,新建一个 nas_proxy.conf 用来配置反向代理。

image.png

ssl目录中有两个文件,这是cloudflare的边缘证书,从cloudflare获取,网上教程很多。

image.png

nas_proxy.conf文件内容

/vol1/@appdata/1Panel/1panel/apps/openresty/openresty/conf/conf.d/nas_proxy.conf

server {
    listen 8080;
    listen [::]:8080;
    server_name ~^(?<proxy_port>\d+)\.domain\.com$;
  
    location / {
        # 使用纯 Nginx 变量和正则校验
        if ($proxy_port !~ ^\d+$) {
            return 403;
        }
        proxy_pass http://127.0.0.1:$proxy_port;
        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_set_header X-Forwarded-Proto $scheme;
  
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

server {
    listen 8443 ssl;
    listen [::]:8443 ssl;
    server_name ~^(?<proxy_port>\d+)\.domain\.com$;
  
    ssl_certificate /usr/local/openresty/nginx/conf/conf.d/ssl/cloudflare.pem;
    ssl_certificate_key /usr/local/openresty/nginx/conf/conf.d/ssl/cloudflare.key;
  
    location / {
        # 使用纯 Nginx 变量和正则校验
        if ($proxy_port !~ ^\d+$) {
            return 403;
        }
  
        proxy_pass http://127.0.0.1:$proxy_port;
        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_set_header X-Forwarded-Proto $scheme;
  
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

这个文件里面的 server_name ~^(?<proxy_port>\d+)\.domain\.com$; 需要改成你的域名。

回到应用商店,重启openresty

image.png

这时候你可以在你电脑上配置一个host来验证反向代理是不是生效。

例如你的nas内网地址是192.168.31.100,你的域名是 domain.com

可以配置 192.168.31.100 5666.domain.com

打开浏览器访问 http://5666.domain.com:8080 如果正常请求到飞牛OS管理界面,证明反向代理设置成功。

配置cloudflare

  1. 泛解析*到你的nas的ipv6地址
  2. 开启cdn代理
  3. 如果需要ddns可以另外使用ddns-go配置一下

image.png

等待解析成功,访问https://5666.domain.com:8443 应该就可以看到飞牛os管理界面了。

该方案的优缺点

优点

  • nas的所有http端口均可以自动穿透,无需根据每个应用单独配置,改域名就行
  • cloudflare免费穿透并且自带ssl,省心

缺点

  • cloudflare的代理速度较慢
  • gotty经我测试不支持,wss链接失败,大佬可以研究一下原因
  • 由于所有端口默认穿透,安全性较差,可以通过修改配置,指定一部分端口可通过转发
收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

2

主题

6

回帖

0

牛值

江湖小虾

6 天前 楼主 显示全部楼层

今天发现了一个官方穿透和cloudflare穿透的区别,尝试DLNA投屏的,FN Connect不支持,cloudflare穿透的可以正常播放

0

主题

4

回帖

0

牛值

江湖小虾

开启代理? 不都是关闭的吗

开了代理就跑加利福尼亚中转去了,延迟高的一  详情 回复
前天 21:28
开启代理会变慢,但是能隐藏真实的IP地址  详情 回复
4 天前

5

主题

7

回帖

0

牛值

fnOS系统内测组

f4n6 发表于 2025-5-8 17:54
开启代理? 不都是关闭的吗

开启代理会变慢,但是能隐藏真实的IP地址

1

主题

12

回帖

0

牛值

江湖小虾

f4n6 发表于 2025-5-8 17:54
开启代理? 不都是关闭的吗

开了代理就跑加利福尼亚中转去了,延迟高的一
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则