V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
berry10086
V2EX  ›  问与答

怎样针对某个域名只解析 ipv4,不解析 ipv6

  •  
  •   berry10086 · 2014-09-11 10:58:42 +08:00 · 2562 次点击
    这是一个创建于 3537 天前的主题,其中的信息可能已经有所发展或是发生改变。
    路由器上用pdnsd解决dns污染,dnsmasq配合ipset翻墙,但是发现google.com默认解析ipv6的地址,并没有加到ipset里,最近教育网通过ipv6 访问google时断时续,请问有没办法只让google解析ipv4地址而不影响其他地址的解析。
    试过了在dnsmasq里加入address=/google.com/173.194.127.72 这样解析是没问题了,但是这个ip就不能自动添加到ipset里。
    dnsmasq的配置
    server=/google.com/127.0.0.1#1053
    ipset=/google.com/letitgo
    第 1 条附言  ·  2014-09-12 00:43:02 +08:00
    最终还是通过ipset和dnsmasq解决了问题,是同时解析v4和v6
    折腾记录
    http://blog.berry10086.com/Tech/Openwrt/ipset-and-dnsmasq/
    9 条回复    2015-09-02 13:18:17 +08:00
    jerryjhou
        1
    jerryjhou  
       2014-09-11 11:41:21 +08:00
    pdnsd好像可以禁止IPv6. 不过各种翻墙方法都是支持IPv6的吧. ip6tables配置一下就好了吧
    berry10086
        2
    berry10086  
    OP
       2014-09-11 11:49:06 +08:00
    @jerryjhou ip6tables -t nat -A PREROUTING -p tcp -m set --match-set letitgo dst -j REDIRECT --to-port 1111
    提示set 是ipv4的
    jerryjhou
        3
    jerryjhou  
       2014-09-11 12:03:10 +08:00
    @berry10086
    具体的提示是什么? 我这里是正常的. ip6tables版本? 还有路由器IPv6是否开启?
    berry10086
        4
    berry10086  
    OP
       2014-09-11 15:40:24 +08:00
    @jerryjhou
    root@OpenWrt:~# ip6tables -t nat -A PREROUTING -p tcp -m set --match-set letitgo
    dst -j REDIRECT --to-port 1111
    ip6tables v1.4.21: The protocol family of set letitgo is IPv4, which is not applicable.
    jerryjhou
        5
    jerryjhou  
       2014-09-11 16:23:12 +08:00
    @berry10086 本身是支持的, 但是dnsmasq只给IPv4打了标记, 是不是它不支持IPv6啊. 或者没开启. 如果把127.0.0.1换成IPv6的形式呢? ( ::1或者:: , 有的还要加[])
    berry10086
        6
    berry10086  
    OP
       2014-09-11 17:11:07 +08:00 via Android
    @jerryjhou 后来又新建了一个set 加上参数family inet6 用ipset-dns就好了
    jerryjhou
        7
    jerryjhou  
       2014-09-11 17:25:27 +08:00
    @berry10086 能分享具体方法造福大众吗?
    berry10086
        8
    berry10086  
    OP
       2014-09-12 00:43:18 +08:00
    AttufliX
        9
    AttufliX  
       2015-09-02 13:18:17 +08:00
    我也遇到了这个问题。 dnsmasq 自身不能配置成不监听 ipv6 的 53 端口,而且,即使从 v4 的监听端口请求 dns ,结果中如果又 AAAA 记录( ipv6 ),则仍然返回带有 ipv6 的 dns 解析结果。

    我换了 unbound dns ,里面有个 do-v6 no, 这个可以让 unbound 不监听 ipv6 的 53 端口,但是如果 ipv4 的 dns 返回的 dns 含有 AAAA 记录,则 unbound 依然过滤不掉。

    我一开始向找个只支持 ipv4 记录的 dns ,但是试了几个都不行。放弃了。

    最后用 bind dns 解决了,它提供了从 ipv4 的 dns 应答中删除 AAAA 记录的功能。你可以用它。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:49 · PVG 06:49 · LAX 15:49 · JFK 18:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.