众所周知,家庭宽带是不被允许对外提供 web 服务的,所以运营商会主动封禁 80 和 443 端口,这两个端口一个是 http 服务另一个是 https 服务的默认端口。
如果家庭宽带利用 DDNS 技术绑定了域名,例如f.example.home
域名,我们访问家里 https 服务的链接会是如下的形式:https://f.example.home:6789/share
。
我最近在逛博客时发现了一种方法可以省去链接中的端口号,这样我们访问的链接变成了:https://f.example.home/share
。是不是简洁美观多了,而且在技术上也灵活了。
方法来源:涛叔:解决家庭宽带 443 端口封禁问题
首先要声明的是,虽然对于服务提供者来说只需要添加一条 DNS 记录,但是目前这种方法对于访问者来说并不适用于大多数场景及用户,就是说对于绝大数访问者想要以不带端口号的形式访问服务需要手动设置及浏览器相关支持。原因在于 DoH 技术还未普及到成为 DNS 的默认设置,以及浏览器对其相关功能的实现。
具体点说,就是访问者想要通过省去端口号的链接来访问服务,需要设置浏览器的 DNS 为 DoH 。
就目前的测试情况来看,在 Windows 系统下,Chrome 和 Edge 在 DNS 已经设置为 DoH 的情况下依旧不可以❌,只有 Firefox 在设置 DNS 为 DoH 的情况下可以 ✅。在 iPad 上 Safari 在无任何特别配置的情况下直接可以✅。
系统 | 浏览器 | DNS 设置 | 结果 |
---|---|---|---|
Windows 10 | Chrome | DoH | ❌ |
Windows 10 | Edge | DoH | ❌ |
Windows 10 | Firefox | DoH | ✅ |
iOS 16 | Safari | 默认 | ✅ |
我以 DNSPod 为例:
主机记录:f
记录类型:HTTPS ,
记录值:f.example.home. alpn="h2" port="6789"
添加好记录,然后等待生效,就可以测试是否可以通过不带端口号的链接访问服务了。
我在 Firfox 中添加的是 DNSPod 的 DoH 。参考
家庭网络服务简介:家里的宽带通过 DDNS 绑定 IP ,家里的服务通过 Caddy web server 来获取证书并提供 https 服务,然后路由上做好端口映射。
推荐阅读:
1
chenjia404 2023-07-06 15:05:51 +08:00 via Android
不过可以通过协议识别提供 http 服务吗
|
2
xavierskip OP |
3
chenjia404 2023-07-06 15:46:55 +08:00
@xavierskip #2 你的 https 服务,运营商也能识别到,然后停你的服务。
|
4
yoyoluck 2023-07-06 16:31:15 +08:00
在非国内的域名服务商买个域名 然后做个隐式或显式 url 转换
|
5
digimoon 2023-07-06 16:39:24 +08:00
不管你 web 服务开在什么端口,isp 查到就能请你喝茶
|
6
cccer 2023-07-06 17:24:02 +08:00
可是 DNSPod 并不支持 HTTPS 记录,另外 Chrome 的 HTTPS 记录是需要打开一个实验 flag 才能用。
``` curl --http2 -H "accept: application/dns-json" "https://doh.pub/dns-query?name=www.cloudflare.com&type=HTTPS" dig www.cloudflare.com @119.29.29.29 HTTPS ``` ``` curl --http2 -H "accept: application/dns-json" "https:/1.1.1.1/dns-query?name=www.cloudflare.com&type=HTTPS" dig www.cloudflare.com @1.1.1.1 HTTPS ``` |
7
xavierskip OP @cccer #6 dnspod 可以添加呀,还有文档 https://docs.dnspod.cn/dns/help-https/
你试一下 `curl --http2 -H "accept: application/dns-json" "https://doh.pub/dns-query?name=www.cloudflare.com&type=65" ` 上面的的这个命令我在 Windows 系统下报错`{"code":"UrlParameterError"}`,但是在另一台 linux 机器上得到了正常的返回 dig 话你试一下这个命令`dig www.cloudflare.com -t type65 @1.1.1.1` 另外也没说非要用 DNSPod 的,只不过我自己的域名在哪个上面,所以我的设定是这样的,其他支持 https 记录的 dns 服务提供商都可以的。 |
8
deorth 2023-07-06 23:30:15 +08:00 via Android
大清亡了
|
9
AnotherWorld 2023-11-13 11:45:49 +08:00
我也试了下这个方法,谷歌,edge 配置 doh 也不行。只有火狐 和我手机自带的浏览器可以。感觉用处不大,还有其他方案吗,不想用反代 流量会受限制
|
10
xavierskip OP @AnotherWorld #9 是的,使用场景受限,自己宽带提供的服务自己用用得了。
|