这里使用的是传统穿透方法,需要一个有公网ip的中转节点去告知

看最下面,用最新版的frps

1、注意

服务器和客户机之间的数据传输全部经过中转服务器,传输速度将受制于中转服务器的上下行带宽。

2、穿透原理

其实就是客户端A绑定端口发送数据,然后监听该端口,然后由中转服务器告诉客户端B,客户端A的公网IP和公网端口,客户端B连接A的公网IP和公网端口,数据包自动由NAT转化为客户端内网IP和内网端口。

中转服务器端指明哪个端口(服务端口)是负责中转的,然后启动服务。内网客户端向中转服务器的服务端口发送请求,告知我要监听哪个端口(a),外网的客户端可以通过请求(中转服务器:端口a)请求到内网客户端,我认为是中转服务器端的prex服务先查看请求的端口是否是内网客户端请求的,如果是那么就会转发到内网客户端上。

3、下载

下载Releases · fatedier/frp · GitHub

 4、中转服务器配置

解压,不用其他操作,解压后打开frps.ini,输入

[common]
bind_port = 7000 # 中转服务器中frp服务的端口号,内网客户端通过访问这个端口连接上
dashboard_port = 7500 # frp的web界面的端口号
dashboard_user = admin  # web界面的登陆账户
dashboard_pwd = pass    # web界面的登陆密码
authentication_method = token
token = 123456    # frp客户端连接时的密码,     内网客户端使用这个密码验证自己的身份

 然后退出执行命令,这里nohup(命令)$ 保证了在关闭命令行依旧能够运行这个服务

nohup ./frps -c frps.ini &

如果出现appending output to nohup.out,就可以了,下面是终端关闭就会停止 

 5、内网客户端

freeSSHd and freeFTPd - open source SSH and SFTP servers for Windows

把这两个安了

然后对于frps同样是解压,路径要记住,最好简洁一点,然后打开frpc.ini配置

[common]
server_addr = 中转服务器的公网ip
authentication_method = token
token = tokenpass  #客户端的密码
server_port = 7000 #中转服务器的密码

