N1盒子玩法-内网穿透公网访问
内网穿透
🤬什么是内网穿透
在开始之前先了解什么是内网穿透吧!
内网穿透就是将内网(可以看作是家庭网络)通过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
文件:
serverAddr = "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必须不同 .....
注意:可以将每个配置分开写、可以一个服务写一个文件、如nginx.toml、mysql.toml等
如多个配置文件时、启动:
./frpc -c nginx.toml
./frpc -c mysql.toml
每个都起一个服务即可
这里再扩展一下自定义域名的配置:
如果使用域名访问需要在服务端的配置文件中加:vhostHTTPPort = 8080 此8080端口是统一使用域名访问的端口
这里方便我就将两个服务写在一个配置文件中了(你可以分开):
serverAddr = "47.120.22.246" serverPort = 7000 [[proxies]] name = "N1-web" type = "http" localPort = 80 customDomains = ["nginx.xiaoxintops.top"] #使用nginx.xiaoxintops.top:8080 访问即可访问内网的80带你看的nginx [[proxies]] name = "N1-web" type = "http" localPort = 3306 customDomains = ["mysql.xiaoxintops.top"] #使用mysql.xiaoxintops.top:8080 访问即可访问内网的3306带你看的mysql
我这里由于域名没有备案、服务器又是阿里的,所以域名访问一次后就不可用了:
注意:上面所有映射的端口都需要在公网的服务器中放开这个端口的访问权限
更多的配置如下:
frp官网
HP PRO 使用
- 先登录web官网网页注册一下拿到
配置的设备ID
:https://hpproxy.cn/#/home/login
注册登陆后:点击
映射服务(选择相应的服务器使用) -> 到映射设备(添加设备-刷新有个设备ID
) -> 记下这个设备ID
下面安装的时候使用
- 这里我是使用
docker
安装的:
# 通过 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
- 安装
docker 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
- 配置代理:
证书内容可更换为:
提交后等待提交即可(会有点久)
# Cloudflare API credentials used by Certbot dns_cloudflare_email = cloudflare@example.com #cloudflare的登录邮箱 dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234
- 这里还要结合DDNS-GO 动态ip绑定域名(因为ipv6是会变化的)
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/18314021
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步