栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

域名系统 DNS服务及Linux防火墙

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

域名系统 DNS服务及Linux防火墙

一、简述DNS服务器原理,并搭建主-辅服务器。

实验环境

DNS正向主服务器:10.0.0.8
DNS正向从服务器:10.0.0.18
web服务器:10.0.0.7
客户端:10.0.0.6
实现DNS正向解析主服务
在DNS主服务器器端安装bind
yum install -y bind
修改bind配置文件
vim /etc/named.conf 
//      listen-on port 53 { 127.0.0.1; }; #需注释
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
//      allow-query     { localhost; }; # 需注释
vim /etc/named.rfc1912.zones 
zone "magedu.org" IN {
      type master;
      file "magedu.org.zone";
};
DNS区域数据库文件配置
cp -p /var/named/named.localhost  /var/named/magedu.org.zone #以本地解析作为模板,需保留文件属性
vim /var/named/magedu.org.zone

$TTL 1D
@       IN SOA  master admin.magedu.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
        NS      slave
master  A       10.0.0.8
slave   A       10.0.0.18
www     A       10.0.0.7

检查配置文件和数据库文件格式,并启动服务
yum install -y bind-utils-32:9.11.26-3.el8.x86_64
[root@Centos8 ~]# named-checkzone magedu.org /var/named/magedu.org.zone
zone magedu.org/IN: loaded serial 0
OK
systemctl start named
实现DNS正向从服务

生产环境中一台主DNS服务器,存在单点失败的问题,可以建立主DNS服务器的备份服务器,即从服务器来实现DNS服务的容错机制。从服务器可以自动和主服务器进行单向的数据同步,从而和主DNS服务器一样,也可以对外提供查询服务,但从服务器不提供数据更新服务。
配置要求:
1.应该为一台独立的名称服务器
2. 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3. 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
4. 主服务器得允许从服务器作区域传送
5. 主从服务器时间应该同步,可通过ntp进行
6. bind程序的版本应该保持一致;否则,应该从高,主低。

安装bind
yum install -y bind
修改配置文件
vim /etc/named.conf 
options {
//      listen-on port 53 { 127.0.0.1; }; #注释
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
//      allow-query     { localhost; };#注释
        allow-transfer { none;}; #不允许其它主机进行区域传输
vim /etc/named.rfc1912.zones 
zone "magedu.org" {
       type slave;
       masters { 10.0.0.8;};
       file "slaves/magedu.org.salve";
};
重启服务
systemctl start named
查看区域数据库文件是否生成
ll /var/named/slaves/magedu.org.salve
-rw-r--r-- 1 named named 319 Nov  3 12:03 /var/named/slaves/magedu.org.salve

实现web服务

[root@Centos7 ~]# yum install -y httpd
[root@Centos7 ~]#echo Welcome > /var/www/html/index.html
[root@Centos7 ~]# systemctl start httpd.service

客户端配置

修改网卡指定的DNS服务器地址为10.0.0.8,10.0.0.18
[root@Centos6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
name=eth0
HWADDR=00:0C:29:53:B2:90
TYPE=Ethernet
UUID=cfe07653-f576-4b43-ad4a-ba0da0a225b5
onBOOT=yes
NM_ConTROLLED=yes
BOOTPROTO=static
IPADDR=10.0.0.6 
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.8
DNS2=10.0.0.18
重启网络
[root@Centos6 ~]# service network restart

验证

[root@Centos6 ~]# curl www.magedu.org
Welcome
主DNS服务器停止服务
[root@Centos8 ~]# systemctl stop named.service 
[root@Centos6 ~]# curl www.magedu.org
Welcome
二、搭建并实现智能DNS。

利用view实现智能DNS

需要五台主机
DNS主服务器和web服务器1:10.0.0.8/24,172.16.0.8/16 本地web
web服务器2:10.0.0.7/24 BeiJingweb
web服务器3:172.16.0.7/16 ShangHaiweb
DNS客户端1:10.0.0.6/24 
DNS客户端2:172.16.0.6/16
2.1DNS主服务器配置

配置两个网卡,并设置IP,其中10.0.0.8作为DNS主服务器,172.16.0.7作为web服务器。

[root@Centos8 ~]# ip add
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:65:4f:b8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
3: eth1:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:65:4f:c2 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.8/24 brd 172.16.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
主DNS服务端配置文件实现 view
[root@Centos8 ~]# yum install -y bind
[root@Centos8 ~]# vim /etc/named.conf
acl beijingnet { #添加acl规则,定义10网络为北京网络)
   10.0.0.0/24;
};
acl shanghainet { # 添加acl规则,定义172网络为上海网络)
   172.16.0.0/16;
};
acl othernet { (本地网络)
  any;
};

options {
//      listen-on port 53 { 127.0.0.1; };
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
// allow-query     { localhost; };
view beijingview { #通过view将定义好的acl规则与区域数据库文件做关联
  match-clients { beijingnet;};
  include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
  match-clients { shanghainet;};
  include "/etc/named.rfc1912.zones.sh";
};
view otherview {
  match-clients { othernet;};
  include "/etc/named.rfc1912.zones.other";
};
include "/etc/named.root.key";

定义magedu.org 域各个网络中的数据库配置文件

[root@Centos8 ~]# cat /etc/named.rfc1912.zones.bj
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.bj";
};
[root@Centos8 ~]# cat /etc/named.rfc1912.zones.sh
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.sh";
};
[root@Centos8 ~]# cat /etc/named.rfc1912.zones.other 
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.other";
};

