linux云服务器搭建frp代理http内网穿透(服务端客户端都不需要域名)

1 服务端和客户端都先安装go

# 查看go版本,如果没有,安装go
go version 
1.1 离线安装
arch # 查看内核版本,注x86_64,x64,AMD64基本上是同一个东西

go官网下载相应版本的tar包: https://golang.org/dl/

mkdir /usr/local/go

cd /usr/local/go # 将tar上传到此目录

tar -C /usr/local/ -xzf go1.17.8.linux-amd64.tar.gz # 解压上传的tar包

最后配置环境变量

vi /etc/profile

# 在最后一行添加
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

# 保存退出后source一下(vim 的使用方法可以自己搜索一下)
source /etc/profile

# 测试一下能看到版本号
go version
1.2 在线安装
mkdir /usr/local/go
cd /usr/local/go

wget https://dl.google.com/go/go1.17.8.linux-amd64.tar.gz

tar -C /usr/local/ -xzf go1.17.8.linux-amd64.tar.gz

最后配置环境变量

vi /etc/profile

# 在最后一行添加
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

# 保存退出后source一下(vim 的使用方法可以自己搜索一下)
source /etc/profile

# 测试一下能看到版本号
go version

2 搭建简单frp

首先需要一台云服务器作为服务端,云服务器的购买和使用请先自行百度。

服务端和客户端都需要安装go并下载frp解压。

frp项目地址: https://github.com/fatedier/frp
frp项目github页面
点击红框位置版本号,进去之后选择适合自己的版本。服务端和客户端都需要

mkdir /usr/local/frp

cd /usr/local/frp # 上传frp的tar包到你创建的路径

tar -zxvf frp_0.38.0_linux_amd64.tar.gz # 解压

# 进入该路径,需要关注frps、frpc、frps.ini、frpc.ini四个文件(服务端用frps,客户端用frpc)
cd frp_0.38.0_linux_amd64/
2.1 服务端配置frps.ini

云服务器记得开放7000(bind_port),7001(vhost_http_port)端口

vi frps.ini
[common]
bind_port = 7000
vhost_http_port = 7001
# 直接nohup启动
nohup ./frps -c ./frps.ini & > nohup.out | tail -f nohup.out

看到这样的日志,则表示服务端正常启动。如果失败,请检查配置文件

在这里插入图片描述

2.2 服务端配置frpc.ini

确保客户端telnet server_addr 7000/7001(bind_port/vhost_http_port)这两个端口能通。

vi frps.ini
[common]
server_addr = aaa.bbb.ccc.ddd
server_port = 7000

[web]
type = http
# 内网客户端的服务端口
local_port = 9999
# 服务端有域名,则在服务端配置subdomain,这个网上挺多的,就不写了。
# 没有域名就写云服务器的外网IP也是可以的。
custom_domains = aaa.bbb.ccc.ddd 
# 测试启动
./frpc -c ./frpc.ini

看到这样的日志则表示客户端正常启动。如果失败,请检查配置文件或者telnet。
在这里插入图片描述

2.3 测试是否成功穿透内网

访问http://aaa.bbb.ccc.ddd:7001/xxx,内网服务地址能够访问。

3 更加正式的配置

3.1 服务端配置
[common]
# tcp代理端口
bind_port = 7000

# http代理端口
vhost_http_port = 7001

# 控制台相关
dashboard_port = 7002
dashboard_user = admin
dashboard_pwd = admin

# 连接池最大连接数
max_pool_count = 10

# 日志相关(由于要nohup启动,直接查看nohup.out,就不额外生成文件了)
#log_file = ./log/frps.log
#log_level = info
#log_max_days = 3

# 服务端和客户端连接的token
token = xwkQWERTYUIOP0987654321mnbvcxzDHSAUdsuadshfasu

直接nohup启动即可。正常启动日志和测试一样。

3.2 客户端配置
[common]
server_addr = aaa.bbb.ccc.ddd
server_port = 7000

# 需要跟服务端配置的一致
token = xwkQWERTYUIOP0987654321mnbvcxzDHSAUdsuadshfasu

user = xwk

[web]
type = http
local_port = 9999
custom_domains = aaa.bbb.ccc.ddd

直接nohup启动即可。正常启动日志和测试一样。

3.3 再次测试穿透服务

仍然访问http://aaa.bbb.ccc.ddd:7001/xxx,内网服务地址能够正常访问。

附:frp官方文档地址

frp官方github地址: https://github.com/fatedier/frp

其实就是项目的README.md,可以查看英文和中文文档。

另外,也可以看看这篇博客:
https://blog.csdn.net/u011447403/article/details/126270408

附:frp配置文件详解

