V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
muhairen
V2EX  ›  程序员

请教一个关于 frp 的问题

  •  
  •   muhairen · 2020-07-08 18:24:04 +08:00 · 6921 次点击
    这是一个创建于 1606 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    34 条回复    2020-07-10 08:05:05 +08:00
    StarUDream
        1
    StarUDream  
       2020-07-08 20:26:41 +08:00 via Android
    一大段话不如贴个 *.ini ?
    greatbody
        2
    greatbody  
       2020-07-08 20:39:47 +08:00
    别用 frp 了,直接电信客服要一个公网 IP,啥事都解决了。
    windyland
        3
    windyland  
       2020-07-08 20:58:45 +08:00 via Android
    你需要 Sakurafrp
    yulihao
        4
    yulihao  
       2020-07-08 21:25:11 +08:00
    配置文件你先得贴上来
    Juszoe
        5
    Juszoe  
       2020-07-08 21:53:24 +08:00
    我猜是 frpc 的配置名出现重复了?
    比如两个 frpc 都是 [ssh]
    muhairen
        6
    muhairen  
    OP
       2020-07-08 22:22:10 +08:00
    @Juszoe 没有,一个是 ssh,一个是 ssh2
    muhairen
        7
    muhairen  
    OP
       2020-07-08 22:23:20 +08:00
    @Juszoe 如果重复的话,实际上 frpc 和 frps 就不能正常连接
    muhairen
        8
    muhairen  
    OP
       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
        9
    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
        10
    StarUDream  
       2020-07-09 08:25:58 +08:00 via Android
    配置没问题,先看跳板机有没有 18848 端口,有的话 curl 一下是不是 ssh,如果是再看是不是 ssh 连接方式或账号密码的问题。
    muhairen
        11
    muhairen  
    OP
       2020-07-09 08:46:24 +08:00 via Android
    @hisys 有点没明白,什么叫没有启用端口,防火墙关掉了,程序一调用不就启用了么
    muhairen
        12
    muhairen  
    OP
       2020-07-09 08:48:35 +08:00 via Android
    @StarUDream 你说的有没有 18848 端口指的是被占用么?并没有被占用
    gtchan13579
        13
    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
        14
    StarUDream  
       2020-07-09 09:14:38 +08:00
    @muhairen #12
    跳板机没有 18848 端口?那你 jetson 没有连到你的跳板机呀。
    你 frps 可以把 log 开下来,看有没有 ssh2 的连接信息。
    StarUDream
        15
    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
        16
    muhairen  
    OP
       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
        17
    yulihao  
       2020-07-09 10:05:58 +08:00
    @muhairen 参考一下 13 楼的做法,可能是不允许 127.0.0.1 进行 ssh 连接
    muhairen
        18
    muhairen  
    OP
       2020-07-09 10:17:19 +08:00
    @yulihao 这样依然不可以,如果都放在 ubuntu 主机上,先登录 ubuntu 主机再登录 jetson 是可以的,直接登录 jetson 就是不可以
    squarer
        19
    squarer  
       2020-07-09 11:20:38 +08:00
    你登录 jetson,ifconfig,看看有没有 lo 就是检查一下有没有 loopback,我遇到过没有本地回环的,也就不能使用 127.0.0.1 了
    还有一点,我不太确定,请 ubuntu 的不要使用 7001,改其他,比如 10000 以上的,frps 会默认使用配置的端口及配置的端口+1 的端口
    StarUDream
        20
    StarUDream  
       2020-07-09 11:34:46 +08:00
    你先在当前环境 curl 地址加端口确认 ssh 没问题,然后再连不上就是 ssh 配置的问题了。
    muhairen
        21
    muhairen  
    OP
       2020-07-09 11:35:37 +08:00
    @squarer 本地回环是有的,ubuntu 主机改用高数字端口之后也不能连接了,好奇怪
    muhairen
        22
    muhairen  
    OP
       2020-07-09 11:46:38 +08:00
    @StarUDream 可是 log 里面显示已经连接上了啊,curl 要测试什么呢?
    @squarer ubuntu 又试了 7001 之外的其他低端口,也不行,只有 7001 可用,这里测试用到的端口都在阿里云里面打开了,也重启 vps 了
    wslzy007
        23
    wslzy007  
       2020-07-09 13:16:22 +08:00
    给你个非 frp 的备方案吧,用 sg
    github.com/lazy-luo/smarGate
    mosliu
        24
    mosliu  
       2020-07-09 16:13:25 +08:00
    跳板机的 端口 防火墙开了么 安全组策略添加了么
    muhairen
        25
    muhairen  
    OP
       2020-07-09 16:39:45 +08:00
    @mosliu 阿里云的策略组一开始就添加了,系统自带的防火墙我直接就给关了
    jagger2048
        26
    jagger2048  
       2020-07-09 16:43:36 +08:00
    有 VPS 的话可以试试 Zerotier one,目前用着都还好
    yc8332
        27
    yc8332  
       2020-07-09 17:07:53 +08:00
    看看日志就知道了。。服务端和客户端日志。。
    laminux29
        28
    laminux29  
       2020-07-09 17:11:32 +08:00
    @greatbody 公网 IP 会变,还要弄一个 DDNS 才行。
    ares586
        29
    ares586  
       2020-07-09 17:30:16 +08:00
    @windyland 惊讶,这个为什么会存在且免费。。。
    windyland
        30
    windyland  
       2020-07-09 17:41:34 +08:00 via Android
    @ares586 因为大家有需求+一群 nice 的维护者
    lopetver
        31
    lopetver  
       2020-07-09 17:54:38 +08:00
    不用跳板机,直接用 ssh 命令可以连接 frpc 映射的端口能连接吗
    muhairen
        32
    muhairen  
    OP
       2020-07-09 18:34:32 +08:00
    @laminux29 我要有路由器控制器没这么多破事了
    @lopetver 连不上啊,这是内网啊,不过跳板机连上 ubuntu 主机之后能 ssh 到内网的其他设备,也是我目前的解决方案
    yulihao
        33
    yulihao  
       2020-07-10 08:01:09 +08:00
    @muhairen 内网 IP 能连得上 SSH 吗?
    muhairen
        34
    muhairen  
    OP
       2020-07-10 08:05:05 +08:00 via Android
    @yulihao 内网里面可以互相连
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2445 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:48 · PVG 12:48 · LAX 20:48 · JFK 23:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.