dnsmasq 通过 ipset=/<domain>/[domain/]<ipset>[,<ipset>] 可以将域名解析结果添加到一个 ipset 集合中,这里有两个问题,向各位大佬请教一下:
如果域名解析后同时有 v4 和 v6 地址 dnsmasq 通过 ipset=/<domain>/[domain/]<ipset>[,<ipset>] 那么是选择那个地址来添加到集合中呢,是根据集合的 family 类型来选择添加那个 ip 吗?比如 ipset 的 family 是 ipv4 那么他只添加 ipv4 到集合中
就是每次添加到该集合的都是单个地址,有没有办法实现添加一个段,比如:先用 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
lsylsy2 2022-09-21 23:53:10 +08:00
1 不知道,2 在创建 ipset 的时候可以设置
ipset create ipsetname hash:ip netmask 24 |
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 同理. |
4
acbot OP @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 集合会动态更新过去吗,如果会那么是多长时间才会被更新呢? |
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 也还在。
|
6
acbot OP @infinet 谢谢!“...ipset 应该是有 DNS 请求时加...” 这样说来 dnsmasq ipset 这个集合更适合出不适合进
|
7
cattyhouse 2022-09-22 23:23:55 +08:00 via iPhone
1. 你得先用工具 创建好 web 这个 ipset 吧。不然 dnsmasq 可能会报 web 不存在。
2. dnsmasq 只加,不删。 |
8
acbot OP @cattyhouse 再次感谢!流程我大致明白,只是看了 #5 的描述后 感觉这个参数不太符合我的需求,我的需求是用这个 IPset 记录做 iptables 的入,基本下游不会有这些域名的请求,所以也就不能自动维护这个集合,但该他需要下游有 DNS 请求才会添加记录,而不是自行的以一定的频率或者是条件来更新记录,我自己还得自己写脚本来维护 DNS 解析,这样我还不入直接维护 IPset 集合。
|
9
cattyhouse 2022-09-23 17:17:54 +08:00
@acbot 你只是要得到 ip 吗? 那么 写个 while true + for 循环脚本, 让 dig 去获取你的文件里面的域名, 然后解析出来的 ip 放到另外一个文件. 然后定期对那个 ip 文件做 sort uniq ....
|
10
acbot OP @cattyhouse 其实目前就是用脚本的方式直接维护 ipset 来实现的,一直觉得定时任务这种维护方式不够完美,所以想探究一下有没有更好的方案。查看文档 dnsmasq ipset 有类似的功能并且系统本身就带这个软件,如果可以实现岂不是更好但结果不理想!
|
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 中。 |