50元云服务器+FRP,实现内网穿透自由

2024-04-29 00:04:12 34点赞 251收藏 26评论

内网穿透有两类方案:第一种是 tailscale、zerotier 等虚拟局域网方案;第二种是“frp+公网IP”方案。

前段时间买了 50元1年的云服务器,免不了折腾一下。于是就来介绍一下“云服务+ frp”的内网穿透玩法:搭建内网穿透,通过云服务器的公网IP 随时访问内网设备和服务(包括:NAS、虚拟机等)。

1、云服务器配置

首先下载 frp (可 wget 直接下载到服务器,或者 SSH 传输到服务器)。由于服务器多为 Linux 系统,所以下载 Linux_amd64 版本。

50元云服务器+FRP,实现内网穿透自由

解压后会得到 5个文件:frps、frps.toml、frpc、frpc.toml、LICENSE。其中 frps (server)为服务端,frps.toml 为服务端配置文件;frpc(client)为客户端,frpc.toml 为客户端配置文件。云服务作为服务端只会用到 frps 和 frps.toml,可删除其余文件。

50元云服务器+FRP,实现内网穿透自由

1.1 配置服务端 frps.toml

首先配置服务端 frps.toml ,参考配置如下:

bindPort = 7000 auth.token = "abc"

frp 默认对接端口为 7000,服务端和客户端端口需一致。建议开启 auth.token 认证提升安全性(服务端和客户端 auth.token 需一致)。如果你想开启 dashboard 看板,可以添加后4行命令,不添加对使用没有影响。

webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "admin"

测试配置文件是否能正常运行:

./frps verify -c ./frps.toml50元云服务器+FRP,实现内网穿透自由

1.2 创建 frps.service 实现开机自启动

通过创建 sevice 实现 frp 开机自启动管理。首先创建 frps.service

sudo vim /etc/systemd/system/frps.service

frps.service 的内容参考如下(需根据文件位置修改命令执行路径):

[Unit] Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /root/frp/frps -c /root/frp/frps.toml [Install] WantedBy = multi-user.target

创建成功后可以通过 systemctl 管理 frp服务:

# 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps #开机启动frp sudo systemctl enable frps

设置完毕后记得在服务器防火墙管理中开放对应端口:

50元云服务器+FRP,实现内网穿透自由

2、客户端配置

服务端配置完毕就可以开始配置客户端了。客户端只会用到 frpc 和 frpc.toml,可删除其他两个文件。但我推荐更简单方法:通过 docker 部署客户端 frpc 。

2.1 通过 docker 部署客户端 frpc

docker 部署 frpc 命令更简单,重点有2点:1是要设置 host 网络模式;2是要映射本地 frpc.toml 配置文件:

docker run -d --net=host --name=frpc --restart=always -v /root/frpc/frpc.toml:/frp/frpc.toml stilleshan/frpc

2.2 配置客户端 frpc.toml 文件

frpc.toml 的参考配置如下:

serverAddr = "127.0.0.1" serverPort = 7000 auth.token = "abc" [[proxies]] name = "a" type = "tcp" localIP = "127.0.0.1" localPort = 9117 remotePort = 6002 [[proxies]] name = "b" type = "tcp" localIP = "127.0.0.1" localPort = 23 remotePort = 6003

其中 serverAddr 填写服务器公网IP,端口和服务器端口一致,并启用了 auth.token 认证。

开启 dashboard 看板,可以添加4行命令,不添加对使用没有影响。

webServer.addr = "127.0.0.1" webServer.port = 7400 webServer.user = "admin" webServer.password = "admin"

测试配置文件是否能正常运行:

./frpc verify -c ./frpc.toml

注意 frpc.toml 官方默认测试端口设置 6000,如果你用浏览器访问该端口页面是无法访问(并非是设置问题,而是 chrome 的安全设置原因,需修改成其他端口,分享一下给大家避坑)

再次提醒设置完毕后记得在服务器防火墙管理中开放对应端口!

3.关于内网穿透安全问题

tailscale 等虚拟局域网搭建内网穿透,需要客户端认证才能连接,所以比较安全。而 frp 不进行安全设置的话端口会直接暴漏在公网上,所以会造成安全隐患。所以给以下几点建议:

1.不要暴漏重要设备的端口和服务到公网上;

2.如果暴漏设备管理页到公网,不要使用弱密码,并且使用 https;

3.内网穿透设备安装好防火墙和杀毒软件

4.根据实际需求可增加 secretKey 参数实现一对一认证;

3.1 连接类型

介绍一下常见的网络连接类型

  • TCP:提供纯粹的 TCP 端口映射,使服务端能够根据不同的端口将请求路由到不同的内网服务。

  • UDP:提供纯粹的 UDP 端口映射,与 TCP 代理类似,但用于 UDP 流量。

  • HTTP:专为 HTTP 应用设计,支持修改 Host Header 和增加鉴权等额外功能。

  • HTTPS:类似于 HTTP 代理,但专门用于处理 HTTPS 流量。

  • STCP:提供安全的 TCP 内网代理,要求在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。

  • SUDP:提供安全的 UDP 内网代理,与 STCP 类似,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。

  • XTCP:点对点内网穿透代理,与 STCP 类似,但流量不需要经过服务器中转。

  • TCPMUX:支持服务端 TCP 端口的多路复用,允许通过同一端口访问不同的内网服务。

3.2 安全连接案例

通过 stcp(secret tcp) 提升 frp 穿透的安全性。ftcp 连接意味着目标主机和本机都要安装 frpc,服务器配置不变。客户端配置需增加 secretKey 参数,secretKey 一致的用户才能访问此服务:

serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "secret_ssh" type = "stcp" # 只有与此处设置的 secretKey 一致的用户才能访问此服务 secretKey = "abcdefg" localIP = "127.0.0.1" localPort = 22

本机部署 frpc 并创建如下配置。双方主机都运行 frpc,认证通过后实现穿透连接:

serverAddr = "x.x.x.x" serverPort = 7000 [[visitors]] name = "secret_ssh_visitor" type = "stcp" # 要访问的 stcp 代理的名字 serverName = "secret_ssh" secretKey = "abcdefg" # 绑定本地端口以访问 SSH 服务 bindAddr = "127.0.0.1" bindPort = 6002

为什么不介绍内网穿透的域名设置,国内配置域名很麻烦~感兴趣的朋友可以自己折腾。

至于一般开放端口访问有什么玩法,我简单说几点:

1.开放下载工具 transmission、gopeed、jackett 的端口实现随时随地创建远程下载任务;

50元云服务器+FRP,实现内网穿透自由

2.开放 Prometheus、netdata 性能看板随时随地了解设备运行情况;

当然成品NAS带了一部分系统应用的穿透功能,不过你如果像实现任意容器的快捷访问依然需要内网穿透。

如果你用的是自组NAS,那么FRP 对你的价值会更大。

关于云服务器由于 zdm 不让放,这里就不分享了。

展开 收起
24评论

  • 精彩
  • 最新
  • 云服务器新人活动开一年是比较便宜的,后续需要人工维护和不便宜。
    常见的内网穿透有如花生壳、nat123、金万维、FRP等,本地内网IP转换成域名让外网访问,尽量结合自己应用选择端对端点到点模式速度走二边直接的连接。

    校验提示文案

    提交
  • 配置域名要备案,有点鸡肋

    校验提示文案

    提交
    备案麻烦得很~

    校验提示文案

    提交
    个人域名备案贼麻烦,很幸运是N年前在阿里云成功过一个,阿里现在也鸡贼的很,不用他家云服务就给你掐掉

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 50 服务器性能咋样,运行个 halo 卡不卡

    校验提示文案

    提交
    做个人博客吗?处理器是E5-2683V4,规格一般,如果是自己平时折腾一下还好。但国内折腾域名麻烦。

    校验提示文案

    提交
    收起所有回复
  • 其实没啥用。国内的VPS带宽太小,1M的带宽可用的只有100k,顶什么用?国外的VPS,延迟大,不稳定。frp方式,流量完全经过VPS服务器端的。

    校验提示文案

    提交
    国内云服务器带宽小这个暂时没法改变,家用宽带普遍没有公网IP也没法改变。补充一点:frp也可以直连,但就不如用现成的tailscale、zerotier方便了。

    校验提示文案

    提交
    ipv6很香

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 哪种放弃 工具只是握手速度取决于本地网络啊

    校验提示文案

    提交
    这是需要点到点通信的内网穿透了,如nat123固定端口P2P穿透模式。

    校验提示文案

    提交
    收起所有回复
  • 云服务器+FRP的内网穿透玩法,分享得很细致!希望能看到更多关于实际操作和体验的细节分享,一定更精彩!

    校验提示文案

    提交
  • 那点带宽,还不如直接选择ipv6

    校验提示文案

    提交
  • ipv6简单高效不限速

    校验提示文案

    提交
  • frp的安全性怎样?在自家有公网ip的windows电脑上部署了frps,在单位的个人电脑上放了frpc,不开tls还好,但担心明文传输不安全,用自签名证书开了tls就总是连接失败。

    校验提示文案

    提交
    frp已经很多大企业在用了
    安全性不需要担心

    校验提示文案

    提交
    收起所有回复
  • 学到啦

    校验提示文案

    提交
    准备搞个racknerd VPS玩玩

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
251
扫一下,分享更方便,购买更轻松