小白也能搞定的极空间frp穿透服务
- 极空间内搭建的docker容器服务很多都是用来公网访问的。
- 比较典型的类如: docker搭建的minecraft服务器类 或是 图床和博客之类的网页类
- 这些只在内网访问的话,根本没有实际的意义,肯定是需要公网访问的,
- 但碍于现在 网络服务商禁止给私人用户提供公网ip服务
- 于是穿透就很有必要了,这里推荐使用frp穿透是因为操作简单,成本更低。
- 当然也因为极空间的虚拟机内部用frp也更稳定一些。(例如在极空间内创建虚拟机并搭建雾锁王国服务端的时候)
- 总之frp穿透能让内网的服务通过端口转发到外网上,让内网一些服务可以在外网访问。
接下来正式开始极空间Docker搭建frp穿透服务教程
- frp穿透需要ecs服务器或者轻量服务器,穿透80端口的网页服务需要备案,如果不想备案可以租新加坡或者香港的服务器,国内同样可以访问到。
- 教程里我会使用阿里云的新加坡ecs服务器,2核1G的配置,月租14元,甚至1核1G也行,但很难找到,b站有个推1核2G的月租9元的,但我去的时候没找到,可能是活动价格,其他服务商的也有更便宜的,我见过1美元一个月的,可以paypal工商银行卡支付,但因为害怕服务商跑路没敢用。
- 租用服务器过程就不演示了,
- 需要提醒的一点是,阿里云租国内的服务器和租国外的服务器网页排版样式不一样,但方法都是一样的可以参考。
ECS服务器配置
- 租一个Ecs服务器,性能不需要多高,这里用的是2核1G,系统用的是CentOS。
- Ecs服务器租好后,记下公网ip地址,后面要用到。
- 创建好管理员账户后,记下密码。
- 服务端把需要开放的端口都开放。
- 这里注意的是,需要开放的端口一般都是TCP转发来的,一般用在游戏服务器和一些后台服务类,网页之类的需要使用二级域名走80或443端口。
Frp服务端配置
使用ssh工具进入服务器
- 随便哪款ssh工具都行,看你喜欢哪个用哪个。
- 没有的话可以考虑下面这个
- 这里推荐FinalShell
- 或者使用我备份的破解版
- 接下来使用ssh工具连接服务器。
下载并配置frp
参考这篇文章原文:https://zhuanlan.zhihu.com/p/129076009
接下来的教程和上面链接的原文一样,后期需要修改,如果不懂可以完全照抄,后面再改。
下载
- 这里下载的是0.32.1版,下载慢可以去这里下载http://diannaobos.com/frp/ 或者 github上的release里面下载。
- 说明:此处可以下载后在windows客户端解压最后上传到对应
/usr/local/frp/
文件夹内。也可以完全按教程来敲指令。
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
解压
tar -xvf frp_0.32.1_linux_amd64.tar.gz
移动至 /usr/local
新建个文件夹 :mkdir /usr/local/frp
指令:mv frp_0.32.1_linux_amd64/* /usr/local/frp/
全部移动到 /usr/local/frp 里面
配置systemctl来控制,服务端运行
vim打开文件: vim /usr/lib/systemd/system/frp.service
写入以下内容,注意上文的路径和此处有关。这里是启动的服务端。
说明:此处可在windows端编辑文件并修改后缀,上传至 /usr/lib/systemd/system/
文件夹,也可完全按照教程来敲指令。
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit
[Install]
WantedBy=multi-user.target
题外话,vim的保存退出和强制退出方法
处于编辑模式的话,先按 esc 先退出编辑模式。
原帖没写这个,有人研究了一小时怎么退出编辑模式,我不说是谁。
:w //按【:w】 保存文件
:w! //按【:w!】 文件为只读强制保存文件
:q //按【:q】 离开vi/vim
:q! //按【:q!】 不保存强制离开vi
:wq //按【:wq】 保存后离开
:wq! //按【:wq!】 强制保存后离开
重新加载服务的配置文件 : systemctl daemon-reload
现在就可以用 systemctl 套装来控制 frp 了。
启动/停止/重启,查看状态,设置开机自启/关闭开机自启:
systemctl start frp
systemctl stop frp
systemctl restart frp
systemctl status frp
systemctl enable frp
systemctl disable frp
具体配置
参考文章:frp实现内网穿透(centos7) 服务端 frps.ini, 客户端 frpc.ini
服务端
[common] 必须设置
bind_port 是自己设定的frp服务端端口
vhost_http_port 是自己设定的http访问端口
[ssh] ssh反向代理(不是必须设置)
listen_port 是自己设定的ssh访问端口
auth_token用于身份认证(以下皆是)。
[web] http反向代理[]里的内容可以自己设定,但是客户端和服务端必须要对应(如[aaa],[bbb]);
type 为服务类型,可以设为http,https
custom_domains为要映射的域名,记得域名的A记录要解析到外网主机的IP。
[web2]同上(可设置多个)
[common]
bind_port = 7000
vhost_http_port = 80
[ssh]
listen_port = 6000
auth_token = 123
[web]
type = http
custom_domains = test1.a.com
auth_token = 123
[web2]
type = http
custom_domains = test2.a.com
auth_token = 123
客户端
[common]必填
server_addrfrp服务端的ip(也就是外网主机的IP)
server_portfrp服务端的bind_prot。
[ssh]
local_port客户端ssh端口。
[web]
type对应服务端配置
local_port客户端访问端口。
[web2]同上
示例
[common]
server_addr = 10.10.10.10
server_port = 7000
auth_token = 123
[ssh]
local_port = 22
[web]
type = http
local_port = 80
[web2]
type = http
local_port = 8080
直接运行服务端效果
服务端最后
- 出现上面提示就是启动成功了,后面即使修改也是修改配置文件不需要频繁ssh敲指令了。
- 服务端修改配置文件后,需要敲
systemctl restart frp
指令来重启frp服务才有效果。 - 如果你是完全按照上面的frp配置方法来的,接下来需要修改服务端和客户端配置文件。
/usr/local/frp/frps.ini
双击打开frps.ini
将配置文件内容修改为
[common]
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
auth_token = 123 //(密钥数字记得改掉,复制后“//”后的提示符记得全部删除)
[ssh]
listen_port = 6000
auth_token = 123 //(密钥数字记得改掉,复制后“//”后的提示符记得全部删除)
看起来很短但足够用了。
因为客户端的配置才是重头戏,客户端连接服务端后,会自动生成对应的连接,此版本服务端并不需要配置。
最后再重启以下服务端的frps服务来加载配置文件 systemctl daemon-reload
以上,服务端就配置完成了。
- 将
frpc
开头的三个文件下载下来,后面要用。
Frp客户端配置
本教程内客户端即frpc的Docker容器。
这里我使用的第二个办法,下载最新后替换。
拉取frpc镜像
在极空间docker内:选择 左边栏“镜像” - 上边“仓库” - 右边“自定义拉取” - 输入 oldiy/frpc:latest
后点击拉取
docker pull oldiy/frpc:latest
部署frpc镜像
- 在极空间个人空间,文件里找个合适的地方
新建一个用来存放frpc客户端配置文件的文件夹
往后称之为frpc文件夹 - 将刚刚从ssh内拷贝出来的三个
frpc开头的文件拷贝到到极空间
内的frp客户端文件夹内 - 本地镜像里,先择下载好的镜像
oldiy/frpc:latest
,点击上面的添加到容器 - 修改个顺眼的名称,打开
开机自启动
。 - 文件夹路径里,选中/frp规则,点上方编辑,选择刚新建的文件夹。
- 文件夹路径内规则,需要添加一条
/frp/frpc.ini
,选中点击编辑,选择刚刚文件夹内的frpc.ini文件,这条对应的注意一定要选中对应的frpc.ini文件才可以生效,否则会新建一个对应名称的文件夹。详情看下面的图片。 - 网络,点击更改,
修改为host
,这样就不需要单独配置一堆端口放行了,但需要注意的是,上级路由器防火墙需要单独配置
,防止被攻击。 - 命令栏里,勾选
-it
,即 interactive & ttc(-i-t) 能力栏里全勾上
,防止报错。- 最后点击应用 (部署容器)
修改配置文件
找到刚刚的文件夹内的frpc.ini文件双击打开
格式
[common]
server_addr = 你的服务端公网ip
server_port = 7000
auth_token = 123 //服务端配置文件内填写的密钥
[http_web]
type = http
local_ip = 127.0.0.1
local_port = 1234 //网页内网端口
custom_domains = 域名
[https_web]
type = https
local_ip = 127.0.0.1
local_port = 1234 //网页内网端口
custom_domains = 域名
plugin = https2http
plugin_local_addr = 127.0.0.1:1234 //网页内网端口
plugin_host_header_rewrite = 域名
plugin_crt_path = /frp/xxx.crt //你的crt密钥文件地址
plugin_key_path = /frp/xxx.key //你的key密钥文件地址
plugin_header_X-From_Where = frp //https修复错位(实测用处不大)
force_https = true //强制https
[MC12]
type = tcp //tcp写法 只要填写本地和服务端对外端口即可,比如这条就是minecraft服务器的穿透写法。
local_ip = 127.0.0.1
local_port = 25565 //本地端口
remote_port = 2024 //对外端口 (复制后“//”后的提示文字记得全部都删除掉)
说明
plugin_crt_path = /frp/xxx.crt //你的crt密钥文件地址
plugin_key_path = /frp/xxx.key //你的key密钥文件地址
- 这两条,是
ssl证书签名
存放的地址,将证书文件丢在 "frpc文件夹" 根目录内,填写对应的文件名即可 - 文件地址最前面的
/frp
是容器内的地址,对应 之前新建的 "frpc文件夹" 。 如果丢在 "frpc文件夹" 内的是文件夹,在 /frp 后接上对应文件夹内地址即可。
证书获取和部署等,详情请参考 极空间搭建typecho博客 这篇文章。
评论 (0)