内网涉透工具配置 – frp

frp 简介

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议

frp 的作用

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
  • 对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

架构

在具有公网IP的服务器或VPS上安装运行 frp 的服务端程序frps,并在处于内网的目标主机上面安装运行 frp 的客户端程序 frpc ,然后 User 就可以通过公网服务器来实现内网穿透从而访问内网主机。

场景

外网服务器:
CentOS 7

内网:

  1. CentOS 7
  2. Ubuntu 18
  3. Windows Server 2008

配置

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

外网服务器配置:

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

解压:

tar -xzvf frp_0.26.0_linux_amd64.tar.gz
cd frp_0.26.0_linux_amd64

删除客户端文件:

rm frpc
rm frpc.ini

根据需要修改配置文件,默认监听端口是 7000

vim frps.ini:

[common]
bind_port = 7000
#vhost_http_port = 10080 #内网web服务,需要服务器有域名

后台启动程序:

nohup ./frpc -c frpc.ini &

查看 nohup.out 的信息,tail -f nohup.out,显示 success 则启动成功

内网 1 配置:

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

解压:

tar -xzvf frp_0.26.0_linux_amd64.tar.gz
cd frp_0.26.0_linux_amd64

删除服务端文件:

rm frps
rm frps.ini

根据需要修改配置文件,默认监听端口是 7000

vim frpc.ini:
[common]
server_addr = www.crs811.com   #外网服务器地址,可以填ip或者域名
server_port = 7000      #frp服务端端口,需要与服务端配置中的 bind_port 一致

[ssh_01]                #修改名称为 ssh_01
type = tcp              #连接类型,填tcp或udp
local_ip = 127.0.0.1    #填127.0.0.1或内网ip都可以
local_port = 22         #需要转发到的端口,Linux一般是ssh的端口
remote_port = 6000      #外网服务器的包转发端口,即服务端的remote_port(6000)端口对 
                                           #应内部local_port(22)端口

#[web]                                     #开放内网的web服务
#type = http
#local_ip = 127.0.0.1
#local_port = 80
#custom_domains = www.crs811.com           #域名

后台启动程序:

nohup ./frpc -c frpc.ini &

查看 nohup.out 的信息,tail -f nohup.out,显示 success 则启动成功

内网 2 配置:

与内网 1步骤一致,不同的是配置文件:

vim frpc.ini:
[common]
server_addr = www.crs811.com   
server_port = 7000      

[ssh_02]                #修改名称为 ssh_02
type = tcp              
local_ip = 127.0.0.1    
local_port = 22         
remote_port = 6001      #修改为6001

后台启动程序:

nohup ./frpc -c frpc.ini &

查看 nohup.out 的信息,tail -f nohup.out,显示 success 则启动成功

内网 3 配置:

下载:
https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_windows_amd64.zip
解压后,删除 frps.exe, frps.ini
修改配置文件:

[common]
server_addr = www.crs811.com   
server_port = 7000      

[ssh_03]                #修改名称为 ssh_03
type = tcp              
local_ip = 127.0.0.1    
local_port = 3389       #修改为windows的远程桌面默认端口 3389
remote_port = 6002      #修改为6002

使用命令行启动程序:
Win徽标+r: cmd
frpc -c frpc.ini

外网服务器端口配置:

服务端还需要打开相应的端口,否则连接不上的:

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=6000-6002/tcp --permanent
#firewall-cmd --zone=public --add-port=10080/tcp --permanent
firewall-cmd --reload

登录

完成前面三步的配置就可以登录对应的内网机器了,执行 ssh 命令:

ssh -p 6000 username@server_addr

其中 username 是内网机器的登录用户名,server_addr是公网服务器的IP,port 6000就是设置的 remote_port,之后输入的密码是内网机器的登录密码。