frp-内网穿透

声明

最近电信分配的IP变成了内网IP,导致之前在家里树莓派上开放的服务在外网无法连接。偶然看到frp项目,配置和使用非常简单,只需要一个外网的vps作为代理即可。虽然这样绕了一大圈速度比之前慢了很多,总算可以使用。

官方资料

[文档](https://github.com/fatedier/frp/blob/master/README_zh.md)
[下载地址](https://github.com/fatedier/frp/releases)

外网安装

下载
    wget .../frp_0.8.1_linux_amd64.tar.gz

解压
    tar -zxvf frp_0.8.1_linux_amd64.tar.gz

移动到/usr/local/
    mv frp_0.8.1_linux_amd64/ /usr/local/opt/frp 

编辑 frps.ini
    [common]
    bind_port = 7000
    dashboard_port = 7500
    log_file = /var/log/frps.log
    log_level = info
    log_max_days = 3
    [ssh]
    listen_port = 6000
    auth_token = 123
创建systemd service
    vi /etc/systemd/system/frps.service

配置文件内容
    [Unit]
    Description=Start or stop the frps
    After=network.target
    Wants=network.target
    [Service]
    ExecStart=/usr/local/opt/frp/frps -c /usr/local/opt/frp/frps.ini
    Restart=1
    [Install]
    WantedBy=multi-user.target

启动并设置开机启动
    systemctl enable frps
    systemctl start frps

备注
    frps.service的目的是通过systemd管理服务,如开机启动,进程关闭自动重启等。
    如果遇到无法启动,可查看/var/log/frps.log文件的输出内容,如端口占用等。
    配置文件和启动文件依个人习惯也可分别移动到/etc/和/usr/local/bin/目录。

内网机器配置

下载
    wget .../frp_0.8.1_linux_amd64.tar.gz

解压
    tar -zxvf frp_0.8.1_linux_amd64.tar.gz

移动到/usr/local/
    mv frp_0.8.1_linux_amd64/ /usr/local/opt/frp 

编辑 frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    log_file = /var/log/frpc.log
    log_level = info
    log_max_days = 3
    auth_token = 123
    [ssh]
    local_port = 22

创建systemd service
    vi /etc/systemd/system/frpc.service

配置文件内容
    [Unit]
    Description=Start or stop the frps
    After=network.target
    Wants=network.target
    [Service]
    ExecStart=/usr/local/opt/frp/frpc -c /usr/local/opt/frp/frpc.ini
    Restart=1
    [Install]
    WantedBy=multi-user.target

启动并设置开机启动
    systemctl enable frpc
    systemctl start frpc

使用

SSH通过外网主机连接到内网主机
    ssh root@xx.xx.xx.xx -p 6000

查看内网主机日志
    tail -f /var/log/frpc.log

查看外网主机日志
    tail -f /var/log/frps.log

查看内网服务状态
    systemctl status frpc

查看外网服务状态
    systemctl status frps