dnsmasq:无法创建 IPset 控制套接字:权限被拒绝
dnsmasq: failed to create IPset control socket: Permission denied
当我在 CentOS 7 中启动 dnsmasq 服务时,我得到这样的状态:
这是因为我在/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,突然遇到这个问题
有人遇到过这种情况吗?
我发现这篇文章 SELinux 阻止 ipset 创建 netlink 套接字,我禁用了 SELinux,然后它起作用了。不知道为什么。
不建议禁用 SElinux。
您可以通过创建并安装 SELinux 策略模块来解决此问题。
首先你需要创建一个名为my-dnsmasq.te的type enforcement规则文件,内容如下:
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
如果一切正常,你会看到ipset中添加了一个ip。
当我在 CentOS 7 中启动 dnsmasq 服务时,我得到这样的状态:
这是因为我在/etc/dnsmasq.d/wblist.conf
中添加了一个wblist.confcat 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,突然遇到这个问题
有人遇到过这种情况吗?
我发现这篇文章 SELinux 阻止 ipset 创建 netlink 套接字,我禁用了 SELinux,然后它起作用了。不知道为什么。
不建议禁用 SElinux。
您可以通过创建并安装 SELinux 策略模块来解决此问题。
首先你需要创建一个名为my-dnsmasq.te的type enforcement规则文件,内容如下:
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
如果一切正常,你会看到ipset中添加了一个ip。