N1盒子玩法-内网穿透公网访问
N1盒子玩法-内网穿透公网访问
xiaoxin-top内网穿透
🤬什么是内网穿透
在开始之前先了解什么是内网穿透吧!
内网穿透就是将内网(可以看作是家庭网络)通过nat
建立一条与公网之间的隧道、将内网的流量通过这条隧道发布到公网
🛠 内网穿透工具
个人尝试过的工具:
cpolar 此工具只需要安装客户端即可且有免费的域名可用、但是免费的域名24小时就会更新、收费的不会
frp 此工具需要有一台公网的服务器、需要安装服务端和客户端、灵活度高、可自定义域名
HP-PRO 此工具只需安装客户端且只需在web端配置即可、有免费的域名、但是这是一个公用的所以很多端口已经被占用了
- 其它众多的工具可以参考:github:SexyBeast233/SecBooks
frp工具的使用
服务端
- 先下载服务端和客户端(https://github.com/fatedier/frp/releases/tag/v0.59.0)
- 解压后:
- 服务端只需要留下
frps
,frps.toml
两个文件即可
- 且
frps.toml
配置:- bindPort = 7000 #指服务端与客户端连接的端口
- vhostHTTPPort = 8080 #可不配、这里我用了域名访问就需要配置这个
- 启动:
- ./frps -c frps.toml #前台启动
- nohup ./frps -c frps.toml & #后台启动 (推荐)
客户端(内网本地)
- 先下载服务端和客户端(https://github.com/fatedier/frp/releases/tag/v0.59.0)
- 解压后:保留
frpc
,frpc.toml
- 配置
frpc.toml
文件:==注意:可以将每个配置分开写、可以一个服务写一个文件、如nginx.toml、mysql.toml等==1
2
3
4
5
6
7
8
9
10
11
12
13serverAddr = "x.x.x.x" #公网ip,服务端的ip
serverPort = 7000 #连接服务端的端口
[[proxies]] #代理配置
name = "ssh" #代理名,随意
type = "tcp" #代理类型有:tcp、udp、http等
localIP = "127.0.0.1" #客户端本机ip
localPort = 22 #代理本机的哪个端口
remotePort = 6000 #将本机端口映射到服务器的哪个端口、当访问服务端的6000端口时相当于访问本机的22端口
[[ proxies ]]
#如果有多个可以写多个、但是name必须不同
.....
==如多个配置文件时、启动:==./frpc -c nginx.toml
./frpc -c mysql.toml
每个都起一个服务即可
这里再扩展一下自定义域名的配置:
如果使用域名访问需要在服务端的配置文件中加:vhostHTTPPort = 8080 此8080端口是统一使用域名访问的端口
这里方便我就将两个服务写在一个配置文件中了(你可以分开):
1 | serverAddr = "47.120.22.246" |
我这里由于域名没有备案、服务器又是阿里的,所以域名访问一次后就不可用了:
==注意:上面所有映射的端口都需要在公网的服务器中放开这个端口的访问权限==
更多的配置如下:
frp官网
HP PRO 使用
先登录web官网网页注册一下拿到
配置的设备ID
:https://hpproxy.cn/#/home/login注册登陆后:点击
映射服务(选择相应的服务器使用) -> 到映射设备(添加设备-刷新有个设备ID
) -> 记下这个设备ID
下面安装的时候使用这里我是使用
docker
安装的:1
2
3
4
5
6# 通过 docker run 运行容器 ARM
docker run --restart=always -d -e deviceId=配置的设备ID registry.cn-shenzhen.aliyuncs.com/hserver/hp-pro:latest-arm64
# 通过 docker run 运行容器 - x86或amd
docker run --restart=always -d -e deviceId=配置的设备ID registry.cn-shenzhen.aliyuncs.com/hserver/hp-pro:latest配置穿透
安装完后到web登录界面的
映射设备
查看客户端是否正常在线配置端口映射
先配置映射的端口 - 就是服务端的端口(在公网访问的端口-不是本机内网服务的端口)
再域名配置、这里配置的时候可不需要填写自定义域名
、直接使用他提供的二级域名(测试过自定义域名:配置了CNAME:back1.hpnu.cn 也没生效)
最后再配置:配置映射
- 如下图二图二:配置映射
==提醒:如果在域名配置这里配置错了删掉后、同一个域名可能无法立马使用、得等解析被释放后才行==
🔗 扩展:使用ipv6
- 前提是光猫开启
ipv6
- 且需要访问的客户端也需要支持
ipv6
才行
- 获取本机的
ipv6
地址、如:2408:xxx:684:fc7e:aedd:97ff:xx47:xxx
- 到cloudflare做DNS解析绑定域名
- 接下来就需要做代理、使用nginx做代理:如
nginx-proxy-manage
安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17docker run -d \
--name=npm-nginx \
-p 8880:80 \
-p 81:81 \
-p 18443:443 \
-v /mnt/mydisk/nginx-proxy-manage/data:/data \
-v /mnt/mydisk/nginx-proxy-manage/letsencrypt:/etc/letsencrypt \
--restart=always \
chishin/nginx-proxy-manager-zh:latest
#英文镜像 – jc21/nginx-proxy-manager
#中文镜像 – chishin/nginx-proxy-manager-zh
#80是nginx的http端口
#81是web界面端口
#443是https端口
#/data 是一些nginx的配置文件、如日志、上传的证书、数据库(默认使用sqlite)、等
#/etc/letsencrypt 是let's Encrypt证书、等一些配置文件访问:ip:81
登录用户名:admin@example.com
登录密码:changeme配置代理:
证书内容可更换为:
提交后等待提交即可(会有点久)1
2
3# Cloudflare API credentials used by Certbot
dns_cloudflare_email = cloudflare@example.com #cloudflare的登录邮箱
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234
- 这里还要结合DDNS-GO 动态ip绑定域名(因为ipv6是会变化的)