dnsmasq:无法创建IPset控件套接字:权限被拒绝

时间:2017-03-20 13:12:30

标签: dnsmasq

当我在CentOS 7中启动dnsmasq服务时,我得到了这样的状态:

enter image description here

这是因为我在/etc/dnsmasq.d/wblist.conf中添加了一个wblist.conf

  

cat wblist.conf

# for router itself
server=/google.com.tw/192.168.8.20#53
ipset=/google.com.tw/gfwlist
  

ipset -L gfwlist

Name: gfwlist
Type: hash:net
Revision: 3
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 16784
References: 0
Members:

但是如果我评论ipset线,可以成功重启服务。

我不知道为什么。我已经使用了dnsmasq / ipset很长一段时间了,但突然遇到了这个问题。

有没有人遇到过这种情况?

2 个答案:

答案 0 :(得分:0)

不建议禁用 SElinux。

您可以通过创建并安装 SELinux 策略模块来解决此问题。

首先您需要创建一个类型强制规则文件,名为my-dnsmasq.te,内容如下:

module my-dnsmasq 1.0;

require {
        type dnsmasq_t;
        class netlink_socket { bind create write };
}

#============= dnsmasq_t ==============
allow dnsmasq_t self:netlink_socket { bind create write };

现在可以编译成策略模块包文件了:

checkmodule -M -m -o my-dnsmasq.mod my-dnsmasq.te
semodule_package -o my-dnsmasq.pp -m my-dnsmasq.mod

获得策略模块包文件my-dnsmasq.pp后,安装它:

sudo semodule -i my-dnsmasq.pp

最后,重启dnsmasq.service

sudo systemctl restart dnsmasq

并进行如下测试:

nslookup google.com.tw
ipset list gfwlist

如果一切正常,你会看到一个ip被添加到ipset中。

答案 1 :(得分:-2)

我发现这篇文章SELinux阻止ipset创建一个netlink套接字,我禁用了SELinux,然后就可以了。我不知道为什么。