从零开始的渗透测试学习(九)

DNS

DNS(域名系统)是互联网上用于将域名(如www.example.com)转换为相应 IP 地址的系统。它充当互联网的分布式命名系统,使得我们可以使用便于记忆的域名来访问网站、发送电子邮件和进行其他网络通信。

以下是 DNS 的一些关键要点:

域名解析:DNS 将人类可读的域名翻译为计算机可理解的 IP 地址。当您在浏览器中输入一个域名时,操作系统会向 DNS 服务器发送一个查询请求,以获取与该域名对应的 IP 地址。

域名结构:域名按层次结构组织,从右到左依次表示更高级别的域。例如,www.example.com 中,“.com” 是顶级域名(TLD),“example” 是二级域名,“www” 是三级子域名。

DNS 服务器:DNS 服务器负责处理域名解析请求。它们可以分为递归 DNS 服务器和权威 DNS 服务器。

  • 递归 DNS 服务器:它们从根服务器开始递归地查询,以解析最终的域名/IP 地址映射。通常由互联网服务提供商 (ISP) 或其他服务提供商提供。

  • 权威 DNS 服务器:它们存储特定域名区域的 DNS 记录。当递归 DNS 服务器需要解析某个域名时,它们向权威 DNS 服务器发送查询请求。

DNS 记录:DNS 服务器中存储了各种类型的 DNS 记录,记录了域名与 IP 地址之间的映射关系。常见的 DNS 记录类型包括:

  • A 记录:将域名映射到一个 IPv4 地址。

  • AAAA 记录:将域名映射到一个 IPv6 地址。

  • CNAME 记录:设置别名,将域名映射到另一个域名。

  • MX 记录:指定处理邮箱流量的邮件服务器。

  • NS 记录:指定域名的权威 DNS 服务器。

域名解析过程

DNS域名解析是将人类可读的域名翻译为计算机可理解的IP地址的过程。下面是DNS域名解析的基本步骤和过程:

  1. 客户端查询:当您在Web浏览器中输入一个域名(例如www.example.com),操作系统的DNS解析器会首先检查本地DNS缓存。如果缓存中存在域名的解析记录,解析过程将在此步骤中完成,跳过后续步骤。如果缓存中没有相应记录,将继续向下执行。

  2. 本地递归解析: 如果本地DNS缓存中没有域名的解析记录,操作系统的DNS解析器会发送一个查询请求给本地递归DNS服务器(通常是由您的ISP提供的)。本地递归DNS服务器负责处理解析请求。

  3. 迭代查询:本地递归DNS服务器首先会查询根域名服务器(Root DNS Server)。根域名服务器是DNS解析的起点,它存储了顶级域名服务器(TLD DNS Server)的地址。

  4. 顶级域名服务器查询:根域名服务器将返回顶级域名服务器(TLD DNS Server)的地址给本地递归DNS服务器。然后,本地递归DNS服务器向TLD DNS服务器发送查询请求,根据查询内容,TLD DNS服务器会返回下一级DNS服务器(授权域名服务器)的地址。

  5. 授权域名服务器查询:本地递归DNS服务器继续向下一个授权域名服务器发送查询请求。授权域名服务器是负责特定域名的DNS记录的服务器。根据查询请求,授权域名服务器会返回所请求域名的具体DNS记录信息。

  6. 解析结果返回:本地递归DNS服务器收到授权域名服务器的响应后,将所查询的域名的IP地址记录存储在本地DNS缓存中,并将解析结果返回给客户端的DNS解析器。

  7. 最终解析:客户端的DNS解析器接收到IP地址后,将其存储在本地DNS缓存中,并将IP地址返回给发起解析请求的应用程序。应用程序可以使用该IP地址与远程服务器进行通信。

递归查询和迭代查询的区别

DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。 DNS递归名称解析: 在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。

