2019-03-20 19:00:31 weixin_42565137 阅读数 515
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3307 人正在学习 去看看 徐朋

需求:自己搭建一台dns服务器,使局域网内的主机能通过服务器解析域名,访问具体的服务

dd

linux主机(dns服务器):

  • 操作系统:ubuntu14.0.4
  • ip: 10.0.22.20(ifconfig的内网ip)

windows主机(用于测试):

  • ip: 10.0.10.8(ifconfig的内网ip)
  • 程序端口:8030

一.搭建dns服务器

以下操作都在DNS服务器主机操作:

1.完全卸载bind9(清除之前所有bind9的配置,首次安装请忽略)
sudo apt-get purge bind9
2.安装bind9
sudo apt-get -y install bind9
3.bind9配置文件的介绍

Bind的配置文件,放在/etc/bind9/目录下,主要的配置文件有以下4个,分别是:

/etc/bind9/named.conf(主配置文件)
/etc/bind9/named.default-zones;
/etc/bind9/named.conf.options;
/etc/bind9/named.conf.local(域名和数据文件的配置)
其中,/etc/bind9/named.conf是Bind的主配置文件,不过他并不包含DNS数据。查看/etc/bind9/named.conf文件可以发现,主配置文件里面使用了include关键字来加载其它3个配置文件。
在/etc/bind9/named.conf.options文件中,有一句默认的配置(如下),该语句的所示的目录的作用是存放正向解析以及反向解析的一些配置文件,该配置告诉Bind,到/var/cache/bind目录下去寻找数据文件

4.添加正向解析配置(我们这里只做正向解析,即解析域名为ip)
  1. 修改/etc/bind/named.conf.local文件
sudo vim /etc/bind/named.conf.local
  1. 添加以下信息
zone "pppercy.com" {  //设置你要配置的域名
    type master;
    file "db.pppercy.com"; //这里指向了数据文件,具体位置在/var/cache/bind/db.pppercy.com
};
  1. 创建db.pppercy.com文件
    因为这时db.pppercy.com文件是不存在的,我们复制一个现有的文件作为db.pppercy.com文件的模板
sudo cp /etc/bind/db.local /var/cache/bind/db.pppercy.com
  1. 修改db.pppercy.com文件
sudo vim /var/cache/bind/db.pppercy.com
  1. 将其改为如下内容(这里的10.0.10.8为我运行了项目的windows主机ip。注意文件内容不要缺失)
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
@       IN      A       10.0.10.8
www     IN      A       10.0.10.8
@       IN      AAAA    ::1

  1. 重启bind9
sudo service bind9 restart

以下操作都在windows测试主机操作:

测试
  1. 修改dns
    在这里插入图片描述
  2. 启动项目(端口我这里设置的为8030。如果没有测试的项目也可以不用。我们搭建的目的是看到底dns服务器是否解析了我们的域名,则跳过此步)
    在这里插入图片描述
  3. 刷新dns缓存(打开cmd运行)
ipconfig /flushdns
  1. 测试(如果有响应则表示搭建成功,dns成功解析域名)
    在这里插入图片描述
  2. 这样我们就可以在浏览器通过域名加端口访问项目了
    在这里插入图片描述

二.实现nginx的端口转发:

    这时我们的dns服务器已经搭建好了。只要是局域网内的主机,将dns都配置为你的dns主机ip。都可以通过
域名加端口访问你的项目了。但是平时我们访问一个网站,难道还要加上端口访问吗?现在,我们就用nginx的端
口转发,把这个讨厌的端口去掉

以下操作都在DNS服务器主机操作:

  1. 安装nginx
sudo apt-get install nginx
  1. 修改db.pppercy.com文件
sudo vim /var/cache/bind/db.pppercy.com
  1. 将其改为如下内容(这里的10.0.22.20是dns服务器主机ip。注意文件内容不要缺失)
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
@       IN      A       10.0.22.20
www     IN      A       10.0.22.20
@       IN      AAAA    ::1

  1. 修改nginx的配置文件
sudo  vim /etc/nginx/sites-available/default

我们知道nginx.conf是nginx的主配置文件
但是在http模块中有这两行代码,一种包含关系

