如何运行dns
带有本地域区域的服务器,并能够dns
从选定的主机安全地向该区域添加动态条目?
我试图用 bind9 设置一个域“rag.local”。我尝试使用TSIG
. 它现在有效。步骤如下。
使用 dnssec 为区域生成密钥
$ dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 512 -n HOST rag.local
$ ls -l
-rw------- 1 rag rag 118 Mar 7 23:22 Krag.local.+157+26937.key
-rw------- 1 rag rag 229 Mar 7 23:22 Krag.local.+157+26937.private
Run Code Online (Sandbox Code Playgroud)
将 .key 复制到 /etc/bind
/etc/bind$ ls -lt
-rw-r--r-- 1 root bind 265 Mar 7 23:43 rag.local
-rw-r--r-- 1 root bind 435 Mar 7 23:35 named.conf.local
-rw------- 1 root bind 118 Mar 7 23:33 Krag.local.+157+26937.key …
Run Code Online (Sandbox Code Playgroud) 当网络连接中断时,在笔记本电脑上使用 bind9 会显示很多无意义的域:
Oct 18 19:56:18 lap3 named[1536]: error (network unreachable) resolving './NS/IN': 128.63.2.53#53
Oct 18 19:56:18 lap3 named[1536]: error (network unreachable) resolving 'drgvlofubl/A/IN': 128.63.2.53#53
Oct 18 19:56:18 lap3 named[1536]: error (network unreachable) resolving 'gjpszynvcz/A/IN': 128.63.2.53#53
Oct 18 19:56:19 lap3 named[1536]: error (network unreachable) resolving 'iqgwbuxrbt/A/IN': 192.5.5.241#53
Run Code Online (Sandbox Code Playgroud)
如何找出进行这些查询的程序?
将“调试”添加到 /etc/resolv.conf 似乎没有任何作用(笔记本电脑正在运行 Arch linux 并且似乎没有编译支持调试?)。
下一步是在启用调试的情况下编译 libresolv,除非有更好的事情要做。
我正在尝试使用 BIND9 在 Amazon Linux 上设置 DNS 服务器。它必须充当许多域的主域名服务器。
我已经使用 NamedManager(创建绑定配置文件的 Web 界面)导入了所有 DNS 区域文件。
我的/etc/named.conf如下:
options {
listen-on port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-recursion { 127.0.0.1; };
};
include "/etc/named.namedmanager.conf";
zone "." IN {
type hint;
file "named.ca";
};
Run Code Online (Sandbox Code Playgroud)
我的/etc/named.namedmanager.conf(自动生成的文件)如下:
zone "mydomain.com.dns" IN {
type master;
file "mydomain.com.dns.zone";
allow-update { none; };
};
zone "myotherdomain.com.dns" IN {
type master;
file "myotherdomain.com.dns.zone";
allow-update { none; …
Run Code Online (Sandbox Code Playgroud) Feb 24 15:54:34 ns1 named[20308]: all zones loaded
Feb 24 15:54:34 ns1 named[20308]: running
Feb 24 15:54:34 ns1 systemd[1]: PID file /var/run/named/named.pid not readable (yet?) after start.
Feb 24 15:56:03 ns1 systemd[1]: named.service operation timed out. Terminating.
Feb 24 15:56:03 ns1 named[20308]: shutting down
Feb 24 15:56:03 ns1 named[20308]: stopping command channel on 0.0.0.0#953
Feb 24 15:56:03 ns1 named[20308]: exiting
Run Code Online (Sandbox Code Playgroud)
我已经尝试重命名为 named.service,如下所述:named does not start when using systemctl
我在 Debian wheezy 中有一个 bind9 测试环境,我试图设置两条以固定顺序返回的 A 记录。在我的named.conf.options
文件中,我有以下配置:
options {
...
rrset-order { order fixed; };
};
Run Code Online (Sandbox Code Playgroud)
这是功能性的,因为我的记录总是以相同的顺序返回,但问题是 bind 选择按数字对它们进行排序(首先是最小的数字),而我正试图将它们按另一个方向排序。
基于此链接,我了解到fixed
关键字应该将响应设置为我在配置文件中获得的任何顺序。但是,我无法通过更改区域文件中记录的顺序来更改返回结果的顺序。
有谁知道如何以特定顺序返回一个 DNS 地址的多个 A 记录?
我的设置变得越来越复杂,通常我倾向于将事物分成几部分,然后自己将它们组装在一起。但这次我似乎需要更多帮助才能让整个齿轮协同工作。这就是为什么用户 @Rui F Ribeiro 要求我将这个问题作为一个单独的问题提出。
我想实现什么目标?基本上我在互联网上发现的称为 DNS 防火墙。
我需要一个配置有以下功能的 BIND 服务器:
我怎样才能实现如此复杂的配置?
这是我的配置文件,我想这里有些东西没有按需要工作,所以请帮助我进行配置。
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, …
Run Code Online (Sandbox Code Playgroud) 如何在 Linux 系统上配置 BIND 以根据请求主机的源 IP 和/或 MAC 将 DNS 查询转发到不同的上游转发器?
例如,我可能希望将 DNS 查询从网络上的某些主机发送到 OpenDNS,将其他主机发送到 Google,将所有其他主机发送到我的 ISP。
我有一个 CentOS 服务器 (amanda01),在三个不同的子网上有三个 IP 地址。
eth0 = 10.0.2.0 subnet
eth0.vlan101 = 10.101.0.0 subnet
eth0.vlan107 = 10.107.0.0 subet
(如您所见,每个 IP 都在自己的 VLAN 上,每个 VLAN 都从父接口 eth0 出去)
我的 DNS 服务器中有三个 A 记录。
amanda01.domain.grp IN A 10.0.2.81
amanda01.domain.grp IN A 10.101.0.14
amanda01.domain.grp IN A 10.107.0.14
从位于 10.0.2.0 子网上的服务器,我 ping 主机名amanda01
,DNS 服务器使用上面列出的三个 IP 中的任何一个进行响应。这显然是循环行为。
我的问题如下:
如何让 DNS 服务器只响应原始请求所在的子网? 即:如果我正在 ping 的服务器在 IP 10.0.2.11 上,我只想要 10.0.2.81 的响应。
我正在实现自定义 DNS 服务器,但当我尝试使用它时,它与正在使用的端口 53 发生冲突。更改resolved.config 文件没有帮助。我的resolved.conf 文件如下所示:
[Resolve]
DNS=127.0.0.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
Run Code Online (Sandbox Code Playgroud)
我的 /etc/resolv.conf 文件如下所示:
nameserver 127.0.0.1
nameserver 192.168.1.1
search lan1
Run Code Online (Sandbox Code Playgroud)
端口 53 仍然用于解析 dns...
$ sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE
systemd-r 636 systemd-resolve 12u IPv4 22828
0t0 UDP 127.0.0.53:domain
systemd-r 636 systemd-resolve 13u IPv4 22829 0t0 TCP
127.0.0.53:domain (LISTEN)
Run Code Online (Sandbox Code Playgroud)
当我运行自定义 Dns 服务器时出现错误,
File "/usr/lib/python3.8/socketserver.py", line 466, in
server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何建议
我面临的问题的简短背景。我正在致力于使用 USB 桥接器 FT260 实现同步 UART/I2C 操作。该芯片依靠 HID 报告来提供这些功能。插入后,hid 通用驱动程序会检测两个接口:0 和 1,第一个用于 I2C,第二个用于 UART。目前,我有支持 I2C的 FT260 驱动程序,仅作为模块加载(即hid-ft260),并且工作正常。然后后者接管了 hid-generic,我认为usbhid对此负责。lsusb -t
返回:
|__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
Run Code Online (Sandbox Code Playgroud)
dmesg
启动时显示如下:
hid-generic 0003:0403:6030.0001: hidraw0: USB HID v1.11 Device [FTDI FT260] on usb-xhci-hcd.1.auto-1.2
hid-generic 0003:0403:6030.0002: hidraw1: USB HID v1.11 Device [FTDI FT260] on usb-xhci-hcd.1.auto-1.2
ft260 0003:0403:6030.0001: hidraw0: USB …
Run Code Online (Sandbox Code Playgroud)