Frp---树莓派4B内网穿透

前言

开源免费,轻量级,很nice。

1、frp是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务, 支持tcp, udp, http, https等协议类型,并且web服务支持根据域名进行路由转发。
2、frp内网穿透主要用于没有公网IP的用户,实现远程桌面、远程控制路由器、 搭建的WEB、FTP、SMB服务器被外网访问、远程查看摄像头、调试一些远程的API(比如微信公众号,企业号的开发)等。

介绍

使用环境:

客户端-》 树莓派

服务器-》 阿里云的服务器,Ubuntu20

GitHub

releases发布版本

https://github.com/fatedier/frp/releases

客户端和服务器版本一致就可以,我用的就是最新的,一次Success。

image-20210820161935430

参考文档地址

官方参考文档

服务器端配置

上传frps文件

首先把 文件frpsfrps.ini上传至服务器

image-20210820112054212

修改frps.ini

输入

sudo vim frps.ini

frps.ini配置

[common]
#绑定的端口,
bind_port = 7000
#设置监听 HTTP 请求端口为 8080
vhost_https_port = 8080 
#使用  xx.xx.xx.xx:7500 访问frp,展示你的信息
dashboard_port = 7500
#进入   xx.xx.xx.xx:7500  所需要的用户名和密码
dashboard_user = admin
dashboard_pwd = password
# 自己设的token
privilege_token = 123456
#log_file日志文件
log_file = ./frps.log
#log_level记录的日志级别
log_level = info
#log_max_days日志留存天数
log_max_days = 3
#authentication_timeout超时时间
authentication_timeout = 0
#max_pool_count最大链接池,每个代理预先与后端服务器建立起指定数量的最大链接数
max_pool_count = 50

启动

使用命令行:

./frps -c ./frps.ini

接着使用xx.xx.xx.xx:7000访问

输入用户名和密码

admin

password

会出现:

image-20210820161310858

注如果访问不成功的话,看看自己的对应的端口是否打开

设置开机自启

使用systemd

因为Ubuntu17之后使用的是systemd管理,Ubuntu16使用的是rc.local

没有使用下面的命令可以下载

apt-get install systemd
apt-get install systemd-sysv

安装 systemd 之后,在 grub 配置文件中的 kernel 命令行指定下面的参数:

sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash init=/lib/systemd/systemd"

然后重启

sudo reboot

设置

进入解压的目录下:

使用下面命令行

sudo cp frps /usr/local/bin/frps && sudo mkdir /etc/frp && cp frps.ini /etc/frp/frps.ini

复制frps/usr/local/bin/ ,复制frps.ini/etc/frp

编写service文件

==注:== 解压后有个systemd文件夹,里面有官方给的frps.service

sudo vim /usr/lib/systemd/system/frps.service 
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
LimitNOFILE=1048576
TimeoutStartSec=30
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target

启动 frp 并设置开机启动

systemctl enable frps

启动

systemctl start frps

查看状态

systemctl status frps

部分服务器上,可能需要加 .service 后缀来操作,即:

systemctl enable frps.service
systemctl start frps.service
systemctl status frps.service

树莓派端配置

上传frpc文件

image-20210820111840407

配置 frpc.ini

[common]
server_addr = xx.xx.xx.xx
server_port = 7000
privilege_token = 123456
login_fail_exit =  false

[myRaph_pi]
type = tcp
local_ip = 192.168.137.144
local_port = 8000
remote_port = 7389

如果其他配置,请参考模板

模板

[common]
server_addr = xx.xx.xx.xx   #服务器公网IP
server_port = 7000    #frp服务端口,需与frps.ini相同
privilege_token = 123456      #特权模式密钥,需与frps.ini相同

log_file = /bin/frpc.log    #日志文件存储路径
log_level = info    #日志记录级别
log_max_days = 3    #日志最大存储天数
pool_count = 5
tcp_mux = true

[mytest]    #服务名称,可自定义
type = tcp    #协议类型(tcp)
#这个是我树莓派的内网地址,使用127.0.0.1连接错误
local_ip = 192.168.137.144
local_port = 8000    #本地服务端口
remote_port = 7389    #穿透后SSH服务访问端口

#还未使用

[web]    #服务名称,可自定义
type = http    #协议类型(http)
local_ip = 127.0.0.1
local_port = 80    #本地web服务端口
use_encryption = false
use_compression = true
subdomain = web    #二级域名,建议与此项的服务名称"web"设置为相同
custom_domains = web.frp.com    #自定义域名

启动

./frpc -c ./frpc.ini

出现 日志信息,连接成功之类的。

设置开机自启

使用systemd

因为Ubuntu17之后使用的是systemd管理,Ubuntu16使用的是rc.local

没有使用下面的命令可以下载

apt-get install systemd
apt-get install systemd-sysv

安装 systemd 之后,在 grub 配置文件中的 kernel 命令行指定下面的参数:

sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash init=/lib/systemd/systemd"

然后重启

sudo reboot

设置

进入解压的目录下:

使用下面命令行

sudo cp frps /usr/local/bin/frpc && sudo mkdir /etc/frp && cp frpc.ini /etc/frp/frpc.ini

复制frpc/usr/local/bin/ ,复制frpc.ini/etc/frp

编写service文件

==注:== 解压后有个systemd文件夹,里面有官方给的frpc.service

sudo vim /usr/lib/systemd/system/frpc.service 
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Restart=on-failure
RestartSec=5s
TimeoutStartSec=30
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/usr/local/bin/frpc reload -c /etc/frp/frpc.ini
ExecStop=/bin/kill $MAINPID

[Install]

WantedBy=multi-user.target

启动 frp 并设置开机启动

systemctl enable frpc

启动

systemctl start frpc

查看状态

systemctl status frpc

部分服务器上,可能需要加 .service 后缀来操作,即:

systemctl enable frpc.service
systemctl start frpc.service
systemctl status frpc.service

测试

树莓派端 ---python

#  服务器端代码
from socket import *
print ('我是服务端!')
HOST = ''
PORT = 8000
BUFSIZ = 1024


ADDR = (HOST, PORT)  # 创建端口,规定缓冲区大小
s = socket(AF_INET, SOCK_STREAM) # 创建TCP socket对象
s.bind(ADDR)  # 绑定地址
s.listen(4)  # 监听TCP,4代表:操作系统可以挂起(未处理请求时等待状态)的最大连接数量。该值至少为1

while 1:
    print("等待连接...")
    client, addr = s.accept()  # 开始被动接受TCP客户端的连接。
    print ('连接的地址',addr)
    data = client.recv(BUFSIZ*1024).decode()  # 接受TCP数据 decode是由于此处接受bytes而不是 str类型
    print("接收到数据:",data)

    client.close()
s.close()


windows端 ---java

package pojo;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;


public class SocketClient {

    public static void main(String[] args) throws InterruptedException {
        Scanner input = new Scanner(System.in);
        try {
            // 和服务器创建连接   
            Socket socket = new Socket("你的服务器公网ip",7389);
            // 要发送给服务器的信息
            OutputStream os = socket.getOutputStream();
            PrintWriter pw = new PrintWriter(os);
            System.out.println("请输入:");
            String res = input.next();
            pw.write(res);
            pw.flush();
            socket.shutdownOutput();
            os.close();
            pw.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容