「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。
前言
事情是这样的,最近各种云服务厂商都在搞活动卖云服务器,然后呢有个朋友就想和我搭伙买一个,只需要给他开一个内网穿透的端口然后AA,我心想这么好的事情那咱得干啊,说干咱就干啊。
首先内网穿透的目的就是为了让别人请求拥有公网IP的服务器某个端口时,转发到我们没有公网IP的服务器上,大致的流程如下:
正文
这里采用frp进行内网穿透,原理和一些理论东西就不说了,可以移步查看官方文档 gofrp.org
文章使用的环境:
一个拥有公网ip的服务器 作为服务端(CentOS 8)
一个本地的服务器 作为客户端(CentOS 8)
开始配置
下载frp
服务端和客户端 下载frp(这里用的是0.22.0,现在最新版已经到0.38.0了,如果使用其它版本把下面链接所有的22修改成对应版本号就可以了,配置的方式都大同小异)
`wget 修改配置文件 frps.ini vim frps.ini 添加以下信息 [common] bind_addr = 0.0.0.0 bind_port = 7000 dashboard_port = 7500 privilege_token = 自定义的token,用于客户端验证使用 dashboard_user = admin dashboard_pwd = admin
服务端详细配置信息参数的说明看官方文档:gofrp.org/docs/refere…
启动服务端 # 启动 ./frps -c frps.ini # 后台运行 nohup ./frps -c frps.ini >/dev/null 2>&1 & github.com/fatedier/fr…
解压
下载完之后会是一个压缩包解压一下:
tart -zxvf frp_0.22.0_linux_amd64.tar.gz
这里有两个主要关注的文件:frpc.ini 和 frps.ini 前者是客户端配置,后者是服务端配置 客户端不需要 frps.ini 和 frps 文件,可以直接删除 服务端不需要 frpc.ini 和 frpc 文件,可以直接删除
配置服务端(具有公网ip的服务器)
修改配置文件 frps.ini
vim frps.ini
添加以下信息
[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_port = 7500
privilege_token = 自定义的token,用于客户端验证使用
dashboard_user = admin
dashboard_pwd = admin
复制代码
服务端详细配置信息参数的说明看官方文档:gofrp.org/docs/refere…
启动服务端
# 启动
./frps -c frps.ini
# 后台运行
nohup ./frps -c frps.ini >/dev/null 2>&1 &
复制代码
配置客户端(本地服务器)
修改配置文件
frpc.ini
vim frpc.ini
添加以下信息
[common]
server_addr = 服务端公网ip
server_port = 7000
privilege_token = 自定义的token,和服务端设置保持一致
[http]
type = tcp
local_port = 本地提供服务的端口,比如8080
local_ip = 127.0.0.1
remote_port = 服务端转发的端口,比如8081
复制代码
服务端详细配置信息参数的说明看官方文档:gofrp.org/docs/refere…
注意:这样配置就是把具有公网ip的服务器8081端口转发到本地服务器的8080端口,当别人访问公网ip服务的8081端口真正处理请求的是本地服务器的8080端口。
可能遇到的问题
login to server failed: authorization failed
解决办法:
1、查看客户端和服务端token是否一致
2、查看客户端和服务端是否都是使用的 privilege_token 或者 token,有遇到过服务端使用 token ,客户端使用 privilege_token ,客户端和服务端需要保持一致
[W] [control.go:332] [2fdf3d977a8855c9] new proxy [http] error: port unavailable
解决办法:vhost_http_port不用写,因为客户端已经监听了10101的端口,服务端再监听就无效了