内网穿透 - FRP服务器搭建

William
2021-06-23 / 0 评论 / 9 阅读 / 正在检测是否收录...

1.它是什么?干嘛用的?

先假设这样一个场景,在仅有的IPV4的环境下,你身处外面使用手机数据流量,想访问家里的路由器界面(如192.168.1.1),但奈何路由设备仅仅存与家庭局域网中,无法访问,怎么让路由器管理界面在世界各地都可以访问呢?Frp内网穿透工具就是为了解决这样一个问题的,可以在有网络的任何地方访问到你家庭的设备。家里头无法在外面访问的网络,我们以下称为内网
公网:与内网相反,为什么我们都可以在任何地方访问百度?因为百度的服务器放在了一个大家都可以访问到底网络,公共使用的网络--公网

2. Frp工具是如何做到的?

简单的说转发,它需要一台在公网设备的帮助转发;借助下面的图就懂了
Frp服务器部署在公网中,它是一个中间商,你想发数据给路由,先发给Frp服务器,Frp再转发给路由,路由发你的数据也是如此

frp工作原理

IP:网络地址,字面意思,网络的地址,有地址才找到一个地方
域名: 方便访问,为什么我们输入"baidu.com"就能访问百度呢?为什么大家不直接通过百度IP访问呢?不是所有人都能记住那一串数字的{IP地址:xxx.xxx.xxx.xxx}

3.部署所需

  1. 一台具有公网IP的设备(服务器)
  2. 一个属于你的域名

4.进行部署

1、根据你的服务器或设备类型选择对应 frp 压缩包,Github下载 CDN加速下载

windows 64位:XXX_windows_amd64.zip
windows 32位:XXX_windows_386.zip
linux 64位:XXX_linux_amd64.tar.gz
linux 32位:XXX_linux_386.tar.gz

frp-github

2、然后使用ftp或sftp或者scp等方式,将frp压缩包上传到你的服务器中(也可以直接在服务器使用wget进行下载)
3、对frp压缩包进行解压,里面会有几个文件
其中包括有frpc(客户端),frpc.ini(客户端配置),frps(服务器),frps.ini(服务器配置)
假设上传到了服务器的root路径下,对frp文件夹进行权限设置

chmod 777 -R /root/frp

4、配置frp服务器参数
使用vim编辑: vim frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 服务器监听端口(10000)
bind_udp_port = UDP端口(10001)
kcp_bind_port = KCP端口(10002)
vhost_http_port = 80
vhost_https_port = 443
subdomain_host = 你的域名(如:yourname.xxx)
dashboard_addr = 0.0.0.0
dashboard_port = 后台管理端口(11000)
dashboard_user = 管理用户名(root)
dashboard_pwd = 管理密码(你自己填一个)
token = 链接密钥(你自己想一个,别照抄啊!如:ABCDEFG)
max_pool_count = 100
log_file = ./frps.log
log_level = info
log_max_days = 3

如果你的服务器已经部署了网站那些,也就是80跟443端口已经被占用,那么 vhost_http_port和vhost_https_port这两个端口也需要改变。总之,frps.ini中的任何端口不能跟其他frp或其他程序冲突,否则服务启动失败

5.启动frp

可以使用nohub也可以使用screen

nohub命令:

# 在root根目录下执行
nohup /root/frp/frps -c /root/frp/frps.ini

screen命令:

# 在frp目录下执行
screen -S frp
./frps -c ./frps.ini

# 在root根目录执行
nohup /root/frp/frps -c /root/frp/frps.ini

如果需要开机自启动可以修改/etc/rc.local文件,加入启动命令

/root/frp/frps -c /root/frp/frps.ini &

不同的系统自启动会不太一样,ubuntu,debian,centOS,windows等等,可自行百度

6.解析一个域名到服务器

比如解析了个 frp.example.com 到你的服务器

7.在浏览器中访问frp管理后台

在自己电脑打开浏览器,输入frp后台管理地址,比如本例子中:

域名是:frp.example.com

面板端口:11000

