mac和centos编译部署frp实现http内网穿透

本文详细介绍了如何在Linux和Mac环境下安装Go语言并编译frp内网穿透软件,包括配置服务端和客户端的具体步骤,以及注意事项,如网络访问、防火墙设置等。

环境要求:

linux : gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
mac : Apple LLVM version 10.0.0 (clang-1000.11.45.5)


第一步:安装Go
1. 都是使用第三方的包管理工具进行安装,centos使用yum安装,mac使用brew安装
2. 安装命令:
  • centos:yum install -y go
  • mac:brew install go
3. 注意点:如果使用yum安装速度很慢的话,可以使用国内的下载源进行加速,具体操作如下:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

第二步:编译frp,mac和linux操作相同
1. 从github上拉取源码git clone https://github.com/fatedier/frp.git
2. 进入目录,使用make 进行编译
3. 注意点:在编译的过程中go会下载第三方的库,这个时候如果你的网访问不了要下载的库的网址的话,make会失败。解决方法如下:
export GO111MODULE=on
export GOPROXY=https://goproxy.io

第三步:配置frp

编译成功之后,可以发现make的目录下多了一个bin文件夹,进入其中可以看到如下文件,其中frpc是客户端(client),frps是服务器端(server)

-rwxr-xr-x 1 root root 12586997 3月  13 19:17 frpc
-rwxr-xr-x 1 root root 13420350 3月  13 19:17 frps

这里是要将mac上的8080端口暴露到外网上,因此借助云主机centos当服务端来进行操作。

服务端配置

在bin目录下新建一份frps.ini文件,并写入以下内容,具体配置文件可以去frp的github项目查看

[common]
#frp服务器监听地址,如果是IPV6地址必须用中括号包围
bind_addr = 0.0.0.0
#frp服务器监听端口
bind_port = 7000
#kcp的udp监听端口,如果不设那就不启用
#kcp_bind_port = 7000
#指定使用的协议,默认tcp,可选kcp
#protocol = kcp
#如果要使用vitual host,就必须设置
vhost_https_port = 4430
vhost_http_port=800
privilege_mode = false
#Web后台监听端口
dashboard_port = 7777

#Web后台的用户名和密码
dashboard_user = xxx
dashboard_pwd = xxx

#Web后台的静态资源目录,调试用的,一般不设
#assets_dir = ./static

#日志输出,可以设置为具体的日志文件或者console
log_file = ./frps.log

#日志记录等级,有trace, debug, info, warn, error
log_level = debug
#日志保留时间
log_max_days = 3

#启用特权模式,从v0.10.0版本开始默认启用特权模式,且目前只能使用特权模式
#privilege_mode = true
#特权模式Token,请尽量长点且复杂
privilege_token = 12345678
#特权模式允许分配的端口范围
#privilege_allow_ports = 2000-3000,3001,3003,4000-50000
#心超时,不用改
#heartbeat_timeout = 90
#每个代理可以设置的连接池上限
#max_pool_count = 5
#认证超时时间,一般不用改
#authentication_timeout = 900
#如果配置了这个,当你的模式为http或https时,就能设置子域名subdomain
subdomain_host = 
#是否启用tcp多路复用,默认就是true,不用管
#tcp_mux = true

实际上也不用像上面配置那么多,只需要选取最上面几个配置即可,这里只是贴一下完整配置

启动 ./frps -c frps.ini

客户端配置

在bin目录下新建一份frpc.ini文件,并写入以下内容,具体配置文件可以去frp的github项目查看

[common]
server_addr = madongyu.ml
server_port = 7000
#if you want to connect frps by http proxy or socks5 proxy, you can set http_proxy here or in global environment variables
# it only works when protocol is tcp
# http_proxy = http://user:passwd@192.168.1.128:8080
# http_proxy = socks5://user:passwd@192.168.1.128:1080
# console or real logFile path like ./frpc.log
#log_file = ./frpc.log
# trace, debug, info, warn, error
log_level = debug
#log_max_days = 3
#启用压缩
use_compression = true
# for authentication
privilege_token = 12345678
#无法使用
#token = 12345678

