例
# IPv6 DNS Drop #
# Netflix DNS AAAA Drop #
iptables -t raw -A PREROUTING -p udp --dport 53 -m string --hex-string "|03|www|07|netflix|03|com|00001c|" --algo bm -j LOG --log-prefix "drop netflix dns query "
iptables -t raw -A PREROUTING -p udp --dport 53 -m string --hex-string "|03|www|07|netflix|03|com|00001c|" --algo bm -j DROP
ip6tables -t raw -A PREROUTING -p udp --dport 53 -m string --hex-string "|03|www|07|netflix|03|com|00001c|" --algo bm -j LOG --log-prefix "drop netflix dns query "
ip6tables -t raw -A PREROUTING -p udp --dport 53 -m string --hex-string "|03|www|07|netflix|03|com|00001c|" --algo bm -j DROP
添加到 /etc/firewall.user 然后重启防火墙
如此,即可防止 Netflix 通过 IPv6 直连导致代理失效。
被 TLS SNI RESET 的网站同理。
1
laucenmi 2018-09-27 21:15:39 +08:00
感谢分享
|
2
flowfire 2018-09-28 00:14:39 +08:00 via iPhone
难道正确方法不是找一个支持 ipv6 的代理么😂
|
3
Liqianyu OP @flowfire
是,如果有支持 IPv6 的代理是更优办法。 但是目前支持双栈的 VPS 和服务商还较少。 而且即使服务端支持,目前也没有现成的 CHNRoutes For IPv6 方案。 所以这是一个替代方案。可以直接丢弃掉 AAAA 响应去防止走 IPv6。 缺点就是解析速度会变慢一些。不过在缓存的帮助下影响不大。 |
4
wacke 2018-09-28 16:11:18 +08:00
|
5
Liqianyu OP @wacke
嗯,确实是一个办法。速度如何呢? 我觉得目前没必要非走 IPv6,因为只是看网页,走 IPv4 还是 IPv6 有区别?并没有。 所以直接丢弃掉 AAAA 记录强制走 IPv4 即可。 所以我目前是采用 CHNRoutes For IPv4 + Native IPv6,对特别的网站采用该方法丢弃掉 AAAA 记录防止被 Reset。 未来如果普及 ESNI,或许会有解决之道。 |
6
wacke 2018-09-29 08:01:27 +08:00
@Liqianyu
速度取决于 VPS 的带宽及链路状况,我的 VPS 在 LA,CN2 路由,150ms 左右的延迟,其实比直接 6in4 隧道的延迟还低。。。不过目前我家移动宽带也拿到 IPv6 了,只能部署 IPv6 NAT 以实现 CHNRoutes For IPv6。。。 |
7
Liqianyu OP |
11
Liqianyu OP |
13
Liqianyu OP @wacke
如果 SNI 漏洞被 ESNI 补上,估计还是会走 DNS + IP Block 的老路。这样 ICMPv6 不通会自动回退的。 |
14
yetsky 2018-09-29 21:39:13 +08:00
建议使用 PDNSD 屏蔽指定域名 AAAA 记录,不会引起解析过慢。
|
15
wacke 2018-09-30 08:01:36 +08:00
@Liqianyu
DNS + IP Block 这个状况,如果有 IPv6 链路绕过墙的话,主机能智能选择源地址吗?目前我碰到的问题是多条 IPv6 链路的情况下,源地址跟路由不一致,导致数据包在回程时回不回不来。 |
16
Liqianyu OP |
17
wacke 2018-09-30 11:49:17 +08:00
@Liqianyu
就是说在存在 a,b 两条 IPv6 链路的情况下,主机会使用某个源地址(a,b 中的一个)发起链接,但是在路由过程中,可能会出现使用 b 的源地址发起链接,但是路由却是从 a 链路走的,导致回程时数据包回不来。。。 |
19
wacke 2018-09-30 12:32:58 +08:00
@Liqianyu 就是抓包看过了才发现这个问题。。。我目前是两条 6in4 过来的链路,一条移动宽带的 IPv6 链路。。。
这个链接是我几个月前的情况: https://github.com/openwrt/packages/issues/5906#issuecomment-381384887 |
20
Liqianyu OP @wacke
看你所说是在 Linux 上有这个问题是吧。大概看了看,为什么要用 Tinc VPN 实现 IPv6 接入额,然后并且是加入 mwan3 的。 我是直接 PPPoE 的原生 IPv6,没有用 mwan3。 |
21
wacke 2018-09-30 13:25:10 +08:00
@Liqianyu
几个月前还没有移动 IPv6,体验 IPv6 就只能 6in4 隧道了,但是 6in4 隧道被墙了,所以就用 Tinc 来实现转接了。现在有了移动 IPv6,情况就更复杂了,原生的 IPv6 基本无法实现策略路由。。。 |
22
Liqianyu OP @wacke
我觉得你先要做下减法,既然有原生 IPv6 了。再用 Tinc 实现 6in4 有什么意义。6in4 只是过渡方案。目前在 IPv4 依旧主导的情况下我觉得没必要使用 IPv6 代理。 |
23
wacke 2018-09-30 14:19:14 +08:00
@Liqianyu 我的目标是实现跟 IPv4 一样的策略路由方案,被墙的及非常慢的走 tinc,其他剩下的走原生 IPv6。。。
|
24
Liqianyu OP @wacke
被墙或非常慢的走 IPv6 代理。用 Tinc + 6in4 实现 IPv6 代理感觉有点偏。因为 6in4 毕竟是过渡技术。目前 IPv6 想要用 IPv4 一样的方案实现代理。应该必须要 NAT66,所以 IPv6 下具体怎么代理还需要再想一下...目前还是回退 IPv4 比较靠谱。 |
25
wacke 2018-09-30 15:30:25 +08:00 via Android
@Liqianyu 所以目前我用 NAT6 了,用下来感觉也还可以,以后如果有新的方案,干掉 NAT6 就可以了。。。
|
26
Liqianyu OP @wacke
NAT66 也会引起性能损失和丧失 IPv6 特性。不优雅。 我目前是不代理 IPv6,被 SNI Reset 的站就丢弃掉 AAAA 记录强制 IPv4,目前上这个待遇并且支持 IPv6 的站不多,估计全球也就是百八十个以内。常用的也就十来个。 未来 ESNI 普及应该就不需要了。因为要屏蔽估计会和 IPv4 一样解决。那样就自动回退了。 等到 IPv6 Only 的时候怎么样还不好说呢。肯定会有新方案出来。 如果要代理 IPv6,先等大部分 VPS 都支持 IPv6 再说吧。目前就算支持,路由也不行。速度还不如 IPv4,那我何必要走 IPv6。 IPv6 的用处不是拿来翻墙和上 Web 的。解决 IPv4 地址短缺和物联网才是它真正发挥作用的地方。 |
27
wacke 2018-09-30 16:05:00 +08:00
@Liqianyu 现阶段我就不去计较这些了,目前多链路 IPv4&IPv6 能用上就先用着再说,后面碰到问题再决定要不要做减法就是了。。。
|
28
Maskeney 2018-10-04 14:15:58 +08:00 via Android
感谢楼主提供思路,我最近也被这问题困扰,一旦使用 ipv6 地址网关透明代理直接失效。
|
30
jm92 2018-10-04 20:05:17 +08:00
@Liqianyu 大佬,你知道这个怎么解决吗?我的是 Openwrt cc 的 k2p
iptables v1.4.21: Couldn't load match `string':No such file or directory Try `iptables -h' or 'iptables --help' for more information. |
31
Liqianyu OP |
32
Maskeney 2018-10-05 22:47:58 +08:00
@Liqianyu 对 iptables 不是很了解,检索了半天也还是有点不太明白,请教一下示例中的|03|、|07|、|03|应该是分别对应随后的字符数,那么|00001c|是做什么的?另外这个整体为什么要加上|数字|这种格式?
|
33
Maskeney 2018-10-05 22:49:04 +08:00
另外 lz 似乎被降权了,收不到回复的通知
|
34
jm92 2018-10-06 10:45:38 +08:00
|
35
iwtbauh 2018-10-06 15:24:21 +08:00 via Android
sock5h 无所畏惧
直接在 vps 上解析域名才是正解 |
36
Liqianyu OP |
37
Liqianyu OP |
39
huaxie1988 2018-12-20 13:23:01 +08:00
@leeeboo 用 iptables 丢弃会导致域名解析慢
|
40
huaxie1988 2018-12-20 13:24:30 +08:00
@leeeboo 安装 unbound 监听在非 53 端口,在 unbound 的配置文件中添加 private-address: ::/0 即可过滤 aaaa 解析且不影响解析速度,再在 dnsmasq 里面把需要只解析 v4 的丢给 unbound 解析。
|
41
Maskeney 2019-05-14 22:16:43 +08:00
hello 楼主我今天突然起意又把 IPV6 打开了,同样为了规避 IPV4 透明代理逃逸问题,需要丢一下 AAAA 记录,除了 Netflix 之外还有哪些常用的网络服务是双栈并且容易 IPV6 优先呢?希望楼主把自己的 firewall.user 贴出来给大家参考一下
|
42
Liqianyu OP @huaxie1988 除了 private-address 本意不是做这个功能的以外,结果很不错。顺便说下 SmartDNS 也可以。
@Maskeney 我目前也放弃了用 iptables 的方案。iptables 方案并不算好,除非你不能动 DNS 解析器。 |
43
kob521 2019-11-08 10:40:32 +08:00
@huaxie1988 这个方法很有效,我进阶了一下,把默认的 pdnsd 关掉,直接用 unbound 监听 5335 端口,然后配合 dnsmasq,所有 gfwlist 的域名用 unbound 解析,不会受到 V6 干扰
|
44
zhaidoudou123 2021-08-19 16:57:46 +08:00
感谢楼主的思路
我用了 padavan 固件内置的 dnsforwarder 把符合 list 域名的请求转发给了 smartdns,然后再禁用 smartdns 里的 ipv6 解析,这样就不用关闭整个路由器的 ipv6 aaaa 记录解析了。 |