配置访问家庭服务的几种方法
部署访问家庭服务的几种方法及常见问题
- 公网ip
- ipv4的公网地址不容易获得;ipv6的配置也有点麻烦,而且不一定任何时候用户端都可以获得ipv6地址;
- 内网穿透
- 优点:同时解决动态ip,端口屏蔽,访问鉴权等问题;
- 缺点:通常需要服务端和用户端都要安装应用程序;要么有公网访问权限(想办法暴露公网ip及端口,配置较复杂),要么走服务器代理(额外费用或带宽限制);
所以
最轻松的是有公网IPV4地址,那么基本上就可以轻松访问了。ip:端口号
,就可以直接访问。
动态ip的话,设置DDNS动态域名解析。域名:端口号
,就可以直接访问。
没有公网ip但是条件较好,也可以借鉴这篇,暴露ip和端口,有了ip和端口就可以直接访问服务了,也可以作为后续内网穿透使用。
两端都有IPV6那情况跟有IPV4的情况差不多。[ip]:端口号
或者域名:端口号
。
最常遇到的问题是网络服务商封端口。封端口的情况各不一样,移动的常用端口基本都不能外网访问,ipv6的常用端口都封了的。只能改服务的端口号为不常用端口了,无法更改服务的,就设置路由器的端口转发,或者设置反代。
不希望其他人访问的服务注意权限设置(设置登录密码等),国内公开访问的服务的话是需要备案的。
本文解决的问题
- 绑定域名解决动态ip变动,并隐藏ip,以及端口。同时可以IPV4访问IPV6的服务。
整体思路
ip变化的问题,解决方法就是设置域名解析,将变化的ip与固定的域名绑定。域名可以在阿里或腾讯等购买,便宜的8元一年,或者注册免费的二级域名。
域名设置A记录(ipv4)或AAAA记录(ipv6)的方式的的问题是服务需要明确暴露ip和端口。而且需要记住端口号。有时候需要特定端口号又被运营商封了端口的服务也不行。
还有就是希望用户侧只有ipv4地址,服务端只有v6的公网地址,或者需要把ipv6的服务公开。
都需要有一个转换的工具。
常用的就是cloudflare。
将域名托管到cloud flare后,开启DNS解析的小黄云,那么,用户侧只需要连接到cloud flare的服务器,cloudflare服务就会根据设置访问需要的服务(相当于反代)。
开启小黄云后就是cloudflare代理访问你的家庭服务了,不是直接连接家庭服务,不是直接访问,所以延迟是增加的,相较于其他代理,优势是免费,带宽尚可。
cloudflare的服务器在国外,所以公开的服务不需要备案,但是访问缓慢,需要设置优选IP(就是连接一个相对较快的cloudflare服务器)。
因为是cloud flare代理,所以连接cf的ip和端口都是固定的,自己的服务端口可以通过Origin Rules规则,设置自定义筛选表达式,定义主机名等于访问域名,目标端口重写到服务端口号,那么访问http或https的cloud flare开启小黄云的域名就会被代理到相应的目标服务端口。
由于是代理,ipv4也可以连接cf服务器,然后服务器通过v6连接家庭服务。实现v4访问v6服务。
简便步骤
- 托管域名到cloud flare。(具体步骤网络上有许多教程,就是在域名购买商处将ns服务器设置到cloudflare服务器)(另外本方案不适用在cloudflare购买的域名,后面会说明。免费的us.kg,cloudns等都可以)
- 解析ip到cloud flare,或者cname已有服务的域名地址,或者设置cloudflare tunnel穿透已有服务,根据实际情况,然后开启小黄云。
- 单独在域名购买或注册商处取消ns指向cloudflare,而将小黄云域名解析到优选域名或优选IP(例如,cname到
visa.cn
或cf.090227.xyz
)
通常网上的教程优选ip设置会选择cloud flare的SAAS服务,其实不用saas服务也可以设置优选ip,因为域名托管到cloudflare只是设置了ns服务器,就是通告dns解析在设置的服务器,而cloudflare只会在托管时进行一次鉴权,确认你可以修改ns服务器到cf就托管成功了。那么后面对域名的操作,对cf内部来说都是可行的。所以小黄云代理,页面规则,防火墙等在cf会认。但是对于公网解析,最终权限还是在域名注册商,所以可以选择把dns解析改回其他服务商,直接将域名解析到cf的服务器地址,当通过指定域名连接cloudflare服务器,相应的cloudflare设置就会成功生效。