DNS迭代名称解析:(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。在条件之一满足时就会采用迭代名称解析方式:

在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说“你都没有主动要求我为你进行递归查询,我当然不会为你工作了”。

客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0。

DNS 是互联网基础设施的重要组成部分,它使我们能够使用友好的域名来访问互联网资源。对于了解和理解 DNS 的内部工作原理,有助于更好地管理和故障排除与域名解析相关的问题

DNSmasq

dnsmasq的简介

Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。

编辑 dnsmasq 的配置文件 /etc/dnsmasq.conf 。这个文件包含大量的选项注释。

Dnsmasq的主要作用

(1)将Dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。

(2)应对ISP的DNS劫持(反DNS劫持),输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。先随便nslookup 一个不存在的域名,看看ISP商劫持的IP地址。

(3)智能DNS加快解析速度,打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。

dnsmasq的参数及常用设置说明

编辑 dnsmasq 的配置文件 /etc/dnsmasq.conf 。这个文件包含大量的选项注释。

(1)dnsmasq经常修改的比较重要参数说明

具体参数
​
参数说明
​
resolv-file
​
定义dnsmasq从哪里获取上游DNS服务器的地址, 默认从/etc/resolv.conf获取。
​
strict-order
​
表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。
​
listen-address
​
定义dnsmasq监听的地址,默认是监控本机的所有网卡上。
​
address
​
启用泛域名解析,即自定义解析a记录,例如:address=/long.com/192.168.115.10 访问long.com时的所有域名都会被解析成192.168.115.10
​
bogus-nxdomain
​
对于任何被解析到此 IP 的域名,将响应 NXDOMAIN 使其解析失效,可以多次指定
通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点
​
server
​
指定使用哪个DNS服务器进行解析,对于不同的网站可以使用不同的域名对应解析。
例如:server=/google.com/8.8.8.8    #表示对于google的服务,使用谷歌的DNS解析。

(2)查看配置文件语法是否正确,可执行下列命令

[root@localhost ~]# dnsmasq -test
 dnsmasq: syntax check OK.
​

(3)DNS 缓存设置 要在单台电脑上以守护进程方式启动dnsmasq做DNS缓存服务器,编辑/etc/dnsmasq.conf,添加监听地址:

listen-address=127.0.0.1
如果用此主机为局域网提供默认 DNS,请用为该主机绑定固定 IP 地址,设置:
​
listen-address=192.168.x.x
这种情况建议配置静态IP
​
多个ip地址设置:
​
listen-address=127.0.0.1,192.168.x.x

(4)三个以上域名服务器 Linux 处理 DNS 请求时有个限制,在 resolv.conf 中最多只能配置三个域名服务器(nameserver)。作为一种变通方法,可以在 resolv.conf 文件中只保留 localhost 作为域名服务器,然后为外部域名服务器另外创建 resolv-file 文件。首先,为 dnsmasq 新建一个域名解析文件:

[root@localhost ~]# vim /etc/resolv.dnsmasq.conf
# Google's nameservers, for example
nameserver 8.8.8.8
nameserver 8.8.4.4
然后编辑 /etc/dnsmasq.conf 让 dnsmasq 使用新创建的域名解析文件:
​
[root@localhost ~]# vim  /etc/dnsmasq.conf
...
resolv-file=/etc/resolv.dnsmasq.conf
123456789

(5)使用dhcpcd dhcpcd 可以是通过创建(或编辑)/etc/resolv.conf.head文件或 /etc/resolv.conf.tail文件来指定dns服务器,使/etc/resolv.conf不会被每次都被dhcpcd重写

echo "nameserver 127.0.0.1" > /etc/resolv.conf.head //设置dns服务器为127.0.0.1
1

(6)使用dhclient 要使用 dhclient, 取消 /etc/dhclient.conf 文件中如下行的注释:

prepend domain-name-servers 127.0.0.1;
1

(7)使用NetworkManager NetworkManager 可以靠自身配置文件的设置项启动 dnsmasq 。在 NetworkManager.conf 文件的 [main] 节段添加 dns=dnsmasq 配置语句,然后禁用由 systemd 启动的 dnsmasq.service:

[root@localhost ~]# vim /etc/NetworkManager/NetworkManager.conf
[main]
plugins=keyfile
dns=dnsmasq
可以在 /etc/NetworkManager/dnsmasq.d/ 目录下为 dnsmasq 创建自定义配置文件。例如,调整 DNS 缓存大小(保存在内存中):
​
[root@localhost ~]# vim /etc/NetworkManager/dnsmasq.d/cache
cache-size=1000
dnsmasq 被 NetworkManager 启动后,此目录下配置文件中的配置将取代默认配置。
​
IPv6
​
启用 dnsmasq 在 NetworkManager 可能会中断仅持IPv6的DNS查询 (例如 dig -6 [hostname]) 否则将工作。 为了解决这个问题,创建以下文件将配置 dnsmasq 总是监听IPv6的loopback:
​
[root@localhost ~]# vim /etc/NetworkManager/dnsmasq.d/ipv6_listen.conf
listen-address=::1
12345678910111213141516

此外, dnsmasq不优先考虑上游IPv6的DNS。不幸的是NetworkManager已不这样做 (Ubuntu Bug)。 一种解决方法是将禁用IPv4 DNS的NetworkManager的配置,假设存在。

其他方式

另一种选择是在NetworkManagers“设置(通常通过右键单击小程序)和手动输入设置。设置将取决于前端中使用的类型;这个过程通常涉及右击小程序,编辑(或创建)一个配置文件,然后选择DHCP类型为“自动(指定地址)。”DNS地址将需要输入,通常以这种形式:127.0.0.1, DNS-server-one, …

(8)DHCP 服务器设置 dnsmasq默认关闭DHCP功能,如果该主机需要为局域网中的其他设备提供IP和路由,应该对dnsmasq 配置文件(/etc/dnsmasq.conf)必要的配置如下:

[root@localhost ~]# vim  /etc/dnsmasq.conf
# Only listen to routers' LAN NIC.  Doing so opens up tcp/udp port 53 to
# localhost and udp port 67 to world:
interface=<LAN-NIC>
​
​
# dnsmasq will open tcp/udp port 53 and udp port 67 to world to help with
# dynamic interfaces (assigning dynamic ips). Dnsmasq will discard world
# requests to them, but the paranoid might like to close them and let the
# kernel handle them:
bind-interfaces
​
​
# Dynamic range of IPs to make available to LAN pc
dhcp-range=192.168.111.50,192.168.111.100,12h
​
​
# If you’d like to have dnsmasq assign static IPs, bind the LAN computer's
# NIC MAC address:
dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50
查看租约
​
[root@localhost ~]# cat /var/lib/misc/dnsmasq.leases
1234567891011121314151617181920212223

(9)添加自定义域 它可以将一个自定义域添加到主机中的(本地)网络:

local=/home.lan/ domain=home.lan (10)启动守护进程 设置为开机启动:

[root@localhost ~]# systemctl enable dnsmasq 立即启动 dnsmashq:

[root@localhost ~]# systemctl start dnsnsmasq 需要重启网络服务以使 DHCP 客户端重建一个新的 /etc/resolv.conf

查看dnsmasq是否启动正常,查看系统日志:

[root@localhost ~]# journalctl -u d

5、dnsmasq 的配置文件 /etc/dnsmasq.conf详解

# 不加载本地的 /etc/hosts 文件
​
#no-hosts
​
# 添加读取额外的 hosts 文件路径,可以多次指定。如果指定为目录,则读取目录中的所有文件。
​
#addn-hosts=/etc/dnsmasq.hosts.d
​
# 读取目录中的所有文件,文件更新将自动读取
​
#hostsdir=/etc/dnsmasq.hosts.d
​
# 例如,/etc/hosts中的os01将扩展成os01.example.com
​
#expand-hosts
​
​
​
##############################################################################
​
# 缓存时间设置,一般不需要设置
​
# 本地 hosts 文件的缓存时间,通常不要求缓存本地,这样更改hosts文件后就即时生效。
​
#local-ttl=3600
​
# 同 local-ttl 仅影响 DHCP 租约
​
#dhcp-ttl=<time>
​
# 对于上游返回的值没有ttl时,dnsmasq给一个默认的ttl,一般不需要设置,
​
#neg-ttl=<time>
​
# 指定返回给客户端的ttl时间,一般不需要设置
​
#max-ttl=<time>
​
# 设置在缓存中的条目的最大 TTL。
​
#max-cache-ttl=<time>
​
# 不需要设置,除非你知道你在做什么。
​
#min-cache-ttl=<time>
​
# 一般不需要设置
​
#auth-ttl=<time>
​
​
​
##############################################################################
​
# 记录dns查询日志,如果指定 log-queries=extra 那么在每行开始处都有额外的日志信息。
​
#log-queries
​
# 设置日志记录器,'-' 为 stderr,也可以是文件路径。默认为:DAEMON,调试时使用 LOCAL0。
​
#log-facility=<facility>
​
#log-facility=/var/log/dnsmasq/dnsmasq.log
​
# 异步log,缓解阻塞,提高性能。默认为5,最大100。
​
#log-async[=<lines>]
​
#log-async=50
​
​
​
##############################################################################
​
# 指定用户和组
​
#user=nobody
​
#group=nobody
​
​
​
##############################################################################
​
# 指定DNS的端口,默认53,设置 port=0 将完全禁用 DNS 功能,仅使用 DHCP/TFTP
​
#port=53
​
# 指定 EDNS.0 UDP 包的最大尺寸,默认为 RFC5625 推荐的 edns-packet-max=4096
​
#edns-packet-max=<size>
​
# 指定向上游查询的 UDP 端口,默认是随机端口,指定后降低安全性、加快速度、减少资源消耗。
​
# 设置为 '0' 由操作系统分配。
​
#query-port=53535
​
# 指定向上游查询的 UDP 端口范围,方便防火墙设置。
​
#min-port=<port>
​
#max-port=<port>
​
# 指定接口,指定后同时附加 lo 接口,可以使用'*'通配符。
​
# 不能使用接口别名(例如:"eth1:0"),请用 listen-address 选项替代。
​
#interface=wlp2s0
​
# 指定排除的接口,排除优先级高,可以使用'*'通配符
​
#except-interface=
​
# 仅接受同一子网的 DNS 请求。
​
# 仅在未指定 interface、except-interface、listen-address 或者 auth-server 时有效。
​
#local-service
​
# 指定不提供 DHCP 或 TFTP 服务的接口,仅提供 DNS 服务。
​
#no-dhcp-interface=enp3s0
​
# 指定IP地址,可以多次指定。
​
# interface 选项和 listen-address 选项可以同时使用。
​
# 下面两行与指定 interface 选项的作用类似。
​
listen-address=192.168.10.17
​
#listen-address=127.0.0.1
​
# 通常情况下即使设置了 interface 选项(例如:interface=wlp2s0 )
​
# 将仍然绑定到通配符地址(例如:*:53 )。
​
# 开启此项将仅监听指定的接口。
​
# 适用于在同一主机的不同接口或 IP 地址上运行多个 dns 服务器。
​
bind-interfaces
​
# 对于新添加的接口不进行绑定。仅 Linux 系统支持,其他系统等同于 bind-interfaces 选项。
​
#bind-dynamic
​
​
​
##############################################################################
​
# 如果 hosts 中的主机有多个 IP 地址,仅返回对应子网的 IP 地址。
​
localise-queries
​
# 如果反向查找的是私有地址例如192.168.X.X,仅从 hosts 文件查找,不再转发到上游服务器
​
#bogus-priv
​
# 对于任何被解析到此 IP 的域名,将响应 NXDOMAIN 使其解析失效,可以多次指定
​
# 通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点。
​
#bogus-nxdomain=64.94.110.11
​
# 忽略包含指定地址的 A 记录查询的回复。
​
# 例如上游有台 dns 服务器伪造 www.baidu.com 的 IP 为 1.1.1.1 并且响应速度非常快。
​
# 指定 ignore-address=1.1.1.1 可以忽略它的响应信息,
​
# 从而等待 www.baidu.com 正确的查询结果。
​
#ignore-address=<ipaddr>
​
filterwin2k
​
​
​
##############################################################################
​
# 指定 resolv-file 文件路径,默认/etc/resolv.conf
​
#resolv-file=/etc/resolv.conf
​
# 不读取 resolv-file 来确定上游服务器
​
#no-resolv
​
# 在编译时需要启用 DBus 支持。
​
#enable-dbus[=<service-name>]
​
# 严格按照resolv.conf中的顺序进行查找
​
#strict-order
​
# 向所有上游服务器发送查询,而不是一个。
​
all-servers
​
# 启用转发循环检测
​
#dns-loop-detect
​
​
​
##############################################################################
​
# 这项安全设置是拒绝解析包含私有 IP 地址的域名,
​
# 这些IP地址包括如下私有地址范围:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。
​
# 其初衷是要防止类似上游DNS服务器故意将某些域名解析成特定私有内网IP而劫持用户这样的安全***。
​
# 直接在配置文件中注销 stop-dns-rebind 配置项从而禁用该功能。
​
# 这个方法确实可以一劳永逸的解决解析内网 IP 地址的问题,
​
# 但是我们也失去了这项安全保护的特性,所以在这里我不推荐这个办法。
​
# 使用 rebind-domain-ok 进行特定配置,顾名思义该配置项可以有选择的忽略域名的 rebind 行为
​
stop-dns-rebind
​
rebind-localhost-ok
​
#rebind-domain-ok=[<domain>]|[[/<domain>/[<domain>/]
​
rebind-domain-ok=/.test.com/
​
​
​
##############################################################################
​
# 也不要检测 /etc/resolv.conf 的变化
​
#no-poll
​
# 重启后清空缓存
​
clear-on-reload
​
# 完整的域名才向上游服务器查找,如果仅仅是主机名仅查找hosts文件
​
domain-needed
​
​
​
##############################################################################
​
# IP地址转换
​
#alias=[<old-ip>]|[<start-ip>-<end-ip>],<new-ip>[,<mask>]
​
##############################################################################
​
#local=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]
​
#server=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]
​
server=/test.com/192.168.10.117
​
server=/10.168.192.in-addr.arpa/192.168.10.117
​
#rev-server=<ip-address>/<prefix-len>,<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]
​
​
​
# 将任何属于 <domain> 域名解析成指定的 <ipaddr> 地址。
​
# 也就是将 <domain> 及其所有子域名解析成指定的 <ipaddr> IPv4 或者 IPv6 地址,通常用于屏蔽特定的域名。
​
# 一次只能指定一个 IPv4 或者 IPv6 地址,要同时返回 IPv4 和IPv6 地址,请多次指定 address= 选项。
​
# 注意: /etc/hosts 以及 DHCP 租约将覆盖此项设置。
​
#address=/<domain>/[domain/][<ipaddr>]
​
​
​
#ipset=/<domain>/[domain/]<ipset>[,<ipset>]
​
#mx-host=<mx name>[[,<hostname>],<preference>]
​
#mx-target=<hostname>
​
​
​
# SRV 记录
​
#srv-host=<_service>.<_prot>.[<domain>],[<target>[,<port>[,<priority>[,<weight>]]]]
​
​
​
# A, AAAA 和 PTR 记录 
​
#host-record=<name>[,<name>....],[<IPv4-address>],[<IPv6-address>][,<TTL>]
​
​
​
# TXT 记录
​
#txt-record=<name>[[,<text>],<text>]
​
​
​
# PTR 记录 
​
#ptr-record=<name>[,<target>]
​
​
​
#naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]
​
​
​
# CNAME 别名记录
​
#cname=<cname>,<target>[,<TTL>]
​
​
​
​
​
#dns-rr=<name>,<RR-number>,[<hex data>]
​
#interface-name=<name>,<interface>[/4|/6]
​
#synth-domain=<domain>,<address range>[,<prefix>]
​
#add-mac[=base64|text]
​
#add-cpe-id=<string>
​
#add-subnet[[=[<IPv4 address>/]<IPv4 prefix length>][,[<IPv6 address>/]<IPv6 prefix length>]]
​
##############################################################################
​
​
​
##############################################################################
​
# 缓存条数,默认为150条,cache-size=0 禁用缓存。
​
cache-size=1000
​
# 不缓存未知域名缓存,默认情况下dnsmasq缓存未知域名并直接返回为客户端。
​
no-negcache
​
# 指定DNS同属查询转发数量
​
dns-forward-max=1000
​
​
​
##############################################################################
​
#dnssec
​
#trust-anchor=[<class>],<domain>,<key-tag>,<algorithm>,<digest-type>,<digest>
​
#dnssec-check-unsigned
​
#dnssec-no-timecheck
​
#dnssec-timestamp=<path>
​
#proxy-dnssec
​
#dnssec-debug
​
​
​
##############################################################################
​
#auth-server=<domain>,<interface>|<ip-address>
​
#auth-zone=<domain>[,<subnet>[/<prefix length>][,<subnet>[/<prefix length>].....]]
​
#auth-zone=<domain>[,<interface name>[/6|/4][,<interface name>[/6|/4].....]]
​
#auth-soa=<serial>[,<hostmaster>[,<refresh>[,<retry>[,<expiry>]]]]
​
#auth-sec-servers=<domain>[,<domain>[,<domain>...]]
​
#auth-peer=<ip-address>[,<ip-address>[,<ip-address>...]]
​
​
​
# 启用连接跟踪,读取 Linux 入栈 DNS 查询请求的连接跟踪标记,
​
# 并且将上游返回的响应信息设置同样的标记。
​
# 用于带宽控制和防火墙部署。
​
# 此选项必须在编译时启用 conntrack 支持,并且内核正确配置并加载 conntrack。
​
# 此选项不能与 query-port 同时使用。
​
#conntrack
​
​
​
​
​
##############################################################################
​
#
​
#        DHCP 选项
​
#
​
##############################################################################
​
# 设置 DHCP 地址池,同时启用 DHCP 功能。
​
# IPv4 <mode> 可指定为 static|proxy ,当 <mode> 指定为 static 时,
​
# 需用 dhcp-host 手动分配地址池中的 IP 地址。
​
# 当 <mode> 指定为 proxy 时,为指定的地址池提供 DHCP 代理。
​
#dhcp-range=[tag:<tag>[,tag:<tag>],][set:<tag>,]<start-addr>[,<end-addr>][,<mode>][,<netmask>[,<broadcast>]][,<lease time>]
​
#dhcp-range=172.16.0.2,172.16.0.250,255.255.255.0,1h
​
#dhcp-range=192.168.10.150,192.168.10.180,static,255.255.255.0,1h
​
​
​
# 根据 MAC 地址或 id 固定分配客户端的 IP 地址、主机名、租期。
​
# IPv4 下指定 id:* 将忽略 DHCP 客户端的 ID ,仅根据 MAC 来进行 IP 地址分配。
​
# 在读取 /etc/hosts 的情况,也可以根据 /etc/hosts 中的主机名分配对应 IP 地址。
​
# 指定 ignore 将忽略指定客户端得 DHCP 请求。
​
#dhcp-host=[<hwaddr>][,id:<client_id>|*][,set:<tag>][,<ipaddr>][,<hostname>][,<lease_time>][,ignore]
​
#dhcp-hostsfile=<path>
​
#dhcp-hostsdir=<path>
​
# 读取 /etc/ethers 文件 与使用 dhcp-host 的作用相同。IPv6 无效。
​
#read-ethers
​
​
​
# 指定给 DHCP 客户端的选项信息,
​
# 默认情况下 dnsmasq 将发送:子网掩码、广播地址、DNS 服务器地址、网关地址、域等信息。
​
# 指定此选项也可覆盖这些默认值并且设置其他选项值。
​
# 重要:可以使用 option:<option-name>或者 option号 来指定。
​
# <option-name> 和 option号的对应关系可使用命令:
​
# dnsmasq --help dhcp 以及 dnsmasq --help dhcp6 查看,这点很重要。
​
# 例如设置网关参数,既可以使用 dhcp-option=3,192.168.4.4 也可以使用 dhcp-option = option:router,192.168.4.4。
​
# 0.0.0.0 意味着当前运行 dnsmasq 的主机地址。
​
# 如果指定了多个 tag:<tag> 必须同时匹配才行。
​
# [encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],] 有待继续研究。
​
#dhcp-option=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],][<opt>|option:<opt-name>|option6:<opt>|option6:<opt-name>],[<value>[,<value>]]
​
#dhcp-option-force=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
​
#dhcp-optsfile=<path>
​
#dhcp-optsdir=<path>
​
#dhcp-option=3,1.2.3.4
​
#dhcp-option=option:router,1.2.3.4
​
#dhcp-option=option:router,192.168.10.254
​
#dhcp-option=option:dns-server,192.168.10.254,221.12.1.227,221.12.33.227
​
​
​
##############################################################################
​
# (IPv4 only) 禁用重用服务器名称和文件字段作为额外的 dhcp-option 选项。
​
# 一般情况下 dnsmasq 从 dhcp-boot 移出启动服务器和文件信息到 dhcp-option 选项中。
​
# 这使得在 dhcp-option 选项封包中有额外的选项空间可用,但是会使老的客户端混淆。
​
# 此选项将强制使用简单并安全的方式来避免此类情况。可以认为是一个兼容性选项。
​
#dhcp-no-override
​
​
​
##############################################################################
​
# 配置 DHCP 中继。
​
# <local address> 是运行 dnsmasq 的接口的 IP 地址。
​
# 所有在 <local address> 接口上接收到的 DHCP 请求将中继到 <server address> 指定的远程 DHCP 服务器。
​
# 可以多次配置此选项,使用同一个 <local address> 转发到多个不同的 <server address> 指定的远程 DHCP 服务器。
​
# <server address> 仅允许使用 IP 地址,不能使用域名等其他格式。
​
# 如果是 DHCPv6,<server address> 可以是 ALL_SERVERS 的多播地址 ff05::1:3 。
​
# 在这种情况下必须指定接口 <interface> ,不能使用通配符,用于直接多播到对应的 DHCP 服务器所在的接口。
​
# <interface> 指定了仅允许接收从 <interface> 接口的 DHCP 服务器相应信息。
​
#dhcp-relay=<local address>,<server address>[,<interface>]
​
​
​
##############################################################################
​
# 设置标签
​
#dhcp-vendorclass=set:<tag>,[enterprise:<IANA-enterprise number>,]<vendor-class>
​
#dhcp-userclass=set:<tag>,<user-class>
​
#dhcp-mac=set:<tag>,<MAC address>
​
#dhcp-circuitid=set:<tag>,<circuit-id>
​
#dhcp-remoteid=set:<tag>,<remote-id>
​
#dhcp-subscrid=set:<tag>,<subscriber-id>
​
#dhcp-match=set:<tag>,<option number>|option:<option name>|vi-encap:<enterprise>[,<value>]
​
#tag-if=set:<tag>[,set:<tag>[,tag:<tag>[,tag:<tag>]]]
​
​
​
#dhcp-proxy[=<ip addr>]......
​
​
​
##############################################################################
​
# 不分配匹配这些 tag:<tag> 的 DHCP 请求。
​
#dhcp-ignore=tag:<tag>[,tag:<tag>]
​
#dhcp-ignore-names[=tag:<tag>[,tag:<tag>]]
​
#dhcp-generate-names=tag:<tag>[,tag:<tag>]
​
# IPv4 only 使用广播与匹配 tag:<tag> 的客户端通信。一般用于兼容老的 BOOT 客户端。
​
#dhcp-broadcast[=tag:<tag>[,tag:<tag>]] 
​
​
​
##############################################################################
​
# IPv4 only 设置 DHCP 服务器返回的 BOOTP 选项,
​
# <servername> <server address> 可选,
​
# 如果未设置服务器名称将设为空,服务器地址设为 dnsmasq 的 IP 地址。
​
# 如果指定了多个 tag:<tag> 必须同时匹配才行。
​
# 如果指定 <tftp_servername> 将按照 /etc/hosts 中对应的 IP 地址进行轮询负载均衡。  
​
#dhcp-boot=[tag:<tag>,]<filename>,[<servername>[,<server address>|<tftp_servername>]]
​
# 根据不同的类型使用不同的选项。
​
# 使用示例:
​
#        dhcp-match=set:EFI_x86-64,option:client-arch,9
​
#        dhcp-boot=tag:EFI_x86-64,uefi/grubx64.efi
​
#        #dhcp-match=set:EFI_Xscale,option:client-arch,8
​
#        #dhcp-boot=tag:EFI_Xscale,uefi/grubx64.efi
​
#        #dhcp-match=set:EFI_BC,option:client-arch,7
​
#        #dhcp-boot=tag:EFI_BC,uefi/grubx64.efi
​
#        #dhcp-match=set:EFI_IA32,option:client-arch,6
​
#        #dhcp-boot=tag:EFI_IA32,uefi/grubx64.efi
​
#        #dhcp-match=set:Intel_Lean_Client,option:client-arch,5
​
#        #dhcp-boot=tag:Intel_Lean_Client,uefi/grubx64.efi
​
#        #dhcp-match=set:Arc_x86,option:client-arch,4
​
#        #dhcp-boot=tag:Arc_x86,uefi/grubx64.efi
​
#        #dhcp-match=set:DEC_Alpha,option:client-arch,3
​
#        #dhcp-boot=tag:DEC_Alpha,uefi/grubx64.efi
​
#        #dhcp-match=set:EFI_Itanium,option:client-arch,2
​
#        #dhcp-boot=tag:EFI_Itanium,uefi/grubx64.efi
​
#        #dhcp-match=set:NEC/PC98,option:client-arch,1
​
#        #dhcp-boot=tag:NEC/PC98,uefi/grubx64.efi
​
#        dhcp-match=set:Intel_x86PC,option:client-arch,0
​
#        dhcp-boot=tag:Intel_x86PC,pxelinux.0
​
​
​
##############################################################################
​
# DHCP 使用客户端的 MAC 地址的哈希值为客户端分配 IP 地址,
​
# 通常情况下即使客户端使自己的租约到期,客户端的 IP 地址仍将长期保持稳定。
​
# 在默认模式下,IP 地址是随机分配的。
​
# 启用 dhcp-sequential-ip 选项将按顺序分配 IP 地址。
​
# 在顺序分配模式下,客户端使租约到期更像是仅仅移动一下 IP 地址。
​
# 在通常情况下不建议使用这种方式。
​
#dhcp-sequential-ip
​
​
​
##############################################################################
​
# 多数情况下我们使用 PXE,只是简单的允许 PXE 客户端获取 IP 地址,
​
# 然后 PXE 客户端下载 dhcp-boot 选项指定的文件并执行,也就是 BOOTP 的方式。
​
# 然而在有适当配置的 DHCP 服务器支持的情况下,PXE 系统能够实现更复杂的功能。
​
# pxe-service 选项可指定 PXE 环境的启动菜单。
​
# 为不同的类型系统设定不同的启动菜单,并且覆盖 dhcp-boot 选项。
​
# <CSA> 为客户端系统类型:x86PC, PC98, IA64_EFI, Alpha, Arc_x86, Intel_Lean_Client, 
​
# IA32_EFI, X86-64_EFI, Xscale_EFI, BC_EFI, ARM32_EFI 和 ARM64_EFI,其他类型可能为一个整数。
​
# <basename> 引导 PXE 客户端使用 tftp 从 <server address> 或者 <server_name> 下载文件。
​
#     注意:"layer" 后缀 (通常是 ".0") 由 PXE 提供,也就是 PXE 客户端默认在文件名附加 .0 后缀。
​
#     示例:pxe-service=x86PC, "Install Linux", pxelinux         (读取 pxelinux.0 文件并执行)
​
#           pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4(不适用于老的PXE)
​
#     <bootservicetype> 整数,PXE 客户端将通过广播或者通过 <server address> 
​
#           或者 <server_name> 搜索对应类型的适合的启动服务。。
​
#     示例:pxe-service=x86PC, "Install windows from RIS server", 1
​
#           pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4
​
#     未指定 <basename>、<bootservicetype> 或者 <bootservicetype> 为 “0”,将从本地启动。
​
#     示例:pxe-service=x86PC, "Boot from local disk"
​
#           pxe-service=x86PC, "Boot from local disk", 0
​
# 如果指定 <server_name> 将按照 /etc/hosts 中对应的 IP 地址进行轮询负载均衡。  
​
#pxe-service=[tag:<tag>,]<CSA>,<menu text>[,<basename>|<bootservicetype>][,<server address>|<server_name>]
​
# 在 PXE 启动后弹出提示,<prompt> 为提示内容,<timeout> 为超时时间,为 0 则立即执行。
​
# 如果未指定此选项,在有多个启动选项的情况下等待用户选择,不会超时。
​
#pxe-prompt=[tag:<tag>,]<prompt>[,<timeout>]
​
# 根据不同的类型使用不同的菜单,使用示例:
​
#        #pxe-prompt="What system shall I netboot?", 120
​
#        # or with timeout before first available action is taken:
​
#        pxe-prompt="Press F8 or Enter key for menu.", 60
​
#        pxe-service=x86PC, "Now in x86PC (BIOS mode), boot from local", 0
​
#        pxe-service=x86PC, "Now in x86PC (BIOS mode)", pxelinux
​
#        pxe-service=PC98, "Now in PC98 mode", PC98
​
#        pxe-service=IA64_EFI, "Now in IA64_EFI mode", IA64_EFI
​
#        pxe-service=Alpha, "Now in Alpha mode", Alpha
​
#        pxe-service=Arc_x86, "Now in Arc_x86 mode", Arc_x86
​
#        pxe-service=Intel_Lean_Client, "Now in Intel_Lean_Client mode", Intel_Lean_Client
​
#        pxe-service=IA32_EFI, "Now in IA32_EFI mode", IA32_EFI
​
#        pxe-service=X86-64_EFI, "Now in X86-64_EFI (UEFI mode), boot from local", 0
​
#        pxe-service=X86-64_EFI, "Now in X86-64_EFI (UEFI mode)", grub/grub-x86_64.efi
​
#        pxe-service=Xscale_EFI, "Now in Xscale_EFI mode", Xscale_EFI
​
#        pxe-service=BC_EFI, "Now in BC_EFI mode", BC_EFI
​
#        # CentOS7 系统不支持下列两个选项
​
#        #pxe-service=ARM32_EFI,"Now in ARM32_EFI mode",ARM32_EFI
​
#        #pxe-service=ARM64_EFI,"Now in ARM64_EFI mode",ARM64_EFI
​
​
​
##############################################################################
​
# 默认为150,即最多分配150个ip地址出去,最大1000个ip
​
#dhcp-lease-max=150
​
# (IPv4 only) 指定DHCP端口,默认为67和68。如果不指定则为1067和1068,单指定一个,第二个加1
​
#dhcp-alternate-port[=<server port>[,<client port>]]
​
# 谨慎使用此选项,避免 IP 地址浪费。(IPv4 only) 允许动态分配 IP 地址给 BOOTP 客户端。
​
# 注意:BOOTP 客户端获取的 IP 地址是永久的,将无法再次分配给其他客户端。
​
#bootp-dynamic[=<network-id>[,<network-id>]]
​
# 谨慎使用此选项。
​
# 默认情况下 DHCP 服务器使用 ping 的方式进行确保 IP 未被使用的情况下将 IP 地址分配出去。
​
# 启用此选项将不使用 ping 进行确认。
​
#no-ping
​
​
​
##############################################################################
​
# 记录额外的 dhcp 日志,记录所有发送给 DHCP 客户端的选项(option)以及标签(tag)信息
​
#log-dhcp
​
# 禁止记录日常操作日志,错误日志仍然记录。启用 log-dhcp 将覆盖下列选项。
​
#quiet-dhcp
​
#quiet-dhcp6
​
#quiet-ra
​
​
​
# 修改 DHCP 默认租约文件路径,默认情况下无需修改
​
#dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
​
# (IPv6 only)
​
#dhcp-duid=<enterprise-id>,<uid>
​
​
​
##############################################################################
​
#dhcp-script=<path>
​
#dhcp-luascript=<path>
​
#dhcp-scriptuser=root
​
#script-arp
​
#leasefile-ro
​
​
​
#bridge-interface=<interface>,<alias>[,<alias>]
​
​
​
##############################################################################
​
# 给 DHCP 服务器指定 domain 域名信息,也可以给对应的 IP 地址池指定域名。
​
#     直接指定域名
​
#     示例:domain=thekelleys.org.uk
​
#     子网对应的域名
​
#     示例:domain=wireless.thekelleys.org.uk,192.168.2.0/24
​
#     ip范围对应的域名
​
#     示例:domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200
​
#domain=<domain>[,<address range>[,local]]
​
# 在默认情况下 dnsmasq 插入普通的客户端主机名到 DNS 中。
​
# 在这种情况下主机名必须唯一,即使两个客户端具有不同的域名后缀。
​
# 如果第二个客户端使用了相同的主机名,DNS 查询将自动更新为第二个客户端的 IP 地址。
​
# 如果设置了 dhcp-fqdn 选项,普通的主机名将不再插入到 DNS 中去,
​
# 仅允许合格的具有域名后缀的主机名插入到 DNS 服务器中。
​
# 指定此选项需同时指定不含 <address range> 地址范围的 domain 选项。
​
#dhcp-fqdn
​
# 通常情况下分配 DHCP 租约后,dnsmasq 设置 FQDN 选项告诉客户端不要尝试 DDNS 更新主机名与 IP 地址。
​
# 这是因为  name-IP 已自动添加到 dnsmasq 的 DNS 视图中的。
​
# 设置此选项将允许客户端 DDNS 更新,
​
# 在 windows 下允许客户端更新 windows AD 服务器是非常有用的。
​
# 参看  RFC 4702 。
​
#dhcp-client-update
​
​
​
#enable-ra
​
#ra-param=<interface>,[high|low],[[<ra-interval>],<router lifetime>]
​
​
​
​
​
##############################################################################
​
#
​
#        TFTP 选项
​
#
​
##############################################################################
​
# 对于绝大多数的配置,仅需指定 enable-tftp 和 tftp-root 选项即可。
​
# 是否启用内置的 tftp 服务器,可以指定多个逗号分隔的网络接口
​
#enable-tftp[=<interface>[,<interface>]]
​
#enable-tftp
​
#enable-tftp=enp3s0,lo
​
# 指定 tftp 的根目录,也就是寻找传输文件时使用的相对路径,可以附加接口,
​
#tftp-root=<directory>[,<interface>]
​
#tftp-root=/var/lib/tftpboot/
​
# 如果取消注释,那么即使指定的 tftp-root 无法访问,仍然启动 tftp 服务。
​
#tftp-no-fail
​
# 附加客户端的 IP 地址作为文件路径。此选项仅在正确设置了 tftp-root 的情况下可用,
​
# 示例:如果 tftp-root=/tftp,客户端为 192.168.1.15 请求 myfile.txt 文件时,
​
# 将优先请求 /tftp/192.168.1.15/myfile.txt 文件, 其次是 /tftp/myfile.txt 文件。
​
# 感觉没什么用。
​
#tftp-unique-root
​
# 启用安全模式,启用此选项,仅允许 tftp 进程访问属主为自己的文件。
​
# 不启用此选项,允许访问所有 tftp 进程属主可读取的文件。
​
# 如果 dnsmasq 是以 root 用户运行,tftp-secure 选项将允许访问全局可读的文件。
​
# 一般情况下不推荐以 root 用户运行 dnsmasq。
​
# 在指定了 tftp-root 的情况下并不是很重要。
​
#tftp-secure
​
# 将所有文件请求转换为小写。对于 Windows 客户端来说非常有用,建议开启此项。
​
# 注意:dnsmasq 的 TFTP 服务器总是将文件路径中的“\”转换为“/”。
​
#tftp-lowercase
​
# 允许最大的连接数,默认为 50 。
​
# 如果将连接数设置的很大,需注意每个进程的最大文件描述符限制,详见文档手册。
​
#tftp-max=<connections>
​
#tftp-max=50
​
# 设置传输时的 MTU 值,建议不设置或按需设置。
​
# 如果设定的值大于网络接口的 MTU 值,将按照网络接口的 MTU 值自动分片传输(不推荐)。
​
#tftp-mtu=<mtu size>
​
# 停止 tftp 服务器与客户端协商 "blocksize" 选项。启用后,防止一些古怪的客户端出问题。
​
#tftp-no-blocksize
​
# 指定 tftp 的连接端口的范围,方便防火墙部署。
​
# tftp 侦听在 69/udp ,连接端口默认是由系统自动分配的,
​
# 非 root 用户运行时指定的连接端口号需大于 1025 最大 65535。
​
#tftp-port-range=<start>,<end>
​
###############################################################################
​
#conf-dir=<directory>[,<file-extension>......]
​
#conf-file=/etc/dnsmasq.more.conf
​
conf-dir=/etc/dnsmasq.d
​
#servers-file=<file>

在Linux系统中,/etc/hosts是一个本地主机名解析文件,用于映射主机名(或域名)到IP地址。它主要用于在本地系统上实现简单的主机名解析,无需使用DNS服务器。

以下是/etc/hosts文件的示例内容:

# IPv4 and IPv6 localhost aliases
127.0.0.1       localhost
::1             localhost
​
# Custom mappings
192.168.1.100   myhost
10.0.0.1        app.example.com

解释一下上述示例:

  • 行以 # 开头被视为注释。

  • 第一行 127.0.0.1 localhost 和第二行 ::1 localhost 是默认的本地主机名解析,将 localhost 映射到回环地址 127.0.0.1::1

  • 后续行包含自定义的主机名到IP地址的映射。例如,192.168.1.100 myhostmyhost 映射到IP地址 192.168.1.100

您可以根据需要添加自定义的主机名映射到该文件中。这在某些情况下很有用,例如在测试环境中模拟特定域名解析或将自定义域名绑定到特定的IP地址。

请注意,对于通过DNS服务器解析的公共域名,/etc/hosts文件不起作用。在这种情况下,您需要使用DNS服务器或其他网络配置来实现域名解析。/etc/hosts仅适用于本地主机名解析

systemd-resolved是一个功能丰富的系统服务,提供了以下常用功能:

  1. DNS解析:systemd-resolved提供本地DNS解析功能。它能够解析主机名、域名和IP地址,并为应用程序提供解析服务。它可以通过多种方式执行解析,包括使用配置的DNS服务器、本地缓存和网络上的其他解析服务。

  2. 域名查询缓存:systemd-resolved会缓存查询结果,以便在未来的查询中快速响应。这减少了对远程DNS服务器的依赖,提高了查询性能和响应时间。

  3. 兼容性和连接管理:systemd-resolved与networkd和NetworkManager等网络管理工具紧密集成,在网络连接状态发生变化时,自动更新DNS配置。它可以与各种网络接口和连接类型一起工作,并根据网络情况自动更新DNS设置。

  4. DNS重定向:systemd-resolved还支持DNS请求的重定向。如果应用程序向systemd-resolved发出请求,而systemd-resolved无法解析该请求(例如,不存在的域名),它可以重定向请求到其他指定的DNS服务器。这有助于解决网络环境中的错误或无效的DNS查询。

  5. DNS-over-TLS和DNS-over-HTTPS支持:systemd-resolved还提供对DNS-over-TLS和DNS-over-HTTPS的支持。这些协议通过加密和安全传输DNS查询,增强了隐私和安全性。

使用systemd-resolved 的一些小方法

  1. systemctl start systemd-resolved:启动systemd-resolved服务。

  2. systemctl stop systemd-resolved:停止systemd-resolved服务。

  3. systemctl restart systemd-resolved:重新启动systemd-resolved服务。

  4. systemctl status systemd-resolved:查看systemd-resolved服务的运行状态。

  5. resolvectl status:显示systemd-resolved的状态和当前的DNS配置信息。

  6. resolvectl query example.com:向systemd-resolved查询特定域名的解析结果。

  7. resolvectl domain:显示当前系统的默认搜索域。

  8. resolvectl dns:显示当前系统配置的DNS服务器列表。

  9. resolvectl set-dns eth0 8.8.8.8:为指定的网络接口(例如eth0)设置DNS服务器。

  10. resolvectl flush-caches:清除systemd-resolved的DNS缓存。

  11. resolvectl futexes:显示systemd-resolved的futex统计信息。

这些命令提供了控制和管理systemd-resolved服务的基本功能,包括启停服务、查询域名解析、配置DNS服务器、刷新缓存等。

nslookup

Apache

apache的配置文件

/etc/httpd/conf/httpd.conf apache的主配置文件

# vim /etc/httpd/conf/httpd.conf 
ServerRoot "/etc/httpd"      //服务器的根路径,改文件中所有涉及到的路径的根都是相对它而言的。
Listen 80        //监听的端口
Include conf.modules.d/*.conf   //包含辅助配置文件目录下的所有以.conf结尾的;;;文件(/etc/httpd/conf.modules.d/*.conf)
​
User apache       //运行web服务的用户
Group apache    
​
ServerAdmin root@localhost    //管理员邮件地址
#ServerName www.example.com:80  //服务器的名字
ServerName www.uplooking.com:80
​
<Directory />   ---容器,对整个目录中的东西进行设置,权限等等
    AllowOverride none
    Require all denied
</Directory>
​
DocumentRoot "/var/www/html"    //web服务文档根路径
​
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>
​
<Directory "/var/www/html">
    Options Indexes FollowSymLinks     //Indexes:索引目录,(默认没有主页时),允许索引目录   FollowSymLinks:支持符号链接  软连接
    AllowOverride None     //和访问权限有关  可以进行认证        None --不使用认证  all--应用所有的认证指令  AuthConfig  --允许使用与认证授权相关的指令
    Require all granted    //访问控制  所有人方行
</Directory>
    
<IfModule dir_module>
    DirectoryIndex index.html    //定义了网站主页的名称
</IfModule>
​
<Files ".ht*">   //以所有.ht开头进行模式匹配不能进行访问
    Require all denied
</Files>
​
ErrorLog "logs/error_log"    //错误日志的设定
​
LogLevel warn  //日志级别
​
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined   //日志格式规定
    LogFormat "%h %l %u %t \"%r\" %>s %b" common     //日志格式规定
    <IfModule logio_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio   //日志格式规定
    </IfModule>
    CustomLog "logs/access_log" combined  //访问日志
</IfModule>
​
<IfModule alias_module>   
    # Alias /webpath /full/filesystem/path   //给路径设置别名  意味着访问http://Server_ip/webpath时,其页面文件来自于/full/filesystem/path中
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"   //脚本路径的别名
</IfModule>
​
<Directory "/var/www/cgi-bin">   
    AllowOverride None
    Options None
    Require all granted
</Directory>
​
<IfModule mime_module>
    TypesConfig /etc/mime.types    //支持哪些非二进制文件
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
​
AddDefaultCharset UTF-8   //默认字符集
​
​
#EnableMMAP off    //线程模式
EnableSendfile on   //开启进程模式(默认)
​
IncludeOptional conf.d/*.conf    //包含辅助配置文件目录下的所有以.conf结尾的文件(/etc/httpd/conf.d/*.conf)
​

/vae/www/html apache默认存放网页的根目录

实验一 修改httpd默认监听端口

vim /etc/httpd/conf/http.conf 文件中更改

Listen 80 //监听的端口 将80更改

实验二 Apche的虚拟主机

/etc/httpd/conf.d

创建vhosts.conf文件

一,基于域名的主机配置

为虚拟主机准备测试网页

[root@client ~]# mkdir -p /var/www/html/zfweb1
[root@client ~]# mkdir -p /var/www/html/zfweb2
[root@client ~]# echo "this is zfweb1" > /var/www/html/zfweb1/index.html
[root@client ~]# echo "this is zfweb2" > /var/www/html/zfweb2/index.html

修改虚拟主机的配置文件

[root@client ~]# vi /etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>                 #虚拟主机www.zf.com站点配置
    DocumentRoot "/var/www/html/zfweb1"      #网页文件目录
    ServerName www.zf.com                     #域名配置
    ErrorLog "logs/www.zfweb1.com.error_log"  #日志文件位置
    CustomLog "logs/www.zfweb1.com.access_log" common
<Directory "/var/www/html">
    Require all granted     #设置目录权限
</Directory>
</VirtualHost>
​
<VirtualHost *:80>                #虚拟主机www.zf.com站点配置
    DocumentRoot "/var/www/html/zfweb2"
    ServerName www.zzff.com
    ErrorLog "logs/www.zfweb2.com.error_log"
    CustomLog "logs/www.zfweb2.com.access_log" common
<Directory "/var/www/html">
    Require all granted
</Directory>
</VirtualHost>
​

修改全局配置文件

[root@client ~]# vim /etc/httpd.conf
#ServerName 前面要加# ,注释原来的域名,不使用
Include conf/extra/httpd-vhosts.conf     #加载虚拟主机的配置文件,开启虚拟主机模块功能

添加IP和域名的映射

192.168.247.170 www.zf.com www.zzff.com

关闭防火墙和核心防护并重启服务

systemctl stop firewalld setenforce 0 systemctl restart httpd

二,基于端口的主机配置

[root@client ~]# vi /etc/httpd/conf.d/vhosts.conf
<VirtualHost 192.168.247.170:88>   #虚拟主机1端口号88
    DocumentRoot "/var/www/html/zfweb1"
    ServerName www.zf.com
    ErrorLog "logs/www.zfweb1.com.error_log"
    CustomLog "logs/www.zfweb1.com.access_log" common
<Directory "/var/www/html">
    Require all granted
</Directory>
​
</VirtualHost>
<VirtualHost 192.168.247.170:8080>    #虚拟主机2端口号8080
    DocumentRoot "/var/www/html/zfweb2"
    ServerName www.zzff.com
    ErrorLog "logs/www.zfweb2.com.error_log"
    CustomLog "logs/www.zfweb2.com.access_log" common
<Directory "/var/www/html">
    Require all granted
</Directory>
</VirtualHost>

修改主配置文件

vi /etc/httpd/conf/httpd.conf #省略部分内容 Include conf/extra/httpd-vhosts.conf #加载独立的配置文件 Listen 192.168.247.170:88 #监听 88 端口 Listen 192.168.247.170:8080 #监听 8080 端口

Apzche日志

tail -f /var/log/httpd/*

192.168.158.131 - - [26/Jul/2023:15:07:50 +0800] "GET /index.html HTTP/1.1" 304 1415 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0"

远程主机IP 表明了访问日志的是谁

空白 - E-mail 为了避免用户被垃圾邮件骚扰 所以用-取代

空白 - 登录名 用于记录浏览者进行身份验证时提供的名字

请求时间:用方括号包围

 

请求方法/资源/协议 服务器收到的时一个什么样的请求。

状态码:请求的状态 一般200

发送字节数 表示发给客户端的总字节数

UA 客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等等

错误日志

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值