DNS 域名系統與郵件服務器

DNS 域名系統

定義

域名系統是域名和IP地址相互映射的一個分佈式數據庫,可以是用戶更方便的訪問互聯網。不用去記住可以被機器直接讀取的IP。node

域名分類

域是分層管理的數據庫

# 根域: [.]
# 頂級域:
按性質:    [.org\.net\.com\.edu\.gov]
按國家:    [.cn\.tw\.hk]
# 普通域
好比: [.baidu]

解析流程

本地DNS緩存 -> 本地hosts文件 -> 指定的DNS服務器vim

若是指定的DNS服務器沒有找到對應的域名,會返回到客戶端,客戶端會向上一級DNS服務器繼續發送請求。直至查詢到或者頂級服務器也沒查詢到。緩存

DNS分類

1. 主DNS服務器:存儲原始資料
2. 從DNS服務器:自動更新注DNS服務器的數據
3. 緩存服務器:轉發來自客戶端的請求,可是會緩存查詢回來的結果 
4. 轉發器:不向根域發送請求,而是直接發給其餘的服務器,並不緩存結果

資源記錄

格式

域名 生存期 類別 類型 值bash

1. 域名:指定這條記錄適用於哪一個域
2. 生存期:指定該條記錄的穩定程度單位秒
3. 類別:互聯網信息都是 IN
4. 類型:每一個資源記錄類型
5. 值:對應的值

資源記錄類型

1. SOA Star of authority 起始受權 必須是第一行 只能有一個
2. A IPV4 address
3. AAAA IPV6 address
4. MX Mail exchange
5. NS Name Server
6. CNAME Canonical name 能夠將域名轉換,別名
7. PTR 方向解析
...還有不少

bind搭建一臺DNS服務器

咱們在RHEL1上搭建DNS服務器服務器

安裝bind

yum install bind bind-utils

建立本身的zone文件

# 可使用以下命令查看 包 bind 影響的文件夾以及文件夾
[root@rhel1 Desktop]# rpm -ql bind
# 在 /var/named 文件下建立 node.com.zone
[root@rhel1 named]# cat node.com.zone 
$TTL 1D # $TTL指令表示一個資源記錄在其餘DNS服務器
        # $ORIGIN指令表示該zone文件用來描述的域(domain)名稱
@   IN  SOA @ admin.qq.com. (
                        20191128;serial版本號
                        1D;refresh 刷新時間,每隔多久去查看版本號
                        1H;retry 從新刷新時間
                        1W;expire 過時時間
                        3H;否認答案緩存時間)  # 配置SOA。它定義了一個域的全局特性,必須是出如今zone文件中的第一個資源記錄,並且一個zone文件中必須只有一個SOA資源記錄。
@   IN NS   server      # 配置NS
server  IN A    192.168.143.10  #配置server地址
control1    A   192.168.143.10  #配置控制接口的域名
control2    A   192.168.143.11  #配置控制接口的域名
control3    A   192.168.143.12  #配置控制接口的域名
net121  A   192.168.140.10      #配置12服務器鏈接接口的域名
net122  A   192.168.140.11      #配置12服務器鏈接接口的域名
net231  A   192.168.245.10      #配置23服務器鏈接接口的域名
net232  A   192.168.245.11      #配置23服務器鏈接接口的域名

在主配置文件中,增長本身的zone

# 編輯配置文件 /etc/named.rfc1912.zones 添加以下內容
[root@rhel1 named]# tail -4 /etc/named.rfc1912.zones 
zone "node.com." IN {
    type master;
    file "node.com.zone" 
};
### 這個位置正常些文件名字就能夠,若是named啓動不了改爲絕對路徑/etc/named/node.com.zone
# 也能夠在 /etc/named.conf 文件中增長

檢測是否配置成功

#  檢測是否配置成功
[root@rhel1 named]# named-checkzone node.com.  node.com.zone 
zone node.com/IN: loaded serial 20191128
OK
# 啓動named
[root@rhel1 named]# systemctl start named
[root@rhel1 named]# systemctl enable named

