【作业笔记】搭建DNS和Web服务器

作业要求(PDF)参见这里

这几天,在整理我的移动硬盘和服务器上的存储的历史文件的时候,发现现在Linux课/云计算课的很多实验内容我在高中早就在RaspberryPi(树莓派)上搭建过实验过。

所以,索性就把每篇我以前做过的实验写成笔记发出来供同学们参考吧(前提是我几年前的笔记文件没删且还找得到)。

其她:想考RedHat(红帽)Linux认证的可以看这篇


注:我的学号尾号是36,除了我本人外,使用如下示例截屏PS交作业均属无效。

由于我的设备(电脑)为SurfaceGo,开不起虚拟机,使用VULTR在 波兰共和国-华沙 创建一台临时云服务器实例作为实验用途(按小时计费,我20分钟做完顶多0.015美元四舍五入0.02美元)。

Temp Server

使用SSH远程连接到云服务器。

首先,安装vim(编辑工具)wget(下载工具)bind(named DNS)bind-utils(一组DNS工具包)

Install vim wget bind bind-utils

安装完成,首先为了避免我们出错把配置文件配的服务崩了,备份一下初始的配置文件。

cp /etc/named.conf /etc/named.conf.backup
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.backup

备份完配置文件,开始编辑主配置文件named.conf;将 “lister-on port 53” 改为监听你的云服务器/虚拟机的IP地址;将 “allow-query” 改为any。

vim /etc/named.conf
Edit named Config

编辑完主配置文件named.conf,编辑区域配置文件named.rfc1912.conf;在文件最后加上作业题目要求的 “99.cn”和”99-sts.cn” 区域信息。

vim /etc/named.rfc1912.zones
# 在文件最后加上
zone "99.cn" IN {
  type master;
  file "named.99.cn.zone";
  allow-update { none; };
}; 
zone "99-sts.cn" IN {
  type master;
  file "named.99-sts.cn.zone";
  allow-update { none; };
}; 
Edit Zone Config

然后开始编辑每个区域的解析文件,在/var/named目录下。

cd /var/named/

首先,将空白的示例配置文件复制一份,以供编辑。

将自带的CNAME和MX删掉,这两个解析分别用于指向另一个地址以及邮件服务器交换解析,我们的课程暂时用不到。

cp named.empty named.99.cn.zone
vim named.99.cn.zone
# 设置如下解析
     A  <ServerIP>
www  A  <ServerIP>
Edit Zone Parse

由于实验要求同个IP通过vHosts实现双站点,由此可知两个域名的解析文件是一样的(IP一样),直接复制一份即可。

cp named.99.cn.zone named.99-sts.cn.zone

变更所属组,不然会权限问题无法读取和解析(你不担心安全问题直接777权限也不是不行)

chown :named named.*

开放防火墙端口(区域传输使用tcp/53,用户解析使用udp/53)(你不担心安全问题直接把防火墙关掉也行)

firewall-cmd --zone=public --add-port=53/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent

启动BIND(named)、设置开机自启、并检查运行是否正常。

systemctl restart named
systemctl enable named
systemctl status named
systemctl bind(named)

在电脑/物理机检查是否能正常解析。

nslookup
> server <ServerIP>
> 99.cn
> www.99.cn
> 99-sts.cn
> www.99-sts.cn
Test

至此,BIND(named)(DNS)就配置完了。

开始配置ApacheHTTPD的Web服务(一个IP多个域名站点)。

首先安装。

yum install httpd -y

创建两个站点的目录。

mkdir /var/www/page1
mkdir /var/www/page2

编辑httpd.conf配置文件,在最后Include引入vHosts配置文件。

vim /etc/httpd/conf/httpd.conf
# 在最后加上
Include conf/vHosts.conf
# 注:若你分不清Linux相对路径和绝对路径的关系,建议在此处使用全路径,可用 "pwd" 查看。
Edit httpd.conf Config

下一步,创建和编辑所指向的vHosts.conf虚拟主机配置文件。

vim /etc/httpd/conf/vhosts.conf
# 编辑内容
<VirtualHost *:80>
  ServerAdmin me@iamsts.cn
  DocumentRoot "/var/www/page1"
  ServerName 99.cn
  ServerAlias 99.cn www.99.cn
</VirtualHost>
<VirtualHost *:80>
  ServerAdmin me@iamsts.cn
  DocumentRoot "/var/www/page2"
  ServerName 99-sts.cn
  ServerAlias 99-sts.cn www.99-sts.cn
</VirtualHost>
Edit vHosts.conf File

echo写入Web页面内容。

echo "This is 99.cn" >> /var/www/page1/index.html
echo "This is 99-sts.cn" >> /var/www/page2/index.html

开放防火墙端口(HTTP1.1和HTTP/2 两代协议使用tcp/80&443,但最新的HTTP/3代协议的QUIC支持和优先使用udp/80&443)(你不担心安全问题直接把防火墙关掉也行)

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=80/udp --permanent

启动Apache(HTTPD)、设置开机自启、并检查运行是否正常。

systemctl restart httpd
systemctl enable httpd
systemctl status httpd

至此,全部做完了,下面开始测试。

首先将本机的DNS改为服务器IP。

echo "nameserver 127.0.0.1" > /etc/resolv.conf

使用curl分别测试解析指向同一个IP的两个域名是否显示内容不一样。

curl http://99.cn
curl http://www.99.cn
curl http://99-sts.cn
curl http://www.99-sts.cn
Test Result

题外话备注:一个IP多个企业站点 在国内环境无法实现,根据国内备案要求,一个备案主体需对应一个IP,不能多个备案主体共用IP。

实验做完,Destroy(销毁)实例(临时云服务器),释放计算资源和IP。

Destroy

完成。

喵!

发表评论