目 录CONTENT

文章目录
frp

使用frp在飞牛Nas和路由之间组建虚拟局域网

过客
2026-01-25 / 0 评论 / 1 点赞 / 3 阅读 / 0 字

frp在v0.6.0版本引入了 虚拟网络(VirtualNet) 功能,不过目前只支持Linux和macOS系统,还需要root/管理员权限来创建tun虚拟网络。

一、流程

frp支持p2p的内网穿透,之前也写过在小米路由安装frpc,但是要代理的端口太多了,需要复制粘贴一大堆的配置,比较麻烦,于是就到了用小米路由 与 nas组建虚拟网,实现效果还是和之前内网穿透一样。

前提条件:

  • 一台公网frps服务器
  • 家里Nas,已经配置好 ​SMB文件共享(端口445)WebDav(端口80,可选端口443) 等端口
  • 出租屋解锁SSH的小米路由,我家是小米路由器 AX3000T 解锁 SSH
  • 小米路由IP: 192.168.1.1

实现目标:

  • 小米路由内客户端访问虚拟网(如:100.86.0.1)相当于访问了远程的飞牛Nas

二、配置frp虚拟局域网

1. 在Nas端配置虚拟网服务器

# 服务器域名端口
serverAddr = "公网服务器ip或域名"
serverPort = 5000

# 权限认证
auth.method = "token"
auth.token = "123456"

# 开启 VirtualNet
featureGates = { VirtualNet = true }

# 配置虚拟网络接口
virtualNet.address = "100.86.0.1/24"

[[proxies]]
name = "vnet-server"
type = "stcp"
secretKey = "your-secret-key"
[proxies.plugin]
type = "virtual_net"

2. 小米路由frp安装配置

# 服务器域名端口
serverAddr = "公网服务器ip或域名"
serverPort = 5000

# 权限认证
auth.method = "token"
auth.token = "123456"

# 开启 VirtualNet
featureGates = { VirtualNet = true }

# 配置虚拟网络接口
virtualNet.address = "100.86.0.2/24"

[[visitors]]
name = "vnet-visitor"
type = "stcp"
serverName = "vnet-server"
secretKey = "your-secret-key"
bindPort = -1
[visitors.plugin]
type = "virtual_net"
destinationIP = "100.86.0.1"

3. 测试连接

到这,小米路由和nas之间的虚拟网已经组建成功。可以互ping测试

# 小米路由上:
ping 100.86.0.1

# nas 上:
ping 100.86.0.2

三、小米路由上配置转发路由

小米路由内的局域网设备,此时还是不能访问 虚拟局域网中的nas 100.86.0.1,这时需要在路由上添加静态路由、和配置转发规则等。先用ifconfig查看网卡信息:

  • 外网出口(192.168.1.0/24的接口)为 br-lan
  • 虚拟网(100.86.0.2的接口)为 utun0
# 1. 将 192.168.1.0 网段ip 修改为 100.86.0.2 发给 100.86.0.1 
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 100.86.0.1 -j MASQUERADE

# 2. 允许局域网 → 虚拟网 的转发
iptables -A FORWARD -i br-lan -o utun0 -d 100.86.0.0/24 -j ACCEPT

# 3. 允许虚拟网 → 局域网 的回程转发
iptables -A FORWARD -i utun0 -o br-lan -s 100.86.0.0/24 -j ACCEPT

# 4. 在本机绑定虚拟 IP
ip addr add 100.86.0.1/32 dev lo

# 5. 允许访问本机的虚拟 IP
iptables -I INPUT -d 100.86.0.1 -j ACCEPT

设置好后,可以在局域网设备中访问 100.86.0.1 相关于访问了远程的Nas。

路由持久化

小米路由上不管是/etc/rc.local 还是防火墙配置/etc/firewall.user在重启的时候都会被重置。所以要持久化就用开机启动执行脚本来实现,参考 小米路由安装frpc 的开机启动脚本的最后添加上面5条命令。

vi /data/frp/auto.sh

#!/bin/sh

...

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 100.86.0.1 -j MASQUERADE
iptables -A FORWARD -i br-lan -o utun0 -d 100.86.0.0/24 -j ACCEPT
iptables -A FORWARD -i utun0 -o br-lan -s 100.86.0.0/24 -j ACCEPT
ip addr add 100.86.0.1/32 dev lo
iptables -I INPUT -d 100.86.0.1 -j ACCEPT
1
frp
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区