局域网自建DNS服务器

局域网自建DNS服务器:

在局域网(LAN)中自建DNS服务器可以有效地管理和解析本地网络中的域名,这对网络管理员和技术爱好者来说都是一个非常实用的解决方案。

以下是设置一个基本的局域网DNS服务器的一般步骤和建议:

选择合适的软件

有几种常用的DNS服务器软件可以选择:

  • BIND (Berkeley Internet Name Domain): 非常流行且功能强大的DNS服务器软件,适合中大型网络。
  • dnsmasq: 轻量级的DNS和DHCP服务器,适合小型网络和嵌入式设备。
  • Unbound: 主要用于递归DNS查询,非常安全且配置简单。
    • Microsoft DNS: 集成在Windows Server中,适合Windows网络环境。

安装和配置DNS服务器(以 BIND 为例):

-----------------------------------------------

在CentOS 7上安装BIND:

-----------------------------------------------

  • BIND 9通常通过bind包来安装BIND和BIND工具
sudo yum update -y
sudo yum install -y bind bind-utils
  • 配置BIND

BIND的主要配置文件通常位于 /etc/named.conf。你需要对其进行一些基本配置。

编辑配置文件 /etc/named.conf:

sudo vi /etc/named.conf

文件内容示例:

options {
    listen-on port 53 {127.0.0.1; 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";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { localhost;10.0.1.0/24;};

    forwarders {
        223.5.5.5; // 阿里云 DNS
        8.8.8.8; // Google DNS
        8.8.4.4;
    };

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";
};

zone "example.com" {
    type master;
    file "example.com.zone";
    allow-update { none; };
};
  • 修改options块,允许所有IP进行查询(或者仅允许你的本地网络):
directory:指定BIND存储区域文件的位置。

allow-query:指定允许向BIND服务器发送查询请求的IP范围。根据你的网络情况,你可以设置为允许来自特定子网的请求,如 192.168.1.0/24。

forwarders:指定一个或多个上游DNS服务器的IP地址。BIND会将无法本地解析的DNS查询转发给这些服务器。
  • 区域配置zone:根据需求定义主区域(master zone);

  • 创建区域文件(通常存放在 /var/named 目录下):区域文件通常以.zone结尾,例如:db.example.com.zone。

sudo nano /var/named/example.com.zone

在文件中添加你的DNS记录,例如:

$TTL 86400
@   IN  SOA ns1.example.com. admin.example.com. (
            2024080701 ; Serial
            3600       ; Refresh
            1800       ; Retry
            1209600    ; Expire
            86400 )    ; Minimum TTL

    IN  NS  ns1.example.com.
ns1 IN  A   192.168.1.10
www IN  A   192.168.1.20

DNS区域文件的内容定义了example.com域的DNS记录,包括该域的SOA(Start of Authority)记录、NS(Name Server)记录和A(Address)记录。下面是对每一部分的解释:


$TTL 86400
  $TTL:默认的生存时间(Time To Live),单位为秒。
  86400:表示24小时(86400秒)。这是记录在DNS缓存中保存的时间。在此时间段内,缓存的DNS服务器不会向原始DNS服务器请求新的记录。

@ IN SOA ns1.example.com. admin.example.com. (...)
    @:代表当前的域名(即example.com)。
    IN:表示Internet类的记录。
    SOA:Start of Authority,标志域名的权威起点,定义了DNS区域的基本信息。
    ns1.example.com.:主DNS服务器的域名。这是负责该域名区域的主要DNS服务器。
    admin.example.com.:域名管理员的电子邮件地址,.替代了@符号(如 admin@example.com)。
    (...):括号内的字段分别是:
        2024080701 - Serial:序列号,用于标识此区域文件的版本。每当该文件有修改时,序列号应递增。格式通常为 YYYYMMDDNN(年份+月份+日期+修改次数)。
        
        3600 - Refresh:刷新间隔,单位为秒。此时间表示从属DNS服务器应该多长时间检查主DNS服务器以获取更新。3600秒即1小时。
        
        1800 - Retry:重试间隔,单位为秒。如果从属DNS服务器在尝试获取更新失败后,需要等待多长时间再进行重试。1800秒即30分钟。
        
        1209600 - Expire:失效时间,单位为秒。如果从属DNS服务器在指定的失效时间内无法与主DNS服务器通信,则该DNS区域数据被认为是无效的。1209600秒即14天。
        
        86400 - Minimum TTL:在之前版本的BIND中,Minimum TTL被用作负面缓存(Negative Caching)的默认TTL。在现代BIND版本中,它仍然定义了该区域的TTL值。

IN NS ns1.example.com.
    IN:表示Internet类的记录。
    NS:Name Server记录,指定该域名的权威DNS服务器。
    ns1.example.com.:指定example.com的权威DNS服务器为ns1.example.com。

ns1 IN A 192.168.1.10
    ns1:主机名,即 ns1.example.com。
    IN A:A记录,将主机名映射到IPv4地址。
    192.168.1.10:ns1.example.com的IP地址。

www IN A 192.168.1.20
    www:主机名,即 www.example.com。
    IN A:A记录,将主机名映射到IPv4地址。
    192.168.1.20:www.example.com的IP地址。
  • 设置BIND启动与开机自启动

    • 启动BIND:
    sudo systemctl start named
    
    • 启用BIND服务,使其在系统启动时自动启动:
    sudo systemctl enable named  
    
  • 配置防火墙:

    • 确保你的防火墙允许DNS查询通过(默认端口53), 在CentOS 7上,使用以下命令安装防火墙:
    sudo firewall-cmd --permanent --add-port=53/udp
    sudo firewall-cmd --permanent --add-port=53/tcp
    sudo firewall-cmd --reload
    
  • 测试BIND配置

    使用以下命令测试BIND配置是否正确:

    sudo named-checkconf
    sudo named-checkzone example.com /var/named/example.com.zone
    

    如果没有错误信息返回,则配置文件和区域文件是正确的。

  • 配置客户端
    在局域网中的客户端设备上,将DNS服务器的IP地址设置为刚刚配置的DNS服务器的IP地址(如 192.168.1.2)。这可以在网络设置中手动配置,也可以通过DHCP服务器自动分发。

  • 测试DNS服务器:
    使用 nslookup工具测试DNS解析功能,确保配置正确。定期检查和更新DNS记录,保持数据的准确性和网络的正常运行。

nslookup example.com localhost

也可以直接使用ping 命令测试域名解析功能。

ping example.com

如果解析成功,BIND 9已经成功安装并配置为DNS服务器。

-----------------------------------------------

在Ubuntu系统上安装BIND:

-----------------------------------------------

  • 使用以下命令安装BIND:
sudo apt update
sudo apt install bind9

-配置BIND

配置文件通常位于 /etc/bind 目录下。主要的配置文件是 named.conf 和 zone 文件。

  • 编辑主配置文件 named.conf(配置基本选项和引入区域文件):
// /etc/bind/named.conf
options {
    directory "/var/cache/bind";
    recursion yes;
    allow-query { any; };
    forwarders {
        8.8.8.8; // Google DNS 或其他外部DNS服务器
        8.8.4.4;
    };
};

  • 配置区域(zone)named.conf.local文件(创建区域文件定义本地网络的域名和IP地址的映射):
// /etc/bind/named.conf.local
zone "example.local" {
    type master;
    file "/etc/bind/db.example.local";
};

  • 创建区域文件:
// /etc/bind/db.example.local
$TTL 604800
@   IN  SOA ns1.example.local. admin.example.local. (
        2024080701 ; Serial
        604800     ; Refresh
        86400      ; Retry
        2419200    ; Expire
        604800 )   ; Negative Cache TTL

; Name servers
@   IN  NS  ns1.example.local.

; A records for name servers
ns1 IN  A   192.168.1.2

; A records for other hosts
www IN  A   192.168.1.3

  • 重启BIND服务:

        sudo systemctl restart bind9
    
  • 配置客户端
    在局域网中的客户端设备上,将DNS服务器的IP地址设置为刚刚配置的DNS服务器的IP地址(如 192.168.1.2)。这可以在网络设置中手动配置,也可以通过DHCP服务器自动分发。

  • 测试DNS服务器:
    使用 nslookup工具测试DNS解析功能,确保配置正确。定期检查和更新DNS记录,保持数据的准确性和网络的正常运行。

nslookup example.com localhost

也可以直接使用ping 命令测试域名解析功能。

ping example.com

如果解析成功,BIND 9已经成功安装并配置为DNS服务器。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容