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

请教一个关于 frp 的问题

  •  
  •   muhairen · 148 天前 · 2714 次点击
    这是一个创建于 148 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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