我想知道是否有办法查询 DNS 服务器并绕过缓存(使用dig)。我经常更改 DNS 服务器上的区域,我想检查它是否从我的工作站正确解析。但是由于服务器缓存已解决的请求,我经常得到旧的。重新启动或加载服务器并不是一件好事。
我试图更好地理解 DNS,但我仍然没有完全获得 A 和 NS 记录。
据我所知,A 记录告诉我哪个 IP 地址属于(子)域,到目前为止我还很清楚。但据我所知,NS 记录告诉哪个名称服务器点属于(子)域,而该名称服务器应该告诉哪个 IP 地址属于(子)域。但这已经在同一个 DNS 文件的 A 记录中指定了。所以有人可以向我解释 NS 记录和名称服务器到底是做什么的,因为我可能理解错了。
编辑:据我所知,NS 记录告诉您要找到具有某个域的 A 记录的 DNS 服务器,而 A 记录告诉您哪个 IP 地址属于某个域。但是将 A 和 NS 记录放在同一个 DNS 文件中有什么用呢?如果某个域已经有 A 记录,那么为什么您需要指向另一个 DNS 服务器,它可能会给您相同的信息?
$ORIGIN example.com. ; not necessary, using this to self-document
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
1970010100 7200 1800 1209600 300)
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN A 198.51.100.1
ns1 IN A 198.51.100.2
ns2 IN A 198.51.100.3
sub1 IN NS ns1.example.edu.
sub2 IN NS ns1.sub2
ns1.sub2 IN A 203.0.113.1 ; inline glue record
Run Code Online (Sandbox Code Playgroud)
NS 记录在域顶点下的作用是众所周知的。它们的存在是为了将子域的权限委托给另一个名称服务器。上面的例子应包括的NS记录sub1和sub2。这些允许名称服务器为它认为自己不具有权威性的域部分分发引用。
在NS的目的,记录在一个域的顶点,ns1而ns2在这种情况下,似乎较少地受到互联网的大了解。我的理解(可能不是整体的)如下:
NS 记录的目的是告诉客户端哪个名称服务器肯定知道域名的实际 IP 地址。因此,例如,以下查询告诉您,如果您想获得有关facebook.com您必须询问的权威答案a.ns.facebook.com:
> dig ns facebook.com 19:58:27
; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns facebook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32063
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;facebook.com. IN NS
;; ANSWER SECTION:
facebook.com. 65000 IN NS a.ns.facebook.com.
facebook.com. 65000 IN NS b.ns.facebook.com.
;; Query time: 13 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sun Mar 20 …Run Code Online (Sandbox Code Playgroud) 我很难理解管理机构如何分配 IP 地址、公司如何使用 BGP 来宣传这些 IP,以及互联网是如何工作的。那么,DNS到底从何而来?
任何人都可以建议好好阅读一下这些东西的实际工作原理吗?我想我有几个问题。首先是,ARIN(或任何其他管理机构)真的重要吗?如果他们不在,会不会乱?当他们分配一个块时,他们实际上并没有分配它?你必须使用BGP来做广告,对吗?我一直习惯于在其中路由 IP 的封闭托管环境(专用/共享)。
那么,DNS 是如何发挥作用的呢?通过我的注册商,我可以注册 DNS 服务器 (eNom) - 这实际上意味着什么?我已经安装了 Bind 并完成了所有这些工作,并且我运行了自己的 DNS 服务器,但是他们向谁注册了该 DNS 服务器?我只是不明白。
我觉得这是我应该知道而我不知道的事情,而且我真的很沮丧。就像.. 简单.. 互联网是如何工作的?从分配 IP 到公司路由,再到 DNS。
我想我有一个例子 - 我有这个 IP 空间,比如说 158.124.0.0/16(例子)。该公司面向互联网 158.124.0.0/17。(首先,为什么公司会获得分配的 IP 块然后不使用它们?为什么不使用保留的内部空间 10.x 和 192.x?)。所以,这就是我所在的位置。我该怎么做才能真正在 Internet 上获取这些 IP 并使其可用?假设我在芝加哥有一个数据中心,在纽约有一个。我无法上传图片,但我可以在此处链接:http : //begolli.com/wp-content/gallery/tech/internetworkings.png
我只是想了解从何时分配 IP 块到使用 BGP 的公司(获得公共 AS #?),然后 DNS 如何发挥作用?
从我的照片看会是什么样子?我试图把一个场景放在一起,不确定我是否做得很好。
我已经与 BIND 打交道多年,这一直困扰着我。
$ dig google.com ns
;; QUESTION SECTION:
;google.com. IN NS
;; ANSWER SECTION:
google.com. 87046 IN NS ns3.google.com.
etc...
;; ADDITIONAL SECTION:
ns1.google.com. 87274 IN A 216.239.32.10
etc.
Run Code Online (Sandbox Code Playgroud)
我明白,至少在理论上,根服务器处理 .,并将 .com.、.gov. 等任何内容交给正确的服务器(尽管实际上这都缓存了几个级别),但在某些时候,有人要知道向216.239.32.10 的服务器询问whatever.google.com 的A 记录。但是解析器首先是如何解决这个问题的,因为您需要知道 NS 的 A 才能做到这一点?(就此而言,既然我们知道它是一个 Internet NS 而不是 Chaos 或其他东西,为什么您必须使用名称而不是 NS 记录的地址?)
我的域名服务器总是有一些上游人可以找到的名字(例如,我在 foo.com 上托管了 bar.com 的 DNS,而我的上游处理了 foo.com),但我从来没有完全理解像 Google 这样的人是如何克服以 google.com 的名义托管 google.com 的 DNS 的鸡与蛋问题。
我有一个域名mydomain.com.au。我为这个域制作了两个域名服务器,ns1.mydomain.com.au和ns2.mydomain.com.au,并将它们加载满 NS 记录、A 记录、MX 记录以及我想托管的任何其他内容。
现在,我如何才能使用这些?如果我去我的注册商那里说mydomain.com.au的域名服务器是ns1.mydomain.com.au和ns2.mydomain.com.au怎么会有人找到连接到查找地址的 IP,因为只有系统在世界上知道我的域名服务器的公共 IP 的是……我的域名服务器。
我在这里遗漏了一些明显的东西,请让我知道它是什么:-)
我在 Godaddy 有两个胶水记录,例如:
NS1.MYDNSSERVER.COM
NS2.MYDNSSERVER.COM
Run Code Online (Sandbox Code Playgroud)
我的域中有三个 NS 记录:
NS1.MYDNSSERVER.COM
NS2.MYDNSSERVER.COM
NS3.MYDNSSERVER.COM
Run Code Online (Sandbox Code Playgroud)
这是我的反向 dns 文件。
$TTL 1D
@ IN SOA dns.prv.server.co.uk. root.prv.server.co.uk. (
2014090402 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
10800 ) ; minimum
; Name servers's
@ IN NS dns.prv.server.co.uk.
@ IN PTR prv.server.co.uk.
; Name server hostname to IP resolve.
dns IN A 10.100.48.51
2 PTR frontend.prv.server.co.uk.
4 PTR opennebula.prv.server.co.uk.
5 PTR bleakhouse.prv.server.co.uk.
6 PTR thebodyfarm.prv.server.co.uk.
7 PTR luther.prv.server.co.uk.
8 PTR atlantis.prv.server.co.uk.
51 PTR dns.prv.server.co.uk.
Run Code Online (Sandbox Code Playgroud)
我试过检查它:
sudo named-checkzone dns.prv.server.co.uk /etc/named/48.100.10.rev
Run Code Online (Sandbox Code Playgroud)
我收到错误:
zone dns.prv.server.co.uk/IN: NS 'dns.prv.server.co.uk' …Run Code Online (Sandbox Code Playgroud) 我对 BIND 配置完全没有做任何事情,但看起来Debian Jessie升级已经破坏了它。也许引入了一些新选项,或者旧的功能现在以不同的方式工作,但我找不到问题所在。
我一直都SERVFAIL在我的身边。/var/log/bind/bind.log
我检查了我的区域named-checkzone,它们都“正常”。我已在系统范围内禁用 IPv6。我重新创建了rndckey 甚至创建了/etc/rndc.conf. 什么都不起作用。
以下是一些配置:
/etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.log";
include "/etc/bind/named.conf.local";
//include "/etc/bind/named.conf.default-zones";
acl localhost_acl {
127.0.0.0/8;
};
acl internal_10_acl {
192.168.10.0/24;
};
acl internal_150_acl {
192.168.150.0/24;
};
acl vpn_acl {
192.168.200.2;
192.168.200.5;
};
key "rndc-key" {
algorithm hmac-md5;
secret "somesecretkey==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
Run Code Online (Sandbox Code Playgroud)
/etc/bind/named.conf.options
options {
directory "/var/cache/bind";
dnssec-validation …Run Code Online (Sandbox Code Playgroud) glue-record ×3
linux ×3
bind ×2
dns-zone ×2
ns-record ×2
bgp ×1
debian ×1
delegation ×1
dig ×1
domain ×1
ip ×1
nameserver ×1
networking ×1
reverse-dns ×1
tcpip ×1