0x00 写在前面

作为我写的第一篇教程,我还是想说点什么。刚开始学代码及linux运维,起初只是因为想映射mc服务器,在不断的摸索之中,碰了很多壁,也花了非常多冤枉钱,这是一篇萌新向的教程,我不希望我一路摸索以来的种种挫折重现在其他人身上。就这样。


0x01 内网穿透适用范围

谁需要内网穿透

  • 在家建立Minecraft/泰拉瑞亚等联机游戏服务器而没有公网ip
  • 在家建立网站而没有公网ip
  • 建立私有NAS网盘
  • 家中有监控或其他通过局域网链接的智能家居
  • 服务器没有公网IP但却需要外部访问(包括TCP/UDP/HTTP/HTTPS)

关于什么是公网ip,请自行百度。

谁不适合内网穿透


0x02 准备工作

  1. 服务端已准备就绪
  2. 一台有公网ip的服务器,可以是VM
  3. 安装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