frps.ini
[common]                        # 通用配置段
bind_addr = 0.0.0.0             # 绑定的IP地址,支持IPv6,不指定默认0.0.0.0;
bind_port = 7000                # 服务端口;
bind_udp_port = 7001            # 是否使用udp端口,不使用删除或注释本行;
kcp_bind_port = 7000            # 是否使用kcp协议,不使用删除或注释本行;
# proxy_bind_addr = 127.0.0.1   # 代理监听地址,默认和bind_addr相同;

# 虚拟主机
vhost_http_port = 80            # 是否启用虚拟主机,端口可以和bind_port相同;
vhost_https_port = 443
vhost_http_timeout = 60         # 后端虚拟主机响应超时时间,默认为60s;

# 开启frps仪表盘可以检查frp的状态和代理的统计信息。
dashboard_addr = 0.0.0.0        # frps仪表盘绑定的地址;
dashboard_port = 7500           # frps仪表盘绑定的端口;
dashboard_user = admin          # 访问frps仪表盘的用户;     
dashboard_pwd = admin           # 密码;
assets_dir = ./static           # 仪表盘页面文件目录,只适用于调试;

# 日志配置文件
log_file = ./frps.log           # 日志文件,不指定日志信息默认输出到控制台;
log_level = info                # 日志等级,可用等级“trace, debug, info, warn, error”;
log_max_days = 3                # 日志保存最大保存时间;

token = 12345678                # 客户端与服务端通信的身份验证令牌

heartbeat_timeout = 90          # 心跳检测超时时间,不建议修改默认配置,默认值为90;?

# 指定允许客户端使用的端口范围,未指定则没有限制;
allow_ports = 2000-3000,3001,3003,4000-50000

max_pool_count = 5              # 每个客户端连接服务端的最大连接数;
max_ports_per_client = 0        # 每个客户端最大可以使用的端口,0表示无限制

authentication_timeout = 900    # 客户端连接超时时间(秒),默认为900s;

subdomain_host = frps.com       # 自定义子域名,需要在dns中将域名解析为泛域名;

tcp_mux = true                  # 是否使用tcp复用,默认为true;
                                # frp只对同意客户端的连接进行复用;

frpc.ini
[common]                        # 通用配置段

server_addr = 0.0.0.0           # server的IP地址;支持IPv6
server_port = 7000              # server的端口;

# 如果要通过http或socks5代理连接frps,可以在此处或在全局环境变量中设置代理,只支持tcp协议;
# http_proxy = http://user:passwd@192.168.1.128:8080
# http_proxy = socks5://user:passwd@192.168.1.128:1080

# 客户端日志
log_file = ./frpc.log       # 指定日志文件;
log_level = info            # 指定日志等级;
log_max_days = 3

token = 12345678            # 客户端与服务端通信的身份验证令牌

# 设置管理地址,用于通过http api控制frpc的动作,如重新加载;
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_passwd = admin

pool_count = 5              # 初始连接池的数量,默认为0;

tcp_mux = true              # 是否启用tcp复用,默认为true;

user = your_name            # frpc的用户名,用于区别不用frpc的代理;

login_fail_exit = true      # 首次登录失败时退出程序,否则连续重新登录到frps;

protocol = tcp              # 用于连接服务器的协议,支持tcp、kcp、websocket;

dns_server = 8.8.8.8        # 为frp 客户端指定一个单独的DNS服务器;

# start = ssh,dns           # 要启用的代理的名字,默认为空表示所有代理;

# 心跳检查
# heartbeat_interval = 30   # 失败重试次数
# heartbeat_timeout = 90    # 超时时间

# 配置示例
[ssh]                       # 代理配置段名称,如果配置user=your_name,则显示为your_name.ssh;
type = tcp                  # 协议默认tcp,可选tcp,udp,http,https,stcp,xtcp;
local_ip = 127.0.0.1        # 本地地址
local_port = 22             # 本地端口
use_encryption = false      # 是否加密服务端和客户端的通信信息,默认为不加密;
use_compression = false     # 是否开启压缩,默认不开启;
remote_port = 6001          # 在服务器端开启的远程端口;
# 负载均衡配置
group = test_group          # 负载均衡组名,会将同一组内的客户端进行负载;
group_key = 123456          # 负载均衡组密钥; 
# web示例
[web01]
type = http                 # 使用http
local_ip = 127.0.0.1        
local_port = 80
use_encryption = false
use_compression = true
http_user = admin           # 访问web01页面启用认证,用户名admin
http_pwd = admin            # 密码
subdomain = web01           # 子域名,需要服务端配置了subdomain_host参数;
custom_domains = web02.example.com # web01的域名,和subdomain二选一
locations = /,/pic          # 指定用于路由的URL前缀;
host_header_rewrite = example.com   # 配置http包头域名重写;
header_X-From-Where = frp           # 添加包头信息X-From-Where: frp;

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值