[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33389 

 上面只要访问(中转服务器:333389)就会映射到这个内网客户端的3389端口。

server_port = 7000  就是指明连接服务器的7000端口

在ip地址里面加上9999就会到本地的9999

local_port = 9999

remote_port = 9999

在ip地址加上33389,就会访问本地的

local_port = 3389

remote_port =33389 

这两个端口防火墙都要打开 

命令看下面吧,懒得打了,然后只要出下面三行就是连接成功了 

 6、注意

上面需要的端口,都要打开

内网客户端的33389和3389

中转服务器也需要打开33389,以及7000,7500

7、web验证成功

开启端口号 7500

web端口验证 公网ip:开放的web端口号 

 登录成功

8、远程桌面登录 

 

 win10家庭版不允许其他远程登录你的系统

登录的时候 

 

 然后输入密码

 9、需要把内网客户端的那个弄成开机启动,以后再添加

linux和linux通信,并使用xshell登录

Releases · fatedier/frp · GitHub

1、下载前使用arch命令查看系统架构

如果是aarch64那么下载arm64位的

如果是x86_64那么下载amd64位的

2、下载最新的版本,这时版本是0.41.0

3、配置服务端

服务器端点开frps.ini,下面这个端口是客户端要连接的端口

 保存后 运行./frps -c frps.ini

 4、配置客户端

 ./frpc -c frpc.ini

看好下面的端口6000,然后就用xshell就可以连接了 

至于其他的后台运行,看上面就可以

如果服务器端关了服务后,客户端会尝试重连,它会一直尝试重连,只不过重连的间隔时间越来越大。

其他

1、此外,可以1个服务端多个客户端,但是要求客户端的ssh名称不一样,比如下面命名为ssh1

[common]
server_addr = #要连的ip
server_port = #服务器端口,多个客户端可以一样
[ssh1] 
type = tcp
local_ip = 127.0.0.1
local_port = 6080
remote_port = 6080

 2、如果想要在服务器端永久运行,看另一篇文章systemctl命令和配置整理_贪睡的蜗牛的博客-CSDN博客

或者可以试试运行下面的脚本,大概意思是每一分钟查看frp任务是否存在,如果不存在那么就重新运行,至于为什么得到数量要以3,我也不知道为什么,因为运行脚本得到的frp相关的最低就是3....姑且这么写吧,另外下面.sh名称是updateJob.sh,文件随便放

#!/bin/bash

# 定义一个刷新时间
flushtime=60;
#定义flag文件名称
flagfileName="flag.txt"
#计划任务文件路径
timeFilePath="/var/spool/cron/root"
#找到当前sh路径
#shFilePath=$(pwd)"/test2.sh"
shFilePath=$(pwd)"/updateJob.sh"
echo $shFilePath



#判断是否是第一次打开本脚本
if test -e "/$timeFilePath" 
then 
    echo "定时配置文件存在"
  
else 
    echo "定时配置文件不存在" 
      `touch  $timeFilePath`
fi 
if [ `grep -c $shFilePath $timeFilePath` -eq 0 ];then
    #第一次打开本脚本则在定时中插入更新任务
	echo '更新任务初始化'
	echo '本脚本文件路径  '"$shFilePath"
	echo '定时文件路径  '"$timeFilePath"
	echo  "* * * * * $shFilePath" >> $timeFilePath '&> /dev/null'
    echo "重启任务"
	`rm -rf /var/run/crond.pid`
	 `crond`
	#离开脚本
	exit
fi
count=`ps aux | grep -c "frp"`
	echo "$count"
                
	if [ "$count" -le 3 ]
	then
	    echo "添加进程"
       cd /frp
	     ls
		 nohup ./frps -c frps.ini &
	fi





参考:

利用阿里云服务器公网ip,搭建frp内网穿透服务,将自己变成云电脑_zh452647457的博客-CSDN博客_把云服务器公网ip映射自己电脑

frp(内网穿透)_Anonymous-1-CSDN博客_frp

借助ecs的公网ip将自己家里的Windows做个内外穿透【外网可以访问的】--frp【远程连接Windows电脑】_zhaojiafu的博客-CSDN博客

frp: frp是一种快速反向代理,可帮助您将NAT或防火墙后面的本地服务器公开到Internet。到目前为止,它支持TCP和UDP以及HTTP和HTTPS协议,可以在其中将请求通过域名转发到内部服务。frp还具有P2P连接模式。

stcp和p2p模式

stcp

frp的tcp模式相当于你的设备直接向公网暴露了一个tcp端口。任何设备都可以尝试连接这个端口。这里就会有很大的安全风险。所以有了stcp模式,这种模式可以验证密码

需要穿透的客户端连接时将type修改为type = stcp,添加一个sk,sk = abcdefg

# frpc.ini
[common]
# 你的frp服务器的公网ip
server_addr = x.x.x.x
# 你的frp服务器的默认端口
server_port = 7000

[rdp]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
# 远程桌面的本地端口号
local_port = 3389

另一个连得时候,type = stcp,role = visitor,

# frpc.ini
[common]
# 你的frp服务器的公网ip
server_addr = x.x.x.x
# 你的frp服务器的默认端口
server_port = 7000

[rdp_visitor]
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = rdp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
# 绑定本地端口用于访问 远程桌面 服务
bind_addr = 127.0.0.1
bind_port = 6000

 p2p

公网服务端添加一个bind_udp_port

[common]
bind_port = 7000
bind_udp_port = 7001

内网中的客户端 

[common]
server_addr = xxxxxxxxip
server_port = 7000

[note17]
type = xtcp
sk = zxccxz
local_ip = 127.0.0.1
local_port = 22
[common]
server_addr = xxxxip
server_port = 7000

[ssh_windows]
type = xtcp
role = visitor
server_name = note17
sk = zxccxz
bind_addr = 127.0.0.1
bind_port = 1081

但是一般会失败,要看nat类型。对称式网络基本不能打洞,两端都是端口限制圆锥型尝试过也不行。全圆锥型成功率最高

内网穿透神器frp之进阶配置——stcp及p2p模式_frp xtcp模式_xinyue_htx的博客-CSDN博客

将window放入到计划任务中

利用frp中的xtcp实现点对点连接手机服务器 - 知乎

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