众所周知,这是一个课程作业,以下要求由翻译软件翻译。
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 serversudo 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 applyfile 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 applydesktop
点击右上角的电源标识,选择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 安装bind9sudo 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.localsudo 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
home This is the homepage of mycompany.com, welcome! '; ?>
这样直接访问会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
这样成功就可以了



