IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Frp---树莓派4B内网穿透 -> 正文阅读

[网络协议]Frp---树莓派4B内网穿透

Frp—树莓派4B内网穿透

吐槽一下:花生壳真tm 垃圾。啊~,舒服多了。

前言

开源免费,轻量级,很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();
        }
    }

}
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:50:08  更:2021-08-22 13:51:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 19:49:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码