測試配置的結果

# dig命令檢測 dns 解析,
### 沒有dig命令 請安裝 `bind-utils`
[root@rhel1 named]# dig -t A control1.node.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A control1.node.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61583
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;control1.node.com.     IN  A

;; ANSWER SECTION:
control1.node.com.  86400   IN  A   192.168.143.10

;; AUTHORITY SECTION:
node.com.       86400   IN  NS  server.node.com.

;; ADDITIONAL SECTION:
server.node.com.    86400   IN  A   192.168.143.10

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 28 13:31:41 CST 2019
;; MSG SIZE  rcvd: 99
# 直接ping也能夠
[root@rhel1 named]# ping control1.node.com
PING control1.node.com (192.168.143.10) 56(84) bytes of data.
64 bytes from 192.168.143.10: icmp_seq=1 ttl=64 time=0.027 ms
# nslookup 測試
[root@rhel1 named]# nslookup
> control1.node.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   control1.node.com
Address: 192.168.143.10

防火牆放行

firewall-cmd --add-service=dns --permanent
firewall-cmd --add-service=dns

RHEL2上配置並測試

# 增長DNS配置
[root@rhel2 html]# tail -1 /etc/resolv.conf 
nameserver 192.168.143.10
# 重啓網絡
[root@rhel2 html]# systemctl restart network
# 確認配置還在
[root@rhel2 html]# tail -1 /etc/resolv.conf 
nameserver 192.168.143.10
### 有時候重啓後配置就不在了。是由於/etc/sysconfig/network-script下的連接配置裏已經配置了DNS,能夠在連接配置了增長
[root@rhel2 html]# ping control1.node.com
PING control1.node.com (192.168.143.10) 56(84) bytes of data.

用 unbound搭建一個緩存服務器

安裝

[root@rhel2 html]# yum install -y unbound
[root@rhel2 html]# systemctl start unbound
[root@rhel2 html]# systemctl enable unbound

更改配置

[root@rhel2 html]# vim /etc/unbound/unbound.conf
# 下面的配置在文件中都能找到,只是須要打開註釋
server:
         # whitespace is not necessary, but looks cleaner.
         interface: 0.0.0.0
         acces-control: 0.0.0.0/0 allow
         domain-insecure: "node.com"
         # verbosity number, 0 is least verbose. 1 is default.
         verbosity: 1
forward-zone:
         name: "."
         forward-host: 192.168.143.10
# 檢測配置
[root@rhel2 html]# unbound-checkconf 
unbound-checkconf: warning: . forward-host: "192.168.143.10" is an IP4 address, and when looked up as a host name during use may not resolve.
unbound-checkconf: no errors in /etc/unbound/unbound.conf
# 重啓
[root@rhel2 html]# systemctl restart unbound

防火牆放行

[root@rhel2 html]# firewall-cmd --add-service=dns --permanent 
[root@rhel2 html]# firewall-cmd --add-service=dns

RHEL3上將DNS服務器配置成緩存服務器

[root@rhel3 ~]# tail -1 /etc/resolv.conf 
nameserver 192.168.143.11
[root@rhel3 ~]# systemctl restart network

[root@rhel3 ~]# ping control1.node.com
PING control1.node.com (192.168.143.10) 56(84) bytes of data.

注: Unboundbind都可以搭建主DNS服務器markdown

郵件服務器

電子郵件架構

Linux服務器也會發送電子郵件,通常是出於自動用途,或者向管理員報告錯誤。網絡

# 查看當前郵箱列表,能夠看到有一封信
[root@rhel1 Desktop]# mail 
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/mail/root": 3 messages 1 new 2 unread
    1 user@localhost.local  Fri Aug 16 19:06 830/62447 "[abrt] full crash report"
# 咱們本身給本身發一封
[root@rhel1 Desktop]# mail root
Subject: test
This is test mail!!!
EOT   # 按CTRL+D發送
# 查看
[root@rhel1 mail]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/mail/root": 2 messages 1 new
    1 user@localhost.local  Fri Aug 16 19:06 848/63026 "[abrt] full crash report"
