内网穿透技术实践(通过frp0.11实现)
第一章 引言
首先,什么是内网穿透?
内网穿透是指在外网访问运行局域网电脑搭建的服务。举个例子,你在公司搭建一个Tomcat服务,通过localhost:8080访问,回家后就无法通过局域网ip访问,这就需要将本地ip映射到一个公网ip(比如阿里云、腾讯云之类),就可以实现在家访问公司里搭建的服务
第二章 相关工作
1.公网ip哪里来?
一般部分运营商会给民用公网ip。但据博主所知,大部分地区电信会提供公网ip,目前移动只提供局域网ip。不过即使有了运营商的公网ip,相关外网端口也被运营商封闭,除非你跟他交涉开启相关外网端口。所以一般都是使用阿里云等提供的服务器对应的公网ip
2. 准备frp软件
下载地址:https://github.com/fatedier/frp/releases
本文以0.11版本为例,服务端是阿里云的Linux服务器,客户端是Windows。客户端相当于公司电脑,能够访问内网,而服务端则是做端口转发使用


FRP的好处:
- 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务
- 对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口
- 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机
第三章 方法
1. 服务端(以Linux服务器为例)
- 解压上面的下载好的frp软件包:
tar zxvf frp_0.11.0_linux_amd64.tar.gz - 然后进入解压到的文件夹:
cd frp_0.11.0_linux_amd64 - 修改服务端配置文件
vi frps.ini[common] #绑定端口 bind_port = 9000 #http和https服务的端口号 vhost_http_port = 8001 vhost_https_port = 444 #frp后台管理 #frp后台管理的端口、用户、密码,自行设置 dashboard_port = 8000 dashboard_user = admin dashboard_pwd = passwd #token值,与客户端对应,自行设置 privilege_token =123 - 启动服务端(下列二选一)
1.正常启动(注意:会话窗口一旦关闭,服务也会中断,推荐使用第二种方法)
frps -c frps.ini
2.后台打开
nohup ./frps -c frps.ini & - 启动完成可以在web端看到frp后台界面
浏览器输入 '服务器ip:8000' 访问

2. 客户端(以Windows为例)
- 下载与服务器相同版本的frp,本文以0.11版本为例,文件目录如下。

- 修改客户端配置文件
frpc.ini
[common]
#服务器ip地址
server_addr = 填写ip地址或域名
#服务端绑定端口,与上面的设置一致
server_port = 9000
#服务端设置的密钥
privilege_token=123
#tomcat穿透实例
[tomcat]
#通讯协议
type = tcp
#本地ip(局域网ip)
local_ip = 127.0.0.1
#本地访问的端口
local_port = 8080
#转发到服务器的端口
remote_port = 8084
#ssh穿透实例
[ssh]
#通讯协议
type = tcp
#本地ip(局域网ip)
local_ip = 127.0.0.1
#本地ssh服务端口
local_port = 22
#转发到服务器的端口
remote_port = 6000
- 启动客户端
在文件夹空白处按住shift点鼠标右键,选择在此处打开powershell窗口
然后键入命令.\frpc.exe -c .\frpc.ini即可打开客户端

第四章 实际使用及注意事项
- 设置完成后,如果客户端电脑访问tomcat是通过
localhost:8080来实现,那么在不同网段的计算机上就可以通过服务器地址:8084来打开客户端电脑上的tomcat服务器 - 下图这部分代码实际上是将本地端口与服务器端做映射,仿照这种写法可以写多个代码块,具体情况具体分析

- 如果服务端各种界面打不开,请自行查看云服务器安全组及其各自的防火墙,设置好相应的出站规则,小问题请自行百度解决

浙公网安备 33010602011771号