ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux_5

2022-05-01 16:32:26  阅读:134  来源: 互联网

标签:iptables magedu etc DNS linux 服务器 root


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

DNS:(Domain Name System,域名系统),应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp

根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本一级域名:Top Level Domain: tld三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域arpa通用顶级域名:com, edu, mil, gov, net, org, int

二级域名:magedu.com

三级域名:blog.magedu.com

最多可达到127级域名

如:www.google.com. 这个域名,分解后含义如下:

. #表示根域.com #表示顶级域google.com #表示二级域www #表示主机名

DNS服务器规则(1) 每一个主机都知道根域在哪里;(2) 上级必须知道下级;(3) 下级不知道上级;(4) 查询两段式递归查询和迭代查询;(5) 根域不迭代(根全球有13台a-m.root-servers.net);(6) 顶级域不迭代;(7) 二级域服务器可以只提供权威查询不提供迭代或转发;

DNS的工作模式:DNS查询以各种不同的方式进行解析,客户机可通过使用从以前查询获得的缓存信息就地应答查询,DNS服务器也可以使用其自身的资源记录缓存来应答查询。但更多是使用递归查询和迭代查询两种方式。

递归查询:DNS服务器收到一个域名解析请求时,如果所要检索的资源记录不在本地,DNS服务器将和自己的上一层服务器交互,获得最终的答案,并将其返回给客户

迭代查询:DNS服务器收到解析请求,首先在本地的数据库中查找是否有相应的资源记录,如果没有,则向客户提供另外一个DNS服务器的地址,客户负责把解析请求发送给新的DNS服务器地址

完整的DNS查询请求经过的流程

如:访问 www.google.com(1)/etc/hosts:查看本地hosts文件有没有记录获取应IP地址,如果没有,进行下一步(2)/etc/resolv.conf:查询DNS服务器,如8.8.8.8。若此DNS服务器本地有记录(如A记录)或缓存记录,则直接从本地中获取对应的IP,如果没有,进行下一步(3)根DNS:通过8.8.8.8到根DNS服务器(.)去查询,返回.com主机的DNS服务器IP地址(4).com:通过.com的DNS服务器去查询,返回google.com主机的DNS服务器IP地址(5)google.com. :通过左侧的DNS服务器去查询,返回www.google.com主机的IP地址(6)访问 www.google.com:8.8.8.8这台DNS服务器收到信息后会先把这条记录在本地,然后把查询数据结果返回客户端

在这个查询过程中,从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

DNS工作原理:1、当在浏览器中输入URL时,浏览器会先检查自己的缓存是否有域名IP的映射关系,有则直接使用IP进行通信2、如浏览器没有缓存,则操作系统检查本地hosts文件是否有域名IP的映射关系,有则使用IP进行通信3、如果hosts没有这个域名的映射,则查找本地DNS解析器缓存是否有映射关系,有则直接返回完成域名解析4、如果还未找到映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,也就是本地DNS服务器,如果服务器已缓存了映射关系,则使用这个IP地址映射返回完成域名解析,此时解析不具有权威性5、如果本地DNS服务器缓存已经失效,进行递归查询。

2、搭建并实现智能DNS。

前提准备
关闭SElinux
关闭firewalld防火墙
时间同步

需要五台主机
DNS服务器1:配置eth0和eth1,10.0.0.131、192.168.1.130,其中eth0为NAT模式,eth1为桥接模式。
web服务器1:10.0.0.132   NAT模式
web服务器2:192.168.1.131 桥接模式
DNS客户端1:10.0.0.133   NAT模式
DNS客户端2:192.168.1.132 桥接模式

#DNS服务器1 配置  
bind服务器包、bind-utils(测试包可以不装)
[root@centos7-01 ~]# yum -y install bind bind-utils
#启动bind 并设置开机启动(查看启动状态 systemctl status named.service)
[root@centos7-01 ~]# systemctl enable --now named.service
[root@centos7-01 ~]# vim /etc/named.conf
#更改bind配置,注释掉以下两行,开放访问权限
#listen-on port 53 { 127.0.0.1; };
#allow-query     { localhost; };
#重新加载配置
[root@centos7-01 ~]# rndc reload
#配置bind实现判断访问来源。
vim /etc/named.conf
#判断网段acl,在文件最前面加下面行
acl beijingnet {
10.0.0.0/24;
};
acl shanghainet {
192.168.1.0/24;
};

