目录

内网穿透是啥

内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。——百度百科

上面你可能看不懂,但是你只需要知道:

在内网环境下的服务器和应用只有在同一个内网环境下才能访问连接,内网穿透可以实现外网对内网的访问连接;
如需要出差在外想要访问在公司内的电脑远程桌面连接,使用内网穿透即可以实现;
网站应用需要外网访问且考虑收录时,使用 80 网站应用类型的映射方式将内网网站映射到外网直接访问;
SVN 等 443 端口 https 协议应用的使用场景,使用 443https 应用的应用类型的映射方式将其映射到外网直接访问;
办公 OA 等不考虑收录的 WEB 网站应用,使用非 80 网站的应用类型的映射方式,映射后外网访问带外网端口;
固定端口和 UDP 等在访问端也适合安装使用客户端的场景,使用全端口映射方式实现外网的访问;
远程桌面、数据库、等其他普通 TCP 应用外网直接访问场景需求,使用其他非网站映射方式;
不需要在同一局域网内便可在Minecraft等游戏与遥远的朋友联机。

不过,市面上的内网穿透基本都是收费的,且要实名认证啥的,逝分不舒坦,所以为什么不自己搭个呢?

开始之前

  • 一台有公网IP的服务器
  • 提前装好Docker
  • 在根目录创建个data文件夹,方便之后操作(如果没有)
  • 不至于跟个sb一样啥也不会

配置服务器端

配置frps.ini

先创建一个名为frp的文件夹

mkdir /data/frp

在frp根目录创建一个`frps.ini`的文件。

编辑`frps.ini`:

[common] 
bind_port = 7000
vhost_http_port = 6200
vhost_https_port = 6201
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

参数说明:

[common]
bind_port = 客户端与服务器端数据交换的端口
vhost_http_port = http端口
vhost_https_port = https端口
dashboard_addr = 监听IP地址
dashboard_port = frp服务端Dashboard监听端口,默认为7500
dashboard_user = 账号名
dashboard_pwd = 账号密码

安装frps

docker run --restart=always --network host -v /data/frp/frps.ini:/etc/frp/frps.ini -d --name frps snowdreamtech/frps

跑完即可。

放行端口(如需要)

请在防火墙放行`6200,6201,7000,7500`这四个端口。

访问后台

访问`YourIP:7500,弹出登录界面,输入你在``frps.ini```中配置的账号密码即可。

成功后,你的后台应该长这样:

绑定域名(如需)

具体就是反代,详情请看

客户端配置

前往GitHub的Release下载:Release v0.38.0 · fatedier/frp · GitHub

解压打开`frpc.ini`

配置内容:

[common]
server_addr = YourIP
server_port = 7000

[web]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 6200
custom_domains = frp.you.com(如绑定域名)

参数说明:

[common]
server_addr = 你的IP
server_port = 客户端与服务器端数据交换的端口

[web]
type = TCP/UDP/HTTP/HTTPS/STCP/SUDP
local_ip = 需要内网穿透的地址
local_port = 本地端口
remote_port = 远程端口
custom_domains = 绑定的域名

整个`frpc.bat`,输入:

frpc.exe -c frpc.ini

最后打开`frpc.bat,不出意外的话,他会提示``XXXX/XX/XX XX:XX:XX [I][XX][XX][ssh]start proxy success```,恭喜你,成功了!

参考文档

利用Docker和宝塔搭建FRP内网穿透_宝塔内网穿透_lyhcms的博客-CSDN博客

此文章的封面(by Pexels)