include /etc/nginx/conf.d/*.conf; 
include /etc/nginx/sites-enabled/*

sites-available是存放当前的server的配置, 在这里修改
而sites-enabled是激活并使用的server配置(从sites_available的文件创建快捷方式到sites-enabled)
你会发现sites-available里面增加的内容,会立即复制到sites-enabled里面
之间遇到一个问题,如果我直接把server的配置增加到主配置文件的http模块,配置一个可以正常启动,配置两个就启动失败,然后将server的配置都放到了sites-available/default这个文件就可以了
5. 添加以下内容

server {
       listen 80;
       server_name pppercy.com;
       location / {
                proxy_pass http://10.0.10.8:8030;
       }
                }
  1. 重启nginx
sudo service nginx restart
  1. 重启bind9
sudo service nginx restart

以下操作都在windows测试主机操作:

测试
  1. 刷新dns缓存(打开cmd运行)
ipconfig /flushdns
  1. 成功访问
    在这里插入图片描述

总结

  1. 解析流程:
    访问pppercy.com域名——>dns服务器进行解析——>找到db.pppercy.com数据文件——>数据文件指向dns服务器主机ip的80端口(80端口可以省略)——>nginx监听了当前主机的80端口——>匹配nginx的配置文件的server项的server_name——>匹配成功——>成功转发到http://10.0.10.8:8030

  2. 讨论一个问题:nginx到底应该安装在哪里?
    1.跑项目的主机(按道理来说项目应该是跑在linux主机的,这里为了测试方便就直接拿了个跑在windows主机的项目进行测试了)
    2.dns服务器

    如果安装到跑服务的主机 nginx的默认端口是80 而我们在bind9的数据文件中指向的正是10.0.10.8:80 当我们访问pppercy.com的时候 nginx配置的server的server_name将会匹配这一个域名 再转发到10.0.10.8:8030。这时我们同样可以实现端口转发。同样的,这台主机在8020端口又跑了一个服务,我们同样给nginx增加一个server配置 再到dns服务器配置一个pppercy2.com的域名,其数据文件也指向10.0.10.8:80,当我们访问pppercy2.com的时候 nginx又会转发到10.0.10.8:8020

    但是 如果另一个项目跑在另一个主机 那又要重新安装一个nginx 这就导致了每一台跑服务的主机都需要安装nginx进行配置 所以 索性我们直接将nginx安装在dns服务器 无论哪台主机的项目 都需要先经过dns服务器进行解析 解析后再通过安装到当前dns服务器的nginx进行端口转发

2018-11-22 10:44:34 wanghu66 阅读数 286
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3307 人正在学习 去看看 徐朋

一、dns的双向解析

实现内网主机和外网主机访问同一网站域名,定义到不同的ip

1、此实验是在搭建好环境下测试的。

包括dns域名系统的安装,防火墙的关闭,以及selinux服务disable。主dns服务器ip:172.25.254.138  外网主机ip 172.25.254.74

   在企业中,我们希望通过内网和外网访问同一个域名的时候得到不同的ip地址来区分内外网

   DNS的双向解析是实现内网主机和外网主机访问同一网站域名,定义到不同服务器

2、创建数据库文件并编辑添加

3、创建域名文件编辑

4、修改主dns服务器主配置文件

注释掉默认

添加内网策略

添加其他网络策略

在ip为172.25.254.38的客户端中

 vim /etc/resolve.conf

测试结果

  

在内网主机中

二、主从dns的配置 (dns集群)

做这个实验前把westos.com.zone这个文件另存到/mnt/

助dns可以缓解主dns的压力,当外网主机访问主dns所维护的域名时,都可以看到域名针对外网解析的ip。主dns服务器ip 172.25.254.138   辅助dns服务器ip 172.25.254.238

1、在主dns上修改外网域名解析配置文件

vim /etc/named.rfc1912.zones

添加

2、在辅助dns服务器完成dns环境的搭建。

包括dns域名系统的安装,防火墙的关闭,selinux服务为disable,主配置文件的配置

vim /etc/named.conf

3、辅助dns服务器的子配置文件的修改   

 主要作用是指定主dns服务器的和指定dns解析的数据库文件

4、在主机ip  172.25.254.138这台主机测试

vim  /etc/resolv.conf

nameserver 172.25.254.238  访问辅助dns服务器

改变serial值

辅助域名系统解析文件对主dns的域名解析文件的同步就是根据解析文件里的一个标志来进行的,就是serial参数,当主dns的serial值变化时,辅助dns才会认为主dns域名解析文件有变化,来进行同步。如果只是文件的改变,serial参数不变,主dns的数据是不会同步到辅助dns上去的。

出现了主机dns解析数据的文件,查看辅助dns的默认发布目录/var/named/slaves

5、nsupdate是一个动态DNS更新工具.可以向DNS服务器提交更新记录的请求.它可以从区文件中添加或删除资源记录,而不需要手动进行编辑区文件.

查看主机文件,多出来一个文件

查看是乱码

然后删除

westos.com.zone.jnl以及westos.com.zone 方便接下来的实验,并从/mnt/下把westos.com.zone复制过来

三 、动态域名解析 ddns

ddns域名解析就是指向网站空间ip,让人们通过注册的域名可以方便地访问到网站的一种服务。

动态域名解析服务,是将用户的动态ip地址映射到一个固定的域名解析服务上。

ddns捕获用户每次变化的ip地址,然后将其与主机的域名对应,这样域名就可以解析到非固定的ip的主机上。

1、本次实验还是以ip为172.25.254.138的主机作为主dns服务器

2、为了增加安全性,配置基于密钥来更新
4、开启备用DNS服务

5、生成密钥

6、查看密钥内容

7、生成/etc/westos.key

cp -p /etc/rndc.key /etc/westos.key

编辑添加

“  ”中内容来自

8、配置主dns服务器的主文件

vim /etc/named.conf

9、配置主dns服务器外网子配置文件

vim /etc/named.rfc1912.zones

10、测试

1、发送密钥到238

2、用客户机发送

3、主机自动生成文件

 

 

2019-11-26 21:38:30 weixin_43936969 阅读数 34
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3307 人正在学习 去看看 徐朋

一、DNS的基础定义

1、DNS的定义

  • DNS,又称域名系统(Domain Name System),是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。万维网(World Wide Web,简称www)是Internet互联网提供的主要服务之一。
  • DNS使用TCP和UDP协议,使用端口号53。对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。 53/TCP:完成区域传送; 53/UDP:完成主机名的解析查询。
  • BIND软件实现驱动DNS系统的应用程序 ,BIND的服务主程序为named 称为DNS服务程序

2、DNS的意义

  • DNS是一个按层次结构排列的分布式系统,由许多DNS服务器组成。DNS服务器是注册加入DNS的任何计算机。当你在浏览器中键入域名时,浏览器会询问DNS服务器该域的IP地址是什么,DNS服务器会尝试告诉你,只有通过DNS找到域名对应的ip,才可以正常访问。如果它不知道,那么它会尝试从其他DNS服务器中找出

3、DNS的分类

  • 权威名称服务器权威DNS :直接有客户需要的答案,客户给一个域名直接就能访问,存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。
  • 权威名称服务器的类型包括: Master : 主DNS,包含原始区域数据,有时称作 “主要 ”名称服务器。 Slave : 备份DNS ,通过区域传送从 Master 服务器获得的区域数据的副本,有时称作 “次要 ”名称服务器。
  • 非权威 / 递归名称服务器非权威DNS:里面没有客户需要的答案,但它会通过访问114.114.114.114等权威DNS找到答案给用户(相当于代购),客户端通过其查找来自权威名称服务器的数据。
  • 递归名称服务器的类型包括:缓存名称服务器 : 仅用于查找 ,不负责解析域,只是缓存域名解析结果。

4、DNS查找的过程

  • 客户端上的 Stub 解析器(根解析器)将查询发送至 /etc/resolv.conf 中的名称服务器,如果名称服务器对于请求的信息具有权威性 , 会将权威答案发送至客户端,如果名称服务器在其缓存中有此请求的信息,则会将非权威答案发送至客户端,如果缓存中没有该信息 , 名称服务器将搜索权威名称服务器来查找信息 ,从根区域开始 ,按照DNS层次结构向下搜素 , 直至对于信息具有权威性的名称服务器 ,以此为客户端获得答案,在此情况中名称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找。

二、高速缓存DNS服务器(可提高内网的访问效率)

1 问题引入:区域内有多台主机,当同时访问114.114.114.114这个权威DNS进行解析时,都通过一根传输线与外界进行通信,所以很耗带宽,并且每次请求等待的时间都很长,影响性能!
2 解决思路:内网访问外网速率较慢,但内网之间进行访问速率快,我们知道每台主机获取到当前域名的IP时,都会在缓存中保存一段时间,默认是600s。当区域内的A主机获取到IP的时候,如果区域内的其它主机也有想同的需求,让其先询问此A主机,如果A主机的缓存中有,则直接获取到,由于并不向外界发出请求,也不占用带宽!
3 解决 :区域内一台主机褡建为高速缓存DNS服务器,其余的主机每次想查询域名的IP的时候,都去请求这个DNS服务器,其他主机不再需要访问权威DNS,直接问高速缓存DNS服务器即可,只需要高速缓存DNS去问114.114.114.114,然后把自己要到的东西共享给其他主机即可。
4 高速缓存DNS特点:非权威DNS,只提供信息,不会校验是否正确!可用于提高内网的访问效率。

三、搭建DNS服务器及排错

1、搭建DNS服务器

实验条件:
(1)虚拟机可以上网:真机打开地址伪装和内核路由功能,虚拟机配置网络,设置网关:ip=172.25.70.22
(2) 通过主机ip=172.25.70.250的镜像搭建共享yum源,使虚拟机可以安装软件

搭建DNS服务器
(1)yum search dns 查找dns服务的软件
在这里插入图片描述
(2)yum install bind -y 安装bind软件
在这里插入图片描述
(3)rpm -ql bind 查看bind的配置文件和服务名称

  • 主配置文件:/ etc / named.conf
  • 辅助配置文件: / etc / named.rfc1912.zones:声明了区域 可以在主配置文件中利用include命令来包含其他配置文件;
  • 区域文件的存放目录 : /var / named
  • 存放辅助区域文件的目录:/ var / named / slaves
    在这里插入图片描述

(4)systemctl start named 开启dns服务

  • 第一次开启服务时,服务会起不来,是因为加密字符太短 /etc/rndc.key 这个文件就不存在,此时敲击物理键盘,使他的加密字符变长,此时这个文件才会有,系统才会起来

在这里插入图片描述
在这里插入图片描述
(5) 在防火墙里面添加dns服务
   firewall-cmd --pernament --add-service=dns
   firewall-cmd --reload
   firewall-cmd --list-all
在这里插入图片描述
(6)vim /etc/resolv.conf 中添加 nameserver 114.114.114.114 在dns配置文件里面写入权威dns的ip
在这里插入图片描述
在这里插入图片描述
(7)netstat -antlupe | grep named 查看dns服务的53端口是否对172.25.70.22开启
在这里插入图片描述
(8)vim /etc/named.conf 编辑dns服务的主配置文件更改参数,关闭安全检测
在这里插入图片描述
在这里插入图片描述
(9)systemctl restart named 重启服务

测试:在server虚拟机 ip=172.25.70.122
(1)vim /etc/resolv.conf 中添加 nameserver 172.25.770.22 在dns配置文件里面写入高速缓存dns的ip
在这里插入图片描述
在这里插入图片描述
(2)在高速缓存dns服务器访问百度
在这里插入图片描述
(3)在server上访问百度
在这里插入图片描述

2、dig时出现的问题

2.1

    connection timed out; no servers could be reached

    原因:netstat -antlupe |grep named 显示

     tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN

   说明:默认回环地址的53端口来监听外部请求的,用来内部测试的,显然不合理,修改配置文件绑定DNS服务器的IP!

在这里插入图片描述
2.2

   ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 23719
  
   原因:DNS服务器默认是不允许其它客户端来请求访问的!

   解决策略:  配置文件中allow-query { localhost;}; 改为 allow-query {any;}; 

在这里插入图片描述
2.3

  ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10047

  原因:DNS服务接受客户端的请求,但是DNS没有解决策略,你问的问题我不知道!

  解决策略:在配置文件中添加forwarders {114.114.114.114;};  此台DNS服务器转交上层的DNS服务器;
           我解决不了我想方设法的帮你解决!

在这里插入图片描述
2.4

   ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10047
    以上三个参数都更改了,仍访问失败
   原因:默认会校验DNS的合法性(是否是授权的,说白一点就是付费没有),服务器端设置成no

在这里插入图片描述

四、DNS正向解析

1、 DNS正向解析

(1)vim /etc/resolv.conf 写入nameserver 172.25.254.22(改成自己的ip)
在这里插入图片描述
(2)vim /etc/named.conf 注释 forwarders {114.114.114.114;}; 如果直接在这个文件里面写入域名的管理的话会时文件内容冗长,排错难 (.配置行的注释方式://:单行注释 , /* */:多行注释)
在这里插入图片描述
(3)vim /etc/named.rfc1912.zones (这个文件和上述文件的作用一样)
在这里插入图片描述
(4)cd /var/named 必须切换到这个目录下
(5)cp -p named.localhost ranran.com.zone(-p是为了改ranran.com.zone这个文件的权限)
在这里插入图片描述
(6)vim ranran.com.zone 写入:主机名字 ip地址(我要在这个域名里面找什么主机就写什么)
在这里插入图片描述
在这里插入图片描述

