目录
一、配置:
二、运行:
三、配置多个内网主机:
linux和windows的安装包:https://github.com/fatedier/frp/releases
俩常用命令 yum check-update 检查可更新的所有软件包 yum update 下载更新系统已经安装的软件包 tar -zxvf frp_0.33.0_linux_amd64.tar.gz 解压
1、修改公网服务器上的服务端配置文件 frps.ini,如下:
vim frps.ini [common] bind_port = 7000 #frp服务端端口(必须)
2、修改内网目标主机的客户端配置文件 frpc.ini,如下:
[common] server_addr = xxx.xxx.xxx.xxx #frp服务端地址,必须是公网ip或者域名,这里假设为xxx.xxx.xxx.xxx server_port = 7000 #frp服务端端口,即填写服务端配置中的 bind_port [ssh] type = tcp #连接类型,填tcp或udp local_ip = 127.0.0.1 #填127.0.0.1或内网ip都可以 local_port = 22 #需要转发到的端口,ssh端口是22 remote_port = 6000 #frp服务端的远程监听端口,即你访问服务端的remote_port就相当于访问客户端的 local_port,如果填0则会随机分配一个端口
在公网服务器上运行服务端程序:
nohup ./frps -c frps.ini &
查看 nohup.out 的信息,success
tail -f nohup.out 2018/09/17 21:34:01 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000 2018/09/17 21:34:01 [I] [root.go:207] Start frps success 2018/09/17 22:06:02 [I] [service.go:319] client login info: ip [125.71.229.32:60516] version [0.21.0] hostname [] os [linux] arch [amd64] 2018/09/17 22:06:02 [I] [proxy.go:217] [7940291c148c2fca] [ssh] tcp proxy listen port [6000] 2018/09/17 22:06:02 [I] [control.go:335] [7940291c148c2fca] new proxy [ssh] success
在内网目标主机上运行客户端程序:
nohup ./frpc -c frpc.ini &
查看 nohup.out 的信息,success
tail -f nohup.out 2018/09/17 22:42:22 [I] [proxy_manager.go:300] proxy removed: [] 2018/09/17 22:42:22 [I] [proxy_manager.go:310] proxy added: [ssh1] 2018/09/17 22:42:22 [I] [proxy_manager.go:333] visitor removed: [] 2018/09/17 22:42:22 [I] [proxy_manager.go:342] visitor added: [] 2018/09/17 22:42:23 [I] [control.go:246] [0624b332c3465118] login to server success, get run id [0624b332c3465118], server udp port [0] 2018/09/17 22:42:23 [I] [control.go:169] [0624b332c3465118] [ssh1] start proxy success
1、内网机器1和内网机器2的配置应该区分如下: ssh的名字也要区分开来
内网机器1: [ssh] //不同点 type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 //不同点 内网机器2: [ssh1] //不同点 type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6001 //不同点
2、在两个内网机器上分别运行 frpc 客户端程序后,一般就可以通过以下的方法 ssh 登录:
内网机器1: $ ssh -p 6000 user_name1@server_addr 内网机器2: $ ssh -p 6001 user_name2@server_addr
以上参数中,server_addr是公网服务器的公网ip;user_name1、user_name2 分别是内网机器1、2的用户名,之后分别使用登录密码就可以登录。
3、但是有时候会发现按照以上的配置还是使 frp 的服务端与客户端建立连接,在客户端上会出现以下错误:
2018/09/17 22:02:23 [W] [control.go:113] login to server failed: dial tcp xxx.xxx.xxx.xxx:7000: connect: connection timed out dial tcp xxx.xxx.xxx.xxx:7000: connect: connection timed out
登录到阿里云对应云服务器的管理控制台,如下找到左上方的本实例安全组;
再点击右上角的添加安全组规则即可。