#http代理
[HTTP]
type = http
local_ip = 127.0.0.1
local_port = 8080
#自己的域名
custom_domains = xxxx
remote_port = 800

启动 ./frpc -c frpc.ini

注意点: 记得配置好防火墙,否则代理会失败,域名没有备案的话无法使用http进行访问,而使用https的话需要拥有证书,不然代理会出错。。。

### 配置FRP内网穿透 #### 准备工作 为了在CentOS上成功配置FRP进行内网穿透,需先完成几个准备工作。确保已获取外网VPS服务器并安装好操作系统;同时准备好需要访问的内网主机及其对应的端口服务[^1]。 #### 下载与解压FRP软件包 前往官方GitHub页面下载最新版本的FRP压缩文件至本地计算机或直接在外网服务器执行wget命令下载。接着通过`tar -zxvf frp_*.tar.gz`来解压该文件到指定目录下[^3]。 #### 安装依赖项 对于CentOS环境而言,在正式操作前还需确认已经安装了一些必要的工具库,比如Git、GCC编译器等。可以通过yum源快速解决这些前置条件: ```bash sudo yum update && sudo yum install git gcc make wget tar unzip -y ``` #### 编辑配置文件 进入刚刚创建好的frp文件夹路径中找到两个重要的配置文档:一个是用于服务端(`frps.ini`)另一个则是客户端(`frpc.ini`)。按照实际需求修改其中的各项参数以适应具体应用场景的要求。 - **服务端配置 (`frps.ini`)**: ```ini [common] bind_port = 7000 dashboard_addr = 127.0.0.1 dashboard_port = 7500 ``` - **客户端配置 (`frpc.ini`)** : ```ini [common] server_addr = x.x.x.x ; 外网IP地址 server_port = 7000 ; 对应上面的服务端监听端口号 [ssh] type = tcp local_ip = 127.0.0.1 ; 内网机器本机ip local_port = 22 ; 被转发的目标程序所占用的端口(这里指SSH) remote_port = 6000 ; 映射后的远程可连接端口 ``` 以上仅为最基础示例,请根据实际情况调整各项设置值。 #### 启动FRP进程 当所有前期准备都完成后就可以分别在外网服务器以及目标内网设备上启动相应的FRP组件了。使用如下命令可以轻松做到这一点: - **启动服务端 (外网 VPS 上)** : ```bash nohup ./frps -c ./frps.ini & ``` - **启动客户端 (内网 PC 或其他设备)** : ```bash nohup ./frpc -c ./frpc.ini & ``` 此时应该能够正常建立隧道链接关系从而实现内外网络之间的安全通信通道构建目的。 #### 设置开机自启 为了让系统重启之后仍然保持此功能有效,则有必要将其加入到系统的初始化脚本当中去。针对不同Linux发行版有不同的方法处理这个问题,在这里是基于Systemd机制下的解决方案适用于较新版本的操作系统如CentOS 7及以上版本。 创建一个新的service单元定义文件位于/etc/systemd/system/目录下面命名为`frps.service`(对应于服务端)或者`frpc.service`(对应于客户端),其内容结构大致如下所示: - **服务端 service 文件** : ```ini [Unit] Description=FRP Server Service After=syslog.target network-online.target [Service] Type=simple ExecStart=/path/to/frps -c /path/to/frps.ini Restart=on-failure [Install] WantedBy=multi-user.target ``` - **客户端 service 文件** : ```ini [Unit] Description=FRP Client Service After=syslog.target network-online.target [Service] Type=simple ExecStart=/path/to/frpc -c /path/to/frpc.ini Restart=on-failure [Install] WantedBy=multi-user.target ``` 最后记得刷新daemon加载新的unit文件,并启用相应服务以便下次开机会自动运行它们。 ```bash sudo systemctl daemon-reload sudo systemctl enable frps || sudo systemctl enable frpc ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值