创建区域数据库文件

[root@Centos8 ~]# cat /var/named/magedu.org.zone.bj 
$TTL 1D
@ IN SOA master admin.magedu.org. (
1  ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
           NS   master
master     A    10.0.0.8
websrv     A    10.0.0.7
www        CNAME websrv
[root@Centos8 ~]# cat /var/named/magedu.org.zone.sh
$TTL 1D
@ IN SOA master admin.magedu.org. (
1  ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
           NS   master
master     A    10.0.0.8
websrv     A    172.16.0.7
www        CNAME websrv
[root@Centos8 ~]# cat /var/named/magedu.org.zone.other 
$TTL 1D
@ IN SOA master admin.magedu.org. (
1  ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
           NS   master
master     A    10.0.0.8
websrv     A    127.0.0.1
www        CNAME websrv
2.2 实现位于不同区域的三个WEB服务器

web服务器1(10.0.0.8)

yum install httpd                        
echo welcome local > /var/www/html/index.html


web服务器2(10.0.0.7)

yum install httpd                        
echo welcome to BeiJing  > /var/www/html/index.html

web服务器3(172.16.0.7)

yum install httpd
echo welcome to Shanghai > /var/www/html/index.html

2.3 客户端测试

DNS客户端1

DNS客户端2

DNS客户端3
两块网卡DNS解析同一个地址必须

三、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝。

首先必须确保本机firewall已关闭

[root@Centos8 ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

multiport扩展,以离散方式定义多端口匹配,最多指定15个端口,将其中telnet(21)、ssh(22)、ftp(23),web(80)端口添加为允许之后再将所有其他端口服务关闭,也可以采用白名单方式将服务端口添加到规则之中,不过在清空规则的时候可能造成一些通讯业务的中断,最好采黑名单。

[root@Centos8 ~]# iptables -I INPUT -p tcp -m multiport  --dport 21,22,23,80 -j ACCEPT
[root@Centos8 ~]# iptables -A INPUT -j REJECT
[root@Centos8 ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  132  7736 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 21,22,23,80
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
四、NAT原理总结

在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。

4.1基本网络地址转换(Basic NAT)

这一种也可称作NAT或“静态NAT”,在RFC2663中提供了信息。它在技术上比较简单,仅支持地址转换,不支持端口映射。Basic NAT要求对每一个当前连接都要对应一个公网IP地址,因此要维护一个公网的地址池。宽带(broadband)路由器通常使用这种方式来允许一台指定的设备去管理所有的外部链接,甚至当路由器本身只有一个可用外部IP时也如此,这台路由器有时也被标记为DMZ主机。由于改变了IP源地址,在重新封装数据包时候必须重新计算校验和,网络层以上的只要涉及到IP地址的头部校验和都要重新计算。
Basic NAT要维护一个无端口号NAT表,结构如下

4.2网络地址端口转换(NAPT)

这种方式支持端口的映射,并允许多台主机共享一个公网IP地址。
支持端口转换的NAT又可以分为两类:源地址转换和目的地址转换。前一种情形下发起连接的计算机的IP地址将会被重写,使得内网主机发出的数据包能够到达外网主机。后一种情况下被连接计算机的IP地址将被重写,使得外网主机发出的数据包能够到达内网主机。实际上,以上两种方式通常会一起被使用以支持双向通信。

NAPT维护一个带有IP以及端口号的NAT表,结构如下。

五、iptables实现SNAT和DNAT,并对规则持久保存。 5.1 SNAT

对源地址作转换,在POSTROUTING链处作规则设置


模拟外网主机

[root@Centos6 ~]# ip add
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:53:b2:90 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.6/24 brd 172.16.0.255 scope global eth0
    inet6 fe80::20c:29ff:fe53:b290/64 scope link 
       valid_lft forever preferred_lft forever

防火墙配置

[root@Centos8 ~]# ip add
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:65:4f:b8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe65:4fb8/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:65:4f:c2 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.8/24 brd 172.16.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe65:4fc2/64 scope link 
       valid_lft forever preferred_lft forever

必须启用防火墙的路由转发功能

[root@Centos8 ~]# sysctl -p
net.ipv4.ip_forward = 1

防火墙规则添加
针对专线静态公共IP

[root@Centos8 ~]# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 172.16.0.8

#针对拨号网络和专线静态公共IP

[root@Centos8 ~]# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
[root@Centos8 ~]# iptables -vnL -t nat 
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1    76 SNAT       all  --  *      *       10.0.0.0/24          0.0.0.0/0            to:176.16.0.8
    0     0 MASQUERADE  all  --  *      *       10.0.0.0/24          0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

内网环境配置

[root@Centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.7 
PREFIX=24
GATEWAY=10.0.0.8 #网关指向防火墙地址
DNS1=10.0.0.2
DNS2=180.76.76.76
onBOOT=yes

[root@Centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.17
PREFIX=24
GATEWAY=10.0.0.8 #网关指向防火墙地址
DNS1=10.0.0.2
DNS2=180.76.76.76
onBOOT=yes

5.2 DNAT

只对目标地址作转换,在PREROUTING链进行设置。

将上个实验中防火墙的规则全部清空

[root@Centos8 ~]# iptables -F
[root@Centos8 ~]# iptables -t nat -A PREROUTING -d 172.16.0.8 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.17:80 #当外网机器访问内网防火墙的外网地址172.16.0.8时,通过DNAT技术将访问请求转发到内网10.0.0.17web服务器的80端口,请求报文中目标地址做了转换。
[root@Centos8 ~]# iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    2   120 DNAT       tcp  --  *      *       0.0.0.0/0            172.16.0.8           tcp dpt:80 to:10.0.0.17:80

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
5.3 规则保存

持久保存规则必须存放至文件之中

[root@Centos8 ~]# mkdir /data/backup;touch /data/backup/iptables
[root@Centos8 ~]# iptables-save > /data/backup/iptables
[root@Centos8 ~]# reboot

未加载配置文件

[root@Centos6 ~]# curl 172.16.0.8
curl: (7) couldn't connect to host

加载配置文件

[root@Centos8 ~]# iptables-restore < /data/backup/iptables  
[root@Centos6 ~]# curl 172.16.0.8
Welcome
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/450171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号