阶段一项目实战
场景
初创公司是一家新成立的创业公司,公司根据业务需求准备部署一个小型网络,包含四台服务器和若干客户机。工程师规划的网络拓扑如图 1 所示。考虑到后期需要在全国多个城市开分公司,公司希望通过 Shell 的方式,可以在不同的分支机构进行快速复制现有网络。
在管理员PC上编写shell脚本,实现一键部署,实现以下项目需求:
- 分别部署防火墙、DHCP 服务器、DNS 服务器和 FTP 服务器。
- 防火墙使用 Firewalld 服务,并允许来自内网客户端(192.168.0.0/24)
同时防火墙作为公司的边界设备,要允许内网客户端(192.168.0.0/24)对互联网的访问。
管理员也可以通过互联网 SSH 连接到内网管理员 PC(192.168.0.10) - Firewalld 上配置 DHCP 中继服务,使内网客户端(192.168.0.0/24)可以动态获取由 DHCP
服务器分配的 IP 地址。 - 内外客户端(192.168.0.0/24)可以通过DNS Server解析bdqn.com中的域名。
- 内网客户端(192.168.0.0/24)可以通过被动模式以匿名身份访问FTP Server,并具备上传,下载,修改目录以及删除权限
准备环境
- 管理员PC配置IP地址
- 防火墙配置三张网卡,分别配置IP
- 三台服务器分别配置IP
- 外网配置IP
- 因为防火墙使用Linux代替,需要提前开启路由转发
配置SSH免交互式访问
- 在管理员PC上生成密钥对
- 将密钥发送到服务器和防火墙上实现免密登录
编写脚本
1)编写yum源配置脚本yum.sh,并完成调试(此环境使用的是本地yum源)
#!/bin/sh
ServerIP="$FW_IP $DHCP_Server_IP $DNS_Server_IP $FTP_Server_IP"
for i in $FW_IP $DHCP_Server_IP $DNS_Server_IP $FTP_Server_IP
do
cmd="ssh $i"
$cmd 'df | grep /dev/sr0' > /dev/null
if [ $? == 0 ]
then
$cmd 'umount /dev/sr0' &> /dev/null
$cmd 'umount /mnt' &> /dev/null
fi
$cmd 'mount /dev/cdrom /mnt' &> /dev/null
$cmd 'rm -rf /etc/yum.repos.d/*'
$cmd 'echo "[yum]" > /etc/yum.repos.d/yum.repo'
$cmd 'echo "name=yum" >> /etc/yum.repos.d/yum.repo'
$cmd 'echo "baseurl=file:///mnt" >> /etc/yum.repos.d/yum.repo'
$cmd 'echo "gpgcheck=0" >> /etc/yum.repos.d/yum.repo'
$cmd 'echo "enabled=1" >> /etc/yum.repos.d/yum.repo'
$cmd 'yum clean all' &> /dev/null
$cmd 'yum makecache' &> /dev/null
if [ $? == 0 ]
then
echo "yum is ok($i)"
else
echo "yum is aa($i)"
fi
done
2) 编写Firewalld配置脚本firewall.sh,并完成调试
#!/bin/sh
FW_cmd="ssh $FW_IP"
route="$FW_cmd cat /proc/sys/net/ipv4/ip_forward"
if [ "$route" == 1 ]
then
$FW_cmd "firewall-cmd --permanent --add-masquerade &> /dev/null"
echo "firewall rou