The Ninth Week  (Lucklyzpp)

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

[10:36:39 root@lucklyzpp ~]#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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
// allow-query { localhost; };
allow-transfer { 192.168.33.129; }; [10:41:43 root@lucklyzpp ~]#vim /etc/named.rfc1912.zones zone "lucklyzpp.org" {
type master;
file "lucklyzpp.org";
}; [10:42:05 root@lucklyzpp ~]#ls /var/named/
data dynamic named.ca named.empty named.localhost named.loopback slaves
[10:42:50 root@lucklyzpp ~]#cp -p /var/named/named.localhost /var/named/lucklyzpp.org.zone [10:44:49 root@lucklyzpp ~]#vim /var/named/lucklyzpp.org.zone

辅—服务器

[05:55:34 root@lcuklyzpp ~]#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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
// allow-query { localhost; };
allow-transfer { none; }; [05:57:38 root@lcuklyzpp ~]#vim /etc/named.rfc1912.zones zone "lucklyzpp.org" {
type slave;
masters { 192.168.33.130; };
file "slaves/lucklyzpp.org.slave";
}; [11:42:48 root@lcuklyzpp ~]#systemctl start named

2、搭建并实现智能DNS。

3 智能DNS相关技术
1 bind中ACL
ACL:把一个或多个地址归并为一个集合,并通过一个统一的名称调用
注意:只能先定义后使用;因此一般定义在配置文件中,处于options的前面

2 bind有四个内置的acl
none 没有一个主机
any 任意主机
localhost 本机
localnet 本机的IP同掩码运算后得到的网络地址

3.访问控制的指令
allow-query {}: 允许查询的主机;白名单
allow-transfer {}:允许区域传送的主机;白名单
allow-recursion {}: 允许递归的主机,建议全局使用
allow-update {}: 允许更新区域数据库中的内容

View:视图,将ACL和区域数据库实现对应关系,以实现智能DNS
一个bind服务器可定义多个view,每个view中可定义一个或多个zone
每个view用来匹配一组客户端
多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
注意:
一旦启用了view,所有的zone都只能定义在view中
仅在允许递归请求的客户端所在view中定义根区域
客户端请求到达时,是自上而下检查每个view所服务的客户端列表

options {
listen-on port 53 { any; };
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 { 192.168.33.129; }; options {
listen-on port 53 { any; };
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 { 192.168.33.129; }; recursion yes; dnssec-enable yes;
dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key"; /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
acl beijingnet {
10.0.0.0/24;
};
acl shanghainet {
192.168.0.0/24;
};
acl othernet {
any;
}; view beijingview {
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.rfc1912.zones";
include "/etc/named.root.key";

区域配置

vim /etc/named.rfc1912.zones.bj
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.bj";
};
vim /etc/named.rfc1912.zones.sh
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.sh";
};
vim /etc/named.rfc1912.zones.other
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.other";
};
chgrp named /etc/named.rfc1912.zones.bj
chgrp named /etc/named.rfc1912.zones.sh
chgrp named /etc/named.rfc1912.zones.other

创建区域数据库文件

vim /var/named/magedu.org.zone.bj
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; 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
vim /var/named/magedu.org.zone.sh
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; 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 vim /var/named/magedu.org.zone.other
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; 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
chgrp named /var/named/magedu.org.zone.bj
chgrp named /var/named/magedu.org.zone.sh
chgrp named /var/named/magedu.org.zone.other

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

iptables -I INPUT -p tcp -m multiport --dports 21,23,80,139,445 -j ACCEPT
iptables -A INPUT -j REJECT

3、NAT原理总结