那浏览器地址栏就写 frp.example.com:11000 域名后面的端口就是frps.ini中的dashboard_port。用户名就是dashboard_user,密码是dashboard_pwd

frp后台

如果访问frp管理后台无法打开,那就是你的服务没启动或者端口没有开放。重新检查frps.ini文件,并确定该文件中的bind_portdashboard_port在你的防火墙(服务器安全组)中放行了

8.客户端连接服务器

这个客户端是你要被控制的设备,下载frp程序,下载回来后,frps相关的可以删掉了,只有frpc才是客户端使用的

编辑 frpc.ini

[common]
server_addr = frp.example.com(刚刚设置的域名解析)
server_port = 服务器监听端口(10000) / bind_port
token = frp服务器中你设置的token
user = 客户端名称(可以随便填一个英文字符串,给这个客户端命名)

[web]   //代理内网的网站
type = http //类型http
local_ip = 127.0.0.1    //内网设备IP
local_port = 80         //端口
subdomain = http         //子域名:如此时填入的是http,则浏览器输入(http.yourname.xxx)就会访问到此设备

[ssh]
type = tcp              //内网TCP代理
local_ip = 127.0.0.1    //内网设备IP
local_port = 22         //要代理的端口
remote_port = 11022      //代理所生成的端口,远程ssh链接需要指定为这个端口

9.被控设备为Windows电脑

如果要被控制的设备是Windows,比如公司的电脑,下载frp相对应的压缩包,解压后将文件夹名字改为frp,删掉frps相关文件,只留frpc文件,用记事本打开frpc.ini进行配置

[common]
server_addr = 你的服务器域名或者IP
server_port = 服务器监听端口(10000) / bind_port
token = frp服务器中你设置的token
user = 给本次客户端取一个名(全英文名)
tls_enable=true

[windows]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33890(映射端口,可随便设置,但不能和其他frp客户端冲突,并且服务器防火墙要放行这个端口)

frp文件夹内,按住shift键盘并右键鼠标,点击右键菜单栏中的powershell,输入命令:

./frpc.exe -c frpc.ini

如果你看到start proxy success的字样,则表示成功了,如果没有,则表示frpc.ini配置有问题

ctrl+C停止程序运行,现在程序可以正常运行,但我们需要将其设置开机自启动

需要一个叫winsw的工具,Github下载 CDN加速下载

winsw

下载后放到frp的文件夹中,并改名为winsw.exe,并且新建一个文件winsw.xml

修改并新建

用记事本打卡winsw.xml,填入下面内容,需要修改的是要运行的frp程序绝对路径,根据你的实际路径填写

<service>
    <!-- 该服务的唯一标识 -->
    <id>frp</id>
    <!-- 该服务的名称 -->
    <name>frp_0.37.0_windows_amd64</name>
    <!-- 该服务的描述 -->
    <description>frpc客户端 - 实现内网穿透</description>
    <!-- 要运行的程序绝对路径,根据你的实际路径填写 -->
    <executable>C:\frp\frpc.exe</executable>
    <!-- 携带的参数 -->
    <arguments>-c frpc.ini</arguments>
    <!-- 第一次启动失败 60秒重启 -->
    <onfailure action="restart" delay="60 sec"/>
    <!-- 第二次启动失败 120秒后重启 -->
    <onfailure action="restart" delay="120 sec"/>
    <!-- 日志模式 -->
    <logmode>append</logmode>
    <!-- 指定日志文件目录(相对于executable配置的路径) -->
    <logpath>logs</logpath>
</service>

在frp文件夹中,按住shift并点击鼠标右键,可以在右键菜单栏中看到powershell,输入.\winsw.exe install,如下图

如果提示下面,则成功!

winsw启动成功

成功!重启电脑(被控制设备)后用手机端试试能不能远程桌面吧

下载Remote Desktop安装,PC name(电脑名)那里输入FRP服务器域名/IP:端口(上面的remote_port = 33890)
比如:frp.example.com:33890

0

评论 (0)

取消