系统总体架构?
?系统要求
众所周知,这是一个课程作业,以下要求由翻译软件翻译。
router、web和file服务器将使用UbuntuLinux20.04 server作为操作系统,而员工桌面将使用UbuntuLinux20.04 desktop
模拟公司内部网络系统,router将用作外部网络/互联网的NAT路由器和内部网络的路由器。它还为公司内部网络的mycompany.com域托管DNS服务。公司需要访问web服务器www.mycompany.com、DNS服务器DNS.mycompany.com和文件服务器home.mycompany.com。
web服务器将承载Apache2 web服务。文档根是/www,它从ZFS池webpool装入名为/webpool/doc的dataset,该dataset由镜像中2个磁盘的VDEV生成。
file服务器将承载一个ZFS池datapool,该数据池由配置为双奇偶校验RAID-Z pool的3个磁盘组成的VDEV组成。有一个dataset,即从池中创建的datapool/home。数据集datapool/home作为NFS共享导出,挂载到desktop的/home目录(存疑,这个目录特别阴间),并在desktop开机时自动挂载。
虚拟网络设置
由图片可知。需要三个子网,分别是intnet1,intnet2,以及一个nat网络。注意,是否勾选 将主机虚拟适配器连接到此网络 和 使用本地DHCP服务将IP地址分配给虚拟机 全凭个人兴趣。warning:若nat网络勾选?将主机虚拟适配器连接到此网络 可能会导致无法上网
intnet1:
?intnet2:
?nat网络:
虚拟机设置?
共4台虚拟机,其配置如下(主要是网络选择,如果要添加硬盘,请务必关机!!!):
desktop:
?router:三个网卡
?web server:
file server:
?
?配置网络
router?
配置router的静态ip
sudo pico /etc/netplan/00-installer-config.yaml
修改这个文件?
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses:
- 10.0.2.100/24
gateway4: 10.0.2.1
nameservers:
addresses: [10.0.2.100]
optional: true
ens38:
addresses:
- 192.168.1.1/24
optional: true
ens39:
addresses:
- 192.168.2.1/24
optional: true
version: 2
CTRL x保存,使配置生效:
sudo netplan apply
检查是否配置成功
ip addr
?出现三个网卡,对应三个地址
?web server
sudo pico /etc/netplan/00-installer-config.yaml
注意:gateway4的地址就是router的ens38对应的地址?
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses:
- 192.168.1.2/24
gateway4: 192.168.1.1
nameservers:
addresses: [10.0.2.100]
optional: true
version: 2
sudo netplan apply
file server?
sudo pico /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses:
- 192.168.2.2/24
gateway4: 192.168.2.1
nameservers:
addresses: [10.0.2.100]
optional: true
version: 2
sudo netplan apply
?desktop
点击右上角的电源标识,选择Wired Connected,选择wired settings
?如图配置
?然后把网关了,再开开
可以几台机器互相ping看看是否可以ping通。但此时除了router其他都不能上网,需要设置iptables
sudo su
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
exit
这样几台机器应该都可以ping baidu.com?
?配置DNS
安装bind9
sudo apt update
sudo apt-get install bind9 dnsutils
sudo pico /etc/bind/named.conf.options
forwarders {
202.119.24.18; # SEU DNS
8.8.8.8; # Google Public DNS
};
sudo service bind9 restart
?可以dig uniseu.edu试试成没成,不过这么霉的网站就不要挖了
配置named.conf.local
sudo pico /etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone
"mycompany.com"{ type master;
file "/etc/bind/db.mycompany.com";
};
zone "2.0.10.in-addr.arpa" { type master;
notify no;
file "/etc/bind/db.10";
};
zone "1.168.192.in-addr.arpa" { type master;
notify no;
file "/etc/bind/db.192.168.1";
};
zone "2.168.192.in-addr.arpa" { type master;
notify no;
file "/etc/bind/db.192.168.2";
};
配置里提到了四个文件,逐个创建
设置forward zone文件:
创建db.mycompany.com(db.local相当于是个模板)
sudo cp /etc/bind/db.local /etc/bind/db.mycompany.com
sudo pico /etc/bind/db.mycompany.com
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA dns.mycompany.com. asl.seu.edu.cn.(
2019112001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dns.mycompany.com.
@ IN A 127.0.0.1
@ IN AAAA ::1
dns IN A 10.0.2.100
desktop IN A 192.168.1.3
home IN A 192.168.2.2
www IN A 192.168.1.2
#dns IN CNAME server
#www IN CNAME server
设置reverse zone 文件
创建db.10
sudo cp /etc/bind/db.local /etc/bind/db.10
sudo pico /etc/bind/db.10
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA dns.mycompany.com. asl.seu.edu.cn. (
2019112001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dns.mycompany.com.
100 IN PTR DNS.mycompany.com.
?创建db.192.168.1
sudo cp /etc/bind/db.local /etc/bind/db.192.168.1
sudo pico /etc/bind/db.192.168.1
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA dns.mycompany.com. asl.seu.edu.cn. (
2019112001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dns.mycompany.com.
2 IN PTR www.mycompany.com.
创建db.192.168.2?
sudo cp /etc/bind/db.local /etc/bind/db.192.168.2
sudo pico /etc/bind/db.192.168.2
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA dns.mycompany.com. asl.seu.edu.cn. (
2019112001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dns.mycompany.com.
2 IN PTR home.mycompany.com.
重启bind9
sudo service bind9 restart
检查配置是否有问题(自信的人可以跳过)不报错就行
cd /etc/bind
sudo named-checkconf
sudo named-checkzone mycompany.com db.mycompany.com
sudo named-checkzone 2.0.10.in-addr.arpa. db.10
sudo named-checkzone 1.168.192.in-addr.arpa. db.192.168.1
sudo named-checkzone 2.168.192.in-addr.arpa. db.192.168.2
检查是否dns能够正向解析,只需几台机子用host name互ping
检测是否能反向解析,可以在web server上
dig -x 192.168.2.2@dns.mycompany.com
?配置file server
关机!!!在file server上新增3个1G的SATA硬盘
??
在file server上,查看当前磁盘状况
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
列出来的这三个1G的小磁盘,这就是用来做zfs的
?安装zfsutils-linux,做一个名叫datapool的zpool,创建datapool/home的数据集
sudo apt install zfsutils-linux
#注意这里用来做zfs的盘一定是新加的盘!可能并不是sda sdb sdc
sudo zpool create datapool mirror /dev/sda /dev/sdb /dev/sdc
sudo zfs create datapool/home
安装nfs-kernel-server
sudo apt install nfs-kernel-server
修改/etc/exports(大概是和权限有关吧
sudo pico /etc/exports
在最后面添加一行
/datapool/home *(rw,sync,no_root_squash)
重启
sudo systemctl start nfs-kernel-server.service
reboot
在desktop
如果阁下是个谨慎的人,可以先查看有什么能挂的
showmount -e home.mycompany.com
?
开挂(但如果阁下并非本校本课程的学生,且阁下的/home文件夹下有一个用户名文件夹,建议不要挂到/home这么阴间的地方,而是挂载到一个空的文件夹下。因为如果不空,mount后文件夹原来的东西就看不到了。当然,挂了也不用担心,umount就又能看到了。
注:三三提供了一个方法,就是把原来/home的文件拷贝挪移到新的/home里,但是这样笔者出现了一些奇奇怪怪的问题,读者自求多福吧
#建议不要挂载到/home,因为笔者暂时没有找到很好的处理方法
sudo mount -t nfs home.mycompany.com:/datapool/home /home
设置开机自动挂(高危!)
sudo pico /etc/fstab
在最后添加一行,但同样的,笔者非常,非常不建议在这里真的挂到/home,建议添加个别的文件夹看看效果就行了。如果不信邪,建议在这里存个快照
#highly not recommended!!!!!!!!
home.mycompany.com:/datapool/home /home nfs defaults,user,exec 0 0
配置web server(apache)
安装lamp(可能只用apache就行了,不过之前把lamp都安了就这样吧
sudo apt update
sudo apt install lamp-server^
#注意这个尖尖
?编辑apache2的默认主页
sudo pico /etc/apache2/sites-available/000-default.conf
设置文档根为/www
?添加俩新sata盘,做池子,不多赘述,和file server如出一辙(注意名字是webpool/doc)但是笔者依然不明白意图何在
sudo apt install zfsutils-linux
#注意这里用来做zfs的盘一定是新加的盘!可能并不是sda sdb
sudo zpool create webpool mirror /dev/sda /dev/sdb
sudo zfs create webpool/doc
sudo apt install nfs-kernel-server
sudo pico /etc/exports
#添加一行
/webpool/doc *(rw,sync,no_root_squash)
#重启
sudo systemctl start nfs-kernel-server.service
reboot
开挂
sudo mkdir /www
#localhost是因为自己挂自己,其实我也不理解到底为啥这样要求
sudo mount -t nfs localhost:/webpool/doc /www
?写一个主页
sudo pico /www/index.php
<html>
<head>
<title>home</title>
</head>
<body>
<?php echo '<p> This is the homepage of mycompany.com, welcome! </p>'; ?>
</body>
</html>
这样直接访问会403,所以来一套组合拳
sudo chmod 777 /www
sudo chmod a=rw '/www'
sudo pico /etc/apache2/apache2.conf
#将"Require all denied"修改成"Require all granted"
?
感谢?解决Apache提示"You don't have permission to access..."错误_老蒋部落
重启apache?
sudo systemctl reload apache2
在desktop上访问www.mycompany.com
?
这样成功就可以了
|