温馨提示×

Linux域名解析设置步骤

小樊
59
2025-10-18 06:21:09
栏目: 云计算

一、本地域名解析(通过hosts文件,适合开发测试)

适用场景:无需搭建DNS服务器,快速将域名映射到指定IP(如开发环境、测试环境)。
操作步骤

  1. 编辑hosts文件:使用管理员权限打开/etc/hosts文件(如sudo nano /etc/hostssudo vim /etc/hosts)。
  2. 添加解析条目:按格式IP地址 域名添加记录(每行一个),例如:
    192.168.1.100 example.com
    192.168.1.100 www.example.com
    
    (可同时绑定多个域名到同一IP,如192.168.1.100 api.example.com admin.example.com)。
  3. 保存并生效:保存文件后退出编辑器(nano按Ctrl+OEnterCtrl+X),修改立即生效,无需重启系统。
  4. 测试解析结果:使用ping example.comnslookup example.com命令验证是否解析到目标IP(注意:nslookup可能仍查询DNS,但实际网络请求会优先走hosts文件)。
    注意事项
  • hosts文件优先级通常高于DNS(取决于/etc/nsswitch.conf中的hosts行,默认为files dns);
  • 避免与现有DNS记录冲突,生产环境谨慎使用;
  • 某些应用(如Java)可能缓存DNS结果,修改后需重启应用。

二、DNS服务器配置(适合生产环境,提供域名解析服务)

1. 安装DNS服务器软件(以Bind9为例)

操作步骤

  • Debian/Ubuntu系统:运行sudo apt-get update && sudo apt-get install bind9
  • CentOS/RHEL系统:运行sudo yum install bind bind-utilsbind-utils包含dignslookup等工具)。

2. 配置DNS主配置文件

操作步骤
编辑/etc/bind/named.conf(Debian/Ubuntu)或/etc/named.conf(CentOS/RHEL),添加以下全局配置:

options {
    directory "/var/cache/bind";  # 指定缓存目录
    recursion yes;                # 允许递归查询(客户端可请求未知域名)
    allow-query { any; };         # 允许所有客户端查询(生产环境建议限制为特定IP段)
};

3. 定义正向解析区域

操作步骤
编辑/etc/bind/named.conf.local(Debian/Ubuntu)或/etc/named.rfc1912.zones(CentOS/RHEL),添加区域配置:

zone "example.com" {              # 要解析的域名
    type master;                  # 区域类型(master为主服务器)
    file "/etc/bind/db.example.com";  # 区域数据文件路径
};

4. 创建正向解析数据文件

操作步骤

  1. 复制模板文件生成数据文件:
    sudo cp -p /var/cache/bind/db.local /etc/bind/db.example.com  # Debian/Ubuntu
    sudo cp -p /var/named/named.localhost /var/named/db.example.com  # CentOS/RHEL
    
  2. 编辑数据文件(如sudo vim /etc/bind/db.example.com),添加以下内容:
    $TTL 86400                      # 缓存时间(1天)
    @   IN  SOA ns1.example.com. admin.example.com. (  # SOA记录(Start of Authority)
        2025101801 ; serial         # 序列号(每次修改需递增)
        3600       ; refresh        # 刷新周期(1小时)
        1800       ; retry          # 重试周期(30分钟)
        604800     ; expire         # 过期时间(1周)
        86400      ; minimum        # 最小TTL(1天)
    )
    @   IN  NS  ns1.example.com.    # NS记录(Name Server)
    ns1 IN  A   192.168.1.100       # A记录(域名→IP)
    www IN  A   192.168.1.100       # 别名解析
    

5. 配置反向解析(可选,实现IP→域名解析)

操作步骤

  1. 编辑/etc/bind/named.conf.local(Debian/Ubuntu)或/etc/named.rfc1912.zones(CentOS/RHEL),添加反向区域配置:
    zone "1.168.192.in-addr.arpa" {  # 反向区域(IP段192.168.1.0/24的反向表示)
        type master;
        file "/etc/bind/db.192";     # 反向数据文件路径
    };
    
  2. 创建反向数据文件(如sudo vim /etc/bind/db.192),添加以下内容:
    $TTL 86400
    @   IN  SOA ns1.example.com. admin.example.com. (
        2025101801 ; serial
        3600       ; refresh
        1800       ; retry
        604800     ; expire
        86400      ; minimum
    )
    @   IN  NS  ns1.example.com.
    100 IN  PTR ns1.example.com.   # PTR记录(IP→域名)
    

6. 重启DNS服务并设置开机自启

操作步骤

sudo systemctl restart bind9      # Debian/Ubuntu
sudo systemctl restart named      # CentOS/RHEL
sudo systemctl enable bind9       # 设置开机自启(Debian/Ubuntu)
sudo systemctl enable named       # 设置开机自启(CentOS/RHEL)

7. 配置客户端使用DNS服务器

操作步骤
编辑客户端/etc/resolv.conf文件(需管理员权限),添加DNS服务器IP:

nameserver 192.168.1.100  # 替换为你的DNS服务器IP

(若系统使用NetworkManager管理网络,可通过图形界面或nmcli命令设置DNS)。

8. 测试域名解析

操作步骤

  1. 使用nslookup命令测试正向解析:
    nslookup example.com
    
    预期结果:显示域名对应的IP地址(如192.168.1.100)。
  2. 使用dig命令测试反向解析(可选):
    dig -x 192.168.1.100
    
    预期结果:显示IP对应的域名(如ns1.example.com)。

关键说明

  • hosts文件:适合快速测试,无需额外配置,但无法应对大规模解析需求;
  • DNS服务器:适合生产环境,支持多域名、反向解析、负载均衡等功能,需正确配置区域文件和客户端;
  • 防火墙设置:确保DNS服务器的53端口(UDP/TCP)开放(如sudo ufw allow 53),否则客户端无法查询;
  • 序列号递增:修改区域数据文件后,需递增SOA记录中的serial字段,否则DNS服务器不会加载新配置。

0