环境准备
1、配置 YUM 软件仓库
server 和 desktop 机器上做同样的操作!!!!
# // server:
$ vim /etc/yum.repos.d/base.repo
[rhce]
name = EX300
gpgcheck = 0
baseurl = http://classroom.example.com/content/rhel7.0/x86_64/dvd/
### 清空之前的软件仓库缓存
$ yum clean all
### 刷新软件仓库
$ yum repolist
### 拷贝到 desktop 上
$ scp /etc/yum.repos.d/base.repo root@172.25.0.10:/etc/yum.repos.d/
开始答题
1、配置 SELinux
虚拟机 server 和 desktop 的 SELinux 必须运行在 Enforcing 模式。
$ vim /etc/selinux/config
$ grep -v ^# /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted
### 修改当前模式为enforcing
$ setenforcing 1
$ sestatus
...
Current mode: enforcing
Mode from config file: enforcing
...
2、配置 ssh 访问
按以下要求配置 SSH 访问
用户能够从域 example.com 内的客户端通过 SSH 远程访问您的两个虚拟机系统
在域 my133t.org 内的客户端不能访问您的两个虚拟机
#//server
### 检查一下防火墙是否开启
$ systemctl status firewalld.service
...
Active : active (running)
...
$ firewall-cmd --permanent --add-service=ssh
$ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.10.0/24 service name=ssh reject'
$ firewall-cmd --reload
### 检查
$ firewall-cmd --list-all
#//desktop 做同样的操作
3、自定义用户环境
在系统 server0 和 desktop0 上创建自定义命令为 qstat 此定义命令将执行以下命令:
/bin/ps -Ao pid,tt,user,fname,rsz
此命令对系统中所有用户有效。
#//server
$ echo "alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz'" >> /etc/bashrc
$ source /etc/bashrc
### 检查一下
$ qstat
#//desktop 做同样的操作
4、配置端口转发
在系统 server0 配置端口转发,要求如下:
在 172.25.0.0/24 网络中的系统,访问 server0 的本地端口 5423 将被转发到 80
此设置必须永久有效。
#//server
$ firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.0.0/24 forward-port port=5423 protocol=tcp to-prot=80'
$ firewall-cmd --reload
### 检查
firewall-cmd --list-all
或者执行
#//server
$ firewall-cmd --permanent --add-forward-port=port=5423:proto=tcp:toport=80
$ firewall-cmd --reload
### 检查
$ firewall-cmd --list-forward-ports
5、配置链路聚合
在 server0.example.com 和 desktop0.example.com 之间按以下要求配置一个链接:
此链路使用接口 eth1 和 eth2
此链路在一个接口失效时仍然能工作
此链路 server0 使用下面的地址 172.16.1.65/255.255.255.0
此链路 desktop0 使用下面的地址 172.16.1.75/255.255.255.0
此链路在系统重启之后依然保持正常状态。
如果对命令不熟悉,可以使用帮助文件。如果熟悉则跳过帮助。
-----help---分割线--------
$ man nmcli-examples ---->用模板7
$ man teamd.conf ---> 这时两个核心的帮助
"runner":{"name":"activebackup"} ---> 用这个帮助
$ cat /usr/share/doc/teamd-1.9/example_ifcfgs/ifcfgs-team_test0 --->查看这里也行
-----help---分割线--------
#//server
$ nmcli connection add type team con-name Team0 ifname team0 config '{"runner": {"name":"activebackup"}}'
--->注意单引号和双引号
### 检查
$ ip a s
...
$ nmcli connection add type team-slave con-name Team0-port1 ifname eth1 master team0
$ nmcli connection add type team-slave con-name Team0-port2 ifname eth2 master team0
$ nmcli connection modify Team0 ipv4.addresses '172.16.1.65/24' ipv4.method manual
$ nmcli connection reload
$ nmcli connection up Team0
### 验证
$ teamdctl team0 state
#//desktop ———>做同样的操作
注意ip地址:nmcli connection modify Team0 ipv4.addresses '172.16.1.75/24' ipv4.method manual
6、配置IPv6地址
在您的考试系统上配置接口 eth0 使用下列 IPv6 地址:
server0 上的地址应该是 2014:ac18::a/64
desktop0 上的地址应该是 2014:ac18::b/64
两个系统必须能与网络 2014:ac18/64 内的系统通信
地址必须在重启后依然生效
两个系统必须保持当前的IPv4地址并能通信。
#//server
$ nmcli connection modify 'System eth0' ipv6.addresses '2014:ac18::a/64' ipv6.method manual
$ nmcli connection reload
### 激活
$ nmcli connection up 'System eth0'
#//server
### 验证
$ ping 172.25.0.10
#//desktop
$ nmcli connection modify 'System eth0' ipv6.addresses '2014:ac18::b/64' ipv6.method manual
$ nmcli connection reload
### 激活
$ nmcli connection up 'System eth0'
#//desktop
### 验证
$ ping6 2014:ac18::a
7、配置本地邮件服务
在系统 server0 和 desktop0 上配置邮件服务,满足以下要求:
这些系统不接收外部发送来的邮件
在这些系统上发送的任何邮件都会自动路由到 classroom.example.com
从这些系统上发送的邮件显示来自于 example.com
您可以通过发送邮件到本地用户 hal 来测试您的配置,系统 classroom.example.com 已经配置把此用户的邮件转到下列 URL:
http://classroom.example.com/cgi-bin/recevied_mail
### 查看题目要求,一个是做邮件转发,另一个是做邮件别名
#//server
$ cd /etc/postfix/
$ cp -a main.cf{,.bak}
修改配置文件 /etc/postfix/main.cf 修改以下几行:
$ vim /etc/postfix/main.cf
83 mydomain = example.com --->域
99 myorigin = $mydomain --->配置邮件来源域
164 mydestination = "" --->配置邮件目的地
316 relayhost = [classroom.example.com] --->配置邮件路由主机
$ systemctl restart postfix.service
### 测试
$ echo "$HOSTNAME" |mail -s "nullclient" hal@classroom.example.com
$ mailq
Mail queue is empty --->没有,表示成功了
#//desktop
$ scp /etc/postfix/main.cf root@desktop0:/etc/postfix/
--->yes,然后输入root密码
### 测试
$ echo "$HOSTNAME" |mail -s "nullclient" hal@classroom.example.com
$ mailq
8、通过 SMB 共享目录
在 server0 上配置 SMB 服务
您的 SMB 服务器必须是 STAFF 工作组的一个成员
共享 /groupdir 目录共享名必须为 common
只有 example.com 域内的客户端可以访问 common 共享
common 必须是可以浏览的
用户 barney 必须能够读取共享中的内容,如果需要的,验证的密码是 flectrag
#//server
$ yum -y install samba samba-client
$ systemctl enable smb nmb --->开机启动
$ mkdir /groupdir
$ setfacl -m u:barney:rx /groupdir --->注意这里是 rx ,如果写成 rw 执行 ls 会提示没有权限
$ chcon -t samba_share_t /groupdir --->此行及下一行,可在/etc/samba/smb.conf文件中找到 SELINUX 的位置查看
$ setsebool -P samba_export_all_ro 1
$ cp -a /etc/samba/smb.conf{,.bak} --->备份很重要,要加 -a 把权限位也复制上
$ vim /etc/samba/smb.conf
89 workgroup = STAFF
95 hosts allow = 127. 172.25.0. --->允许访问的域 ,172.25.0. 是 example.com 域内所有客户端
321 [common] --->共享名
322 path = /groupdir --->共享的目录
323 browseable = yes --->可浏览
$ systemctl start smb nmb --->启动
$ smbpasswd -a barney
New SMB password: [flectrag]
Retype new SMB password: [flectrag]
$ pdbedit -L
barney : 1001 :
###测试
$ smbclient //server0.example.com/common -U barney
Enter barney's password: [flectrag]
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
...
40913 blocks of size 262144. 28449 blocks available
smb: \> exit
9、配置多用户 SMB 挂载
在 server0 共享通过 SMB 目录 /data 满足以下要求:
共享名为 data
共享目录 data 只能被 example.com 域中的客户端使用
共享目录 data 必须可以被浏览
用户 manager 必须能以读的方式访问此共享,访问密码是 flectrag
用户 wolferyne 必须能以读写的方式访问此共享,访问密码是 flectrag
此共享永久挂载在 desktop0.example.com 上的 /mnt/multi 目录,并使用用户 manager 作为认证,任何用户可以通过用户 wolferyne 来临时获取写的权限。
#//server
$ mkdir /data
$ setfacl -m u:manager:rx /data
$ setfacl -m u:wolferyne:rwx /data --->注意这里是 rwx ,一定要加 x 执行权限
$ chcon -t samba_share_t /data --->此行及下一行,可在/etc/samba/smb.conf文件中找到 SELINUX 的位置查看
$ setsebool -P samba_export_all_rw 1
$ cp -a /etc/samba/smb.conf{,.bak2}
$ vim /etc/samba/smb.conf
324 [data]
325 path = /data
326 public = yes
327 writable = yes
328 write list = wolferyne
$ smbpasswd -a manager --->设置smb用户密码
New SMB password: [flectrag]
Retype new SMB password: [flectrag]
$ smbpasswd -a wolferyne --->设置smb用户密码
New SMB password: [flectrag]
Retype new SMB password: [flectrag]
$ systemctl restart smb nmb
//添加防火墙策略
$ firewall-cmd --permanent --add-service=samba
$ firewall-cmd --reload
客户端配置
#//desktop
$ yum -y install samba-client cifs-utils
$ mkdir /mnt/multi
--->查看mount的帮助 执行 man -k mount ,找到 mount.cifs 查看具体
$ vim /root/mysmb --->新建smb的 credentials 认证文件
username=manager
password=flectrag
$ vim /etc/fstab --->设置开机自动挂载
//server0.example.com/data /mnt/multi cifs defaults,credentials=/root/mysmb,multiuser 0 0
$ mount -a --->将/etc/fstab的所有内容重新加载
//一定要去先去server0上添加samba防火墙策略,不然提示 Unable to find suitable address.
//或者提示:Connection to server0.example.com failed(Error NT_STATUS_HOST_UNREACHABLE)
###测试
$ su - wolferyne
$ cifscreds add server0
Password: [flectrag]
$ cd /mnt/multi/
$ touch a
$ exit
10、配置 NFS 服务
在 server0 配置 NFS 服务,要求如下:
以只读的方式共享目录 /public 能被 example.com 域中的系统访问
以读写的方式共享目录 /protected 能被 example.com 域中的系统访问
访问 /protected 需要通过 Kerberos 安全加密,您可以使用下面 URL 提供的密钥:
http://classroom.example.com/pub/keytabs/server0.keytab
目录 /protected 应该包含名为 restricted 拥有人为 ldapuser0 的子目录
用户 ldapuser0 能以读写方式访问 /protected/restricted
#//server
$ wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab
--->下载到/etc/krb5.keytab 对应/etc/exports 配置中的sec=krb5p
---> kerberos 需要时间同步 $ system-config-date -—->$ chronyc sources -v
---> 不然mount -a会提示被拒绝访问。
$ mkdir /public
$ chown nfsnobody /public
$ vim /etc/exports
/public *.example.com(ro) --->以只读的方式共享目录 /public 能被 example.com 域中的系统访问
$ mkdir -p /protected/restricted
$ chown nfsnobody /protected
$ chown ldapuser0 /protected/restricted --->目录 /protected/restricted 拥有人为 ldapuser0
$ vim /etc/exports
/protected *.example.com(rw,sync,sec=krb5p) --->以读写的方式共享目录 /protected 能被 example.com 域中的系统访问
/public *.example.com(ro)
$ exportfs -avr --->启动共享
$ systemctl enable nfs-server nfs-secure-server
$ systemctl start nfs-server nfs-secure-server
--->如果 rpcbind 这个服务不启动,nfs服务会启动失败, nfs-secure-server 依赖 /etc/krb5.keytab
$ showmount -e --->查看共享
#添加防火墙
$ firewall-cmd --permanent --add-service=nfs
$ firewall-cmd --permanent --add-service=mountd --->通过mountd服务(如果不开启,不能远程showmount)
$ firewall-cmd --permanent --add-service=rpc-bind --->通过rpc服务(如果不开启,rpcinfo就不能扫描)
$ firewall-cmd --reload
11、挂载一个 NFS 共享
在 desktop0 上挂载一个来自 server0.example.com 的 NFS 共享,并符合以下要求:
/public 挂载在下面的目录上 /mnt/nfsmount
/protected 挂载在下面的目录上 /mnt/nfssecure 并使用安全的方式,密钥下载 URL 如下:
http://classroom.example.com/pub/keytabs/desktop0.keytab
用户 ldapuser0 能够在 /mnt/nfssecure/restricted 上创建文件
这些文件系统在系统启动时自动挂载。
#//desktop
$ wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab
--->下载到/etc/krb5.keytab 对应 /etc/fstab 配置中的sec=krb5p, nfs-secure 依赖 /etc/krb5.keytab
$ systemctl enable nfs-secure
$ systemctl start nfs-secure
$ mkdir /mnt/nfsmount
$ mkdir /mnt/nfssecure
$ vim /etc/fstab
server0.example.com:/public /mnt/nfsmount nfs defaults 0 0
server0.example.com:/protected /mnt/nfssecure nfs defaults,sec=krb5p 0 0
$ mount -a --->将/etc/fstab的所有内容重新加载
$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
server0.example.com:/public nfs4 11G 3.4G 7.5G 31% /mnt/nfsmount
server0.example.com:/protected nfs4 11G 3.4G 7.5G 31% /mnt/nfssecure
$ su - ldapuser0
-bash-4.2$ kinit ldapuser0
Password for ldapuser0@EXAMPLE.COM: [kerberos]
-bash-4.2$ klist
...
-bash-4.2$ cd /mnt/nfssecure/restricted
-bash-4.2$ touch a
12、实现一个 Web 服务器
在 server0 上配置一个站点 http://server0.example.com 然后执行下述步骤:
从 http://classroom.example.com/materials/station.html 下载文件,并且将文件重命名为 index.html 不要修改此文件的内容
将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下
来自于 example.com 域的客户端可以访问此 web 服务
来自于 my133t.org 域的客户端拒绝访问此 web 服务
#//server
$ yum -y install httpd
$ systemctl enable httpd
$ systemctl start httpd
$ wget -O /var/www/html/index.html http://classroom.example.com/materials/station.html
$ rpm -qd httpd --->查找帮助
$ vim /etc/httpd/conf.d/site1.conf
<VirtualHost _default_:80>
ServerName server0.example.com --->设置站点名称
<Directory "/var/www/html"> --->/var/www/html 是默认的DocumentRoot目录
<RequireAll>
Require all granted
Require not ip 172.15.10.0/24
</RequireAll>
</Directory>
</VirtualHost>
$ systemctl restart httpd
添加firewalld策略
$ firewall-cmd --permanent --add-service=http
$ firewall-cmd --reload
###到desktop测试
测试方式一
$ firefox http://server0.example.com&
测试方式二
$ yum -y install links
$ links http://server0.example.com
13、配置安全的 web 服务
为站点 http://server0.example.com 配置 TLS 加密
从 http://classroom.example.com/pub/tls/certs/server0.crt 获取已签名的证书
从 http://classroom.example.com/pub/tls/private/server0.key 获取此证书的密钥
从 http://classroom.example.com/pub/example-ca.crt 获取此证书的签名授权信息
#//server
$ yum -y install mod_ssl --->安装完成会产生 /etc/httpd/conf.d/ssl.conf
$ wget -P /etc/pki/tls/certs/ http://classroom.example.com/pub/tls/certs/server0.crt
$ wget -P /etc/pki/tls/private/ http://classroom.example.com/pub/tls/private/server0.key
$ wget -P /etc/pki/tls/certs/ http://classroom.example.com/pub/example-ca.crt
$ vim /etc/httpd/conf.d/ssl.conf ---> :%s/localhost/server0/g ---用server0替换localhost
100 SSLCertificateFile /etc/pki/tls/certs/server0.crt
107 SSLCertificateKeyFile /etc/pki/tls/private/server0.key
$ systemctl restart httpd
如果使用 firewalld ,添加策略
$ firewall-cmd --permanent --add-service=https
$ firewall-cmd --reload
#//desktop
测试
$ firefox https://server0.example.com &
---> 点击 验证按钮 确认
14、配置虚拟主机
在 server0 上扩展您的 web 服务器,为站点 http://www0.example.com 创建一个虚拟主机,然后执行以下步骤:
设置 DocumentRoot 为 /var/www/virtual
从 http://classroom.example.com/materials/www.html 下载文件并重命名为 index.html 不要对文件 index.html 的内容做任何修改
将文件 index.html 放到虚拟主机的 DocumentRoot 目录下
确保 barney 用户能够在 /var/www/virtual 目录下创建文件
注意:原始站点 http://server0.example.com 必须仍然能够访问,名称服务器 example.com 提供对主机名 www0.example.com 的域名解析。
#//server
$ mkdir /var/www/virtual
$ setfacl -m u:barney:rwx /var/www/virtual --->确保 barney 用户能够在 /var/www/virtual 目录下创建文件
$ wget -O /var/www/virtual/index.html http://classroom.example.com/materials/www.html
$ rpm -qd httpd --->查找帮助
$ vim /etc/httpd/conf.d/vhost-www0.conf
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/virtual
</VirtualHost>
$ systemctl restart httpd
#//desktop
测试
$ firefox http://www0.example.com &
15、配置 web 内容的访问
在您的 server0 上的 web 服务器的 DocumentRoot 目录下创建一个名为 confidential 的目录,要求如下:
从 http://classroom.example.com/materials/private.html 下载一个文件副本到这个目录,并且重命名为 index.html
不要对这个文件的内容做任何修改
从 server0 上,任何人都可以浏览 confidential 的内容,但是从其他系统不能访问这个目录的内容
#//server
$ mkdir /var/www/html/confidential
$ cd /var/www/html/confidential
$ wget -O index.html http://classroom.example.com/materials/private.html
编辑配置文件 /etc/httpd/conf.d/site1.conf 添加如下几行
<Directory “/var/www/html/confidential”>
Require local
</Directory>
$ vim /etc/httpd/conf.d/site1.conf
<VirtualHost _default_:80>
ServerName server0.example.com --->设置站点名称
<Directory "/var/www/html"> --->/var/www/html 是默认的DocumentRoot目录
<RequireAll>
Require all granted
Require not ip 172.15.10.0/24
</RequireAll>
</Directory>
<Directory “/var/www/html/confidential”>
Require local
</Directory>
</VirtualHost>
$ systemctl restart httpd.service
#//desktop
测试
$ firefox http://server0.example.com/confidential &
16、实现动态 web 内容
在 server0 上配置提供动态 web 内容,要求如下:
动态内容由名为 transitive.example.com 的虚拟机提供
虚拟机侦听在端口 8989
从 http://classroom.example.com/materials/script.wsgi 下载一个脚本,然后放在适当的位置,无论如何不要修改此文件的内容
客户端访问 http://transitive.example.com:8989/ 时应该接收到动态生成的 web 页面
此 http://transitive.example.com:8989/ 必须能被 example.com 域内的所有系统访问
#//server
$ yum -y install mod_wsgi
$ rpm -qd mod_wsgi --->查询帮助
/usr/share/doc/mod_wsgi-3.4/LICENCE
/usr/share/doc/mod_wsgi-3.4/README
编辑配置文件 /etc/httpd/conf.d/site2.conf
$ vim /etc/httpd/conf.d/site2.conf
Listen 8989
<VirtualHost *:8989>
ServerName transitive.example.com:8989
WSGIScriptAlias / /var/www/cgi-bin/script.wsgi
</VirtualHost>
$ wget -P /var/www/cgi-bin/ http://classroom.example.com/materials/script.wsgi
$ semanage port -l |grep 80
...
http_port_t tcp 80,81,443,488,8008,8009,8443,9000
...
$ semanage port -a -t http_port_t -p tcp 8989
$ systemctl restart httpd.service
### 添加防火墙策略
$ firewall-cmd --permanent --add-port=8989/tcp
$ firewall-cmd --reload
### 检查
$ firefox http://transitive.example.com:8989/ &
17、创建一个脚本
在 server0 上创建一个名为 /root/script.sh 的脚本,让其提供下列特性:
当运行 /root/script.sh all 输出为 none
当运行 /root/script.sh none 输出为 all
当没有任何参数或参数不是 all 或者 none 时,其错误输出产生以下的信息:
/root/script.sh all|none
#//server
$ touch /root/script.sh
$ chmod u+x /root/script.sh
$ vim /root/script.sh
#!/bin/bash
#/root/script.sh
case "$1" in
all)
echo "none"
;;
none)
echo "all"
;;
*)
echo "/root/script.sh all|none"
;;
esac
### 验证
$ /root/script.sh all
none
$ /root/script.sh none
all
18、创建一个添加用户的脚本
在 server0 上创建一个脚本,名为 /root/makeusers ,此脚本能实现为系统 server0 创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件。
同时满足下列要求:
此脚本要求提供一个参数,此参数就是包含用户列表的文件
如果没有提供参数,此脚本应该给出下面的提示信息 Usage:/root/makeusers <userfile> 然后退出并返回相应的值
如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Iuput file not found 然后退出并返回相应的值
创建的用户登录 shell 为 /bin/false
此脚本不需要为用户设置密码
您可以从下面的 URL 获取用户列表作为测试用 http://classroom.example.com/materials/ulist
#//server
$ touch /root/makeusers
$ chmod u+x /root/makeusers
方法一:
$ vim /root/makeusers
#!/bin/bash
#/root/makeusers
if [ $# -ne 1 ];then
echo 'Usage:/root/makeusers <userfile>'
exit 1
elif [ ! -f "$1" ];then
echo 'Iuput file not found'
exit 2
else
for USER in $(cat "$1");do
useradd -s /bin/false $USER
done
fi
### 验证
$ wget http://classroom.example.com/materials/ulist
$ ./makeusers
$ ./makeusers ulist
$ tail -n 10 /etc/passwd |grep /bin/false
方法二:
$ vim /root/makeusers
#!/bin/bash
#/root/makeusers
if [ $# -eq 1 ];then
if [ -f "$1" ];then
while read username;do
useradd -s /bin/false $username &>/dev/null
done<$1
else
echo 'Iuput file not found'
fi
else
echo 'Usage:/root/makeusers <userfile>'
fi
19、配置 iscsi 服务端
配置 server0 提供一个 iscsi 服务磁盘名为 iqn.2014-11.com.example:server0 ,并符合下列要求:
服务端口为 3260
使用 iscsi_data 作为其后端卷,其大小为 3G
此服务只能被 desktop0.example.com 访问
#//server
$ yum -y install targetcli
### 创建分区、初始化为物理卷、逻辑卷组、逻辑卷
$ fdisk /dev/vdb --->使用 vdb ,考试的时候使用的是 vda ,一定要注意
Command (m fro help) : n
Partition type :
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p) : p
Partition number (1-4,default 1) : [Enter]
First sector (2048-20971519,default 2048): [Enter]
Last sector, +serctos or +seize{K,M,G} (2048-20971519,default 20971519) : +3100M
Command (m fro help) : p
...
Device Boot Start End Blocks Id System
/dev/vdb1 2048 6555647 3276800 83 Linux
...
Command (m fro help) : t ---> 更改文件系统类型
Selected partition 1
Hex code (Type L to list all codes): 8e ---> (83)Linux 更改为 (8e)Linux LVM
Command (m fro help) : p
...
Device Boot Start End Blocks Id System
/dev/vdb1 2048 6555647 3276800 8e Linux LVM
...
Command (m fro help) : w
$ partprobe /dev/vdb ---> 不重启的情况下重读分区
$ pvcreate /dev/vdb1 ---> 将物理硬盘分区初始化为物理卷
$ vgcreate myvg /dev/vdb1 ---> 创建卷组
$ vgdisplay ---> 查看 Free PE 数
...
Free PE / Size 774 / 3.02 GiB
...
$ lvcreate -n mylv -l 774 myvg ---> 创建逻辑卷 mylv 使用myvg的全部大小
$ lsblk
...
vdb
|--vdb1
|--myvg-mylv 252:0 0 3.1G 0 lvm
#//server
$ targetcli
/> ls
o- /............................................[...]
o- backstores .....................................[...]
| o- block .......................[Storage Objects:0]
| o- fileio .......................[Storage Objects:0]
| o- pacsi .......................[Storage Objects:0]
o- iscsi ....................................[Targets:0]
o- loopback .................................[Targets:0]
/> /backstores/block create iscsi_data /dev/myvg/mylv
--->创建一个名为iscsi_data的后端存储,在/dev/myvg/mylv 设备上。
Create block storage object iscsi_data using /dev/myvg/mylv
/> iscsi/
/iscsi> create wwn=iqn.2014-11.com.example:server0
--->创建一个target
//注意:IQN 的格式为:iqn.年份-月份.反向域名:自定义标识,如:iqn.2014-11.com.example:server0;
//其中的字母均应为小写,即使输入时包含大写,命令执行后,系统会自动转换成小写。
Create targe iqn.2014-11.com.example:server0.
Create TPG 1.
/iscsi> cd iqn.2014-11.com.example:server0/tpg1/
/iscsi/iqn.20...::server0/tpg1> luns/ create storage_object=/backstores/block/iscsi_data
--->创建一个lun逻辑单元
Create LUN 0.
###---------------
到desktop上拿到
$ cat /etc/iscsi/initiatorname.iscsi
InitiatiorName=iqn.1994-05.com.redhat:d15b2c548ac
###----------------
/iscsi/iqn.20...::server0/tpg1> acls/ create ign.1994-05.com.redhat:d15b2c548ac
--->配置acl访问控制(设置访问服务时客户端声明的名字)
Create Node ACL for ign.1994-05.com.redhat:d15b2c548ac
Create maped LUN 0.
/iscsi/iqn.20...::server0/tpg1> portals/ create 172.25.0.11 3260
--->配置客户端IP地址及端口
//注:若要添加新的 IP 和端口,必须先删除系统默认的 0.0.0.0:3260 这个设置
Using default IP port 3260
Create network portal 172.25.0.11:3260.
/iscsi/iqn.20...::server0/tpg1> cd /
/> ls
o- / ..................................................................... [...]
o- backstores .......................................................... [...]
| o- block .............................................. [Storage Objects: 1]
| | o- iscai_data ............. [/dev/myvg/mylv (3.1GiB) write-thru activated]
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 1]
| o- iqn.2014-11.com.example:server0 ............................... [TPGs: 1]
| o- tpg1 ........................................... [no-gen-acls, no-auth]
| o- acls ...................................................... [ACLs: 1]
| | o- iqn.1994-05.com.redhat:d15b2c548ac ............... [Mapped LUNs: 1]
| | o- mapped_lun0 ........................ [lun0 block/iscai_data (rw)]
| o- luns ...................................................... [LUNs: 1]
| | o- lun0 .......................... [block/iscai_data (/dev/myvg/mylv)]
| o- portals ................................................ [Portals: 1]
| o- 172.25.0.11:3260 ............................................. [OK]
o- loopback ..................................................... [Targets: 0]
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
### 设置开启启动
$ systemctl enable target.service
启动target服务
$ systemctl start target.service
添加防火墙策略
$ firewall-cmd --permanent --add-port=3260/tcp
$ firewall-cmd --reload
20、配置 iscsi 客户端
配置 desktop0 使其能链接在 server0 上的提供 iqn.2014-11.com.example:server0 并符合以下要求:
iscsi 设备在系统启动的期间自动加载
块设备 iscsi 上包含一个大小为 1900M 的分区,并格式化为 xfs
此分区挂载在 /mnt/data 上同时在系统启动的期间自动挂载
#//desktop
$ systemctl enable iscsi
--->先设置iscsi开机启动,然后到server端搜索帮助 $ man iscsiadm --->搜索 /examples
--->复制尾行为 --discover 和 --login 的修改 portal 为server的ip ,targetname 为 iqn 的值
$ iscsiadm --mode discoverydb --type sendtargets --portal 172.25.0.11 --discover
...172.25.0.11:3260,1 iqn.2014-11.com.example:server0
$ iscsiadm --mode node --targetname iqn.2014-11.com.example:server0 --portal 172.25.0.11:3260 --login
## 在块设备iscsi上创建一个大小为1900M的分区,并格式化为xfs
$ fdisk /dev/sda
Command (m fro help) : n
Partition type :
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p) : p
Partition number (1-4,default 1) : [Enter]
First sector (8192-6291455,default 8192): [Enter]
Last sector, +serctos or +seize{K,M,G} (8192-6291455,default 6291455) : +1900M
Command (m fro help) : w
$ mkfs.xfs /dev/sda1 --->一定要进行文件系统格式化
$ mkdir /mnt/data --->创建挂载目录
$ blkid /dev/sda1 >> /etc/fstab --->把uuid写到/etc/fstab里,并修改
$ vim /etc/fstab --->设置自动挂载
#/dev/sda1
UUID="84f35497-e55c-4flt-b937-b0f7e115edee" /mnt/data xfs defaults,_netdev 0 0
$ mount -a ---> 加载挂载配置
$ df -Th |grep data
21、配置一个数据库
在 server0 上创建一个 MariaDB 数据库,名为 Contacts ,并符合以下条件:
数据库应该包含来自数据库复制的内容,复制文件的 URL 为 http://classroom.example.com/materials/users.mdb
数据库只能被 localhost 访问
除了 root 用户,此数据库只能被用户 Luigi 查询。此用户密码为 flectrag
root 用户的密码为 flectrag ,同时不允许空密码登录
#//server
$ yum -y groups install mariadb mariadb-client
$ systemctl enable mariadb.service
$ systemctl start mariadb.service
$ mysql_secure_installation --->一定要使用安全模式安装,并设置root用户的密码
Enter current password for root (enter for none) : [Enter]
Set root password ? [Y/n] : Y
New password : [flectrag]
Re-enter new password: [flectrag]
Remove anonymous users? [Y/n] : Y
Disallow root login remotely? [Y/n] : Y
Remove rest database and access to it ? [Y/n] : Y
Reload privilege tables now ? [Y/n] : Y
$ systemctl restart mariadb.service
$ wget -P /root/ http://classroom.example.com/materials/users.mdb
$ mysql -p
Enter password: [flectrag]
MariaDB [(none)]> create database Contacts ;
MariaDB [(none)]> use Contacts ;
database chanaged.
MariaDB [(Contacts)]> source /root/users.mdb --->也可以使用 $ mysql -p Contacts < users.mdb ---># 然后输入密码就可以了
...
MariaDB [(Contacts)]> CREATE USER Luigi@'localhost' IDENTIFIED BY 'flectrag';
MariaDB [(Contacts)]> GRANT SELECT ON Contacts.* to Luigi@'localhost' ;
MariaDB [(Contacts)]> FLUSH PRIVILEGES ;
MariaDB [(Contacts)]>
### 添加防火墙策略
$ firewall-cmd --permanent --add-service=mysql
$ firewall-cmd --reload
22、数据库查询
在系统 server0 上使用数据库 Contacts ,并使用相应的 SQL 查询以回答下列问题:
点击链接,提交答案: http://classroom.example.com/cgi-bin/mariadb
密码是 forsook 的人的名字: ?
SELECT a.first_name,a.last_name FROM User_Names a
JOIN User_Logins b
ON a.user_id = b.id
where b.User_Pass = ' forsook';
有多少人的姓名是 Alan 同时居住在 Cupertino ?
select count(*) FROM User_Contacts
JOIN User_Names b
ON a.id = b.user_id
where b.first_name = 'Alan' and a.Location = 'Cupertino';
关机并重启
$ rht-vmctl poweroff server
$ rht-vmctl start server
$ rht-vmctl view server
$ rht-vmctl poweroff desktop
$ rht-vmctl start desktop
$ rht-vmctl view desktop
检查server端服务和防火墙
$ ssh root@server0 -X
# 检查服务状态
$ systemctl is-active httpd smb nmb nfs-server nfs-secure-server target mariadb postfix
# 检查防火墙
$ firewall-cmd --list-all
检查desktop端挂载和服务防火墙
$ ssh root@desktop0 -X
# 显示挂载
$ df -Th
# 检查服务状态
$ systemctl is-active nfs-secure postfix iscsi
# 检查防火墙
$ firewall-cmd --list-all
附件:
初始化环境脚本:
#!/bin/bash
#rhce-setup.sh
#配置EX300环境脚本
echo '请同时在foundation0上使用ssh root@classroom登录classroom并下载smtp-nullclient-classroom.sh并执行,一分钟后该脚本继续执行...'
sleep 60
VMNAME=$(hostname -s)
case $VMNAME in
server0)
echo "配置$VMNAME的网络信息..."
hostnamectl set-hostname server0.example.com
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOF
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
IPV6INIT=no
PERSISTENT_DHCLIENT=1
IPADDR0=172.25.0.11
PREFIX0=24
GATEWAY0=172.25.0.254
DNS1=172.25.254.254
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME="System eth0"
EOF
echo "设置SELINUX的值Permissive..."
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
echo "配置$VMNAME的ldap和kerberos..."
lab nfskrb5 setup
echo "添加主机解析..."
echo '172.25.0.11 transitive.example.com' >> /etc/hosts
echo "删除YUM软件仓库..."
rm -f /etc/yum.d/*.repo
echo "添加一个普通用户jacques..."
useradd -p '$6$AbYxIBj0$hj9GzOvTm83fJW7W2ki3tdyPI4jwyT2tRPF8DKZ8mBDMrgKafW5XPX9Yt/49bvzQxw0WMWDBDPjGmjxpZsgrA.' manager
useradd -p '$6$AbYxIBj0$hj9GzOvTm83fJW7W2ki3tdyPI4jwyT2tRPF8DKZ8mBDMrgKafW5XPX9Yt/49bvzQxw0WMWDBDPjGmjxpZsgrA.' wolferyne
echo "同步时间..."
ntpdate 172.25.254.254
echo "取消图形界面模式..."
systemctl set-default multi-user.target &>/dev/null &&history -c
echo "系统已设置完毕并关机..."
systemctl poweroff
;;
desktop0)
echo "配置$VMNAME的网络信息..."
hostnamectl set-hostname desktop0.example.com
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOF
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
IPV6INIT=no
PERSISTENT_DHCLIENT=1
IPADDR0=172.25.0.10
PREFIX0=24
GATEWAY0=172.25.0.254
DNS1=172.25.254.254
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME="System eth0"
EOF
echo "设置SELINUX的值Permissive..."
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
echo "配置$VMNAME的ldap和kerberos..."
lab nfskrb5 setup
echo "添加主机解析..."
echo '172.25.0.11 transitive.example.com' >> /etc/hosts
echo "删除YUM软件仓库..."
rm -f /etc/yum.d/*.repo
echo "添加一个普通用户manager、wolferyne..."
useradd -p '$6$AbYxIBj0$hj9GzOvTm83fJW7W2ki3tdyPI4jwyT2tRPF8DKZ8mBDMrgKafW5XPX9Yt/49bvzQxw0WMWDBDPjGmjxpZsgrA.' manager
useradd -p '$6$AbYxIBj0$hj9GzOvTm83fJW7W2ki3tdyPI4jwyT2tRPF8DKZ8mBDMrgKafW5XPX9Yt/49bvzQxw0WMWDBDPjGmjxpZsgrA.' wolferyne
echo "同步时间..."
ntpdate 172.25.254.254
echo "取消图形界面模式..."
systemctl set-default multi-user.target &>/dev/null &&history -c
echo "系统已设置完毕并关机"
systemctl poweroff
;;
*)
echo "请在您的虚拟机server0和desktop0上运行该脚本"
;;
esac
来源:oschina
链接:https://my.oschina.net/90888/blog/3164599