《Linux网络操作系统配置与管理》
综合项目实训任务书
一、项目实训目的
通过一个以学校为背景的校园网建设项目的综合实训,使学生在Centos 7.9 操作系统平台上,掌握服务器的管理与配置技术,学会搭建一个中小型校园网的设计细节和施工流程,为今后架设综合网络平台以及云计算数据中心打下基础。
二、项目实训方式与基本要求
1.项目实训前必须仔细阅读《项目施工任务书》,明确实训的目的、要求和任务,制定好上机步骤。
2.每人备用一台笔记本(至少16GB内存容量),独立完成全部项目任务。
3.上机时必须携带本项目实训任务书以及相关的教材资料,以备查阅。
三、项目施工时间和进度安排
表15-4 项目实施进度表
实施进度 | 实施内容 |
---|---|
1 | 阅读本任务书,把握任务要求、明确实训内容 |
2 | 搭建实训环境(准备好5台虚拟机及其所需数量的网卡,调试好4台虚拟机交换机) |
3 | 部署软路由器,配置所有主机的网络参数,实现2个内部子网及外网的互连互通 |
4 | 逐台配置其他的功能服务器、完成本地客户机对服务器的访问测试 |
5 | 进行综合调试和测试 |
6 | 项目验收及成绩评定 |
7 | 整理技术文档,并通过网络空间提交《综合项目实训报告书》 |
四、项目规划及施工环境 |
本项目通过1台物理机和VMware Workstation软件,构建了一个具有2个内部子网、一个外部模拟公网、4台虚拟交换机和5台虚拟机的网络,网络拓扑图如图15-2所示。
为了方便操作,我们给dhcp,nat等服务器配置一张管理网卡,只起到紧急情况下管理虚拟机作用
四、项目实训内容
虚拟网卡分配表:
网卡名称 | 网络模式模式 | 网段 | DHCP服务 | 作用 |
---|---|---|---|---|
VMnet2 | NAT模式 | 10.1.80.0/24 | 启用 | 外网卡 |
VMnet11 | 仅主机模式 | 192.168.1.0/24 | 关闭 | 内网卡,服务器用网 |
VMnet12 | 仅主机模式 | 192.168.2.0/24 | 关闭 | 内网卡,学生用网 |
VMnet13 | 仅主机模式 | 10.2.1.0/24 | 启用 | 内网卡,管理网卡 |
#VMnet13仅供无法通过192.168.1.0/24网段与192.168.2.0/24网段连接进行使用,注意修改路由策略
虚拟机分配表:
虚拟机名称 | 服务器 | 网卡及IP地址 | 网卡连接的虚拟交换机 |
---|---|---|---|
dhcp | DHCP、软路由、SNAT内网用户共享上网 DNAT发布内网应用服务 | 管理网卡:VMnet13:10.2.1.101 内网卡:VMnet11: 192.168.1.1 VMnet12: 192.168.2.1 外网卡VMnet2:10.1.80.130 | VMnet13 VMnet11 VMnet12 VMnet2 |
dns | dns缓存服务器 | 外网卡:VMnet11: 10.1.80.131 | VMnet2 |
apacheWeb | 学校官网 | 内网卡:VMnet11: 192.168.1.3 | VMnet11 |
nginxWeb | 内网文件下载站 | 内网卡:VMnet11: 192.168.1.4 | VMnet11 |
win10 x64 | 流动测试机器 | 根据需求自行添加 | 根据需求自行添加 |
拓补图:
任务1:配置各虚拟机的网络参数和NAT服务,实现内部2个子网和外网的互连互通
1.为虚拟机①和虚拟机③添加所需数量的网卡,并根据表15-5的规划将各网卡连接至相应的虚拟交换机,配置所有虚拟机上各网卡的IP地址等网络参数。
首先按照需求为dhcp服务器添加相应网卡
2.安装centos7操作系统
选择语言
软件选择>基础设施服务器
关闭KDUMP
设置密码,等待安装完成
系统安装完成后,查看网卡,发现ens32 ens33 ens34 ens35全部都是无网络状态
3.配置网卡
①管理网卡:
TPROTO=static
NAME=ens32
DEVICE=ens32
IPADDR=10.2.1.101
NETMASK=255.255.255.0
GATEWAY=10.2.1.2
ONBOOT=yes
②内网网卡:
TPROTO=static
NAME=ens33
DEVICE=ens33
IPADDR=192.168.1.1
NETMASK=255.255.255.0
ONBOOT=yes
③内网网卡:
TPROTO=static
NAME=ens34
DEVICE=ens34
IPADDR=192.168.2.1
NETMASK=255.255.255.0
ONBOOT=yes
④外网网卡:
TPROTO=static
NAME=ens35
DEVICE=ens35
IPADDR=10.1.80.130
GATEWAY=10.1.80.2
NETMASK=255.255.255.0
ONBOOT=yes
重启网络并查看网络状态:
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a1:17:79 brd ff:ff:ff:ff:ff:ff
inet 10.2.1.101/24 brd 10.2.1.255 scope global noprefixroute ens32
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea1:1779/64 scope link
valid_lft forever preferred_lft forever
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a1:17:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea1:1783/64 scope link
valid_lft forever preferred_lft forever
4: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a1:17:8d brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global noprefixroute ens34
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea1:178d/64 scope link
valid_lft forever preferred_lft forever
5: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a1:17:97 brd ff:ff:ff:ff:ff:ff
inet 10.1.80.130/24 brd 10.1.80.255 scope global noprefixroute ens35
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea1:1797/64 scope link
valid_lft forever preferred_lft forever
4.配置yum源
使用管理网,将centos镜像上传到dhcp服务器内:
删除原有yum源,配置离线centos yum源
[root@localhost ~]# mount CentOS-7-x86_64-Everything-2009.iso /mnt
[root@localhost ~]# mkdir /opt/centos
[root@localhost ~]# cp -rf /mnt/* /opt/centos
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[root@localhost ~]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
centos | 3.6 kB 00:00:00
(1/2): centos/group_gz | 153 kB 00:00:00
(2/2): centos/primary_db | 6.1 MB 00:00:00
源标识 源名称 状态
centos centos 10,072repolist: 10,072
5.配置dhcp服务
下载dhcp服务:
[root@localhost ~]# yum install -y dhcp*
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 12:dhcp-common-4.2.5-82.el7.centos.x86_64 已安装并且是最新版本
软件包 12:dhcp-libs-4.2.5-82.el7.centos.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 dhcp.x86_64.12.4.2.5-82.el7.centos 将被 安装
---> 软件包 dhcp-devel.x86_64.12.4.2.5-82.el7.centos 将被 安装
--> 解决依赖关系完成
依赖关系解决
================================================================================================================================================ Package 架构 版本 源 大小
================================================================================================================================================正在安装:
dhcp x86_64 12:4.2.5-82.el7.centos centos 515 k
dhcp-devel x86_64 12:4.2.5-82.el7.centos centos 108 k
事务概要
================================================================================================================================================安装 2 软件包
总下载量:623 k
安装大小:1.5 M
Downloading packages:
------------------------------------------------------------------------------------------------------------------------------------------------总计 89 MB/s | 623 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 12:dhcp-devel-4.2.5-82.el7.centos.x86_64 1/2
正在安装 : 12:dhcp-4.2.5-82.el7.centos.x86_64 2/2
验证中 : 12:dhcp-4.2.5-82.el7.centos.x86_64 1/2
验证中 : 12:dhcp-devel-4.2.5-82.el7.centos.x86_64 2/2
已安装:
dhcp.x86_64 12:4.2.5-82.el7.centos dhcp-devel.x86_64 12:4.2.5-82.el7.centos
完毕!
将dhcp服务器的防火墙关闭并开启路由转发
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
在/etc/sysctl.conf 下配置 并使用sysctl -p 生效
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
编辑dhcp配置并设置dhcp服务开机自启 #如果安装一个完全不知道的软件包可以通过rpm -qc 包名 来查询配置文件路径
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
subnet 192.168.1.0 netmask 255.255.255.0 { #网卡一
option routers 192.168.1.1; #配置网关
range 192.168.1.5 192.168.1.254; #配置地址池
default-lease-time 600; #默认租约时间
max-lease-time 7200; #最大租约时间
option domain-name-servers 10.1.80.131; #DNS服务器
}
subnet 192.168.2.0 netmask 255.255.255.0 { #网卡二
option routers 192.168.2.1; #配置网关
range 192.168.2.5 192.168.2.254; #配置地址池
default-lease-time 600; #默认租约时间
max-lease-time 7200; #最大租约时间
option domain-name-servers 10.1.80.131; #DNS服务器
}
[root@localhost ~]# systemctl enable dhcpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
6.配置路由与iptables策略
#重启后会重置配置 需手动更改 重新做路由与iptables配置 建议将机器挂起处理,不进行关机 ,若重启网络配置 一定要查看一下路由配置有没有被修改,一定要保证默认路由走10.1.80.2 (default via 10.1.80.2 dev ens35 proto dhcp metric 103)不允许使默认路由走其他网络!!!
首先我们查看一下路由配置
[root@localhost ~]# ip route
default via 10.2.1.2 dev ens32 proto static metric 100
default via 10.1.80.2 dev ens35 proto dhcp metric 103
10.1.80.0/24 dev ens35 proto kernel scope link src 10.1.80.130 metric 103
10.2.1.0/24 dev ens32 proto kernel scope link src 10.2.1.101 metric 100
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.1 metric 101
192.168.2.0/24 dev ens34 proto kernel scope link src 192.168.2.1 metric 102
发现有一个路由default via 10.2.1.2 dev ens32 这回导致默认流量会从10.2.1网段出去,这会导致无法连接外网,因为外网的网段为10.1.80,所以我们要删除默认的10.2.1.2的路由
[root@localhost ~]# ip route del default via 10.2.1.2 dev ens32 proto static metric 100
添加iptables转发策略
ip route del default via 10.2.1.2 dev ens32 proto static metric 100
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 10.1.80.130
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 10.1.80.130
iptables -A FORWARD -s 192.168.1.0/24 -d 10.1.80.130 -j ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -d 10.1.80.130 -j ACCEPT
iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j SNAT --to-source 10.1.80.130
这些命令是 `iptables` 的一部分,用于配置网络地址转换(NAT)和转发规则。下面是每个命令的解释:
1. `iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 10.1.80.130`
- 这个命令将添加一条规则到 `nat` 表的 `POSTROUTING` 链。
- `-s 192.168.1.0/24` 指定了源地址为 `192.168.1.0` 到 `192.168.1.255` 的数据包。
- `-j SNAT` 表示执行源 NAT,改变数据包的源地址。
- `--to-source 10.1.80.130` 指定了新的源地址为 `10.1.80.130`。
- 这条命令的意思是,所有来自 `192.168.1.0/24` 网络的数据包在转发时,其源地址将被改为 `10.1.80.130`。
2. `iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 10.1.80.130`
- 这个命令与第一个命令类似,但适用于 `192.168.2.0/24` 网络。
3. `iptables -A FORWARD -s 192.168.1.0/24 -d 10.1.80.130 -j ACCEPT`
- 这个命令将添加一条规则到 `filter` 表的 `FORWARD` 链。
- `-s 192.168.1.0/24` 指定了源地址为 `192.168.1.0/24`。
- `-d 10.1.80.130` 指定了目的地址为 `10.1.80.130`。
- `-j ACCEPT` 表示接受这些数据包。
- 这条命令允许所有来自 `192.168.1.0/24` 网络,目的地为 `10.1.80.130` 的数据包被转发。
4. `iptables -A FORWARD -s 192.168.2.0/24 -d 10.1.80.130 -j ACCEPT`
- 这个命令与第三条命令类似,但适用于 `192.168.2.0/24` 网络。
5. `iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j SNAT --to-source 10.1.80.130`
- 这个命令再次添加一条规则到 `nat` 表的 `POSTROUTING` 链。
- `-s 0.0.0.0/0` 表示这条规则适用于所有源地址。
- `-j SNAT --to-source 10.1.80.130` 表示将所有经过的数据包的源地址转换为 `10.1.80.130`。
- 这条命令通常用于实现一对一的 NAT,将本机的所有外部流量的源地址改为 `10.1.80.130`。
这些命令结合起来,通常用于设置路由器或网关,使得连接到该路由器的本地网络(`192.168.1.0/24` 和 `192.168.2.0/24`)的设备能够通过一个公网 IP 地址(`10.1.80.130`)访问互联网。同时,它们允许从外部网络访问路由器本身。
7.网络连通性测试
我们使用流动测试机进行测试,为了直观演示,本次使用win10x64作为演示
首先只添加一张网卡VMnet11
首先查看dhcp分配状态
发现已经成功被分配到IP 192.168.1.5
下面进行网络连通性测试
依次对192.168.1.1、192.168.2.1、10.1.80.130进行ping命令测试
发现网络连通性测试成功,但是无法访问网页,这是因为在前面dhcp服务内,我们分配的DNS服务并没有搭建完毕,所以无法解析域名。
将网卡改为VMnet12 重复上述网络连通性测试
任务2:搭建DNS缓存服务器,提高内网访问互联网速度。
1.为虚拟机①添加所需数量的网卡,并根据表的规划将各网卡连接至相应的虚拟交换机。
首先按照需求为dns服务器添加相应网卡
2.安装centos7操作系统
选择语言
软件选择>基础设施服务器
关闭KDUMP
更改网络,固定静态IP为10.1.80.131
设置密码,等待安装完成
3.ftp连接dns服务器,上传centos镜像 配置yum仓库
[root@localhost ~]# mount CentOS-7-x86_64-Everything-2009.iso /mnt
[root@localhost ~]# mkdir /opt/centos
[root@localhost ~]# cp -rf /mnt/* /opt/centos
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[root@localhost ~]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
centos | 3.6 kB 00:00:00
(1/2): centos/group_gz | 153 kB 00:00:00
(2/2): centos/primary_db | 6.1 MB 00:00:00
源标识 源名称 状态
centos centos 10,072repolist: 10,072
4.安装bind服务
[root@localhost ~]# yum install -y bind
5.编辑bind配置 配置为dns缓存服务器
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
forward only;
forwarders { 114.114.114.114; }; # 上游dns服务器可添加多个,添加114仅供演示
dnssec-enable no; #关闭验证
dnssec-validation no;
6.DNS连通性测试
使用测试机进行测试:
可以正常上网
任务3:架设ApacheWeb站点
用于模拟学校官网。
1.设置固定IP
若无法将镜像传入虚拟机,可以加一张管理网卡,等操作完毕,吧管理网卡禁用掉,查看ip route,确定流量走192.168.1.1
2.挂载centos镜像 安装apache
yum install -y httpd
echo "The index of Ncc" > /var/www/html/index.html
systemctl enable httpd --now
3.关闭防火墙
sytemctl stop firealld && setenforce 0
4.网页访问测试
使用流动测试机访问,建议使用VMnet12网卡访问,因为apache网站在192.168.1.0网段
测试成功
任务4:架设Nginx下载站点
架设Nginx下载站点供校内学生下载学校共享文件
1.配置网卡
2.配置Centos源以及nginx源
[root@localhost ~]# tar zxf nginx-repo.tar.gz -C /opt/nginx/
[root@localhost ~]# cat /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[nginx]
name=nginx
baseurl=file:///opt/nginx
gpgcheck=0
enabled=1
3.安装nginx服务
[root@localhost ~]# yum install -y nginx
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 nginx.x86_64.1.1.18.0-2.el7.ngx 将被 安装
--> 解决依赖关系完成
依赖关系解决
================================================================================================================================================ Package 架构 版本 源 大小
================================================================================================================================================正在安装:
nginx x86_64 1:1.18.0-2.el7.ngx nginx 769 k
事务概要
================================================================================================================================================安装 1 软件包
总下载量:769 k
安装大小:2.7 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 1:nginx-1.18.0-2.el7.ngx.x86_64 1/1
----------------------------------------------------------------------
Thanks for using nginx!
Please find the official documentation for nginx here:
* http://nginx.org/en/docs/
Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
* http://nginx.org/en/support.html
Commercial subscriptions for nginx are available on:
* http://nginx.com/products/
----------------------------------------------------------------------
验证中 : 1:nginx-1.18.0-2.el7.ngx.x86_64 1/1
已安装:
nginx.x86_64 1:1.18.0-2.el7.ngx
完毕!
4.修改nginx配置文件,配置如下
server {
listen 80;
server_name download.ncc.example;
charset utf-8;
root /opt/download;
location / {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
5.重启nginx服务
[root@localhost ~]# systemctl restart nginx
6.模拟创建一个共享文件
[root@localhost ~]# cd /opt/download && touch test.txt
6.流动测试机访问
任务5:配置DNS解析服务,将www.ncc.example与download.ncc.examle解析至相应的IP,并在dhcp服务器设置Dnat服务,将www网页让公网IP通过public.ncc.examle访问。
1.修改DNS服务器相应的解析服务
首先查看named.conf配置
发现区域文件为/etc/named.rfc1912.zones
2.修改/etc/named.rfc1912.zones添加区域解析文件
zone "ncc.example" {
type master;
file "/etc/named/ncc.example.zone";
};
3.写入解析文件/etc/named/ncc.example.zone
$TTL 86400
$ORIGIN ncc.example.
@ IN SOA ns.ncc.example. admin.ncc.example. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS ns.ncc.example.
ns A 10.1.80.131 ;
@ A 192.168.1.1 ;
www A 192.168.1.3 ;
download A 192.168.1.4 ;
public A 10.1.80.130 ;
4.重启dns服务
systemctl restart named;
5.设置Dnat服务,将www.ncc.example通过网络总出口10.1.80.130使外部访问
操控dhcp服务器添加dhcp解析
iptables -t nat -A PREROUTING -d 10.1.80.130 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.3