Maz*_*mer 3 linux ubuntu ddns nsupdate
我一直在尝试设置一个可以更新的域。我正在使用bind9,我已经用过
ddns-confgen -a hmac-sha512 -k <keyname>
Run Code Online (Sandbox Code Playgroud)
为了生成我的密钥,我已将密钥添加到 /etc/bind/keys.local 中
key "<keyname>" {
algorithm hmac-sha512;
secret "<secret>";
};
Run Code Online (Sandbox Code Playgroud)
我的named.conf 文件如下所示:
include "/etc/bind/keys.local";
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
Run Code Online (Sandbox Code Playgroud)
我的named.conf.local 文件如下所示:
zone "<subdomain_name>" {
type master;
update-policy {
grant <keyname> zonesub ANY;
};
file "<zone_file>"; # zone file path
};
zone "<reverse_zone>.in-addr.arpa" {
type master;
update-policy {
grant <keyname> zonesub ANY;
};
file "<reverse_zone_file>";
};
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗?因为当我这样做时:
sudo nsupdate -k <keyfile>
server <dns_server>
zone <subdomain_name>
update add newhost.<subdomain_name> 86400 A <newhost_ip>
send
Run Code Online (Sandbox Code Playgroud)
我最终得到了 SERVFAIL 响应...
dig <dns_server>
Run Code Online (Sandbox Code Playgroud)
和
ping <dns_server>
Run Code Online (Sandbox Code Playgroud)
工作正常,我只是无法让 DDNS 工作。我已经尝试过像这样的其他线程中的响应,无论我尝试什么,最终都会给我 SERVFAIL 。在此先感谢您的任何建议。
edit1:这是我尝试 nsupdate 时服务器端的相应日志:
signer "<keyname>" approved
apparmor="DENIED" operation="mknod" profile="/usr/sbin/named" name="/etc/bind/zones/<zone_file>" pid=18799 comm="named" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
client <client_ip>#62287/key <keyname>: signer "<keyname>" approved
client 172.30.2.253#62287/key <keyname>: updating zone '<zonename>/IN': adding an RR at 'host3.<zonename>' A <new_host_ip>
/etc/bind/zones/<zone_file>: create: permission denied
client <client_ip>#62287/key <keyname>: updating zone 'aci.riviera.local/IN': error: journal open failed: unexpected error
Run Code Online (Sandbox Code Playgroud)
编辑2:
结果绑定组没有 /etc/bind 的写权限...
sudo chown -R bind:bind /etc/bind
Run Code Online (Sandbox Code Playgroud)
解决了问题
感谢您像系统管理员一样发布服务器日志,而不是尝试仅通过客户端实用程序调试服务器问题。
apparmor=“拒绝”操作=“mknod”配置文件=“/usr/sbin/named”名称=“/etc/bind/zones/”pid=18799 comm=“named”requested_mask=“c”denied_mask=“c”fsuid =112 ouid=112
这似乎表明 Apparmor 正在阻止您的名称服务器创建/etc/bind/zones.
绑定名称服务器需要一个位置来持久存储(在文件中)动态更新,并通过.jnl在存储区域文件的目录中创建日志文件来实现这一点。Apparmor 会阻止该操作,因为一般来说,当守护程序和服务更改其自身的运行时配置时,会构成安全违规。
可能的解决方案:
/etc/apparmor.d/usr.sbin.named指定为 动态更新区域(和日志)文件的/var/lib/bind/传统替代方案。/etc/bind创建本地覆盖并允许在 /etc/bind/zones 中动态更新:
# /etc/apparmor.d/local/usr.sbin.named
/etc/bind/zones/** rw,
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4361 次 |
| 最近记录: |