@变量 含义
主机记录(A记录) 记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上
别名记录(CNAME记录) CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录
IPv4主机记录(A记录) IPV4的标志,用于将特定的主机名映射到一个主机的IPv4地址
IPv6主机记录(AAAA记录) IPV6的标志,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址
服务位置记录(SRV记录) 用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等
NAPTR记录 它提供了正则表达式方式去映射一个域名,NAPTR记录非常著名的一个应用是用于ENUM查询
PTR IPv4/IPv6 地址至名称
MX 用于名称的邮件交换器 ( 向何处发送其电子邮件 )
NS nameserver,管理这个域名的服务器的主机的名字
SOA ” 授权起始 “ , DNS 区域的信息 ( 管理信息 )

(7)systemctl restart named

测试

  • 如果服务启不起来,在**/var/log/messages**中查看日志,找到解决办法

在这里插入图片描述

2、邮件实验MX

  • 我们平常发送邮件都是先登陆某邮箱的服务器,再将邮件发出去,这台服务器将ranran.163.com这个邮件发送,需要通过DNS解析找到MX记录163.com,而再通过smtp协议的25端口进行邮件发送。
  • 简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准,SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输,可以很简单地通过telnet程序来测试一个SMTP服务器,SMTP使用TCP端口25,要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。
  • **邮件交换记录(MX record)**是域名系统DNS中的一种资源记录类型,用于指定负责处理发往收件人域名的邮件服务器,MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据这个值来决定投递邮件的服务器,简单邮件传输协议(SMTP)会根据MX记录的值来决定邮件的路由过程。

