×

(linux通用)frp内网穿透使用教程-旧版

Legend Legend 发表于2023-12-14 13:54:31 浏览562 评论0

抢沙发发表评论

内网穿透其实就是中转远程,一定要有一台vps,根据自身需求自己搭内网穿透就好点,网上也有免费的内网穿透,因为多人用的原因,速度是不保证的
原理就是通过一台服务端达到局域网和外网互联(例如公司远程家里电脑)
*服务端必须是公网ip,而且开放80和443端口,家用宽带电脑作为服务端是不建议的,国外vps搭建建议使用优化线路(例如4837、9929、gia、运营商普线友好线路等)

工作原理(个人愚见):服务端作为两台电脑不在一个局域网内搭建的一个桥梁
*家用电脑 — 公司电脑(无法连接)
*家用电脑frpc — 自建服务端或免费frps — 公司电脑(远程app或网页远程家用电脑)
Fatedier的Github手动搭建:https://github.com/fatedier/frp/releases
配置内网穿透远程桌面(橙苏博客):https://starcheng.xyz/791.html
FRP的UDP协议内网穿透方案(爱吃榴莲的Neo):https://blog.csdn.net/weixin_42590968/article/details/127544553
利用frp内网穿透kcp模式做跳板,加速流畅访问远程桌面3389(梦幻贝壳):https://blog.csdn.net/MENGHUANBEIKE/article/details/100793876
frp配置文件参数解释说明(Jinx菜鸟之路):https://www.jianshu.com/p/bd17a675f081
Jrohy一键安装最新版golang:https://github.com/Jrohy/go-install


golang(go)一键安装

安装/更新最新版golang

source <(curl -L https://go-install.netlify.app/install.sh)

安装/更新指定版本golang

source <(curl -L https://go-install.netlify.app/install.sh) -v 1.13.5

查看安装的版本

go version

服务器手动搭建(linux)
注意:以下教程仅适用于v0.51.3或以下版本

1、在服务器用wget命令把压缩包下来并解压
*release找到后缀为linux-amd64的压缩包,复制下载直链

wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz

2、解压并删除压缩包

tar -zxvf frp_0.51.3_linux_amd64.tar.gz

rm frp_0.51.3_linux_amd64.tar.gz

3、重命名为frp并移动到 /etc 文件夹

mv frp_0.51.3_linux_amd64 frp

mv ./frp /etc

4、编辑 frps.ini 文件,参数如下:

nano /etc/frp/frps.ini
[common]
bind_port = 7000kcp_bind_port = 7000token = 123456789tcp_mux = true
dashboard_user = admin
dashboard_pwd = admin
dashboard_port = 8000

bind_port:服务器代理端口(此项必须,其他可选)
kcp_bind_port:kcp服务器代理端口(可以跟bindport共存端口)
token:与客户端进行校验的令牌(需一致
tcp_mux:tcp流多路复用(优化传输,需一致)
dashboard_user:web面板的账号
dashboard_pwd:web面板的密码
dashboard_port:web面板的密码

5、启动frp服务端(单次运行)

/etc/frp/frps -c /etc/frp/frps.ini

6、添加systemd自启动参数
(具体就不细说了,此前已说过systemd的用法,代码如下)

nano /etc/systemd/system/frps.service
[Unit]
Description=frps
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
WorkingDirectory=/etc/frp
ExecStart=/usr/bin/env./frps -c ./frps.ini[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable frps
systemctl status frps
reboot

服务器手动搭建(windows)

1、release下载带Windows_amd64字样压缩包并解压

2、编辑 frps.ini 文件(参考linux端配置文件)

3、调用cmd命令,cd到目标目录之后运行 frps.exe -c frps.ini 即可(参考客户端设置)

*注意:在windows系统作为服务端需要到 控制面板\系统和安全\Windows 防火墙 放心对应端口,左边有个高级设置,在 入站规则/出站规则 新建规则,选择端口-tcp+特定本地端口(特定端口可放行一个区间的端口号)-允许连接-应用该规则全选-名称-完成


客户端配置win远程桌面(仅供参考)
*远程nas或者openart等软路由系统亦可,以此类推

1、release下载带Windows_amd64字样压缩包并解压

2、编辑 frpc.ini 文件配置以下参数

[common]
server_addr = 1.2.3.4
server_port = 7000protocol = kcptoken = 123456789tcp_mux = true[ssh]type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000

server_addr:服务器ip地址/域名
server_port:服务端连接端口
protocol:传输协议选择(除tcp以外的协议要填)
token:服务端连接令牌(需一致
tcp_mux:tcp流多路复用(优化传输,需一致)
[ssh]:设备命名,不能同名运行
type:连接类型
local_ip:本地回环地址(默认)
local_port:本机映射端口
remote_port:远程映射端口

提示:windows远程连接支持tcp+udp传输,frp内网穿透同样也支持udp传输,如果想使用udp连接,启用 tcp传输 的基础上再新增一条 udp传输 就可以了(相当于tcp+udp混合传输),如下方所示
(注意:ssh命名不能重复,连接类型只使用udp是不行的)

[common]
server_addr = 1.2.3.4
server_port = 7000protocol = kcptoken = 123456789tcp_mux = true[ssh1]
type = tcplocal_ip = 127.0.0.1
local_port = 3389
remote_port = 6000[ssh2]
type = udplocal_ip = 127.0.0.1
local_port = 3389
remote_port = 6000

配置成功后在网页后台(frps dashboard)见到tcp和udp两条连接,那么就起到作用了
是否使用了udp传输?全屏远程后点击 图钉📌右边的信号📶就会显示“并且已启用udp”

3、win徽标键+r一起按,输入cmd回车调出命令提示符
*默认路径为c盘用户名,管理员运行为system32

盘符:
cd 绝对路径
frpc.exe -c frpc.ini

#如果客户端放在非c盘的地方(例如放d盘),则需要运行一次盘符+冒号,把路径引导到目标盘(D:)

4、最后在任意一台外网机器运行 远程桌面连接(Win自带:win+r,输入mstsc回车)
*格式:服务器ip:客户端远程映射端口(例如:1.2.3.4:6000)


win客户端自启动方法
(如果用的是win服务端就把frpc.exe改为frps.exe)

1、新建 start.bat,写入以下内容保存

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
绝对路径\frpc.exe -c 绝对路径\frpc.ini

2、新建 status and stop.bat,写入以下内容保存

@echo off
echo 检测指定软件是否正在运行
echo ------------------------

tasklist|find /i "frpc.exe" & if not errorlevel 1 (goto a) else (goto b)

:a
echo=
echo 已在运行中,结束进程请按任意键,否则关闭窗口
echo 看到两条或以上进程时请结束全部进行,只运行一次start.bat
pause
taskkill /f /t /im frpc.exe
echo 执行完成
pause
exit

:b
echo 程序没有开启
echo=
pause
exit

3、新建 restart.bat,写入以下内容保存

@echo off
taskkill /f /t /im frpc.exe

if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
绝对路径\frpc.exe -c 绝对路径\frpc.ini

4、放到启动文件夹(%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp)