内网穿透介绍
互联网上两个不同的主机进行通信首先需要知道对方IP。根据IP协议,只有分配了公网IP的设备才能在互联网上通信和传输数据。而中国人口/设备众多,分配到的IPv4资源又少,因此绝大部分情况是通过路由器/交换机转换公网IP后才上网。
位于路由器/交换机后的设备一般是内网设备,分配的IP地址以192.168/172.16/10.0开头,属于内网IP。要让内网设备对外提供服务,就需要进行内网穿透。
注意:内网穿透和内网渗透仅有一字之差,但两者是完全不同的概念。内网渗透属于安全领域,指的是通过技术手段攻入(企业)内网,进而控制内网设备。
frp介绍
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
frp 项目官网是 https://github.com/fatedier/frp,中文官方文档地址:https://github.com/fatedier/frp/blob/master/README_zh.md。除了安装过程,中文文档对使用过程已经介绍的非常详细,如遇到问题,建议先查看官方文档。
frp工作原理为:
- 服务端运行,监听一个主端口,等待客户端的连接;
- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端fork新的进程监听客户端指定的端口;
- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
其他内网穿透工具
除了开源的frp,本人所知还有如下内网穿透/远控工具:
- ngrok:ngrok 也是很知名的内网穿透工具,自从2.x版本不再开源,名气在下降。ngrok官网也提供免费穿透隧道,但国内连接速度较慢。NATAPP、Sunny-Ngrok等工具基于ngrok二次开发而来;
- ZeroTier:号称零配置的内网穿透工具,提供与企业 SDN 交换机同等的高级网络虚拟化和管理功能,可以跨本地和广域网连接任何设备和程序。然而由于ZeroTier的服务器在国外,国内连接速度经常很感人,需要自行搭建Moon来解决;
- V2ray:V2ray是一个功能强大的网络平台,提供代理、反向代理、内网穿透等功能。本站之前已有V2ray相关资源: V2ray教程、V2ray高级教程:流量伪装 和 V2ray客户端下载;
- 花生壳/向日葵:相信大部分折腾过路由器的人都听说过花生壳DDNS,可能也知道向日葵远控软件。花生壳和向日葵是贝锐科技旗下的产品,注册账户后可免费体验内网穿透功能;
- TeamViewer:TeamViewer是国内外知名的远程控制、远程会议软件,额外提供文件上传下载等实用功能,比QQ远程协助好用一万遍。虽然个人版免费,但是现在TeamViewer商业化道路一去不复往,用起来越来越恶心,本人现在已经很少用;
- SAKURA FRP:基于frp的免费内网穿透工具,也有收费服务。对于这家的行为,网民褒贬不一。如果你没有自己的服务器,可以尝试一下这家。
个人认为,如果有外网服务器(建议使用性价比高的国内NAT VPS),frp是最好的选择。如果只想远程控制一下电脑,TeamViewer就可以TeamViewer现在强制用户注册才能远程连接,本人已经放弃这个软件。
下面介绍frp内网穿透教程。
frp内网穿透教程
frp分服务端和客户端,本节分别做介绍。
部署frp服务端
服务端建议部署在国内VPS、国内NAT VPS、国外CN2 GIA VPS上,以提供良好的访问体验。
1. 打开 frp下载页面,下载最新版的 frp_0.33.0_linux_amd64.tar.gz
,然后上传到服务器(windows上传请参考:Bitvise连接Linux服务器教程,mac系统上传请参考:Mac电脑连接Linux教程),也可以ssh连接到服务器后用wget下载:
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
绝大部分服务器系统都是64位,因此本教程直接让你下载amd64的压缩包。如果你用的树莓派等特殊服务器,请换成相应架构的安装包。
2. 服务器上解压安装包:tar -zxvf frp_0.33.0_linux_amd64.tar.gz
;
3. 进入解压后的目录:cd frp_0.33.0_linux_amd64
,然后用vim/nano等编辑器编辑frps.ini
文件(可以下载到本地,编辑好后再上传上去),填入下面的内容:
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 12345678
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
4. 设置和启动frp服务:
mkdir -p /etc/frp
cp frps.ini /etc/frp
cp frps /usr/bin
cp systemd/frps.service /usr/lib/systemd/system/
systemctl enable frps
systemctl start frps
注意:这些命令执行成功的前提是进入了解压后的frp目录下(黑窗口执行过cd frp_0.33.0_linux_amd64命令)
5. 防火墙放行端口:
# 添加监听端口 firewall-cmd –permanent –add-port=7000/tcp # 添加管理后台端口 firewall-cmd –permanent –add-port=7500/tcp firewall-cmd –reload
注意:
如果是ubuntu或者centos 6,请使用ufw/iptables工具放行端口;
7000和7500两个端口记得改成和frps.ini配置的一样
6. 浏览器打开“http://服务器IP:后台管理端口” ,输入用户名和密码可以查看连接状态:
如果用的NAT VPS,端口应改成映射后的公网端口
服务端配置好后,接下来介绍客户端配置。
配置frp客户端
还是打开 frp下载页面,下载最新版的客户端。根据客户端平台不同,请按照下面对应关系下载:
- windows系统:32位系统下载frp_0.33.0_windows_386.zip,64位系统下载 frp_0.33.0_windows_amd64.zip,如果不知道系统多少位,请下载32位;
- mac系统:下载 frp_0.33.0_darwin_amd64.tar.gz;
- linux系统:32位系统下载 frp_0.33.0_linux_386.tar.gz,64位系统下载 frp_0.33.0_linux_amd64.tar.gz,不知道系统位数请下载32位的;
- 树莓派/路由器等:32位系统下载 frp_0.33.0_linux_arm.tar.gz,64位系统下载 frp_0.33.0_linux_arm64.tar.gz,如果不知道系统多少位请直接下载32位的。
2. 解压缩下载的压缩包,进入文件夹内;
3. 编辑frpc.ini,按照自己的需求设置转发。下面是一个示例:
# 服务端配置
[common]
server_addr = 服务器ip
# 请换成设置的服务器端口
server_port = 7000
token = 12345678
# 配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 自定义的远程服务器端口,例如2222
# 配置http服务,可用于小程序开发、远程调试等
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = test.hijk.pw
remote_port = 自定义的远程服务器端口,例如8080
注意:
- 一个服务端可以同时给多个客户端使用
- [ssh]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2]、[ssh3]等;
- 除了type为http/https,端口只能被一个服务使用
- 如果用的nat vps,remote_port请改成映射后的端口
4. 登录服务器,防火墙放行监听的端口:
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
nat vps放行的端口应该是系统内部端口
5. 接下来以windows为例,介绍运行方法:按“win键 + r”(win键是ctrl和alt中间有windows图标的那个按键)-》输入cmd、回车 -》使用cd命令进入解压文件夹,例如 cd Desktop\frp_0.33.0_windows_amd64
(切换到其他分区,例如D盘,请使用 cd /d d:
的形式) -》 ./frpc.exe -c frpc.ini
;
内网的linux机器,可参考服务端的方式部署成服务并设置开机启动
6. 登录frp管理后台,应该可以看到客户端已经连上来了:
总结
frp是一款非常棒的开源、免费的内网穿透工具,对于有vps的网友,建议使用frp部署内网穿透服务,从而远程访问内网的设备和数据。
参考
- 使用frp转发内网端口
- ssh端口转发的三种方式
- ssh端口转发实现内网穿透
必须 注册 为本站用户, 登录 后才可以发表评论!