关于家用服务器对外服务的免费方案(基于公网 ipv6 和 cloudflare dns proxy)
之前我一直用家里的服务器对外服务,不过由于公网 ipv4 不好弄,而且限制颇多,所以一直都是买了一个云服务器用 frp 做中转,后来还换到樱花 frp 这类平台做中转。
后来我折腾了下 ipv6 ,成功让家里的每台上网设备都获得公网 ipv6 地址,这样我的服务器做个 ipv6 的 ddns ,就不用买云服务器做中转了,家里的服务器直接对外服务。
不过这样就产生了一个问题,不是所有用户的网络环境都支持 ipv6 ,手机流量上网全面支持 ipv6 那还好说,但是是固网那一块支持度还不高,比如我公司电脑就没有 ipv6 ,而且我了解过城中村的垄断网络都是没有 ipv6 的。
总而言之,用 ipv6 搭网站对外服务还不是特别完美,会有一部分用户因为没有 ipv6 的上网环境导致我的服务无法访问。
所以后来我把域名放到 cloudflare 解析了,家里的服务器 ipv6 ddns 到 cloudflare 去,然后再把 cloudflare 的代理开关打开(橙色小云朵),有了 cloudflare 服务器在前面代理,我也不需要管用户的上网环境,v4/v6 用户都能访问我的家里服务器。
整个流程都是免费的,我也不用花钱买云服务器做中转或者买 frp 服务了,可是发现了一个问题。
我测试了下,cloudflare 的代理服务器地址固定在美国加州,也就是说国内用户访问我家服务的路径是:
国内用户-->美国服务器-->我家里的服务器(广州)-->美国服务器-->国内用户
所以我在想有没有办法,让 cloudflare 的代理服务器设置为 cloudflare 香港或者亚洲区的服务器,走亚洲区中转而不是美国中转。
或者说,国内有没有类似 cloudflare 的服务商,提供 dns 服务解析的同时还能开 cdn 代理
ps.国内能满足我这个要求的貌似只有百度云加速,可惜不支持 ipv6 AAAA 解析,对我的使用场景没用。
注意安全防护
有 cloudflare 代理在前面顶着,没人知道我公网 ipv6 地址的。
cloudflare 能进你的机器,如果没有防火墙,fail2ban 等机制,其它的也会进。
这个也没办法,毕竟站在平台作恶的情况下,全世界没有一个能跑得掉,特别是国内的。
#4 我的意思是,你开放了 ipv6 的端口,其它扫描机器的程序也能扫到,如果不做白名单控制,有可能中招(传统的方式是路由器 /光猫会拦截入站流量。)
你电脑或者手机不分配 ipv6 基本没法访问。 代理也不好使。
我的建议是, 手机或者其他访问的地方没有 ipv6. 那么就用 frp 公网 或者 zerotier/局域网 把你家的设备使用前面 2 种暴露出来, 只用 ipv4 的流量。
我测试过,好使的,在只有 v4 的情况下也能访问到我 v6 的网站,因为这个转发工作 cloudflare 代理已经帮我干了。
我还特地测试过,纯 v4 去 ping 我的网站,出来的地址是 cloudflare 的 v4 地址,纯 v6 去 ping 则是 cloudflare 的 v6 地址
frp 或者打洞的方案还是得需要一台云服务器的,我之前也是这么干的,我就是因为不想买云服务器才转的 ipv6 ,毕竟乞丐版的云服务器出口带宽太小了,我家宽的出口带宽再高也没用。
v6 的地址这么多,如果是黑客用程序随机扫到的可能性不大.。。除非是黑客做的钓鱼 v6 网站,记录了访问过的 v6 地址那才有可能,针对用户还能实现,服务器这种就不大可能了。
ping 和 http 是不同的协议,建议直接使用 http 的协议测试(如果你要访问 http 服务)。
6.ipw.cn 是测试是否能够访问 ipv6 的站点。 你可以再次确认一下,没有 ipv6 的情况下面是否真的能够访问 6.ipw.cn
啊,虽然我是个程序员,但是我现在对 ipv6 还是一知半解的,我一直有个疑问,如果运营商肯分配一个 ipv4 地址给我们的话,那应该是我们的路由器获得了 ipv4 公网地址,内网其他设备得到的都是路由器分配的 192.168.x.x 地址。
难道 ipv6 不是这样的嘛?我一直理解的也是路由器获得了一个 ipv6 地址,内网设备都是 192.168.x.x 地址。为啥楼主你说每个内网设备都会得到一个 ipv6 地址啊
12# ipv6 地址很多,全世界设备都分配不完,自然不存在 nat 这种东西
那如果不用到 nat 机制,那我家的那 30 多块的水星路由器是不是没办法支持 ipv6 的?想支持还得买过路由器吗?
#10 你不要把黑客理解成一个个只能全网扫描但资源不足的个体或小团队,黑客也是会用工具产生放大效应的。比如说 IP 地址多不代表没人能扫完,总会有大型团队拥有足够的资源去扫的,像那些做网络空间测绘的团队就是专门扫全网设备的。又比如说单纯攻击并不一定需要扫遍全网,也可以是针对特定区间缩小范围,甚至直接根据一些你忽略的点获取到 IP 地址实行精准打击。
永远不要觉得看起来概率相对较低就不会有问题。工业领域有个常见标语说得就很好:“安全源于持久警惕,事故源于瞬间麻痹”,网络安全也同理。
我的服务都是 http 服务,纯 v4 使用环境也能访问到我的 v6 服务。
简单来说我的电脑在纯 v4 环境下,我的电脑和 cloudflare 代理用 v4 协议通讯,然后 cloudflare 代理和我的服务器用 v6 协议通讯。。。我的电脑不是直接和我的服务器通讯的,中间隔了个 cloudflare 代理做转发,而 cloudflare 代理本身支持 v4/v6 双栈协议
#14 路由器可以同时支持 nat 和 ipv6,支持哪些功能是路由器决定的,你可以去后台设置看一看有没有相关设置。
在光猫桥接的情况下所有设备都很容易分配到 ipv6 地址,如果光猫是路由模式可能比较困难(我没有尝试过),可能需要路由器进一步的支持
感觉不如 cloudflared ,连公网 IPv6 都不需要
感觉不如 cloudflared ,连公网 IPv6 都不需要 +1
在公网 IPv6 上开服务也不安全
喔,明白了,就是还得路由器支持 ipv6 协议,这样的话说明这两个协议分配 ip 的方式是不同的。另外我很确定我那个 30 几块钱的路由不支持 ipv6 了,哈哈,因为我经常进路由管理界面,里面没有任何选项和信息带了切换 iipv6 的东西
我的理解,走美国绕一圈反而访问更快吧,不是吗?
ipv6 没有 nat 机制(如果你听说过 nat6 ,那个只是民间的玩意),只要路由器设置下 lan 口的 dhcpv6 ,就能让家里所有上网设备都有公网 ipv6 。
简单来说,在 ipv6 的环境下,运营商不只是给你分配了一个公网 ipv6 地址,还给你分配了一个公网 ipv6 网段。
比如我家宽分配到的公网 ipv6 网段是 240e:111:111:111::/60 (乱填的)
那我家的 n 个上网设备分配到的 IP 就是
240e:111:111:111::111
240e:111:111:111::222
240e:111:111:111::333
240e:111:111:111::444
等等等等
这些全是公网 ipv6 地址,都是可以直接访问的,而且还很多,你自己根本用不完。
我去了解了下 cloudflared ,果然比 ipv6 ddns 到 cloudflare 好多了。。。折腾下 cf 优选 ip 应该能有不错的速度
欢迎尝试星空组网,最起码安全,无限速 在我的主页
刚刚我也去看了一下 cloudflared 做 tunnel ,直接打洞+cdn 全套了。都不需要公网 IP 的主机,cf 给你全套解决方案。
这有点刚了。不过这个数据安全有点令人担心,因为 cf 直接进了你的机器了,在你机器里面干啥的时候你也许不知道。
试试这个, www.hesudu.com/t/879549,不需要额外云服务器,我移动 NAT1 打洞后可以直接 IP+端口访问
#26 github.com/cloudflare/cloudflared 其实这类需要信任的东西都是开源的,闭源的没人敢用
cloudflared 国外网络下确实好用,但是不能优选
除非你改 hosts 可能对你自己访问有加速效果 但有改 hosts 的时间不如开个富强
cloudflared 刚用上,确实不错,我也懒得弄 ipv6 ddns 了
github.com/cloudflare/cloudflared
tunnel 客户端程序开源,且在配置通道时,可以选择局域网下其他主机,不一定放在提供服务的本机上。
要是就自己用换个 wireguard 或者 tailscale vpn 连进去是不是更好一点儿
tailscale 推荐
cloudflare 这种免费的全世界都绝无仅有,更别说国内了,国内 cdn 没实名备案就别想了
通过代理连接 cloudflare ,可以连到香港或者新加坡的节点。但是似乎访问还是不会直连香港,而是走 客户端->美国 CF->香港 CF->你的服务器。
github.com/heiher/natmap/wiki/NATMap
适合你,openwrt 直接 opkg install natmap
很简单, github.com/XIU2/CloudflareSpeedTest/issues/241
哇老哥,你这个正是我想要的,谢谢!!!
我是使用 openwrt ipk 动态 dns + 阿里 dns 解决,方案也跟 op 你的差不多
可以用 ip.flares.cloud 粗看一下地区分布,然后用本地软件更仔细调查
OP 的 Cloudflare IPv6 DDNS 是用什么实现的,可以分享一下吗?
#41 github.com/jeessy2/ddns-go
docker run -d \
-e DDNS_DNS=cloudflare\
-e DDNS_ID=“你的 cloudflare 邮箱”\
-e DDNS_TOKEN=“你的 cloudflare token”\
-e DDNS_IPV6=“你的域名” \
--network host \
newfuture/ddns
有没有一种可能,运营商给你分了个 /128
他说的那种情况是运营商通过 ipv6-pd 给了你一个 /64 段,给一个 /128 就不成立了
谢谢
谢谢
到现在为止,本科毕业已经接近三年了,回顾一下自己的职业生涯,做一些简单的总结,有过思之,无则加勉。 2019 年夏天,怀着毕业时的一腔热忱,对大城市的向往,我来到了上海,并且一…
在之前的一个帖子 www.hesudu.com/t/1007852 的讨论引申出的另外一个话题 我说说我的环境: MySQL 8.x 数据量:9000W+ 条 (我的生产环…
写工作生成代码 先说我的观点:不赞成写生产环境的工作代码,质量真的是污染代码 但是写点脚本,小 demo 可以,或者多行补全也可以接受 不如你贴出手写的一些代码片段和 …