V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
acbot
V2EX  ›  Linux

dnsmasq ipset ip 段的问题

  •  
  •   acbot · 2022-09-21 23:13:49 +08:00 · 2660 次点击
    这是一个创建于 801 天前的主题,其中的信息可能已经有所发展或是发生改变。

    dnsmasq 通过 ipset=/<domain>/[domain/]<ipset>[,<ipset>] 可以将域名解析结果添加到一个 ipset 集合中,这里有两个问题,向各位大佬请教一下:

    1. 如果域名解析后同时有 v4 和 v6 地址 dnsmasq 通过 ipset=/<domain>/[domain/]<ipset>[,<ipset>] 那么是选择那个地址来添加到集合中呢,是根据集合的 family 类型来选择添加那个 ip 吗?比如 ipset 的 family 是 ipv4 那么他只添加 ipv4 到集合中

    2. 就是每次添加到该集合的都是单个地址,有没有办法实现添加一个段,比如:先用 create web hash:net 命令创建一个 web 的集合,然后再在 dnsmasq.conf 配置文件中增加 ipset=/yahoo.com/web 生效以后希望 web 集合中保存的是 1.1.1.1/24 而不是 1.1.1.1 我分别在 dnsmasq.conf 文档和 ipset 文档中的类型( hash:ip / hash:net 等)和 参数上现过办法没有找到,ipset 有没有那个类型或者是参数可以指定默认 cidr net 值呢?

    第 1 条附言  ·  2022-09-22 08:23:57 +08:00
    附加两个问题:在 dnsmasq.conf 配置文件中增加一条 ipset=/yahoo.com/web 这样的配置

    1. web 这个 ipset 集合初始化是在什么时候完成,是下游有相应的 dns 请求才会添加,还是 dnsmasq 加载配置时候就自己先解析一遍添加了。

    2. web 这个 ipset 集合的记录会动态更新吗,如果会动态更新,那么他是先清空原集合记录再添加还是仅仅是添加,另外这个更新频率是多少,能自定义吗?比如:现在 yahoo.com 的 dns 记录从 1.1.1.1 变更为 2.2.2.2 ,web 这个 ipset 集合会动态更新过去吗,如果会那么是多长时间才会被更新呢,这个更新时间间隔或者是触发条件是什么?
    13 条回复    2022-09-30 14:12:14 +08:00
    lsylsy2
        1
    lsylsy2  
       2022-09-21 23:53:10 +08:00
    1 不知道,2 在创建 ipset 的时候可以设置
    ipset create ipsetname hash:ip netmask 24
    acbot
        2
    acbot  
    OP
       2022-09-22 00:15:58 +08:00
    @lsylsy2 谢谢!
    cattyhouse
        3
    cattyhouse  
       2022-09-22 05:52:30 +08:00
    1. man dnsmasq :

    Places the resolved IP addresses of queries for one or more domains in the specified Netfilter IP set. If multiple setnames are given, then the addresses are placed in each of them, subject to the limitations of an IP set (IPv4 addresses cannot be stored in an IPv6 IP set and vice versa)

    解析出来的 ipv4 只能加入到 类型为 ipv4 的 ipset, ipv6 同理.
    acbot
        4
    acbot  
    OP
       2022-09-22 08:22:34 +08:00
    @cattyhouse

    谢谢!

    再请教几个问题:在 dnsmasq.conf 配置文件中增加一条 ipset=/yahoo.com/web 这样的配置

    1. web 这个 ipset 集合初始化是在什么时候完成,是下游有相应的 dns 请求才会添加,还是 dnsmasq 加载配置时候就自己先解析一遍添加了。

    2. web 这个 ipset 集合的记录会动态更新吗,如果会动态更新那么他是先清空原集合记录再添加还是仅仅是添加,另外这个更新频率是多少,能自定义吗?比如:现在 yahoo.com 的 dns 记录从 1.1.1.1 变更为 2.2.2.2 ,web 这个 ipset 集合会动态更新过去吗,如果会那么是多长时间才会被更新呢?
    infinet
        5
    infinet  
       2022-09-22 10:32:06 +08:00
    很久没看 dnsmasq 了。ipset 应该是有 DNS 请求时加,而且每请求一次就把解析出的 ip 加一次。所以 yahoo.com 的 TTL 到期后再次查询解析出 2.2.2.2 ,这个 2.2.2.2 就会加入 ipset web ,同时 1.1.1.1 也还在。
    acbot
        6
    acbot  
    OP
       2022-09-22 10:58:42 +08:00
    @infinet 谢谢!“...ipset 应该是有 DNS 请求时加...” 这样说来 dnsmasq ipset 这个集合更适合出不适合进
    cattyhouse
        7
    cattyhouse  
       2022-09-22 23:23:55 +08:00 via iPhone
    1. 你得先用工具 创建好 web 这个 ipset 吧。不然 dnsmasq 可能会报 web 不存在。

    2. dnsmasq 只加,不删。
    acbot
        8
    acbot  
    OP
       2022-09-23 07:36:13 +08:00
    @cattyhouse 再次感谢!流程我大致明白,只是看了 #5 的描述后 感觉这个参数不太符合我的需求,我的需求是用这个 IPset 记录做 iptables 的入,基本下游不会有这些域名的请求,所以也就不能自动维护这个集合,但该他需要下游有 DNS 请求才会添加记录,而不是自行的以一定的频率或者是条件来更新记录,我自己还得自己写脚本来维护 DNS 解析,这样我还不入直接维护 IPset 集合。
    cattyhouse
        9
    cattyhouse  
       2022-09-23 17:17:54 +08:00
    @acbot 你只是要得到 ip 吗? 那么 写个 while true + for 循环脚本, 让 dig 去获取你的文件里面的域名, 然后解析出来的 ip 放到另外一个文件. 然后定期对那个 ip 文件做 sort uniq ....
    acbot
        10
    acbot  
    OP
       2022-09-23 18:25:24 +08:00
    @cattyhouse 其实目前就是用脚本的方式直接维护 ipset 来实现的,一直觉得定时任务这种维护方式不够完美,所以想探究一下有没有更好的方案。查看文档 dnsmasq ipset 有类似的功能并且系统本身就带这个软件,如果可以实现岂不是更好但结果不理想!
    fdsafds
        11
    fdsafds  
       2022-09-30 09:58:21 +08:00
    不知道楼主的具体需求是啥,如果你要将 dnsmasq 解析的域名地址加入到 ipset 中,然后通过 iptables 做策略,直接用你那个就可以实现了啊,如:
    server=/.google.com/8.8.8.8
    ipset=/.google.com/ipset
    他会将这个域名解析的地址全部加入到 ipset 中。
    acbot
        12
    acbot  
    OP
       2022-09-30 11:21:08 +08:00
    @fdsafds 需求就是通过 域名自动维护一个 ipset 记录,但 dnsmasq 的 ipset 模块有两个问题:dnsmasq 的 ipset 模块只能是下游或者是本地有请求的情况下才能执行增加操作,不能启动的时候自行增加且按照一定条件或者是频率自行维护记录的更新操作,而我这边 dnsmasq 的下游基本不会主动去访问这些域名所以不能满足我的需求,如果是写一个脚本去请求这些域名那么就画蛇添足了,我还不如脚本上直接维护 ipset 。
    fdsafds
        13
    fdsafds  
       2022-09-30 14:12:14 +08:00
    @acbot 哦,如果你就是想获取这些域名的 IP 地址就直接写脚本吧,这样简单点,获取到所有的地址后再加到 ipset 地址集中。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   974 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:08 · PVG 04:08 · LAX 12:08 · JFK 15:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.