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

请教一个关于 frp 的问题

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