>N  2 root                  Thu Nov 28 18:10  18/570   "test"
& 2
Message  2:
From root@rhel1.node.com  Thu Nov 28 18:10:16 2019
Return-Path: <root@rhel1.node.com>
X-Original-To: root
Delivered-To: root@rhel1.node.com
Date: Thu, 28 Nov 2019 18:10:05 +0800
To: root@rhel1.node.com
Subject: test
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@rhel1.node.com (root)
Status: R

This is test mail!!!

郵件協議

簡單郵件傳輸協議(SMTP)

用來發送或中轉發出的電子郵件,佔用25/tcp端口架構

第三版郵局協議(POP3)

用於將服務器上把郵件存儲到本地主機,佔用110/tcp端口

第四版互聯網信息訪問協議(IMAP4)·

用於在本地追加上訪問郵件,佔用143/tcp端口

電子郵件系統

單獨使用Postfix服務程序不能完成收發郵件的操做。咱們須要下面的軟件:

  1. Postfix提供的郵件發送服務SMTP
  2. Dovercot提供的郵件收取服務,即POP3
  3. OutlookExpress客戶端收發郵件工具

搭建郵件系統

建立空的Postfix服務器

RHEL1上建立空Postfix,在Redhat系統中已經默認安裝了這個服務程序。

  • 查看配置文件
# 咱們只須要配置下面的配置項便可
myhostname          郵局系統的主機名
mydomain            郵局系統的域名
myorigin            從本機寄出郵件的域名名稱
inet_interfaces     監聽的網卡接口
mydestination       可接受郵件的主機名或域名
mynetworkds         設置可轉發哪些主機的郵件
relay_domains       設置可轉發那些域名得郵件
  • 配置etc/postfix/main.cf爲空的postfix
# 不建議直接編輯,使用`postconf`配置
### 配置本機郵件寄出的域名,會將從本機發出去的發件人域重寫成配置項
[root@rhel1 ~]# postconf -e "myorigin=node.com"
### 設置成僅偵聽用於發送電子郵件的迴環接口
[root@rhel1 ~]# postconf -e "inet_interfaces=loopback-only"
### 設置指向的郵件服務器
### 此處的control2是上面 dns配置的服務器2的域名
[root@rhel1 ~]# postconf -e "relayhost=[control2.node.com]"
### 關閉本地電子郵件發送
[root@rhel1 ~]# postconf -e "local_transport=error:local delivery disabled"
### 本地發送不會接受收件人爲本地電子郵件帳戶的郵件
[root@rhel1 ~]# postconf -e "mydestination="
### 源自127.0.0.0/8和[::1]/128網絡的郵件可以由本地空客戶端發送到主機
[root@rhel1 ~]# postconf -e "mynetworks=127.0.0.0/8 [::1]/128"
[root@rhel1 ~]# systemctl restart postfix

配置接收端

RHEL2上配置

[root@rhel2 ~]# postconf -e "inet_interfaces = all"
[root@rhel2 ~]# postconf -e "mydestination = node.com"
[root@rhel2 ~]# systemctl restart postfix.service 
[root@rhel2 ~]# firewall-cmd --add-service=smtp --permanent 
success
[root@rhel2 ~]# firewall-cmd --add-service=smtp

RHEL1上發送RHEL2查看

[root@rhel1 ~]# mail root
Subject: From control1.node.com
I am control1
EOT
[root@rhel2 ~]# mail 
>N  5 root                  Thu Nov 28 06:26  21/740   "From control1.node.co"
& 5
Message  5:
From root@node.com  Thu Nov 28 06:26:41 2019
Return-Path: <root@node.com>
X-Original-To: root@node.com
Delivered-To: root@node.com
Date: Thu, 28 Nov 2019 22:26:41 +0800
To: root@node.com
Subject: From control1.node.com
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@node.com (root)
Status: R

I am control1

配置客戶端下載郵件

更改RHEL2上的 Postfix配置

