DNS搭建和使用
DNS搭建
- 安装工具
yum install -y bind-*
- 修改配置文件
vim /etc/named.conf
options {
listen-on port 53 { any; }; #修改为any;
listen-on-v6 port 53 { ::1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; #修改为any;
};
# 省略...
# 新增正向和反向解析配置
zone "xxx.com" IN{
type master;
file "up.zone";
};
zone "1.168.192.in-addr.arpa" IN{
type master;
file "down.zone";
};
- 检测语法错误
named-checkconf /etc/named.conf
- 配置正向解析文件
cd /var/named
cp named.localhost up.zone -p #复制正向解析文件模板
vim up.zone #配置文件
$TTL 1D
@ IN SOA xxx.com. root.xxx.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.xxx.com.
dns A 192.168.1.3
a A 192.168.1.4
# 判断正向解析文件:
named-checkzone up.zone /var/named/up.zone
- 配置反向解析文件
cp up.zone down.zone -p //复制反向解析文件模板
vim down.zone //配置反向解析文件模板
$TTL 1D
@ IN SOA xxx.com. root.xxx.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.xxx.com.
3 PTR a.xxx.com.
# 判断反向解析文件
named-checkzone down.zone /var/named/down.zone
- 重启生效和测试
systemctl restart named
nslookup
DNS使用
配置全局dns解析
vi /etc/reslov.conf
添加配置
nameserver 8.8.8.8
nameserver 8.8.4.4
注意多个dns会随机使用
linux系统下为每个网卡配置特定的dns
判断网络管理工具
- NetworkManager:
systemctl status NetworkManager
如果命令显示 “Active: active”,则表示您的系统正在使用 NetworkManager。
- systemd-networkd:
systemctl status systemd-networkd
如果命令显示 “Active: active”,则表示您的系统正在使用 systemd-networkd。
- ifupdown (ifconfig):
ifconfig
如果您在命令输出中看到网卡接口信息(例如 “eth0” 或 “wlan0”),则表示您的系统可能在使用 ifupdown 工具。
- netplan:
ls /etc/netplan/
如果输出中显示了网络配置文件(以 .yaml 结尾),则表示您的系统使用了 netplan。
systemd-networkd 为网卡设置特定DNS
- 使用本地dns
nameserver 127.0.0.53 #表示使用本地 DNS 解析器来解析域名。在这种情况下,任何向该系统发送的 DNS 查询都会由本地 DNS 解析器(systemd-resolved 服务)处理,并将查询发送到正确的 DNS 服务器进行处理
options edns0 trust-ad # 指示 DNS 解析器在使用 EDNS0 协议发送 DNS 查询时,启用 AD(授权数据)标志,并信任 DNS 响应中的 AD 标志。这可以帮助防止 DNS 缓存污染等攻击
search . # 表示 DNS 解析器应该搜索的默认域名列表。在这种情况下,没有提供任何默认域名。如果您想使用默认的域名搜索列表,可以在此处输入一个或多个域名,每个域名之间用空格分隔
- 打开终端,并使用文本编辑器(如 nano 或 vim)创建或编辑一个名为 your-interface.network 的文件,其中 your-interface 是您要配置的网卡接口的名称。例如,如果要配置 eth0 网卡,可以运行以下命令:
sudo nano /etc/systemd/network/your-interface.network
- 在打开的文件中,添加以下内容:
[Match]
Name=your-interface
[Network]
DNS=your-dns-server-ip
将 your-interface 替换为您要配置的网卡接口的名称,将 your-dns-server-ip 替换为您要使用的 DNS 服务器的 IP 地址。您还可以指定多个 DNS 服务器,将它们以逗号分隔。
例如,如果要将 eth0 网卡的 DNS 服务器设置为 8.8.8.8 和 8.8.4.4,则配置文件的内容如下:
[Match]
Name=ztld2duimp
[Network]
DNS=10.191.167.1
DHCP=ipv4
LinkLocalAddressing=ipv6
[DHCP]
RouteMetric=100
UseMTU=true
-
保存并关闭文件。
-
重启 systemd-networkd 服务以应用更改:
sudo systemctl restart systemd-networkd
networkctl status <interface>
systemctl status systemd-resolved
NetworkManager 为网卡设置特定DNS
- 配置全局dns解析,使用dnsmasq作为内部dns工具
sudo yum install dnsmasq
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq
vi /etc/99-custom-dns.conf
[main]
dns=dnsmasq
[dnsmasq]
servers=100.125.1.250,10.191.167.1
需要注意的是,/etc/NetworkManager/system-connections 中配置的 DNS 服务器将优先于 /etc/NetworkManager/conf.d 中的全局配置。因此,如果特定网络连接在 .nmconnection 文件中有指定 DNS 服务器,那么它将覆盖全局配置。
使用dnsmasq转发特定域名到其他dns服务器
要使用 dnsmasq 将 xxx.lan 域名和其子域名转发到特定的 DNS 服务器(例如 10.191.167.1),您可以执行以下步骤:
打开 dnsmasq 配置文件。
sudo nano /etc/NetworkManager/dnsmasq.conf
在文件中添加以下行,配置转发规则。
server=/xxx.lan/10.191.167.1
这将指示 dnsmasq 将 ljp.lan 域名及其所有子域名转发到 10.191.167.1。
保存并关闭文件。
重启 dnsmasq 服务,以使配置更改生效。
sudo systemctl restart NetworkManager
NetworkManager使用dnsmasq时会启用内置的dnsmasq,不用单独启动dnsmasq;
现在,当您在本地网络中使用 dnsmasq 作为 DNS 服务器时,它将把 ljp.lan 域名和其子域名的解析请求转发到 10.191.167.1。
请注意,您需要确保已正确设置 dnsmasq 作为您网络中的 DNS 服务器,并已将其配置为本地网络上的 DNS 解析器。此外,确保 10.191.167.1 是有效的 DNS 服务器地址并可正常访问。
使用system-connections为特定网卡配置dns(实测对zerotier无效)
- 打开终端并运行以下命令来查看当前可用的网络连接和网卡名称:
nmcli device
这将显示所有可用的网络设备以及它们的名称,如 eth0 或 wlan0。
- 找到您要设置 DNS 的网卡名称,并运行以下命令来编辑该网卡的连接文件:
nmcli connection modify <connection-name> ipv4.dns <DNS_IP_ADDRESS>
或者
sudo nano /etc/NetworkManager/system-connections/<connection-name>
将 替换为您要编辑的网卡连接文件的名称。
- 找到 [ipv4] 或 [ipv6] 段,在其下方添加 dns 行,指定要使用的 DNS 服务器的 IP 地址。例如:
[connection]
id=connection-name
[ipv4]
method=auto
dns=100.125.1.250;10.191.167.1;
-
保存并关闭文件。
-
重启 NetworkManager 服务以应用更改:
sudo systemctl restart NetworkManager
完成以上步骤后,您已经成功为特定网卡设置了DNS服务器。您可以运行以下命令检查新的DNS配置是否已应用:
nmcli device show <interface>
将 替换为您要查看的网卡接口的名称,例如 eth0 或 wlan0。
/var/run/NetworkManager/system-connections目录说明
/var/run/NetworkManager/system-connections 目录下的文件是 NetworkManager 存储已经配置的网络连接的位置,在使用 NetworkManager 配置网络连接时会自动生成。
如果您手动修改了该目录下的文件,重启 NetworkManager 后该文件可能会被 NetworkManager 重新生成,而您所做的更改将丢失。
如果您想修改或定制一个现有的连接,可以将该连接文件复制到 /etc/NetworkManager/system-connections 目录下,然后在新的文件中进行修改。这样即使重启 NetworkManager,您的修改也不会丢失。
例如,要修改名为 “myconnection” 的连接文件,可以执行以下命令:
sudo cp /var/run/NetworkManager/system-connections/myconnection /etc/NetworkManager/system-connections/
sudo nano /etc/NetworkManager/system-connections/myconnection
然后使用文本编辑器对 “myconnection” 文件进行必要的修改。您可能需要使用管理员权限来打开编辑器,例如 sudo nano 或类似的命令。修改后,使用以下命令重新启动 NetworkManager:
sudo systemctl restart NetworkManager.service
这样,您的更改就会生效。
netplan 为网卡设置特定DNS
- 打开终端并进入 /etc/netplan 目录:
cd /etc/netplan
-
找到正在使用的网络配置文件,它通常以 .yaml 扩展名结尾。例如,可以是 01-network-manager-all.yaml。
-
使用文本编辑器(如 nano 或 vim)打开配置文件:
sudo nano 01-network-manager-all.yaml
-
在文件中,找到您要设置 DNS 的网卡的配置块。通常,每个网卡都在 network 字段下进行定义。
-
在要设置的网卡的配置块中,添加 nameservers 字段,并指定要使用的 DNS 服务器的 IP 地址。例如:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.0.2/24] # 设置静态IP地址
gateway4: 192.168.0.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4] # 设置DNS服务器
-
保存并关闭文件。
-
运行以下命令以应用新的网络配置:
sudo netplan apply
NetworkManager 和 network 是两个不同的网络管理工具。它们具有不同的特点和用途。
network:
network 是一个传统的网络管理工具,最常见于使用 systemd 系统的 Linux 发行版中。它使用配置文件来定义和管理网络接口和网络连接。这些配置文件通常存储在 /etc/sysconfig/network-scripts/ 目录下,以接口名称命名。
network 工具需要手动编辑和配置网络接口文件,并重新启动网络服务才能应用更改。它提供了一些基本的网络配置选项,如 IP 地址、子网掩码、网关、DNS 等。
network 工具适用于具有简单网络需求的系统,也适合那些不使用 GUI 界面进行网络配置的环境。
NetworkManager:
NetworkManager 是一个更高级和动态的网络管理工具,设计用于在桌面和移动设备上提供更灵活的网络配置。大多数现代的桌面 Linux 发行版都使用 NetworkManager 作为默认的网络管理工具。
NetworkManager 具有一个图形界面(GNOME 和 KDE 桌面环境提供了对应的前端),同时还有命令行工具 nmcli。NetworkManager 在连接到网络时自动检测可用的网络接口,并根据网络环境的变化动态调整网络配置。
NetworkManager 支持各种网络连接类型,例如有线连接、无线连接、VPN 和移动宽带等。它还提供了高级的功能,如网络配置文件、自动连接管理、多个配置文件、优先级设置等。
NetworkManager 更适合那些需要自动管理网络连接并处理复杂网络环境的系统,特别是桌面和移动设备。
总结来说,NetworkManager 是一个用于桌面和移动设备的动态网络管理工具,而 network 是一个更传统的网络管理工具,适用于那些不需要自动网络连接和复杂网络环境的系统。选择使用哪个工具取决于您的需求和系统环境。
network 和 NetworkManager 可以一起使用吗?
在一台 Linux 系统中,可以同时安装和使用 network 和 NetworkManager,但是一般情况下它们不会同时使用同一个网络接口。一般情况下,使用其中一个网络管理工具即可满足大部分网络需求。
如果您希望在一台系统中同时使用 network 和 NetworkManager,可以为每个网络接口选择使用的网络管理工具。例如,对于无线网络接口,一般情况下会使用 NetworkManager 管理,而对于有线网络接口则可以使用 network 管理。
需要注意的是,如果您尝试同时在同一网络接口上使用两个网络管理工具,可能会导致冲突和错误。这是因为它们可能会尝试同时配置相同的网络设置(如 IP 地址、网关和 DNS 等),从而产生冲突。因此,在同一网络接口上最好只选择一个网络管理工具来管理网络配置。
总之,如果您需要管理多个网络接口或连接多种类型的网络,可以同时安装和使用 network 和 NetworkManager 等多个网络管理工具。但是,在单个网络接口上最好只使用一个网络管理工具。
network配置方法
以下是一些步骤,可以帮助您配置单个网卡的 DNS 服务器:
- 打开网络接口文件:
您可以使用类似以下命令的文本编辑器打开此文件:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
这里假设您想要配置的网卡是 eth0。
- 添加 DNS 服务器:
在打开的文件的末尾,添加以下命令来配置 DNS 服务器(请替换为您要使用的真实地址):
DNS1=8.8.8.8
DNS2=8.8.4.4
这里添加两个 DNS 地址。如果仅需要使用一个 DNS 服务器,只需添加 DNS1 即可。
-
保存并关闭文件。
-
重启网络接口:
在保存更改后,您需要重启该网卡的网络接口,以更新 DNS 配置。您可以使用以下命令来重启网络接口:
sudo ifdown eth0 && sudo ifup eth0
这将使该网卡的网络接口断开连接并重新连接。
自测发现作用于虚拟网卡上不能正常运行,配置的dns会修改resolev.conf,即全局修改