前言

介于在阿里云购买的两台云服务器在今年就要相继到期了,续费又特别贵,所以决定再购买一台作为日常使用。
看了不少服务商的价格后,其实跟阿里云的优惠价差不多,又因为域名备案在阿里云服务器上,更换也比较麻烦。
所以最终决定在服务器最终到期之前在阿里云想办法趁活动再买一台作为域名挂靠,只需要最低配置即可,同时此服务器要作为Frps来为下一个主力机提供内网穿透服务。
是的,我决定买一台机器放到家里。

服务器是昨天到的,没有WIFI,插上电源适配器和网线直接可以正常运行了,跟客服要了默认ssh账号密码后很顺利的连接了上去(预装的centos)。

产品参数.png

基础环境就直接用宝塔来装了,如mysql、nginx、redis等

没有公网ip,虽说上海联通比较好要,但架不住我比较害羞啊,就直接整内网穿透好了。

开整

frp项目地址:https://github.com/fatedier/frp
frp中文文档地址:https://gofrp.org/docs/

首先在有公网的服务器上下载frps(服务端),内网服务器下载frpc(客户端)
其实frps和frpc被打包进了同一个文件里,截止目前最新版v0.37.0
下载前最好先看下自己的系统到底是arm还是x86(我一个x86试了多次arm64的,一个劲的报错)
查看命令:uname -a
分别在服务器上下载:wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_386.tar.gz
注意:386这个就是x86
解压到你需要的目录,我的一般放在/usr/local下,比如我就直接在这个目录下下载的,所以解压时就不用移动了
解压:tar -zxvf frp_0.37.0_linux_386.tar.gz

进入解压后的文件夹,依照文档给出的第一个连接ssh的例子,frps可不更改配置直接启动即可(最好是自行查看下配置)./frps -c ./frps.ini

frps启动后在内网服务器上配置frpc
下载解压同上
进入目录后修改配置文件 vi frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

local_iplocal_port 配置为本地需要暴露到公网的服务地址和端口。remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。ssh连接在服务端是默认6000,并不是你没配置。
通过 SSH 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

上诉例子frp文档内更多且更详细,查看文档即可。
测试成功后就可以来测试内网搭建web服务通过frp暴露到公网来了。

部署web服务准备

1、首先你可以解析个渔民到你有公网ip的服务器上
例如解析:*.frp.jsls9.top 都行,泛解析方便用而已。
2、确认你之后是否需要使用80端口访问web服务器(我觉得这是毋庸置疑的)
3、确认frps那台服务器上是否部署了nginx且监听了80端口(如果没有使用ngxin仅用来部署frps可以忽略下面第一个)

frps和nginx公用

本次测试的服务器我还是在运行项目的,所以自然会有ngixn,为了时frps和nginx可以“公用”80端口,需要修改配置

server {
  listen 80; 
  server_name *.frp.jsls9.top test.frp.jsls9.top bt.frp.jsls9.top; 
  location / { 
    proxy_pass http://127.0.0.1:8088; #这里用8088是因为我frps上穿透web服务用了这个端口
    proxy_redirect http://$host/ http://$http_host/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
  } 
  
}  

这个配置就相当于把*.frp.jsls9.top 80端口转发到本地8088端口上。

frps配置

[common]
bind_port = 7000
#web服务http公网代理端口,其实就是访问公网的这个端口代理到frpc指定端口
vhost_http_port = 8088

frpc配置

[common]
server_addr = 39.105.187.xxx
server_port = 7000

[ssh]
type = tcp
local_ip = 192.168.0.118
local_port = 22
remote_port = 6000

[web]
type = http
local_port = 80
custom_domains = bt.frp.jsls9.top,test.frp.jsls9.top,*.frp.jsls9.top

分别启动frps和frpc

#启动frps
./frps -c ./frps.ini
#启动frpc
./frpc -c ./frpc.ini

效果

访问:http://test.frp.jsls9.top/ (例子,随时不能访问,看效果就行)
效果.png

frp开机自启

#首先编辑frps服务文件
vi /etc/systemd/system/frps.service

# 服务文件内容start
[Unit]
Description=frps
After=network.target

[Service]
ExecStart=/usr/local/frp_0.37.0_linux_386/frps -c /usr/local/frp_0.37.0_linux_386/frps.ini

[Install]
WantedBy=multi-user.target

# 服务文件内容end

#刷新服务列表:
systemctl daemon-reload


#相关命令,注意有些服务器需要systemctl stop frp.service
# frpc同frps

#设置开机自启
systemctl enable frpc
#关闭开机自启
systemctl disable frpc

#启动服务
systemctl start frpc
#停止服务
systemctl stop frps

结语

自此,frp内网穿透实践结束,作为折腾路上的一小步,以此留档。

文章目录