系統總體架構

系統要求
眾所周知,這是一個課程作業,以下要求由翻譯軟體翻譯,
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

這樣成功就可以了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/376057.html
標籤:其他
