0x00 写在前面
作为我写的第一篇教程,我还是想说点什么。刚开始学代码及linux运维,起初只是因为想映射mc服务器,在不断的摸索之中,碰了很多壁,也花了非常多冤枉钱,这是一篇萌新向的教程,我不希望我一路摸索以来的种种挫折重现在其他人身上。就这样。
0x01 内网穿透适用范围
谁需要内网穿透
- 在家建立Minecraft/泰拉瑞亚等联机游戏服务器而没有公网ip
- 在家建立网站而没有公网ip
- 建立私有NAS网盘
- 家中有监控或其他通过局域网链接的智能家居
- 服务器没有公网IP但却需要外部访问(包括TCP/UDP/HTTP/HTTPS)
关于什么是公网ip,请自行百度。
谁不适合内网穿透
- 企业用户请慎重考虑使用,点击查看前车之鉴
0x02 准备工作
- 服务端已准备就绪
- 一台有公网ip的服务器,可以是VM
- 安装screen
1.服务端的准备
首先要做的准备好需要映射的服务,并提前知道该服务占用的端口。比如,Web站点一般来说需要IIS、nginx部分需要php或者mysql等环境,一般占用端口为80和443,而Minecraft Java版则是25565端口,SSH为22端口,Win的远控为3389端口……提前确保已搭建好服务将会使事半功倍。
2.一台有公网ip的服务器
内网穿透并不代表可以完全脱离公网ip,只是把接受外部请求的任务交给了另一台服务器。这里就需要一台有公网ip的服务器来完成这个任务。对不同的需求我们需要在不同地区不同配置的服务器,这里我针对几个常用服务来推荐一些我用过的服务器。
(1)游戏等一般服务,以及已备案网站
对于这一类对延迟要求低,丢包率要求低的服务,建议使用国内服务器映射。由于一些原因,海外的站点不是延迟大就是丢包率高,通常不能带来良好的使用体验。
- 阿里云(学生优惠)
- 腾讯云(学生优惠)
- Azure国内版(价格较低)
(2)搭建网站
对于搭建网站,没有备案的域名是不可以使用国内ip建站的,机房将会自动拦截未备案站点的流量,没有备案的站点我推荐使用海外节点。
- Vultr(稳定低价,详见下面建议)
鉴于本人现在正在使用Vultr VPS,所以接下来就以Vultr VPS(CentOS 8)作为演示。
3.安装screen
输入以下指令在线安装screen(若失败请更换yum源或用编译安装,具体请百度)
[root@Vultr ~]# yum install screen
0x03 frps端的配置
鉴于frp作者已近在Github上给出Wiki,大家可以去Github支持作者,这里放出链接:README
请在有公网ip的服务器上进行以下操作。
1.获取releases
下载文件并解压(目前最新版为0.33.0),若其他系统、版本清前往Github下载
[root@Vultr ~]# curl -O https://cdn.ussjackdaw.com/frp_0.33.0_linux_amd64.tar.gz
[root@Vultr ~]# tar -zxvf frp_0.33.0_linux_amd64.tar.gz
[root@Vultr ~]# rm -rf frp_0.33.0_linux_amd64.tar.gz
[root@Vultr ~]# cd frp_0.33.0_linux_amd64
2.配置文件
打开配置文件
[root@Vultr frp_0.33.0_linux_amd64]# vim frps.ini
把原内容更换为下列内容,其中验证口令请自行修改
[common]
#frps端口
bind_port = 7000
#开启客户端口令验证
authenticate_new_work_conns = true
authenticate_heartbeats = false
authentication_method = token
#自定义验证口令
token = yourowntoken
#HTTP/HTTPS端口
vhost_http_port = 80
vhost_https_port = 443
按ESC后按Shift+Z+Z保存并退出
3.保持运行
在screen运行frps
[root@Vultr frp_0.33.0_linux_amd64]# screen -S frp
[root@Vultr frp_0.33.0_linux_amd64]# ./frps -c ./frps.ini
按Ctrl+A+D即可退出screen并保持运行
screen的其他命令请自行百度
4.开放防火墙和安全组相关节点
[root@Vultr ~]# systemctl disable firewalld
对Vultr来说,安全组默认所有端口开放,其他服务商请自行百度
0x04 frpc端的配置
鉴于frp作者已近在Github上给出Wiki,大家可以去Github支持作者,这里放出链接:README
请在需要穿透服务的机器上进行以下操作,这里以Win作为演示。
1.下载并解压frpc客户端
https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_windows_amd64.zip
2.配置文件
用支持UTF-8的文本编辑器(如NotePad++)打开frpc.ini
把原内容更换为以下内容,其中ip请填写frps的公网ip,验证口令请填写上面的口令
[common]
#frps公网ip
server_addr = 192.168.1.1
#frps端口,保持一致
server_port = 7000
#frps验证方式,保持一致
authenticate_new_work_conns = true
authenticate_heartbeats = false
authentication_method = token
#自定义口令,保持一致
token = yourowntoken
接下来是自定义映射配置,添加到以上配置的下面
(1)TCP映射
如Minecraft、Win远控等服务使用TCP映射时,在配置文件下面添加以下内容(映射一个端口添加一段)
#自定义名称,可以用下滑线和数字,不能用中文
[Minecraft]
type = tcp
#本地服务端口
local_port = 25565
#远程服务端口
remote_port = 25565
(2)UDP映射
如CSGO、Teamspeak等服务使用UDP映射时,在配置文件下面添加以下内容(映射一个端口添加一段)
#自定义名称,可以用下滑线和数字,不能用中文
[Teamspeak]
type = udp
#本地服务端口
local_port = 9987
#远程服务端口
remote_port = 9987
(3)http/https映射
使用frp建站时,请使用该映射配置(多个站点请填写多个)
#定义名称
[web]
#映射类型,请填写http或https
type = http
#本地Web端口
local_port = 80
#绑定域名,填写自己的域名
custom_domains = www.yourdomain.com
并将您的域名解析到frps服务器(如何解析请百度)
欲了解更多映射类型和配置文件,可以参照frpc_full.ini或者前往frp的Github了解详情。
3.启动frpc并保持
在frpc根目录下创建start.txt并填写
frpc.exe -c ./frpc.ini
pause
把start.txt更名为start.bat并双击启动
这样一来frp就算彻底建好了,tcp/udp链接请用ip:远程端口链接,http/https请直接用域名访问。
0x05 一些建议
1.关于服务器选购
海外节点个人推荐Vultr
- 每月最低2.5刀
- 大带宽大流量
- 稳定便捷
2.关于免费的frp服务
对于国内而言,带宽费用实在太高,穿透游戏成本高昂,在这里推荐大家使用免费的frp服务——sakura frp(请勿滥用)
- 永久免费
- 多个节点
- 点击了解详情
不懂的地方,或者其他问题可以在评论区留言,或通过邮箱联系i@wdr.im