原创 

搭建自己服务器之frp 0.52.3 内网穿透配置(nginx+frp)及ipv6内网穿透介绍

分类:运维    759人阅读    IT小君  2024-01-31 11:34

题记

本站之前的内网穿透方案是通过路由器+动态域名解析实现的。这里面需要路由器可以绑定到外网IP,最近搬家宽带换成了移动。移动坑爹货死活不给外网IP,所以动态域名解析的路子走不通了。于是有了本篇。

关于可以提供外网IP的内网穿透配置可参考站长之前文章:

1、原理 :局域网自己搭建服务器之DDNS(动态域名解析),基于阿里域名api+python实现

2、光猫超级管理员密码获取

3、路由器配置(华为路由WS5200 增强版)

4、搭建自己服务器之frp 0.52.3 内网穿透配置(nginx+frp)及ipv6内网穿透介绍

 

方案

没有公网IP的内网穿透,有两个路子:

1、IP6直接解析

2、使用代理软件

下面逐一介绍

IP6内网穿透方案

原理:首先IPv6都是公网地址,所以只需将域名解析ipv6 地址即可

配置:光猫开启桥接模式,设置路由器拨号上网,路由器开启ipv6支持(具体配置可参考路由器配置(华为路由WS5200 增强版)

可以打开网站https://ipw.cn/ 看看是否开启成功,

然后ipconfig 可以看到如下信息:

两个IPv6地址都可以用,然后定时获取ipv6 (因为ip有租期会变)做解析就可以了(《局域网自己搭建服务器之DDNS(动态域名解析),基于阿里域名api+python实现》中的脚本已经支持

坑!

这样解析出来的域名需要客户端支持ipv6 才能访问,但是现在ipv6 普及率不高!!!所以这种方案只能用来自己远程电脑,或者做自己的文件服务器、群晖之类的。

 

代理软件方案(FRP)

没辙只能用代理的模式了,为什么是FRP呢,因为开源免费,

github&下载地址:https://github.com/fatedier/frp/releases  ,github 打不开的话

本站留了个下载备份(包含linux和windows两个版本):https://yy123.ink/itResDetail/21385

使用条件:要有一台有公网IP的服务器,公网服务器打开frp服务器端(frps),局域网服务器打开客户端(frpc)

具体配置:

站长的配置模式说明:域名使用nginx+frp 的模式,请求由nginx 根据域名代理到frps 10000 端口,然后frp 再代理到局域网电脑

 

服务器配置

cat frps.toml 

bindPort = 5000                                       #客户端连接的端口
vhostHTTPPort = 10000                           #对外开放的端口

客户端配置

serverAddr = ""             #公网服务器地址
serverPort = 5000           #服务器开放的端口 用于连接

#ssh代理
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22             # 代理的端口
remotePort = 8888         #   对外暴露的端口 不填默认22

#需要密码的ssh代理 stcp ,服务器端也要加相应配置 小编未启用并未配置  具体参见github
[[proxies]]
name = "secret_ssh"
type = "stcp"
secretKey = "1111"
localIP = "127.0.0.1"
localPort = 22

#根据域名切换代理端口
[[proxies]]
name = "blog2"
type = "http"
localIP = "127.0.0.1"
localPort = 7001
customDomains = ["yy123.ink"]

#根据域名切换代理端口
[[proxies]]
name = "blog22"
type = "http"
localIP = "127.0.0.1"
localPort = 7000
customDomains = ["note.yy123.ink"]

#代理mysql数据库,通过外网服务器直连
[[proxies]]
name = "mysql"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3306
remotePort = 3306

 nginx配置

server {
        listen       80;
        listen  [::]:80;
        server_name  yy123.ink;
    	   error_page 497  https://$host$uri?$args;  
		
	   # 将该服务下的所有请求实体的大小限制为1024m
	   client_max_body_size 1024m;
		
        location / {
		
			# 将此路由请求的实体大小限制为1024m
			client_max_body_size 1024m;
		
			set $target http://127.0.0.1:10000;
      
			proxy_redirect     off;
			proxy_set_header Host $host;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header   X-Real-IP        $remote_addr;
			proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
			proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";
			proxy_max_temp_file_size 0;
			proxy_connect_timeout      90;
			proxy_send_timeout         90;
			proxy_read_timeout         90;
			proxy_buffer_size          1024k;
			proxy_buffers              4 1024k;
			proxy_busy_buffers_size    1024k;
			proxy_temp_file_write_size 1024k;
			
			proxy_pass $target;

        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
		
        listen 443 ssl; # managed by Certbot
        listen  [::]:443 ssl;
        ssl_certificate /fullchain.pem; # managed by Certbot
        ssl_certificate_key //yy123.ink/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    }
	

具体参考:https://github.com/fatedier/frp

 

 

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

 工具推荐 更多»