NAT的作用
      IP地址分为公网IP与私网IP。一般情况下,在互联网中,公网IP可直接访问,私网IP无法直接访问。而NAT则是将私网IP地址转换为公网IP地址(将IP报文头部的私网IP地址改为可以提供访问的公网IP地址),从而实现用户上网功能或服务器在互联网上提供服务。NAT还可以使得一个公网IP代表多个不同的内网IP,这样便节省了IP地址资源。

  • 静态转换:私有地址与公有地址进行一对一的映射。这种一对一映射无法缓解可用公有地址短缺的问题。
  • 动态转换:私有地址与公有地址进行一对多的映射。首先建立公有地址地址池,私有地址向外通信时,会从公有地址地址池中选择非在用的公有地址进行映射,当通信结束时,释放映射关系,公有地址重新恢复到地址池中待用。弊端:若私有地址向外通信,而公有地址地址池中无可用公有地址时,会等待公有地址释放后在进行通信。
  • 端口转换:在大多数网络中,一般都使用的是IP上的某个端口(如80、443、3389等),所以不需要进行全地址映射,只需要私有地址端口映射到公有地址端口上,直接访问公有地址加端口号的形式便可以。这样可以使得一个公有地址可以对应多个私有地址,从而大大缓解了公有地址紧缺的问题。
  • Easy IP:为小型网络,一般为家庭、小型网吧、办公室等内部主机不多的地方。通过拨号方式获取一个临时公网IP地址进行外网的访问。

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

实现SNAT和DNAT都需要开启内核数据转发功能
1 SNAT
基于nat表的target,适用于固定的公网IP

SNAT选项:
--to-source [ipaddr[-ipaddr]][:port[-port]]
--random
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.33.131/24 -j SNAT --to-source 192.168.33.128

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

DNAT选项:

--to-destination [ipaddr[-ipaddr]][:port[-port]]

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

[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.33.131 -p tcp --dport 80 -j DNAT --to-destination 192.168.33.128:80

3 iptables规则持久保存

iptables-save > /PATH/TO/SOME_RULES_FILE

4 CentOS 7、8 重新载入预存规则文件中规则
iptables-restore选项
-n, --noflush:不清除原有规则
-t, --test:仅分析生成规则集,但不提交
iptables-restore < /PATH/FROM/SOME_RULES_FILE

5 开机自动重载规则
开机时自动载入此规则文件中的规则,添加到(/etc/rc.d/rc.local)
iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE

我们也可以安装iptables-services 实现iptables.service的规则保存。

最新文章

  1. win下安装jdk7后,修改环境变量无法改为jdk6的问题
  2. freeMarker生成静态页面
  3. TFS - 使用微软测试管理器实现跨团队项目的测试用例管理
  4. js抽奖
  5. Web 开发中 20 个很有用的 CSS 库
  6. Java web项目的字符集问题
  7. PHPExcel说明
  8. java编写一个端口扫描器
  9. linux grep 指定字符串的正则表达式
  10. Android实战简易教程-第九枪(BitmapFactory.Options对资源图片进行缩放)
  11. ob_get_contents()
  12. BZOJ 3402: [Usaco2009 Open]Hide and Seek 捉迷藏(最短路)
  13. java1 - 环境与简介
  14. FusionCharts 2D环饼图
  15. codeforces605A
  16. java调用Linux执行Python爬虫,并将数据存储到elasticsearch中--(java后台代码)
  17. [Spring Unit Testing] Spring Unit Testing with a Java Context
  18. c++官方文档-指针
  19. 【模考】2018.04.08 Connection
  20. tomcat8 的 websocket 支持

热门文章

  1. flask_sqlalchemy 查询结果转dict 终极解决方案
  2. ubuntu18.04 kuebadm 安装 k8s-1.15.9
  3. ❤️❤️爆肝3万字整理小白快速入门分布式版本管理软件:Git,图文并茂(建议收藏)--已码一万字❤️❤️
  4. 学习Tomcat(五)之Context和Wrapper容器
  5. 【Spring技术原理】Aspectj和LoadTimeWeaving的动态代理技术实现指南
  6. 前端必会的Javascript经典面试题
  7. 安装 webstorm---&gt;vue
  8. bzoj1407,洛谷2421 NOI2002荒岛野人
  9. Android系统编程入门系列之应用权限的定义与申请
  10. Framework - 性能统计