运用frp工具实现内网穿透
资料
内网穿透: wiki百科[https://baike.baidu.com/item/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/8597835?fr=aladdin 百度百科[https://zh.wikipedia.org/wiki/NAT%E7%A9%BF%E9%80%8F]
frp官方文档 https://github.com/fatedier/frp
准备
1.一个带公网IP的云主机,后边将会把内网的主机映射到这个 IP 地址
2.frp下载 https://github.com/fatedier/frp/releases
(注意:服务端与本地端的frp版本最好一致)
3.WinWS https://github.com/kohsuke/winsw/releases
(实现window命令行的开机启动与后台运行)
前言
什么是frp
FRP(Fast Reverse Proxy)是一个可用于实现内网穿透的反向代理应用,他的特点是开源,高性能,支持TCP,UDP,HTTP,HTTPS等协议。
以下是我用腾讯云(基于Ubuntu的Linux主机)为服务端,Win10为本地端,使用frp工具搭载内网穿透服务的过程。
我目前完成的内网穿透只实现了本地主机搭建web服务与搭建远程屏幕服务,更多的服务与需求可访问frp官网来配置对应ini文件实现。
过程
Linux云服务端
下载 frp_0.31.2_linux_amd64.tar.gz
到任意目录内(这里选择了官网最新的0.31.2版本)
解压文件 sudo tar -zxvf frp_0.31.2_linux_amd64.tar.gz
打开文件 cd frp_0.31.2_linux_amd64
删除不需要的文件 sudo rm -rf frpc frpc.ini frpc_full.ini
(frpc对应的文件是配置在内网主机端的,frps对应的文件是配置在服务端的,所以这里选择删除了frpc有关文件)
用vim/vi编辑frp服务端配置文件frps.ini sudo vi frps.ini
(vim/vi使用提示:按i进入编辑模式,按Esc退出编辑模式,按Shift+:后输入wq再按Enter完成编辑,具体操作自行百度Google学习。)
这里使用标准配置
# frps.ini
[common]
bind_port = 7000 #用于正常连接服务
vhost_http_port = 8080 #用于搭建web服务
配置参考,frp:Github官网
至此服务端配置完成
在此目录下运行程序 ./frps -c ./frps.ini
命令行出现start frps success代表运行成功
Windows10本地端
下载 frp_0.31.2_windows_amd64.zip]
到任意目录
解压
打开后删除不必要的文件,本地端对应删除frps相关文件,并保留frpc相关文件文件
配置frpc.ini文件
# frpc.ini
[common]
server_addr = x.x.x.x #这里填你的云服务器的IP地址
server_port = 7000
[web] #搭建web服务
type = http
local_port = 80
custom_domains = www.yourdomain.com #有域名填你的域名,没有域名填云服务器的IP地址
[RDP] #搭建远程桌面服务
type = tcp
local_ip = 127.0.0.1 #不确定local_IP可通过cmd输入ipconfig来确定
local_port = 3389
remote_port = 7001
配置参考,frp:Github官网
配置完成,现在在此目录下运行cmd,输入frpc.exe运行文件,看到success代表运行成功!
注意!!如果本地端和服务端连接失败,很有可能是服务端的端口没有开放。
这里我用的 sudo /sbin/iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT
来开放的所需要连接的端口
实现功能
上述搭建服务只为暂时性的,关闭命令行或者cmd后也会关闭服务。
所以我们要用到Linux和Windows对应的开机运行与后台运行工具。
Linux
这里用到Linux的systemctl start
编辑配置文件sudo vi /etc/systemd/system/frps.service
(注意修改文件目录)
[Unit]
Description=frps daemon
After=syslog.target network.target
wants=network.target
[Service]
Type=simple
ExecStart=/usr/xiaoyao/frp_0.31.2_linux_amd64/frps -c /usr/xiaoyao/frp_0.31.2_linux_amd64/frps.ini #请注意这里对应修改文件所在目录!!!
Restart= always
RestartSec=1min
[Install]
wantedBy=multi-user.target
配置参考:知乎@药师
ExecStart 请根据自己下载软件的目录修改!
保存配置后启动服务可以让frps服务在后台运行
启动服务: systemctl start frps
注: 重启服务可用 systemctl restart frps
window
这里使用WinSW工具,下载地址:https://github.com/kohsuke/winsw/releases
这里选择的版本是 WinSW.NET461.exe
将程序改名为winsw.exe便于运行
将软件下载到存放frpc的文件夹里,新建winsw.xml文件,写入以下配置
<service>
<id>frp</id>
<name>frp</name>
<description>用于实现内网穿透的服务,目标IP:</description>
<executable>frpc</executable>
<arguments>-c frpc.ini</arguments>
<logmode>reset</logmode>
</service>
配置参考:Google
在该目录下,管理员方式运行 cmd 窗口并执行 winsw install 即可将 frp 安装为系统服务(注意该目录,管理员)
安装完成后关闭cmd,按Win+R后输入services.msc,找到frp服务,右键启动该服务。
实现服务
web:
Windows开启web服务:自行Google
远程访问你的web网页:打开你手机的浏览器输入你的域名加上:8080
即可访问,示例 yyz9.cn:8080程桌面连接)
手机上下载DR Client后 添加电脑 输入你的IP地址加上:7001
即可访问,示例 49.**.**.160:7001
其他
这篇文章我是大概2月份写的,由于域名没有备案好,就一直放在本地,现在可以上传到个人博客了,也是挺开心!