• 请不要在回答技术问题时复制粘贴 AI 生成的内容
muhairen
V2EX  ›  程序员

请教一个关于 frp 的问题

  •  
  •   muhairen · Jul 8, 2020 · 7843 views
    This topic created in 2138 days ago, the information mentioned may be changed or developed.

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

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