所以我有一个 ubuntu 20.04 vps 和一个在其上运行的网站,我想将我的域名指向它。但是nslookup railnet.ir
给出的** server can't find railnet.ir: SERVFAIL
vps ip 是87.236.210.159
,域名是railnet.ir
我所做的事情:
apt install bind9
然后是配置/etc/bind/named.conf.options
::
options {
directory "/var/cache/bind";
allow-query { any; };
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-validation auto;
listen-on{
87.236.210.159;
};
listen-on-v6 { none;};
};
和/etc/bind/named.conf.local
:
zone "railnet.ir" {
type master;
file "/etc/bind/db.railnet.ir";
allow-transfer { 87.236.210.159; };
also-notify { 87.236.210.159; };
};
最后/etc/bind/db.railnet.ir
:
$TTL 604800
@ IN SOA ns1.railnet.ir. myemail.gmail.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.railnet.ir.
@ IN A 87.236.210.159
并且在我的域名提供商网站中我也设置server name
为ns1.railnet.ir
和ip address
87.236.210.159
这是我第一次做这样的事,所以很明显我做错了什么,但却想不通
答案1
首先,你必须ns1.railnet.ir.
在你的区域中定义。添加一行
ns1 IN A 87.236.210.159
其次,您的 DNS 服务器没有回复。dig railnet.ir @87.236.210.159
没有返回任何答案。要找出原因,请查看 bind 提供的日志。很可能由于某种原因它无法打开区域文件,或者发现它无效。
第三,根据您写的内容,您的also-notify
和allow-transfer
指向您自己。通常,这些应该指向该域的辅助 DNS 服务器。
首先对所有有效名称进行权威绑定回复,例如
dig railnet.ir SOA @87.236.210.159
应该返回ns1.railnet.ir
dig ns1.railnet.ir A @87.236.210.159
应该返回87.236.210.159
完成后,更新 whois,并希望粘合记录能够正确配置。
此外,您可能还想定义一些 ACL。就目前而言,bind 可以回答任何人提出的任何问题。您可能希望它回答它所控制的区域,并拒绝其他查询。
此外,DNS 是那些自己托管起来有点棘手的东西之一。这并非不可能,但只有一个域,您必须依赖胶合记录。与缓存一起,这可能会导致短暂的停机时间被缓存。使用 Cloudflare 等外部托管 DNS 通常是更好的方法。