Frp内网穿透

简介

Frp工具下载地址: https://github.com/fatedier/frp/releases

Frp可将处于防火墙或内网后的主机对外网提供http、https、tcp或udp等服务, 例如在虚拟机做个frp内网穿透, 在其他主机访问其映射的vps就能访问到此虚拟机

Frp工具是由go语言写的, 可跨平台使用, 像常见的windows和linux都可使用

穿透SSH

服务端配置

首先准备一台云服务器vps用于配置Frp服务端, Frp库下载地址: https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz, Frp下载好后上传至云服务器并解压

tar -zxvf frp_0.45.0_linux_amd64.tar.gz 
image-20221121172709867

进入Frp文件目录, 修改服务端配置文件frps.ini为如下内容: vim.tiny frps.ini

bind_port = 7000 #服务端与客户端连接的端口

token = henry666 #授权码,在客户端连接的时候会用到


dashboard_port = 7777 #frp后台端口

dashboard_user = admin #管理frp后台的用户账号

dashboard_pwd = admin #管理frp后台的用户密码
image-20221121181507429

服务端启动frp服务: ./frps -c ./frps.ini

image-20221121181805843

客户端配置

首先输入arch命令判断客户端主机是什么系统的,我这里演示的kali主机是32位系统, 因此需下载的frp版本为linux_386.tar.gz

image-20221121201321941
image-20221121201524239

将下载的frp文件解压至客户端主机, 进入frp文件夹, 然后修改frpc.ini配置文件为如下内容, 意思是将本机的22端口映射至外网vps的6000端口

[common]
server_addr = 180.76.55.245
server_port = 7000
token = henry666  

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22 #本地监听的端口
remote_port = 6000   #外网映射端口               

客户端启动frp服务: ./frpc -c ./frpc.ini

image-20221121195713437

打开Xshell连接180.76.55.245:6000端口即可访问到客户端主机22端口的ssh服务

image-20221121200106282
image-20221121200141301

穿透HTTP

服务端配置

在上述frps.ini内容基础上添加一行vhost_http_port来定义外网映射http服务的端口, 随后输入./frps -c frps.ini启动frp服务

bind_port = 7000 #服务端与客户端连接的端口
vhost_http_port = 8080 
token = henry666

dashboard_port = 7777 #frp后台端口

dashboard_user = admin #管理frp后台的用户账号

dashboard_pwd = admin #管理frp后台的用户密码
image-20221121211855842

客户端配置

若客户端主机为windows64位系统则需选择frp的版本为windows_amd64.zip

image-20221121210800251

将frp文件解压至客户端主机, 修改frpc.ini文件为如下内容

[common]
server_addr = 180.76.55.245
server_port = 7000
token = henry666  

[web]
type = http
local_ip = 127.0.0.1
local_port = 80 #本地监听的端口
custom_domains = 180.76.55.245   #填写IP或者域名 

在frp文件夹打开终端执行命令:frpc.exe -c frpc.ini

image-20221121211416614

访问180.76.55.245的8080端口即可访问到内网主机80端口的http服务

image-20221121212109521

穿透TCP

服务端配置

frps.ini的配置如下所示:

[common]
bind_port = 7000  

[socks5]
type = tcp
auth_method = noauth  #表示这个代理不需要验证。如果你需要验证,可以设置为 userpass 并提供 username 和 password
bind_addr = 0.0.0.0
listen_port = 1080

启动frp服务端:./frps -c ./frps.ini

image-20230906210606659

客户端配置

frpc.ini的配置如下

[common]
server_addr = 192.168.47.155
server_port = 7000

[socks5]
type = tcp
remote_port = 1080
plugin = socks5  #用SOCKS5代理插件		

最后更新于