linux第4周
- 1、什么是FQDN,老李要访问微信,简述一下DNS解析过程
- 2、写一个iptables,需求是只能访问80服务,然后拒绝所有(选做,用防火墙fireward命令或配置文件实现同样的需求)
1、什么是FQDN,老李要访问微信,简述一下DNS解析过程
- FQDN即Fully Qualified Domain Name(全限定域名),同时带有主机和域名名称;
比如www.;
主机名:www
域名: - DNS结构:

DNS结构为树状结构的命名方式;分为根域(.),顶级域(.com/.edu … )主域名(zhangzhonghao.com),子域名(dev.zhangzhonghao,com)
根域:知道所以有的顶级域名服务器和域名的地址;
顶级域:知道所有顶级域名服务器下注册的二级域名和IP地址;
主域名(二级域):负责一个区的域名服务器;可以自己去申请,比如;
子域名(三级域):二级域下的子域名,比如主域名为zhangzhonghao.com,则子域名可以是www.zhangzhonghao.com/dev.zhangzhonghao.com;
· DNS查询过程:

递归查询:是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果该服务器中没有这个域名对应的IP地址信息,则会向其他服务器去查询,并将查询的结果返回给用户;
迭代查询:是指DNS服务器收到请求的时候,并不直接返回结果,而是告诉客户端可以去找另外一个DNS服务器;
老李去访问微信:
1、老李浏览器打开wx.,此时客户端(老李的电脑)会发送一个DNS查询消息;
(递归查询)
源地址/源端口 | 目的地址/目的端口 |
老李的IP/随机端口 | 本地DNS服务器IP/目的端口53(DNS) |
携带需要查询的域名:wx.;
2、DNS服务器收到这个请求以后,查看自身的DNS缓存记录,是否有wx.
- 有则直接返回A记录(wx. 对用的IP:X.X.X.X)
- 无,则向(.)根域名服务器区查询;
(递归查询)
3、根域名服务器返回NS记录,告知.com需要去找顶级域名服务器;
4、本地服务器根据NS记录去查询.com的顶级域名服务器;
5、.com的顶级域名服务器返回NS记录,告知这个域名的权威服务器地址;
6、本地DNS服务器根据NS记录去向的权威服务器进行查询;权威服务器返回A记录(wx.对应的IP:X.X.X.X)
7、本地DNS服务器查询到这个DNS记录以后,返回给客户端(老李的电脑)
8、客户端根据根据这个A记录,去访问域名对应的IP地址,返回数据;
2、写一个iptables,需求是只能访问80服务,然后拒绝所有(选做,用防火墙fireward命令或配置文件实现同样的需求)
- 在iptables中根据数据的路径,以及当前的业务环境去判断数据所经过的链;
默认链:
PREROUTING:进入iptables的流量
POSTROUTING:流出iptables的流量
FORWARD:经过iptables的流量
INPUT:访问本地的流量
OUTPUT:从本地流出的流量
业务环境大概分为:
1、访问本地的流量
PREROUTING-----------INPUT
2、从本机经过的流量
PREROUTING--------FORWARD----------POSTROUTING
3、从本机流出的流量
OUTPUT---------POSTROUITNG
- 在根据需要执行的动作去决定使用的表;
filter:过滤,基于SIP,DIP,Sport,Dport,协议。等进行筛选,执行动作(DROP/ACCEPT/调用自定义链)
NAT: SNAT,DNAT;
使用iptables定义规则只能访问80,拒绝所有:
iptables -t filter -I INPUT -p tcp --dport 80 -j accept(运行访问目的端口为80的所有流量)
iptables -t filter -A INPUT -j DROP(拒绝所有)
使用firewalld定义规则只能访问80,拒绝所有;
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
firewalld中处理过程首先需要判断源地址来源区域(类似于链),在根据这个来源的区域去查看规则,是否允许通过;(默认只允许22,DHCP等);
匹配区域次序:
1、来源地址source
2、来源的网卡interface
3、firewalld的默认区域
















