请教一个关于 frp 的问题

2020-07-08 18:24:04 +08:00
 muhairen

有一台阿里云 ubuntu 系统的跳板机,能正常连接内网的 x86 ubuntu 设备,最近新增了 arm 的树莓派和 jetson,frpc 能正常连接 frps,但是在跳板机上 ssh 不能正常连接,frps 用的是同一个端口,如果新增 frps,则会显示找不到路由,即使在阿里云里面已经开启端口并关闭防火墙也不行

6651 次点击
所在节点    程序员
34 条回复
StarUDream
2020-07-08 20:26:41 +08:00
一大段话不如贴个 *.ini ?
greatbody
2020-07-08 20:39:47 +08:00
别用 frp 了,直接电信客服要一个公网 IP,啥事都解决了。
windyland
2020-07-08 20:58:45 +08:00
你需要 Sakurafrp
yulihao
2020-07-08 21:25:11 +08:00
配置文件你先得贴上来
Juszoe
2020-07-08 21:53:24 +08:00
我猜是 frpc 的配置名出现重复了?
比如两个 frpc 都是 [ssh]
muhairen
2020-07-08 22:22:10 +08:00
@Juszoe 没有,一个是 ssh,一个是 ssh2
muhairen
2020-07-08 22:23:20 +08:00
@Juszoe 如果重复的话,实际上 frpc 和 frps 就不能正常连接
muhairen
2020-07-08 22:28:36 +08:00
@greatbody 有公网 ip,但是我没有路由器的管理权
@StarUDream @yulihao 你们说的对,下面贴了
@windyland 我去了解一下

这是 jetson 的配置,frpc 可以和 frps,但是 ssh 连不进去,会超时
[common]
server_addr = ******
server_port = 7000

[ssh2]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 18848

这是 ubuntu 主机的设置,能正常 ssh 连进去
[common]
server_addr = ******
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7001
hisys
2020-07-09 07:49:21 +08:00
@muhairen

[ssh2]
type = tcp
local_ip = 127.0.0.1 #这里改为局域网 ip,类似 192.168.0.x
local_port = 22
remote_port = 18848

把 local_ip 改为该设备的局域网的 IP,然后重启 frpc 服务试试。
很可能是 ssh 的端口并没有在 127.0.0.1 上启用
StarUDream
2020-07-09 08:25:58 +08:00
配置没问题,先看跳板机有没有 18848 端口,有的话 curl 一下是不是 ssh,如果是再看是不是 ssh 连接方式或账号密码的问题。
muhairen
2020-07-09 08:46:24 +08:00
@hisys 有点没明白,什么叫没有启用端口,防火墙关掉了,程序一调用不就启用了么
muhairen
2020-07-09 08:48:35 +08:00
@StarUDream 你说的有没有 18848 端口指的是被占用么?并没有被占用
gtchan13579
2020-07-09 09:02:33 +08:00
为啥要用两个配置 你两台一个局域网的话直接都放在 Ubuntu 上共用一个隧道不就行了吗
[common]
server_addr = ******
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7001

[ssh2]
type = tcp
local_ip = 另一台设备局域网 ip
local_port = 22
remote_port = 18848
StarUDream
2020-07-09 09:14:38 +08:00
@muhairen #12
跳板机没有 18848 端口?那你 jetson 没有连到你的跳板机呀。
你 frps 可以把 log 开下来,看有没有 ssh2 的连接信息。
StarUDream
2020-07-09 09:15:43 +08:00
会有类似这样的信息,在 log 里
```
2020/06/24 17:54:01 [I] [service.go:432] [xxx] client login info: ip [xxx] version [0.33.0] hostname [] os [linux] arch [amd64]
2020/06/24 17:54:01 [I] [tcp.go:63] [xxx] [ssh] tcp proxy listen port [50000]
2020/06/24 17:54:01 [I] [control.go:445] [xxx] new proxy [ssh] success
```
muhairen
2020-07-09 09:46:02 +08:00
@StarUDream 开始以为你说的是被其他进程占用,我看信息显示是连接上了
@greatbody 我后来是你这样做的,但是很好奇为什么配置两个 frpc 就是不行,奇怪的是初始 ssh 依然正常
log 是有的,不过和你的不太一样
这个是 frpc 的 log

