使用frp实现内网穿透

GitHub 项目地址

服务端

安装

Release 页面下载最新版本并解压

1
2
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
tar -xzvf frp.tar.gz && cd frp

frps 复制到 /usr/bin目录下

1
cp frps /usr/bin/

配置

  1. 修改 frps.ini 文件,添加密码和 udp 端口用于点对点内网穿透。

    1
    2
    3
    4
    5
    ## frps.ini
    [common]
    bind_port = 7000
    token = 12345678
    bind_udp_port = 7001
  2. 设置开机启动

    1
    2
    3
    4
    mkdir /etc/frp
    cp frps.ini /etc/frp/frps.ini
    cp systemd/frps.service /etc/systemd/system/frps.service
    systemctl enable frps
    • 启动 frp 并设置开机自启:systemctl enable frps
    • 启动 frp:systemctl start frps
    • 查看 frp 运行状态:systemctl status frps
    • 重启 frp 服务:systemctl restart frps

客户端

安装

客户端的安装方法与服务端类似,需将将frps换成frpc

配置

修改frpc.ini

  1. ssh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ## frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000

    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = 6000
  2. 点对点内网穿透

    启动 frpc,转发内网的 ssh 服务,配置如下,不需要指定远程端口:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ## frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000

    [p2p_ssh]
    type = xtcp
    ## 只有 sk 一致的用户才能访问到此服务
    sk = abcdefg
    local_ip = 127.0.0.1
    local_port = 22

    在要访问这个服务的机器上启动另外一个 frpc,配置如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ## frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000

    [p2p_ssh_visitor]
    type = xtcp
    ## xtcp 的访问者
    role = visitor
    ## 要访问的 xtcp 代理的名字
    server_name = p2p_ssh
    sk = abcdefg
    ## 绑定本地端口用于访问 ssh 服务
    bind_addr = 127.0.0.1
    bind_port = 6000
  3. 微软远程桌面(RDP)

    frp 也可以用于转发内网的 Windows 远程桌面,配置如下:

    1
    2
    3
    4
    5
    #frpc.ini
    [RDP]
    type = tcp
    local_port = 3389
    remote_port = 6001

    需要注意的是,使用 RDP 必须设置 Windows 账户的密码,否则无法连接。

参考:frp 文档