[root@rhel2 ~]# postconf -e "inet_interfaces=all"
[root@rhel2 ~]# postconf -e "myhostname=control2.node.com"
[root@rhel2 ~]# postconf -e "mydomain=node.com"
[root@rhel2 ~]# postconf -e "myorigin=node.com"
[root@rhel2 ~]# postconf -e "mydestination=node.com"
[root@rhel2 ~]# systemctl restart postfix

建立一個帳號

[root@rhel2 ~]# useradd test_mail_user
[root@rhel2 ~]# echo "test_mail_user" |passwd --stdin test_mail_user
Changing password for user test_mail_user.
passwd: all authentication tokens updated successfully.

配置POP3服務器

# 安裝 dovecot
[root@rhel2 ~]# yum install -y dovecot
# 修改配置文件
[root@rhel2 ~]# grep "^[^#]" /etc/dovecot/dovecot.conf 
protocols = imap pop3 lmtp
disable_plaintext_auth = no
login_trusted_networks = 0.0.0.0/0
# 配置郵件格式與存儲位置
[root@rhel2 ~]# grep "^mail_location" /etc/dovecot/conf.d/10-mail.conf 
mail_location = mbox:~/mail:INBOX=/var/mail/%u
# 建立郵件的存儲目錄
[root@rhel2 ~]# su - test_mail_user
[test_mail_user@rhel2 ~]$ mkdir -p mail/.imap/INBOX
[test_mail_user@rhel2 ~]$ exit
logout
# 重啓dovecot服務
[root@rhel2 ~]# systemctl restart dovecot
[root@rhel2 ~]# systemctl enable dovecot
ln -s '/usr/lib/systemd/system/dovecot.service' '/etc/systemd/system/multi-user.target.wants/dovecot.service'
# 防火牆放行
[root@rhel2 ~]# firewall-cmd --add-service=smtp --permanent 
success
[root@rhel2 ~]# firewall-cmd --add-port=110/tcp --permanent 
success
[root@rhel2 ~]# firewall-cmd --reload
success

在物理機上打開Foxmail進行配置

1. 輸入 用戶名密碼:test_mail_user@node.com  test_mail_user
2. 輸入服務器IP兩個都是`RHEL2`: 192.168.143.11
  • 在物理機發送一封郵件給root@node.com cc test_mail_user@node.com
[root@rhel2 ~]# mail 
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 8 messages 4 new 7 unread
    1 kane@localhost.local  Mon Oct 28 19:18  17/723   "*** SECURITY informat"
 U  2 kane@localhost.local  Mon Oct 28 19:19  17/722   "*** SECURITY informat"
 U  3 root                  Thu Nov 28 06:24  22/742   "from rhel1 teset"
 U  4 root                  Thu Nov 28 06:25  22/721   "11"
>N  5 root                  Thu Nov 28 06:26  21/740   "From control1.node.co"
 N  6 root                  Thu Nov 28 06:34  21/711   "ttt"
 N  7 root                  Thu Nov 28 06:34  22/711   "12"
 N  8 test_mail_user@node.  Thu Nov 28 19:46  49/1965  "Test Mail From Window"
& 8
Message  8:
From test_mail_user@node.com  Thu Nov 28 19:46:47 2019
Return-Path: <test_mail_user@node.com>
X-Original-To: root@node.com
Delivered-To: root@node.com
Date: Fri, 29 Nov 2019 11:46:47 +0800
From: "test_mail_user@node.com" <test_mail_user@node.com>
To: root <root@node.com>
Cc: test_mail_user <test_mail_user@node.com>
Subject: Test Mail From Windows
X-Priority: 3
X-Has-Attach: no
X-Mailer: Foxmail 7.2.14.409[cn]
Content-Type: multipart/alternative;
    boundary="----=_001_NextPart204586814442_=----"
Status: R

Content-Type: text/plain;
    charset="us-ascii"

Hi root
    
    This is a test mail from Foxmail.



test_mail_user@node.com
  • 在物理機上一樣也能夠收到這封郵件。
相關文章
相關標籤/搜索