2020/07/09 09:31:02 [I] [service.go:282] [7*e] login to server success, get run id [7*e], server udp port [0]
2020/07/09 09:31:02 [I] [proxy_manager.go:144] [7*e] proxy added: [ssh2]
2020/07/09 09:31:02 [I] [control.go:179] [7*e] [ssh2] start proxy success
2020/07/09 09:36:04 [I] [control.go:267] [7*e] control writer is closing
2020/07/09 09:36:04 [I] [service.go:174] [7*e] try to reconnect to server...
2020/07/09 09:36:04 [E] [control.go:157] [7*e] work connection closed before response StartWorkConn message: EOF
2020/07/09 09:36:04 [I] [visitor_manager.go:60] [7*e] gracefully shutdown visitor manager
2020/07/09 09:36:04 [W] [service.go:177] [7*e] reconnect to server error: dial tcp 47.****:7000: connect: connection refused
2020/07/09 09:36:05 [I] [service.go:174] [7*e] try to reconnect to server...
2020/07/09 09:36:05 [W] [service.go:177] [7*e] reconnect to server error: dial tcp 47.****:7000: connect: connection refused
2020/07/09 09:36:07 [I] [service.go:174] [7*e] try to reconnect to server...
2020/07/09 09:36:07 [W] [service.go:177] [7*e] reconnect to server error: dial tcp 47.****:7000: connect: connection refused
2020/07/09 09:36:11 [I] [service.go:174] [7*e] try to reconnect to server...
2020/07/09 09:36:11 [I] [service.go:282] [7*e] login to server success, get run id [7*e], server udp port [0]
2020/07/09 09:36:11 [I] [proxy_manager.go:144] [7*e] proxy added: [ssh2]
2020/07/09 09:36:11 [I] [control.go:179] [7*e] [ssh2] start proxy success

下面是重启之后 frps 的 log

2020/07/09 09:36:07 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2020/07/09 09:36:07 [I] [root.go:209] start frps success
2020/07/09 09:36:11 [I] [service.go:432] [4****8] client login info: ip [221.****:56514] version [0.33.0] hostname [] os [linux] arch [amd64]
2020/07/09 09:36:11 [I] [tcp.go:63] [4****8] [ssh] tcp proxy listen port [7001]
2020/07/09 09:36:11 [I] [control.go:445] [4****8] new proxy [ssh] success
2020/07/09 09:36:11 [I] [service.go:432] [7*e] client login info: ip [221.****:56776] version [0.33.0] hostname [] os [linux] arch [arm64]
2020/07/09 09:36:11 [I] [tcp.go:63] [7*e] [ssh2] tcp proxy listen port [18848]
2020/07/09 09:36:11 [I] [control.go:445] [7*e] new proxy [ssh2] success

突然想到是不是我这边路由器的问题,毕竟我没有管理权,看不到里面的 log
yulihao
2020-07-09 10:05:58 +08:00
@muhairen 参考一下 13 楼的做法,可能是不允许 127.0.0.1 进行 ssh 连接
muhairen
2020-07-09 10:17:19 +08:00
@yulihao 这样依然不可以,如果都放在 ubuntu 主机上,先登录 ubuntu 主机再登录 jetson 是可以的,直接登录 jetson 就是不可以
squarer
2020-07-09 11:20:38 +08:00
你登录 jetson,ifconfig,看看有没有 lo 就是检查一下有没有 loopback,我遇到过没有本地回环的,也就不能使用 127.0.0.1 了
还有一点,我不太确定,请 ubuntu 的不要使用 7001,改其他,比如 10000 以上的,frps 会默认使用配置的端口及配置的端口+1 的端口
StarUDream
2020-07-09 11:34:46 +08:00
你先在当前环境 curl 地址加端口确认 ssh 没问题,然后再连不上就是 ssh 配置的问题了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/688318

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX