前言
之前给大家介绍过使用内网云实现内网穿透的方案, 一行指令搞定, 详见《使用内网云进行内网穿透实现外网访问局域网中的服务器》
今天给大家介绍如何使用frp
实现内网穿透
frp
是一个免费开源的内网穿透工具, 包含服务端(frps
)和客户端( frpc
)
假如你自己有云服务器, 那么将服务端安装到具有公网ip的服务器中, 将客户端安装到内网的机器上, 即可实现内网穿透功能
当然 如果你没有云服务也没有关系 网上有些热心肠的大佬们给我们提供了中转服务器 比如: freefrp:
而我们要做的仅仅就是在内网的机器上安装用于连接的客户端即可
接下来我以本地的Mac
电脑为例 充当内网机器 介绍使用方法
使用方法
http穿透
首先下载客户端程序
由于是
Mac
系统 因此我们选择Darwin_amd64
, 下载后解压:客户端只用
frpc
开头的文件, 其他的可以移除,修改配置文件
打开配置文件
frpc.ini
, 然后修改成以下内容:1
2
3
4
5
6
7
8
9
10[common]
server_addr = frp.freefrp.net
server_port = 7000
token = freefrp.net
[mac_http]
type = http
local_ip = 127.0.0.1
local_port = 13000
custom_domains = git.newban.cn参数详解:
中括号中的名称可以自定义 但不能重复
type: 表示连接类型, 支持
http/https
udp
tcp
等协议server_addr:服务器 IP 地址或者域名地址
*server_port *:服务端口号
token:服务端访问密码
local_ip: 需要进行穿透的内网ip, 通常为
127.0.0.1
如果使用虚拟机或者docker
建议改成局域网ip
local_port: 需要进行穿透的内网端口号
custom_domains: 自定义域名 需要将域名解析到服务器地址 这样使用域名就能直接访问到内网程序了
域名解析
将配置文件中的自定义域名以
CNAME
的方式解析到frp.freefrp.net
启动
frpc
客户端程序1
./frpc
浏览器访问
此时 我们通过域名就能直接在任意浏览器上访问到
127.0.0.1:3000
多域名解析
假如我们需要将多个不同域名同时解析到同一个内网程序, 那么只需增加一个新模块, 配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[common]
server_addr = frp.freefrp.net
server_port = 7000
token = freefrp.net
[mac_http]
type = http
local_ip = 127.0.0.1
local_port = 13000
custom_domains = git.newban.cn
[mac_http2]
type = http
local_ip = 127.0.0.1
local_port = 13000
custom_domains = git.insoan.com
实现以
Web
的形式可视化配置客户端只需在
common
的节点下配置admin
参数即可, 如下:1
2
3
4
5
6
7
8[common]
server_addr = frp.freefrp.net
server_port = 7000
token = freefrp.net
admin_addr = 127.0.0.1 #客户端Web管理地址
admin_port = 7122 #客户端Web管理端口
admin_user = admin #客户端Web管理用户名
admin_pwd = 123456 #客户端Web管理密码配置完后重启
frp
, 然后在浏览器输入http://127.0.0.1:7122
, 即可以Web
的形式监控当前正在穿透的程序:
ssh穿透
配置
TCP
连接如果我们需要进行
ssh
访问, 那么我们需要在客户端配置tcp
协议, 配置如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[common]
server_addr = frp.freefrp.net
server_port = 7000
token = freefrp.net
[mac_http]
type = http
local_ip = 127.0.0.1
local_port = 13000
custom_domains = git.newban.cn
[mac_ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 12323参数解析:
- remote_port: 服务器端口映射 意思就是将服务器的
12323
端口映射到内网的22
端口
- remote_port: 服务器端口映射 意思就是将服务器的
ssh
访问此时 我们在命令窗口执行以下指令就可以进行
ssh
连接了1
ssh -p 12323 root@frp.freefrp.net
由于我们之前将自定义域名以
CNAME
形式解析到了frp.freefrp.net
, 所以 我们也可以用自定义域名进行连接, 如下:1
ssh -p 12323 root@git.newban.cn
总结
至此 我们的内网穿透客户端配置就ok了, 相比内网云 使用frpc
+freefrp.net
中转服务器的模式进行内网穿透可以实现完全免费且稳定的服务
下一章 给大家介绍《如何使用supervisor实现内网穿透持久化》
本文为作者原创转载时请注明出处 谢谢