(1)在DNS服务器上面 netstat -antluep | grep master 查看25端口是否开启
在这里插入图片描述
(2)在DNS服务器的 ranran.com.zone 中加入以下内容并且重启服务
在这里插入图片描述
(3)在客户端给服务端发送邮件 mail root@ranran.com Ctrl+D 结束编辑 ,mailq 查看邮件队列
在这里插入图片描述
(4)在服务端查看
在这里插入图片描述

五、反向解析

  • 正向解析:即将FQDN转化为IP ; 反向解析:即将IP转化为FQDN(PTR:IPv4/IPv6地址----->名称)
    (1)vim /etc/named.rfc1912.zones
    在这里插入图片描述
    (2)cd /var/named
    (3)cp -p named.loopback ranran.com.ptr
    在这里插入图片描述
    (4)vim ranran.com.ptr
    在这里插入图片描述
    (5)systemctl restart named

测试
(1) dig -x 172.25.70.345
在这里插入图片描述

六、双向解析

  • 不同的人解析的是不一样[内网172.25.70.22外网192.168.172.0]
    (1)cp -p ranran.com.zone ranran.com.inter.zone
    (2)vim ranran.com.inter.zoneranran.com.inter.zone 文件中所有172.25.70替换为192.168.172 :%s/172.25.70/192.168.172/g
    在这里插入图片描述
    在这里插入图片描述

(3)cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter.zones (外网的文件)

(4)vim /etc/named.rfc1912.inter.zones
只修改 : zone “ranran.com” 中的 file “ranran.com.inter.zone”
在这里插入图片描述
(5)vim /etc/named.conf
5.1)原来的通过//来注释**

5.2)man 5 named.comf告知的

 view localnet {
       match-clients { localhost; };                     #说明:可以写多个(指定网段的IP)
       zone "." {
       type hint;
       file "named.ca";
 };
       include "/etc/named.rfc1912.zones";#客户端A看的是局域网的
          };

 view internet {
       match-clients { any; };                           #说明:除了本机以外的其他主机(可以设置成网段)
       zone "." {
       type hint;
       file "named.ca";
 };
       include "/etc/named.rfc1912.inter"; #客户端B看的是公网

在这里插入图片描述
(6)测试
自己主机:dig www.ranran.com—>172.25.70.123
在这里插入图片描述
其他主机:dig www.ranran.com—>192.168.172.123
在这里插入图片描述

七、辅助DNS

  • 针对外网访问dns服务器来说,缓解访问dns服务器的压力
    主DNS
    (1) 注释双向dns服务器,恢复之前的配置 (主要是为了实验效果的说明)
    在这里插入图片描述
    在这里插入图片描述
    (2)
    vim /etc/named.rfc1912.zones
    写入:
       allow-transfer {172.25.254.211;};企业6需要,企业7不需要
       also-notify {172.25.254.211;}; 也使用211主机
       在这里插入图片描述
       
    (3)重启服务
    另打开一台虚拟机 ip=172.25.70.125作为Slave
    (1)yum install -y bind安装软件
    (2)
    firewall-cmd --permanent --add-service=dns

    (3)firewall-cmd --reload
    (4)vim /etc/named.conf 修改主配置文件
    在这里插入图片描述
    (5)vim /etc/named.rfc1912.zones 修改子配置文件
      zone " ranran.com" IN {
        type slave; #数据类型判断是从DNS(不是master)!
        masters { 172.25.70.22; }; #标识主DNS的IP,与谁同步(注意是有s的)!
        file “slaves/ranran…com.zone”; #同步Master的数据块的位置!
        allow-update {none;};
      };

    在这里插入图片描述
    (7)主DNS重启服务,然后从DNS重启服务,观察实验现象 , 在/var/named/slaves 多了一个数据块,表示更新过来了!

测试
(1) vim /etc/resolve.conf 写入 nameserver 172.25.70.122 (本机ip)
在这里插入图片描述
(2)dig www.ranran.com
在这里插入图片描述

八、远程更新主机

(1)我们允许172.25.70.250 主机来添加更新DNS
首先给 /var/named/ 这个目录的用户组一个写的权限 chmod 770 /var/named/
(2)vim /etc/named.rfc1912.zones 写入:allow update {172.25.70.250;};
并且重启named服务 systemctl restart named
在这里插入图片描述
在这里插入图片描述
(3)更新之前用 cp -p ranran.com.zone /mnt/ 备份 一份,用172.25.70.250进行更新
   nsupdate 回车
   server 172.25.70.22
   update add test.westos.com 86400 A 172.25.254.123
   send
   quit

   在这里插入图片描述
测试
(1)22和122上分别 dig xixi.ranran.com 查看有没有同步
在这里插入图片描述
在这里插入图片描述
(2)将22中的 /var/named/ranran.com.zone 和 ranran.com.zone.jnl 删除即可,将之前备份的ranran.com.zone cp -p 复制回来即可恢复。

九、通过密钥进行更新

  • 前我们通过ip的方式更新dns这样的做法很不安全,别人通过ip可以更新我的dns 先在给dns做一个钥匙,有钥匙才能更新这样做更安全

在DNS服务器中
(1)systemctl restart named
(2)rm -fr ranran.com.zone*
(3)cp -p /mnt/ranran.com.zone /etc/ranran.com.zone
(4)systemctl restart named
在这里插入图片描述
(5)dnssec-keygen -a HMAC-MD5 -b 128 -n HOST ranran生成密钥
在这里插入图片描述
(6)
cp -p /etc/rndc.key /etc/ranran.key

(7)vim /etc/ranran.key
   写入key “ranran” {
   algorithm hmac-md5
   secret “自己生成的加密字符”
   };
   在这里插入图片描述
   在这里插入图片描述
   
(8)vim /etc/named.conf 在option语句块外写入 include “/etc/ranran.key”;
在这里插入图片描述
(9)vim /etc/named.rfc1912.zones
zone “ranran.com” IN {
type master;
file “ranran.com.zone”;
allow-update { key ranran; };
also-notify { 172.25.254.125}
};
在这里插入图片描述
在这里插入图片描述
(10)systemctl restart named

(11)scp Kranran. root@172.25.70.22:/mnt* 发送钥匙和锁到更新方
在这里插入图片描述
测试
(1)nsupdate -k Kranran.+157+27229.key
server 172.25.254.225
update add xixi.ranran.com 86400 A 172.25.252.123
send
在这里插入图片描述
在这里插入图片描述
(2)dig haha.ranran.com
在这里插入图片描述

十、DNS的动态解析

  • 一般动态分配ip,那么dns域名解析的ip就变了,客户会访问不到,我们要把域名与ip的对应关系做好,dhcp将哪个ip给被访问域名,dhcp告诉dns,这样客户端才会正常访问一个域名内的主机
  • DDNS(Dynamic Domain Name Server)是动态域名服务的缩写,DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析
  • 也就是说DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流,而最终客户所要记忆的全部,就是记住动态域名商给予的域名即可,而不用去管他们是如何实现的,动态域名服务的对象是指IP是动态的,是变动的,普通的DNS都是基于静态IP的,有可能是一对多或多对多,IP都是固定的一个或多个,但DDNS的IP是变动的、随机的,随着市场需求变化,DDNS需求功能也越来越多,越来越要求方便,市场现在已经有了不少第三方DDNS方支持的设备

(1)在22主机上面恢复原来的环境
    cd /var/named
    rm -rf ranran.com.zone
    cp -p /mnt/ranran.com.zone .*
(2)ll查看属性
在这里插入图片描述
在这里插入图片描述
(3)vim ranran.com.zone( 删除之前所有的,只留dns)
   systemctl restart named
   在这里插入图片描述
(4)在ip=172.25.70.22里安装dhcp服务yum install dhcp -y
在这里插入图片描述
(5)配置dhcp,并且在dhcp的配置文件/etc/dhcp/dhcpd.conf中加入
   ddns-update-style interim;
   key westos {
    algorithm hmac-md5;
    secret 加密字符串==;(cat /etc/westos.key查看)
   };
   zone westos.com. {
    primary 127.0.0.1; 回环接口比较安全
    key westos;
   }
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(6)systemctl restart dhcpd
   systemctl restart named
   systemctl stop firewalld
   在这里插入图片描述
   测试
(1)hostnamectl set-hostname news.westos.com
(2)vim /etc/sysconfig/network-scripts/ifcfg-eth0
    none----->dhcp
(3)systemctl restart network
(4)ifconfig 查看ip是不是动态获取的
(5)cat /etc/resolv.conf nameserver 172.25.254.22
(6)dig news.westos.com

2020-03-11 01:02:25 wu_weijie 阅读数 221
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3307 人正在学习 去看看 徐朋

本文结合实际场景,从零开始搭建内网 CoreDNS 服务器并完成配置
内网中物理机、虚拟机等设备较多,配置 hosts 文件太麻烦,因此想到利用一台设备搭建 DNS 服务器以解救 hosts 文件
由于之前没有搭建 DNS 服务器的经验,在 GitHub 上搜了一下后,选择了 CoreDNS

前言

以前内网都是通过 hosts 管理内网的域名解析,如果设备少还好说,设备多了后,逐个设备维护 hosts 文件非常不现实。
如果能够在内网搭建 DNS 服务器,并调整路由器的 DNS 实现内网域名解析,就能够省区 hosts 配置的时间。

本文实践环境网络拓扑图:
网络拓扑图

clone 源码,编译,测试

clone & make

本地 Golang 环境直接编译

CoreDNS 使用 Golang 开发,因此编译需要 Golang 环境。
clone 源码并编译

git clone https://github.com/coredns/coredns
cd coredns
make

如果网络环境访问 GitHub 有困难,可以使用 Gitee 提供的镜像源 coredns

git clone https://gitee.com/mirrors/coredns.git
cd coredns
make

基于 Docker Golang 编译

同样,先 clone 项目到本地

git clone https://github.com/coredns/coredns
cd coredns

如果本地没有 Golang 环境,也可以直接用 Docker 拉一个 Golang 镜像编译,以下为官方文档给出的命令

docker run --rm -i -t -v $PWD:/v -w /v golang:1.12 make

考虑到网络环境的问题,国内用户建议指定环境变量 GOPROXY

docker run --rm -i -t -e GOPROXY="https://goproxy.cn" -v $PWD:/v -w /v golang:1.12 make

测试

编译完成后,项目目录下多了一个 40MB 的二进制可执行文件 coredns

pi@rpi4:~/CoreDNS$ ls -lh
total 40M
-rw-r--r--  1 pi sudo 3.6K Mar  9 00:39 ADOPTERS.md
lrwxrwxrwx  1 pi sudo   26 Mar  9 00:39 CODE_OF_CONDUCT.md -> .github/CODE_OF_CONDUCT.md
-rw-r--r--  1 pi sudo 2.4K Mar  9 00:39 CODEOWNERS
lrwxrwxrwx  1 pi sudo   23 Mar  9 00:39 CONTRIBUTING.md -> .github/CONTRIBUTING.md
drwxr-xr-x  4 pi sudo 4.0K Mar  9 00:39 core

-rwxr-xr-x  1 pi sudo  40M Mar 10 20:56 coredns

-rw-r--r--  1 pi sudo 1.4K Mar  9 00:39 coredns.1.md
-rw-r--r--  1 pi sudo  246 Mar  9 00:39 coredns.go
-rw-r--r--  1 pi sudo 3.3K Mar  9 00:39 corefile.5.md
drwxr-xr-x  2 pi sudo 4.0K Mar  9 00:39 coremain
-rw-r--r--  1 pi sudo 2.4K Mar  9 00:39 directives_generate.go
-rw-r--r--  1 pi sudo  254 Mar  9 00:39 Dockerfile
-rw-r--r--  1 pi sudo 2.2K Mar  9 00:39 go.mod
-rw-r--r--  1 pi sudo  62K Mar  9 00:39 go.sum
-rw-r--r--  1 pi sudo 6.6K Mar  9 00:39 GOVERNANCE.md
-rw-r--r--  1 pi sudo  12K Mar  9 00:39 LICENSE
-rw-r--r--  1 pi sudo 1.9K Mar  9 00:39 Makefile
-rw-r--r--  1 pi sudo 1.6K Mar  9 00:39 Makefile.doc
-rw-r--r--  1 pi sudo 1.7K Mar  9 00:39 Makefile.fuzz
-rw-r--r--  1 pi sudo 7.0K Mar  9 00:39 Makefile.release
drwxr-xr-x  2 pi sudo 4.0K Mar 10 20:16 man
drwxr-xr-x  2 pi sudo 4.0K Mar  9 00:39 notes
-rw-r--r--  1 pi sudo 1.7K Mar  9 00:39 owners_generate.go
drwxr-xr-x  2 pi sudo 4.0K Mar  9 00:39 pb
drwxr-xr-x 49 pi sudo 4.0K Mar  9 00:39 plugin
-rw-r--r--  1 pi sudo 1.3K Mar  9 00:39 plugin.cfg
-rw-r--r--  1 pi sudo 5.7K Mar  9 00:39 plugin.md
-rw-r--r--  1 pi sudo 8.4K Mar  9 00:39 README.md
drwxr-xr-x  2 pi sudo 4.0K Mar  9 00:39 request
lrwxrwxrwx  1 pi sudo   19 Mar  9 00:39 SECURITY.md -> .github/SECURITY.md
drwxr-xr-x  2 pi sudo 4.0K Mar  9 00:39 test

运行 coredns 并监听 1053 端口,此时由于没有配置文件,只能验证 DNS 服务器是否工作

./coredns -dns.port 1053

使用 dig 命令验证 DNS 服务器运行状况

dig @localhost -p 1053 a whiami.expamle.org

输出结果:

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> @localhost -p 1053 a whiami.expamle.org
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20349
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: c1c711345e8fb2e2 (echoed)
;; QUESTION SECTION:
;whiami.expamle.org.            IN      A

;; ADDITIONAL SECTION:
whiami.expamle.org.     0       IN      AAAA    ::1
_udp.whiami.expamle.org. 0      IN      SRV     0 0 13225 .

;; Query time: 0 msec
;; SERVER: ::1#1053(::1)
;; WHEN: Tue Mar 10 21:01:06 CST 2020
;; MSG SIZE  rcvd: 147

没有解析结果,但是 DNS 服务器已经在工作了,接下来就需要配置域名解析。

域名解析配置

coredns 基本参数

pi@rpi4:~/CoreDNS$ ./coredns -h
Usage of ./coredns:
  -conf string
        Corefile to load (default "Corefile")
  -dns.port string
        Default port (default "53")
  -pidfile string
        Path to write pid file
  -plugins
        List installed plugins
  -quiet
        Quiet mode (no initialization output)
  -version
        Show version
参数 解释
-conf 指定配置文件(默认为当前目录的 Corefile
-dns.port 指定 DNS 服务监听端口
-pidfile 指定 pid 文件的存放路径
-plugins 列出已安装的插件
-quiet 不打印日志
-version 显示版本信息

创建配置文件

hello, world 配置

在 coredns 所在目录下,新建文件 Corefile,并写入以下内容:

.:1053 {
    forward . 8.8.8.8:53
    log
}

上面配置为监听 1053 端口,将所有域名解析请求转发到 8.8.8.8:53,保存后运行 coredns 并 dig 一下:

dig @localhost -p 1053 a www.baidu.com

输出结果:

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> @localhost -p 1053 a www.baidu.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25306
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
www.baidu.com.          259     IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       237     IN      CNAME   www.wshifen.com.
www.wshifen.com.        157     IN      A       104.193.88.123
www.wshifen.com.        157     IN      A       104.193.88.77

;; Query time: 19 msec
;; SERVER: ::1#1053(::1)
;; WHEN: Tue Mar 10 22:20:20 CST 2020
;; MSG SIZE  rcvd: 192

可以看到,域名解析成功了。

按照需求进行配置

网络拓扑图如下:
网络拓扑图
DNS 服务器将运行在 rpi4 / rpi4-wifi 上面,并给局域网中的每个 IP 配一个域名。

由于内网环境比较简单,不需要复杂的配置,所以选择使用 CoreDNS 的 hosts 插件,文档参考:hosts 插件官方文档

创建一个 hosts 风格的文件 /etc/coredns/hosts,并按照拓扑图配置,内网域名为 lo

192.168.3.254   rpi4.lo
192.168.99.254  rpi4-wifi.lo
192.168.3.253   rpi3.lo
192.168.99.253  rpi3-wifi.lo
192.168.3.252   mix2.lo
192.168.3.233   sia.lo
192.168.3.200   hyper-sia.lo
192.168.3.201   hyper-tesla.lo
192.168.3.99    ws5200.lo
192.168.3.1     pro2.lo

创建一个 Corefile /etc/coredns/Corefile
配置解释:

  • 将所有 lo 域名根据同一目录下的 hosts 文件解析
  • 所有其他的域名转发到 DNS 服务器 202.96.128.86:53
lo:53 {
    hosts /etc/coredns/hosts
    log
}

.:53 {
    forward . 202.96.128.86:53
    log
}

配置完成后启动 coredns,由于使用 53 端口,需要 root 权限:

sudo coredns -conf /etc/coredns/Corefile

启动 coredns 并验证配置

验证内网域名解析

使用 dig 验证解析域名 sia.lo

dig @localhost a sia.lo

解析结果:

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> @localhost sia.lo
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50021
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 2acae2295223fd2b (echoed)
;; QUESTION SECTION:
;sia.lo.                                IN      A

;; ANSWER SECTION:
sia.lo.                 3600    IN      A       192.168.3.233

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Wed Mar 11 00:06:05 CST 2020
;; MSG SIZE  rcvd: 69

可以看到,内网域名 sia.lo 已被成功解析到 192.168.3.233

验证其他域名解析

使用 dig 验证解析域名 github.com

dig @localhost github.com

解析结果:

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> @localhost github.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1439
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 8, ADDITIONAL: 12

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 36e32dedc12b437a (echoed)
;; QUESTION SECTION:
;github.com.                    IN      A

;; ANSWER SECTION:
github.com.             600     IN      A       13.250.177.223

;; AUTHORITY SECTION:
github.com.             333     IN      NS      ns-1283.awsdns-32.org.
github.com.             333     IN      NS      ns-421.awsdns-52.com.
github.com.             333     IN      NS      ns-520.awsdns-01.net.
github.com.             333     IN      NS      ns-1707.awsdns-21.co.uk.
github.com.             333     IN      NS      ns4.p16.dynect.net.
github.com.             333     IN      NS      ns2.p16.dynect.net.
github.com.             333     IN      NS      ns1.p16.dynect.net.
github.com.             333     IN      NS      ns3.p16.dynect.net.

;; ADDITIONAL SECTION:
ns-1283.awsdns-32.org.  172465  IN      A       205.251.197.3
ns-1707.awsdns-21.co.uk. 122490 IN      A       205.251.198.171
ns-421.awsdns-52.com.   50849   IN      A       205.251.193.165
ns-520.awsdns-01.net.   36645   IN      A       205.251.194.8
ns1.p16.dynect.net.     80219   IN      A       208.78.70.16
ns3.p16.dynect.net.     40730   IN      A       208.78.71.16
ns4.p16.dynect.net.     77364   IN      A       204.13.251.16
ns-1283.awsdns-32.org.  172314  IN      AAAA    2600:9000:5305:300::1
ns-1707.awsdns-21.co.uk. 122491 IN      AAAA    2600:9000:5306:ab00::1
ns-421.awsdns-52.com.   61826   IN      AAAA    2600:9000:5301:a500::1
ns-520.awsdns-01.net.   35373   IN      AAAA    2600:9000:5302:800::1

;; Query time: 5 msec
;; SERVER: ::1#53(::1)
;; WHEN: Wed Mar 11 00:09:40 CST 2020
;; MSG SIZE  rcvd: 871

根据输出可见,非本地域名能够正常解析。
至此,coredns 配置完成。

修改路由器 DNS 配置或部署到公网

coredns 配置完毕后,需要将路由器 DNS 服务器指向配置好的 coredns。

但是一般家用路由器可能无法设置 IP 地址为内网的 DNS,因此我选择部署到自己的云服务器上,作为个人 DNS 服务器。

将 CoreDNS 作为服务 Service 运行

把 CoreDNS 作为 Service 运行,有助于我们管理进程。

以 Debian 系统为例,其他系统的 Service 可能有差异。

创建文件 /lib/systemd/system/coredns.service,本人目前对 Service 不太熟悉,因此配置从简:

[Unit]
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/coredns -conf /etc/coredns/Corefile -pidfile /var/run/coredns/coredns.pid

[Install]
Alias=coredns.service

启动服务并查看运行状况:

sudo systemctl start coredns
sudo systemctl status coredns

服务运行状况:

● coredns.service
   Loaded: loaded (/lib/systemd/system/coredns.service; linked; vendor preset: enabled)
   Active: active (running) since Wed 2020-03-11 00:44:45 CST; 3s ago
 Main PID: 10987 (coredns)
    Tasks: 11 (limit: 4546)
   Memory: 5.0M
   CGroup: /system.slice/coredns.service
           └─10987 /usr/local/bin/coredns -conf /etc/coredns/Corefile -pidfile /var/run/coredns/coredns.pid

Mar 11 00:44:45 rpi4 systemd[1]: Started coredns.service.
Mar 11 00:44:45 rpi4 coredns[10987]: .:53
Mar 11 00:44:45 rpi4 coredns[10987]: lo.:53
Mar 11 00:44:45 rpi4 coredns[10987]: CoreDNS-1.6.7
Mar 11 00:44:45 rpi4 coredns[10987]: linux/arm64, go1.13.5, a64f0c75

设置自动启动:

sudo systemctl enable coredns

CoreDNS 服务配置完成。

2020-02-10 09:15:26 dingjianjin 阅读数 1299
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3307 人正在学习 去看看 徐朋

基本概念

ZeroTier is a smart Ethernet switch for planet Earth.

通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 如下图

ZeroTier 配置一个虚拟网段172.12.0.0/16,在家中加入这个网络中,即可访问位于公司172.12.0.101

专有名词

  1. Zerotier 定义了几个专业名词:

    	PLANET 行星服务器,Zerotier 根服务器
    	MOON 卫星服务器,用户自建的私有根服务器,起到代理加速的作用
    	LEAF  网络客户端,就是每台连接到网络节点。
    

开始使用

  • 注册 zerotier 服务

     https://my.zerotier.com/   
    

在这里插入图片描述

  • 创建网络
    在这里插入图片描述

  • 内网目标机器安装客户端

    Linux

     curl -s https://install.zerotier.com | sudo bash
    

    其他操作系统

     下载地址:https://www.zerotier.com/download/
    
  • 客户端加入创建的网络
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200209152524261.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RpbmdqaWFuamlu,size_16,color_FFFFFF,t_70在这里插入图片描述
    Linux

     zerotier-cli join 17d7123456c1ed14b #上图创建网络生成的16位ID
    

    windows
    在这里插入图片描述
    或者是cmd 后出入跟 linux一样

zerotier 同意客户端接入

  • 点击第二部创建的网络,进入网络详情 ,同意客户端

在这里插入图片描述
如上图,给客户端分配 的局域网 IP, 当然网段可以通过 本页Advanced 调整。

  • 确定网络联通(下图是moon后连接图)

在这里插入图片描述

建立中转服务器 moon Zerotier 的官方服务器在国外,国内客户端使用时延迟较大,网络高峰期时甚至各个客户端节点之间访问不了。此时 moon 中转服务器就显得非常重要,它的主要功能是通过自定义的服务器作为跳板加速内网机器之间的互相访问。

准备

  • 搭载moon(卫星级服务器,用户自建的私有根服务器,起到中转加速的作用)

    机器 A(这里选用了云服务器)

  • 内网机器

    机器 B跟 C (两笔记本)

设置教程

1. 生成及修改 moon.json
首先登陆到机器 A 上,前往路径 /var/lib/zerotier-one。运行命令

zerotier-idtool initmoon identity.public >>moon.json

此命令会在当前目录下生成一个文件 moon.json,文件内容如下:

{
 "id": "9d2456s2d7",
 "objtype": "world",
 "roots": [
  {
   "identity": "9d255ee2d7:0:7f36dcd6a7ef8ee21a0cf801e194a72ef36780b4c8578ff51fjsghfae23fc26da8c1803e7dfd17699226516ece92e752d3999bd14fb23065cf78762cb699bab",
   "stableEndpoints": []
  }
 ],
 "signingKey": "8060e833f6f0f46068dfdc97545f8c9b1b1a9358fdcf664c64ee9078f5088c48a7806c82e75cbddad898129485444cc7e83db6344d1f2e518b9b9d132c327986",
 "signingKey_SECRET": "e70cbfefddac12yh67506f3e54d376bb4c6830d6960e7a153ed0cb9aa6f4af2ecd8d423d4cae59195d2ab0398ede0673cf67h633bce5ec4140493d37d6a50ab9",
 "updatesMustBeSignedBy": "8060e833f6f0f46068dfdc97545f8c9b1b1a9358fdcf664c64ee9078f5my6d48a7806c82e75cbddad898129485444cc7e83db6344d1f2e518b9b9d132c327986",
 "worldType": "moon"
}

其中 id 为机器 A 在 ZeroTier 中的 id,本文为 9d2456s2d7。
修改 “stableEndpoints” 为机器 A 的公网的 ip。如:

"stableEndpoints": [ "1.2.3.4/9993","2001:abcd:abcd::1/9993" ]

若公网机器没有 IPv6 地址,则将其修改为

"stableEndpoints": [ "1.2.3.4/9993" ]

2. 生成签名文件
修改完 moon.json 后,执行命令

zerotier-idtool genmoon moon.json

此命令会生成一个签名文件在当前目录下,文件名如 0000009d2456s2d7.moon (机器 A 的 id 为 9d2456s2d7)

3. 将 moon 节点加入网络

  • 在机器 A 中的 ZeroTier 目录中建立子文件夹 moons.d

  • 不同系统下的 ZeroTier 目录位置:

     Windows: C:\ProgramData\ZeroTier\One
     Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One)
     Linux: /var/lib/zerotier-one
     FreeBSD/OpenBSD: /var/db/zerotier-one
    
  • 将在机器 A 生成的 0000009d2456s2d7.moon 拷贝进 moons.d 文件夹中,并重启
    ZeroTier(此步好像有些许 bug,重启电脑为佳)

4. 将内网机器连接上 moon 节点

  • 方法一

  • 在机器 B、机器 C 中的 ZeroTier 目录中建立子文件夹 moons.d

  • 不同系统下的 ZeroTier 目录位置:

     Windows: C:\ProgramData\ZeroTier\One
     Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One)
     Linux: /var/lib/zerotier-one
     FreeBSD/OpenBSD: /var/db/zerotier-one
    
  • 方法二

  • 在机器 B、机器 C 上执行

     zerotier-cli orbit 9d2456s2d7 9d2456s2d7
    

查看是否连接

  • 在其他机子执行以下命令将会显示该moon服务器:

     zerotier-cli listpeers
    

如果出现下面情况说明连接上

在这里插入图片描述
相关博客为
https://mp.weixin.qq.com/s/g3JFEaNGaLJCeDfr-Di0Hg
https://blog.zczc.cz/2018/03/14/ZeroTier-moon-%E8%AE%BE%E7%BD%AE%E6%95%99%E7%A8%8B/

没有更多推荐了,返回首页