前言
家里DIY了一个飞牛Nas,怎么样才可以在外网访问呢?
- 用飞牛Nas的话可以使用自带的FN Connect,免费的只有2~4Mbps带宽,对于视频文件传输还是很有压力的,最便宜套餐是¥99/年,带宽12Mbps,这个速度看4K视频还是会卡顿。
- 有公网IP,现在家宽已经很少很少有了,之前租房时使用的电信有过公网IPv4,有的话直接开DDNS解析就可以了。
- 直接使用IPv6访问,现在三大运营商家宽都支持IPv6。使用
ipconfig(win系统)/ifconfig(linux、mac系统)查看本地网卡信息。
- 如果看到有240开头的IPv6地址,说明你家宽带已经支持IPv6了。若外网访问不了,需要检查一下光猫、路由的防火墙是否拦截了IPv6入站规则。光猫的话可能需要超级管理员,可以根据型号自己网上找登录方式或直接询问宽带提供商。
- 如果只有fe80的IPv6地址,说明不支持IPv6,也是检查光猫和路由,看是否关闭了IPv6网络。
- 使用内网穿透,内网穿透也有很多软件,自己没有公网服务器使用免费的话带宽还是不高的。我这里用frp来做内网穿透,frp详细的玩家可以参考之前写的文单 frp配置与使用
原理
我家现在是移动的,支持IPv6无公网IPv4。我选择 IPv6(DDNS解析) + IPv4(frp内网穿透)双栈访问。
-
- 客户端IPv6和IPv4同时存在时,由于操作系统设计原因,会优先考虑使用IPv6,也不会消耗frp服务器流量。
-
- 对于固定客户端,如自己的笔记本、公司电脑、出租房的路由等,可以按装frpc客户端,使用xtcp链接,也不会消耗frp服务器流量,也没有中间商赚带宽差价。
-
- 对于不支持IPv6环境的临时设备或移动端,走frp服务器转发,消耗服务器流量和带宽。

准备工作
-
- 需要一台公网IP的服务器(如:47.111.x.x),这里可以用阿里云ECS,只要99元2核2G3Mbps,如果觉得带宽不够可以再加一个按流量计费辅助网卡 200Mbps ¥0.8元/GB。

-
- 域名(如:nas.yourdomain.xyz),也可以在阿里云直接注册,xyz的比较便宜,首年才7元,我这里有了就不注册了。
- nas.yourdomain.xyz A 解析到 47.111.x.x。
- nas.yourdomain.xyz AAAA 使用DDNS解析。
-
- 内网Nas,如飞牛Nas,这里以飞牛默认后台http端口 5666 为例,在Nas中安装DDNS-GO和frpc应用。

配置IPv6访问
1. 获取域名网站Secret
- 这里还是以阿里云为例,先进入RAM 访问控制

- 在用户里新键一个用户,并添加AliyunDNSFullAccess权限

- 在认证管理中添加AccessKey,并记录AccessSecret值。

2. 配置DDNS
进入飞牛Nas中,启用DDSN-GO,访问 Nas内网ip:9876,使用安装时设定的密码登录。
- 选择阿里云
- 填写 Access
- 不启用IPv4
- 启用IPv6
- 选择网卡获取
- 配置规则 @1
- Domains配置:nas.yourdomain.xyz

至此,IPv6线路已经配置完成。
配置IPv4访问
frp详细安装配置可以参考frp配置与使用——远程桌面
1. frp服务配置
# 服务器端口
bindPort = 7000
# http端口
vhostHTTPPort = 5666
# 权限认证
auth.method = "token"
auth.token = "123456"
# 其他配置
2. Nas中frp客户端配置
serverAddr = "47.111.x.x"
serverPort = 7000
auth.method = "token"
auth.token = "123456"
# STCP-Nas 协议配置
[[proxies]]
name = "STCP-Nas"
type = "stcp"
secretKey = "123455."
localIP = "127.0.0.1"
localPort = 5666
transport.useEncryption = true
transport.useCompression = true
# XTCP-Nas 协议配置
[[proxies]]
name = "XTCP-Nas"
type = "xtcp"
secretKey = "123455."
localIP = "127.0.0.1"
localPort = 5666
# 加密压缩传输内容
transport.useEncryption = true
transport.useCompression = true
# 飞牛
[[proxies]]
name = "飞牛Nas"
type = "http"
localPort = 5666
customDomains = ["nas.yourdomain.xyz"]
transport.useEncryption = true
transport.useCompression = true
3. 固定访问客户端frp配置
serverAddr = "47.111.x.x"
serverPort = 7000
auth.method = "token"
auth.token = "123456"
# stcp-nas 协议配置
[[visitors]]
name = "STCP-Nas-visitor"
type = "stcp"
# 被连接客户端配置的stcp name
serverName = "STCP-Nas"
secretKey = "123455."
# STCP-Nas-visitor 的 bindPort 设置为 -1 表示不需要监听物理端口,只接受 fallback 的连接即可。
bindPort = -1
# 加密压缩传输内容
transport.useEncryption = true
transport.useCompression = true
# xtcp-nas 协议配置
[[visitors]]
name = "XTCP-Nas-visitor"
type = "xtcp"
# 被连接客户端配置的 xtcp name
serverName = "XTCP-Nas"
secretKey = "123455."
bindAddr = "127.0.0.1"
bindPort = 5666
# 加密压缩传输内容
transport.useEncryption = true
transport.useCompression = true
# 配置了 keepTunnelOpen = true 时,frpc 会定期检测隧道是否打开,如果没有,则会尝试打洞建立隧道,这样可以始终保持隧道打开,在需要连接对端服务时,可以避免延迟。
keepTunnelOpen = false
# 如果 xtcp 打洞失败,则使用 stcp 进行链接,fallbackTo = 上面的 stcp name
fallbackTo = "STCP-Nas-visitor"
# 打洞超过时间,200ms还未成功的话,会回退到使用 stcp_desktop_visitor 建立连接。
fallbackTimeoutMs = 1000
最后配置一下固定访问客户端设备中的host文件,添加:
127.0.0.1 nas.yourdomain.xyz
至此,IPv4线路的 转发及xtcp p2p链接都配置好了。
评论区