华为云服务器做内网穿透(华为路由器内网穿透)

别人怎样访问自己的localhost:8080前端项目内网穿透

一、了解内网穿透

内网穿透又叫内网映射,功能是把内网IP映射到公网,使公网也能轻松访问所搭建的服务。

我在公司电脑上运行了一个web项目,现在希望所有人都能访问它。

很显然,只有公司的同事能通过]ip地址访问到页面,公司外的人访问不到。

这时候你有两种方案:一是把网站部署到服务器上,二就是用内网穿透了。

部署到服务器费不能实时刷新,改动一行代码都要打包上传,费时费力。

ps:?内网映射方便的同时也会带来安全风险

内网穿透能干什么?

在外网演示你本地的web项目

手机测试移动端的网页

远程控制自己电脑

和朋友联机打游戏

...

穿透的过程

?以vue项目为例,你已经运行了项目,地址是

这时“人在公司坐,活从天上来”,在客户那边的同事要给客户展示下开发进度。

你只要运行一下穿透的服务,然后把公网访问的地址发给同事,就能访问本地的

DDNS和内网穿透

?

二、实现穿透

实现穿透就需要提供映射的服务端,这个服务端可以是网上免费的,也可以是自建的。

自建服务推荐两个开源项目frp和ngrok

免费自建●?小米球●?花生壳●NATAPP●cpolar??......●frp●ngrok三、免费服务

小米球

花生壳

NATAPP

cpolar

免费服务通常有几个限制,也提供收费服务

需要注册账号

访问地址不固定

有访问时间限制

优势也非常明显,不需要服务器,使用方便等

网上还有很多内网映射服务商,自行搜索

免费服务的流程大同小异,都需要注册一个账号,下载客户端使用

?以小米球()为例

?注意:小米球需要实名认证

官网上的演示视频

注册账号?

登录?

通过菜单【系统管理】->【账户管理】->【我的账户】获取token

下载客户端(注意选择合适的版本)?官网下载链接

修改配置配置xiaomiqiu.conf

server_addr:?ngrok2.xiaomiqiu.cn:5432trust_host_root_certs:?trueauth_token:

把auth_token改成自己的token,?不要改动其他内容

运行小米球一键启动工具.bat即可

四、用frp自建服务

重点说一下如何自建内网穿透。

偶尔用一次,我建议注册免费的服务即可

4.1frp是什么?

frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。

frp官网下载地址开源协议Apache-2.0

首先需要一台公网服务器

?“我有个朋友,他恰好有一台”

4.2下载安装包

frp的每个压缩包中都包含客户端和服务端两套文件,以文件名区分

frpc开头的文件是客户端(运行在需要穿透的机器)

frps开头的文件是服务端(运行在公网服务器)

我的环境如下,所以需要下载两个安装包

系统安装包名需要穿透的机器Windows10?64位frp_0.42.0_windows_amd64.zip公网服务器LinuxCentOS764位frp_0.42.0_linux_amd64.tar.gz4.3配置服务端

在本地解压frp_0.42.0_linux_amd64.tar.gz,修改好配置再传到服务器

修改frps.ini

[common]bind_port?=?7000#?客户端和服务端必须使用相同的token才能建立连接#?相当于连接密码,自由设置token?=?0jiklwLgXq#?http代理访问端口vhost_http_port?=?9999#?以下参数可选#?-----------#?开启数据仪表盘,端口7500dashboard_port?=?7500#?数据仪表盘的用户名密码,默认为?admindashboard_user?=?admindashboard_pwd?=?admin

上传以下文件到服务器

│??frps│??frps.ini│??frps_full.ini│??LICENSE│└─systemd

frpc开头的文件是客户端文件,服务器上用不到

增加执行权限

?chmod?+x?frps

开放防火墙和安全组配置文件中的端口

7000:连接端口

7500:仪表盘端口

9999:web服务访问端口

我用的华为云,安全组策略如下。

4.4配置客户端

解压frp_0.42.0_windows_amd64.zip

修改frpc.ini

[common]server_addr?=?你的服务端IPserver_port?=?7000token?=?0jiklwLgXq[web]type?=?http#?需要穿透的本地端口local_port?=?8080custom_domains?=?你的服务端IP4.5运行

运行服务端

进入frp所在目录执行

./frps?-c?./frps.ini

?如图表示运行成功

运行客户端

进入frp所在目录执行

./frpc?-c?./frpc.ini

?如图表示运行成功

4.6效果

web服务穿透

本地localhoust:8080

穿透后*.*.*.*:9999

仪表盘服务

五、扩展5.1frp还能做什么?

frpc_full.ini是客户端全部配置示例

frps_full.ini是服务端全部配置示例

frp根据不同配置提供不同服务,以下是官网提供的配置示例

通过ssh访问内网机器

访问内网web服务(本文内容)

转发DNS查询请求

转发Unix域套接字

提供简单文件访问服务

为本地HTTP提供HTTPS服务

安全地暴露内网服务

点对点内网穿透

5.2动态端口脚本

问题:怎样快速切换代理的本地端口号?

frp运行时依赖配置文件

./frpc-c./frpc.ini调用的frpc.ini

用node.js写一个修改端口的脚本,保存为D:\frp\frpPort.js

const?fs?=?require('fs')const?readline?=?require('readline')var?exec?=?require('child_process').exec//?修改成自己的路径const?path?=?'D:\\frp\\frpc.ini'const?runFrp?=?'D:\\frp\\frpc?-c?'const?rl?=?readline.createInterface({??input:?process.stdin,??output:?process.stdout});rl.question('输入要穿透的端口号:?',?port?=>?{??let?config?=?fs.readFileSync(path,?'utf-8').toString()??const?key?=?"local_port?=?"??const?newConfig?=?config.replace(new?RegExp(`(?<=(${key}))\\d+`,?'g'),?port?||?'8080')??fs.writeFileSync(path,?newConfig)??exec(runFrp?+?path,?(error,?stdout,?stderr)?=>?{????console.log(stdout)??});??rl.close();});