将以下内容删除或注释掉
zone "." IN {
type hint;
file "named.ca";
};

# 创建view,在文件下面加
view beijingview {
match-clients { beijingnet;};
include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
match-clients { shanghainet;};
include "/etc/named.rfc1912.zones.sh";
};

#include "/etc/named.rfc1912.zones";原有的删除或注释掉
include "/etc/named.root.key";

#配置named.rfc1912.zones.bj
vim /etc/named.rfc1912.zones.bj
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.bj";
};  

#配置named.rfc1912.zones.sh
vim /etc/named.rfc1912.zones.sh
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.sh";
};  

#配置magedu.org.zone.bj,master A 10.0.0.131为本机,www   A 10.0.0.132为web服务器
vim /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.131        
www   A 10.0.0.132

#配置magedu.org.zone.sh,master A 192.168.1.130为本机,www   A 192.168.1.131为web服务器
vim /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 192.168.1.130
www   A 192.168.1.131
#重新加载配置,如果报错rndc: connect failed: 127.0.0.1#953: connection refused 连接拒绝错误,需要进行文件授权
[root@centos7-01 ~]# chmod 640 /etc/rndc.key
[root@centos7-01 ~]# rndc reload
server reload successful
#配置web服务器1:10.0.0.132、web服务器2:192.168.1.131
安装httpd,注意最小化安装有时出现Existing lock /var/run/yum.pid: another copy is running as pid的错误,可以运行一下代码恢复后可正常安装。
[root@centos7-01 ~]# rm -f /var/run/yum.pid
[root@centos7-01 ~]# /sbin/service yum-updatesd restart
#安装httpd
yum -y install httpd
#启动程序并开机自启
systemctl enable --now httpd
#修改以下页面访问内容以便区分两个web服务器
#web服务器1:
echo www.magedu.org in Beijing > /var/www/html/index.html
#web服务器2:
echo www.magedu.org in Shanghai > /var/www/html/index.html
#配置客户端1:10.0.0.133 DNS地址为DNS服务器1 eth0的IP、客户端2:192.168.1.132的DNS地址为DNS服务器1 eth1的IP
[root@centos7-03 ~]# service network restart
#查看DNS是否生效。
#DNS客户端1
[root@centos7-03 etc]# cat resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.131
#DNS客户端2
[root@centos7-05 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.130
#DNS客户端1访问www.magedu.org进行测试,可显示web服务器1的页面。
[root@centos7-04 ~]# curl www.magedu.org
www.magedu.org in Beijing
#DNS客户端2访问www.magedu.org进行测试,可显示web服务器2的页面。
[root@centos7-05 ~]# curl www.magedu.org
www.magedu.org in Shanghai

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

前提准备关闭firewalld防火墙

#查看当前状态iptables -nvL,未配置任何规则
[root@centos7-02 etc]# ss -ntl
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination        

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  
#放行ssh,telnet, ftp, web服务80端口
[root@centos7-02 etc]# iptables -A INPUT -p tcp -m multiport --dport 21,22,23,80 -j ACCEPT
#拒绝全部端口服务,由于规则从上至下进行规则判断,ssh,telnet, ftp, web满足条件会放行,不满足第一条件的到第二条拒绝全部端口
[root@centos7-02 etc]# iptables -A INPUT -j REJECT
#查看当前状态iptables -nvL
[root@centos7-02 etc]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination        
  24 1536 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 10 packets, 1484 bytes)
pkts bytes target     prot opt in     out     source               destination  

#ssh测试链接正常
[root@centos7-04 ~]# ssh 10.0.0.132
The authenticity of host '10.0.0.132 (10.0.0.132)' can't be established.
ECDSA key fingerprint is SHA256:kX81UzGfABKKtw1oZXc3jM+U+IRFd++YoFuKa26b6UA.
ECDSA key fingerprint is MD5:d3:47:82:78:81:d9:bf:ea:da:8c:14:62:84:a5:d9:89.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.132' (ECDSA) to the list of known hosts.
root@10.0.0.132's password:
Last login: Sun May 1 15:40:27 2022 from 10.0.0.1
[root@centos7-02 ~]#
#web测试链接正常
[root@centos7-04 ~]# curl 10.0.0.132
www.magedu.org in Beijing

