iptables 可以控制出口流量,但是只能针对 IP 进行限制,无法针对域名。
需求是这样的,限制了整个公网出口,只允许服务器去请求特定的一些域名,比如只允许请求百度,百度全国 CDN,拥有很多节点 IP,并且这些 IP 可能还会变化,因此将百度的 IP 全部加入 iptables 也不太现实,这里我也无法去收集到这些域名的 IP 或 IP 段,请问还有其它办法控制 Linux 的出口域名白名单吗?
PS:这些域名可能启用了 CDN,CDN 的 IP 可能会不断的变化中。

iptables 可以控制出口流量,但是只能针对 IP 进行限制,无法针对域名。
需求是这样的,限制了整个公网出口,只允许服务器去请求特定的一些域名,比如只允许请求百度,百度全国 CDN,拥有很多节点 IP,并且这些 IP 可能还会变化,因此将百度的 IP 全部加入 iptables 也不太现实,这里我也无法去收集到这些域名的 IP 或 IP 段,请问还有其它办法控制 Linux 的出口域名白名单吗?
PS:这些域名可能启用了 CDN,CDN 的 IP 可能会不断的变化中。
1 wdlth Mar 25, 2020 可以自己建个 DNS |
2 zst Mar 25, 2020 可以直接用 string 匹配域名吧 |
3 wolonggl Mar 25, 2020 dnsmasq+ipset |
5 fengtons Mar 25, 2020 via Android 最高效的应该是 3 楼说,参考一下各种翻墙教程 |
6 2exploring Mar 25, 2020 v2ray + 透明网关 应该也可 |
7 jinliming2 Mar 26, 2020 via iPhone 应该可以通过 HTTP header 中的 host 、HTTPS TLS 中的 SNI 来匹配访问的网站吧…… v2ray 好像可以?然后用 iptables 的 redirect ? |
8 jim9606 Mar 26, 2020 |
9 w52 Mar 26, 2020 3 楼+1 |
10 qakito Mar 26, 2020 一种做法: LAN 口针对 UDP dport=53 的报文做 redirect 到本地,本地的 DNS serve 就可以对黑名单里的域名进行干预(例如返回 No such domain) 缺点是: 如果本地通过 hosts 文件提前解析,你无能为力 |
11 microlz Mar 26, 2020 可以不设置 dns 服务器 然后通过 hosts 解析 |
12 araraloren Mar 26, 2020 DNS 污染??(小声 (逃 |
13 tomychen Mar 26, 2020 10# +1 iptables + L7 补丁,也可以做到协议 filter |
14 tvirus Mar 27, 2020 用 adguard home 里 DNS 封锁试一试 |
15 AQIVK1E0IV Dec 3, 2024 现在也有相同的需求,想问大佬最后是怎么解决的? |
16 xiaoz OP @AQIVK1E0IV 没找到比较好的方案,我都记不得当时为啥有这个需求了。 |