利用Frp工具搭建内网穿透(组网)方案

背景


最近组了自己的NAS,搭建好了家庭影音库。由于运营商是移动的大内网,也没去动光猫改桥接(有时候不在家怕网络出问题家里人弄不了),所以没公网IPV4/IPV6。想找一个有网就能用的方案。


目录

  1. 各种内网穿透方案的优劣
  2. 使用的工具
  3. 配置Frp
    1. 配置Frps(服务端)
    2. 配置Frpc(客户端)
  4. 引用资料

1.各种内网穿透方案的优劣

方案一:zerotier和tailscale组网。优点:有插件,配置简单,教程多,稳定。缺点:服务器经常禁止。

方案二:免费域名dynv6配合ipv6。优点:简单,教程多。缺点:没有ipv6的设备不能访问,比如办公室环境里的电脑。

方案三:frp、ngrok、cloudflare tunnel。优点:方案成熟,教程多,网络环境不受限制,基本上有网就行。缺点:公共服务器一般都在国外,速度慢,不稳定,需要自建服务器。

方案四:n2n、vnt组网。优点:有插件,稳定。缺点:公共服务器随时可能跑路,都是私人用爱发电。

方案五:natmap( 体积很小)、natter(需要python环境)、lucky(大杂烩,体积大)打洞。优点:有插件,稳定,速度快,可控。缺点:需要网络类型为nat1,中国移动的网络大多都可以吧。

方案六:gop2ptunnel打洞。优点:安全,网络环境不限。缺点:太大,普通路由器无法运行,只能点对点。

方案七: wireguard 优点:配置简单,安全。缺点:需要公网ip。

而由于自己租有服务器,每月的流量根本用不完,所以选方案三的Frp来搭建内网穿透。

Frp工作原理其实就算利用公网上的服务器来中转数据。


2.使用的工具

  1. 一台云服务器(VPS),国内的最好,国外的要求高点,需要IP能通,且线路可以。
  2. SSH工具
    1. Xshell 8
    2. Xftp 8

3.配置Frp

1.配置Frps(服务端)

在服务器上下载Frp文件,以我这台X86的虚拟机和Frp的v0.61.0版本为例,将Frp下载到/root/目录下:

wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz

将Frp文件解压出来,得到Frp文件夹,里面包含了frps.toml(服务端)/frpc.toml(客户端)的配置文件:

tar -zxvf frp_0.61.0_linux_amd64.tar.gz

利用Xftp 8修改frps.toml配置文件:

直接点击Xshell 8界面的Xftp 8图标即可。

右键单击frps.toml文件,选择使用记事本编辑:

将配置内容粘贴并保存(这里的服务端配置只演示了基础配置,更复杂的配置请根据wiki自行配置):

# 服务端监听端口,默认值为 7000
bindPort = 7000

# 服务端监听 KCP 协议端口,用于接收配置了使用 KCP 协议的 frpc 连接。端口可和 bindPort 相同,未配置时默认禁用 KCP
kcpBindPort = 7000


# HTTP 类型代理监听的端口,启用后才能支持 HTTP 类型的代理。端口可和 bindPort 相同。
vhostHTTPPort = 80
# HTTPS 类型代理监听的端口,启用后才能支持 HTTPS 类型的代理。端口可和 bindPort 相同。
vhostHTTPSPort = 433
# HTTP 类型代理在服务端的 ResponseHeader 超时时间,默认为 60s。
vhostHTTPTimeout = 60
# tcpmux 类型且复用器为 httpconnect 的代理监听的端口。
tcpmuxHTTPConnectPort = 1337
# 对于 tcpmux 类型的代理是否透传 CONNECT 请求。
tcpmuxPassthrough = false


# 在 method 为 token 时生效,客户端需要设置一样的值才能鉴权通过。
auth.method = "token"
auth.token = "sdgerhgasdge"  #根据需要填写自己的token


#配置管理界面
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "frp"  #配置界面登录名,根据自己需要修改
webServer.password = "admin"  #配置界面登录密码,根据自己需要修改
安装systemd

使用systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。

如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 CentOS/RHEL)或 apt(适用于 Debian/Ubuntu)来安装它:

# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd

# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd

创建 frps.service 文件

使用文本编辑器 (如 vim或者Xftp 8,以下演示用的是vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

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

写入内容并保存:

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

使用 systemd 命令管理 frps 服务

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

设置 frps 开机自启动

sudo systemctl enable frps

尝试使用http://*******:7500/端口登录Frp服务端管理界面:

2.配置Frpc服务端

2.1.Openwrt软路由设置

找到Frp服务,在常规设置中填上相应设置:

在代理设置中添加局域网里的客户端,如NAS里的jellyfin端口:

设置成功后frp服务端的管理界面会出现相应客户端:

2.2在黑群晖中配置Frpc

这里推荐直接使用矿神源在套件中心直接按照frpc客户端,当然如果你docker比较厉害的话可以自行配置。

在套件中心设置里添加矿神源:

https://spk7.imnks.com/   #DSM7.x
https://spk.imnks.com/    #DSM6.x

搜索frp,并安装frpc客户端:

填入客户端配置保存即可:

serverAddr = "服务器公网ip地址"
serverPort = 7000

[[proxies]]
name = "nas_jellyfin"
type = "tcp"
# 只有与此处设置的 secretKey 一致的用户才能访问此服务
secretKey = ""  #服务端token
localIP = "127.0.0.1"
localPort = 8096

4.引用资料

组网方案:https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8369915&highlight=%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F
Frp项目:https://github.com/fatedier/frp?tab=readme-ov-file
FrpWiki:https://gofrp.org/zh-cn/docs/overview/

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!