4、NAT原理总结

NAT的实现分为下面类型:

SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问

外部网络,实现地址伪装,请求报文:修改源IP

DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外

部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP

PNAT: port nat,端口和IP都进行修改

  1. PC访问 www.xxx.com,由于存在域名会通过DNS服务器解析域名从而获得公网IP地址。

  2. PC收到此网站的公网IP地址后,封装数据。源IP为PC的IP地址;目的地址为解析获得的公网IP地址;目的端口号为80。并且将此报文发送给网关设备, 网关设备收到数据报文后通过路由关系发送到出口设备。

  3. 出口设备配置有NAT转换关系,将报文中的源IP地址转换为公网IP地址。重新封装数据报文后发出。(这一步为SNAT)

  4. 数据报文到达公有网络上,由于目的IP地址为公网IP地址,通过公网路由关系转发到网站端(服务端)。

  5. 服务端收到报文后,检查到目的地址为公网IP地址。通过本端配置的NAT映射关系,与公网IP地址相匹配的映射关系中寻找私网IP地址。找到映射关系后,将目的地址转换为私网IP地址(这一步为DNAT)。在通过内部网络路由关系将数据报文转发至相应的服务器。

  6. 服务器将收到的报文通过相关计算,重新封装报文,发送给用户PC。原理不变,经过多次数据交互。最后用户PC接收到数据报文,网站就被打开了。

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

实现SNAT和DNAT都需要开启内核数据转发功能

[root@centos7-04 ~]# cat /etc/sysctl.conf

net.ipv4.ip_forward=1

DNAT:nat表的target,适用于端口映射,即可重定向到本机,也可以支持重定向至不同主机的不同端口,但不支持多目标,即不支持负载均衡功能

DNAT选项:

--to-destination ipaddr[-ipaddr]]

DNAT 格式:

iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]

范例:

iptables -t nat -A PREROUTING -d 192.168.126.83 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.84:80

DNAT使用方法DNAT:nat表的target,适用于端口映射,即可重定向到本机,也可以支持重定向至不同主机的不同端口,但不支持多目标,即不支持负载均衡功能

DNAT选项:

--to-destination ipaddr[-ipaddr]]

DNAT 格式:

iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]

范例:

iptables -t nat -A PREROUTING -d 192.168.126.83 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.84:80iptables规则持久保存:CentOS 7,8

iptables-save > /PATH/TO/SOME_RULES_FILE

CentOS 6

#将规则覆盖保存至/etc/sysconfig/iptables文件中

service iptables save

 

加载规则1.CentOS 7,8 重新载入预存规则文件中规则:

iptables-restore < /PATH/FROM/SOME_RULES_FILE

iptables-restore选项

-n, --noflush:不清除原有规则

-t, --test:仅分析生成规则集,但不提交

2.CentOS 6:

service iptables restart #会自动从/etc/sysconfig/iptables 重新载入规则

开机自动重载规则1.用脚本保存各iptables命令;让此脚本开机后自动运行

/etc/rc.d/rc.local文件中添加脚本路径 /PATH/TO/SOME_SCRIPT_FILE

用规则文件保存各规则,开机时自动载入此规则文件中的规则

在/etc/rc.d/rc.local文件添加

iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE

2.定义Unit File, CentOS 7,8 可以安装 iptables-services 实现iptables.service

范例: CentOS 7,8 使用 iptables-services

[root@centos8 ~]#yum -y install iptables-services

[root@centos8 ~]#cp /etc/sysconfig/iptables{,.bak}

#保存现在的规则到文件中方法1

[root@centos8 ~]#/usr/libexec/iptables/iptables.init save

#保存现在的规则到文件中方法2

iptables-save > /etc/sysconfig/iptables

#开机启动

[root@centos8 ~]#systemctl enable iptables.service

 

 

标签:iptables,magedu,etc,DNS,linux,服务器,root
来源: https://www.cnblogs.com/go2022/p/16213154.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有