Frp 实现内网穿透

作者: EricKwoc | 来源:发表于2017-07-02 13:23 被阅读1246次

首先你要有一台公网服务器
如果没有公网服务器,可以用NATAPP,请参见这篇教程
之前一直想用ngrok来实现,奈何交叉编译出来的包有问题,一直没法运行,无解。
编译了windows版本的,大概是没有签名的缘故,也无法运行,最后迫不得已使用windows subsystem - ubuntu来运行Linux amd64版本。但是cubieboard始终没办法。
直到被朋友推荐了frp。
感觉自己得到了解脱。
项目主页请见GitHub

GitHub 的教程
参考链接

由于GitHub上的教程已经很详细了,而且是中文的,这里就略过安装部分,直接讲怎么设置开机自启。
用服务端来演示,如果要配置客户端的话将frps换成frpc即可。

2017-12-17更新
frps.service文件内容可以这样写:

[Unit]
Description=fraps daemon
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/Path/to/frps -c /Path/to/frps.ini
Restart=always
RestartSec=1min

[Install]
WantedBy=multi-user.target

以便在启动失败的时候自动重启服务。
然后frps.ini中可在[common]中加入这样一行(支持frp_v0.11.0以上版本)

[common]
login_fail_exit = false

这样连接服务器失败的时候就不会退出,而是每隔30s尝试连接一次,以增加服务的稳定性


用systemd控制开机自启

cd /lib/systemd/system/ && sudo touch frps.service
sudo nano frps.service
在其中添加如下内容

[Unit]
Description=fraps daemon
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处xxx换做你的实际安装目录)
ExecStart=xxx/frps -c xxx/frps.ini

[Install]
WantedBy=multi-user.target

然后启动frps
sudo systemctl start frps
应用自启
sudo systemctl enable frps
有关于systemd的知识请自行谷歌

使用 init.d 服务控制守护进程和开机自启

sudo nano /etc/init.d/frps
里面粘贴如下内容:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          frpc
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: frpc service deamon
# Description:       frpc service daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/frpc
DAEMON_OPTS=-c\ /etc/frp/frpc.ini
NAME=frpc
USER=eric

set -e
. /lib/lsb/init-functions

start() {
        echo -n "Starting $NAME: "
        start-stop-daemon --start \
                --user $USER \
                -m --pidfile /var/run/$NAME.pid \
                -b --exec $DAEMON -- $DAEMON_OPTS || true
        echo "$NAME."
}

stop() {
        echo -n "Stopping $NAME: "
        start-stop-daemon --stop \
                --pidfile /var/run/$NAME.pid || true
        echo "$NAME."
}

status() {
        status_of_proc -p /var/run/$NAME.pid "$DAEMON" $NAME && exit 0 || exit $?
}

case "$1" in
start)
  start
        ;;
stop)
  stop
        ;;
status)
  status
        ;;
restart)
  stop
  sleep 2
  start
        ;;
*)
        echo "Usage: $NAME {start|stop|restart|status}"
        exit 1
        ;;
esac
exit 0

Ctrl+X保存退出,然后chmod +x /etc/init.d/frps
再用chkconfig frps on将服务添加到开机启动列表中

使用rc.local控制开机自启(不推荐)

sudo nano /etc/rc.local
在最后一行添加

/opt/frp_0.12.0_linux_amd64/frps -c /opt/frp_0.12.0_linux_amd64/frps.ini

总结

说说systemd的优点吧,今天我调试frpc的时候改了frpc的配置文件,然后把进程kill了……再然后我就连不上我宿舍里的板子了,233333
如果用了systemd的话就可以优雅地输入
sudo systemctl restart frpc
然后稍等片刻再重新尝试连接,就不会断开的这么彻底……

相关文章

  • Springboot实现跨域

    为了实现内网穿透,使用的frp。 请求链路:localhost前端—>云端服务器—>经frp穿透内网到localh...

  • 【附下载】带你使用frp实现内网穿透详细教程!

    frp实现内网穿透 项目地址:https://github.com/fatedier/frp/releases[h...

  • (五)frp内网穿透安全配置

    frp的安装介绍 已经在第一节文章有介绍请参考 (一)frp内网穿透ssh登录内网ip服务器 frp 内网穿透安全...

  • frp 实现内网穿透

    一、准备 公网服务器 内网服务器(自己本地服务器) 二、安装frp服务端 2.1 公网服务器执行下面四条命令 2....

  • Frp 实现内网穿透

    首先你要有一台公网服务器如果没有公网服务器,可以用NATAPP,请参见这篇教程之前一直想用ngrok来实现,奈何交...

  • frp实现内网穿透

    因为有在外面访问家里 NAS 的需求,群晖自带的动态域名解析访问又太慢。所以需要用内网穿透技术来实现通过其他公网 ...

  • frp实现内网穿透

    frp简介 FRP 项目地址https://github.com/fatedier/frp/blob/master...

  • frp实现内网穿透

    没有公网IP是一件很不方便的事情,尤其是在国内的网络环境。例如在校园网情况下想要使用远程桌面,只能使用第三方远程桌...

  • frp实现内网穿透

    github项目[https://github.com/fatedier/frp/tree/dev] 目标 从公网...

  • frp实现内网穿透

    一、准备工作 使用场景 因为疫情的原因,最近在家无法返校。无法访问实验室的工作站的话就没法干活了(跑深度学习实验)...

网友评论

本文标题:Frp 实现内网穿透

本文链接:https://www.haomeiwen.com/subject/fsplcxtx.html