用正则替换端口,更好的方式是ini模块constini=require('ini')

原文;??但是需要npm安装,“可以但是没必要?”

cmd运行脚本命令

node?D:\frp\frpPort.js

没有报错信息表示穿透成功

截图时服务端已经运行

5.3快速运行脚本

问题:frp提供这么多服务,怎样快速切换?

从配置文件下手,可以新建多个配置文件

?举个栗子

frpc_web.ini:提供web穿透

frpc_file.ini:提供简单文件访问

然后写一个bat脚本来运行,保存为frpRun.bat

?注意保存时的编码选GB2312,否则乱码

?配合动态端口脚本

@echo?offecho?输入序号运行不同服务echo?1??运行web穿透echo?2??运行动态修改端口穿透set?/p?var=请输入序号:?if?"%var%"=="1"?(????echo?运行web穿透...????@REM?下面改成你的路径????D:\frp\frpc?-c?D:\frp\frpc_web.ini)?else?if?"%var%"=="2"?(????echo?运行动态修改端口穿透...????@REM?下面改成你的路径????node?D:\frp\frpPort.js)?else?(????echo?序号错误)pause

截图时服务端已经运行

5.4Linux下的脚本

参考我的另一篇

通过封装Nginx4个命令,学习编写Shell脚本

六、报错处理

tokeninlogindoesn'tmatchtokenfromconfiguration

[common]bind_port?=?7000#?客户端和服务端必须使用相同的token才能建立连接#?相当于连接密码,自由设置token?=?0jiklwLgXq#?http代理访问端口vhost_http_port?=?9999#?以下参数可选#?-----------#?开启数据仪表盘,端口7500dashboard_port?=?7500#?数据仪表盘的用户名密码,默认为?admindashboard_user?=?admindashboard_pwd?=?admin0

解决:检查token是否正确(尝试重新填写两边token)

logintoserverfailed:dialtcp*.*.*.*:7000:connectex:Noconnectioncouldbemadebecausethetargetmachineactivelyrefusedit.

[common]bind_port?=?7000#?客户端和服务端必须使用相同的token才能建立连接#?相当于连接密码,自由设置token?=?0jiklwLgXq#?http代理访问端口vhost_http_port?=?9999#?以下参数可选#?-----------#?开启数据仪表盘,端口7500dashboard_port?=?7500#?数据仪表盘的用户名密码,默认为?admindashboard_user?=?admindashboard_pwd?=?admin1

解决:服务端没有运行

type[http]notsupportwhenvhost_http_portisnotset

[common]bind_port?=?7000#?客户端和服务端必须使用相同的token才能建立连接#?相当于连接密码,自由设置token?=?0jiklwLgXq#?http代理访问端口vhost_http_port?=?9999#?以下参数可选#?-----------#?开启数据仪表盘,端口7500dashboard_port?=?7500#?数据仪表盘的用户名密码,默认为?admindashboard_user?=?admindashboard_pwd?=?admin2

解决:配置服务端的http端口

配置正确,连接不上?

尝试使用kcp配置

服务端

[common]bind_port?=?7000#?客户端和服务端必须使用相同的token才能建立连接#?相当于连接密码,自由设置token?=?0jiklwLgXq#?http代理访问端口vhost_http_port?=?9999#?以下参数可选#?-----------#?开启数据仪表盘,端口7500dashboard_port?=?7500#?数据仪表盘的用户名密码,默认为?admindashboard_user?=?admindashboard_pwd?=?admin3

客户端

[common]bind_port?=?7000#?客户端和服务端必须使用相同的token才能建立连接#?相当于连接密码,自由设置token?=?0jiklwLgXq#?http代理访问端口vhost_http_port?=?9999#?以下参数可选#?-----------#?开启数据仪表盘,端口7500dashboard_port?=?7500#?数据仪表盘的用户名密码,默认为?admindashboard_user?=?admindashboard_pwd?=?admin4最后

?注意安全!

?安全!

?全!

原文:

内网穿透原理

采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。在局域网内部的任一PC或服务器上运行到花生壳内网穿透客户端,此时域名解析到的IP地址是局域网网关出口处的公网IP地址,再在网关处做端口映射指向监控设备即可。

演示机型:华为MateBook X

系统版本:win10

以华为MateBook X、win10为例。

采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。

在局域网内部的任一PC或服务器上运行到花生壳内网穿透客户端,此时域名解析到的IP地址是局域网网关出口处的公网IP地址,再在网关处做端口映射指向监控设备即可,亦或使用网络人远程控制软件就可以免了做端口映射这一步。

华为cpe内网IP穿透方法

如果是电信宽带用户,可以打电话给电信要求开通公网IP。

但有些地区的宽带用户没有自己的独立公网IP,或有些宽带运营商根本就不开放公网IP。

这样在发布一些应用或者网站到外网的时候就是一件很麻烦的事情。

独立公网IP并不是说一定要静态公网IP。

拨号上网动态IP也是可以的。

我们要的就是网关出口一定要是公网IP,假如你的网关路由器WAN口是一个内网IP肯定不行。

如何判断是否公网IP,通过对比你的路由器显示的外网IP与www.ip138.com显示的IP。

如果是一致的,则一般就是公网IP。

阅读剩余
THE END