有什么方法限制外人访问自己的 DoH 服务

2022-05-02 12:56:49 +08:00
 PMR
Qcloud 国内机器搭建的 DoH
已用非标端口 还是被探测到

有什么办法只允许自己的网络访问

家宽非固定 ip
用 ddns 在服务器防火墙限制有时延 ip 变更时就会中断几分钟
5518 次点击
所在节点    DNS
22 条回复
Jay54520
2022-05-02 13:20:04 +08:00
1. 使用 IP 段,比如 1.1.0.0/32 ,把你可能的 IP 全部放进去。好处是减少了被恶意访问的范围,不用改代码。坏处是没有完全解决问题。
2. 增加鉴权手段。比如增加 query string —— ?key=abcd ,key 不对就返回 400 Bad Request ,key 对了再继续正常流程。如果你会修改 DoH 中的代码,就直接修改 DoH ;或者用自己熟悉的语言写一个代理放到 DoH 前面,只转发鉴权通过的请求。
blakejia
2022-05-02 13:23:01 +08:00
前置 nginx 加个鉴权?
leavic
2022-05-02 13:32:40 +08:00
http 怎么鉴权就怎么做
huangtao728
2022-05-02 15:15:54 +08:00
改变路径,不要使用 /dns-query 即可
Sekai
2022-05-02 15:32:04 +08:00
换 adh
totoro625
2022-05-02 15:36:04 +08:00
提问一下 doh 被人蹭用会有什么后果吗?
我也在国内云服务上挂了 doh
------------
本质上 doh 是网页服务吧,设置一下无法通过 ip 访问应该就很少有人去访问了吧,实在不行设置一个复杂的二级域名
我在用的直接就是 doh.example.com ,开了 5 台机器的 doh ,4 台丢国外 1 台丢国内,2 个多月了至今没见有人蹭过

我的 nginx 配置:
server {
listen 80;
return 302 https://www.example.com/302;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /data/ssl/example.cer;
ssl_certificate_key /data/ssl/example.key;
return 302 https://www.example.com/302;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name doh.example.com;
ssl_certificate /data/ssl/example.cer;
ssl_certificate_key /data/ssl/example.key;
location / {
proxy_pass https://adguardhome:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
0o0O0o0O0o
2022-05-02 15:41:55 +08:00
路径用个 uuid
yaott2020
2022-05-02 15:54:41 +08:00
改路径更实际一些
cloudsigma
2022-05-02 15:59:14 +08:00
ssl 客户端验证
wwbfred
2022-05-02 16:03:02 +08:00
不要用 dns-query ,这就是最好的办法。另外如果在墙外使用这个路径域名会被墙。
andyliu24
2022-05-02 16:05:52 +08:00
iptables 把目标端口除 127.0.0.1 的 input 包直接 drop 掉?
AlphaTauriHonda
2022-05-02 16:12:24 +08:00
@wwbfred 是 IP 还是端口被屏蔽,还是 DoH 的域名直接被污染?
wwbfred
2022-05-02 16:18:25 +08:00
@AlphaTauriHonda 我的情况没有屏蔽端口,是给你的 DOH 域名发 RST 。不开 DOH 服务了过几天这个域名会放出来。
v2tudnew
2022-05-02 16:24:00 +08:00
@wwbfred #10 DOT 853 端口会被屏蔽,非标准端口 IOS 和安卓不认,感觉直接 IP 限制或者像 AdGuard Home 对每个设备特定 ID 白名单就行了。
AlphaTauriHonda
2022-05-02 16:41:21 +08:00
@wwbfred 相当于域名被阻断了。
dem0ns
2022-05-02 17:24:38 +08:00
ssl 客户端验证+1
dem0ns
2022-05-02 17:25:45 +08:00
服务器端校验客户端的证书,自己生成一对证书就可以
xyjincan
2022-05-03 08:05:06 +08:00
干掉监控客户端?
buxiaozisun
2022-05-04 15:08:20 +08:00
proxy_intercept_errors on; error_page 400 =404 /404.html;
of2
2022-05-29 13:17:49 +08:00
我用的 AdGuard Home ,Nginx 做前端。

`= /dns-query` 全返回 `418`,设置一个 `~* /dns-query/(client1|client2|...)` 的白名单列表,同时 AdGuard Home 里 `DNS settings` 下设置 `Allowed clients`,只允许设定好的的 clients~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/850493

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX