1.需要两台centos 7服务器,一台部署DNS服务器,另一台部署ftp和Samba服务器。
2. 部署DNS 服务器
#!/bin/bash
# 更新系统
echo "更新系统..."
sudo yum update -y
# 安装 BIND 和相关工具
echo "安装 BIND 和相关工具..."
sudo yum install -y bind bind-utils
# 配置 named.conf 文件
echo "配置 BIND 配置文件..."
cat > /etc/named.conf <<EOL
options {
listen-on port 53 { any; }; # 监听所有接口
listen-on-v6 port 53 { none; }; # 不启用 IPv6
directory "/var/named"; # 区域文件路径
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; # 允许所有查询
};
zone "zhangabc.com" IN {
type master;
file "/var/named/zhangabc.com.zone"; # 区域文件路径
allow-update { none; }; # 禁止动态更新
};
EOL
# 创建区域文件
echo "创建区域文件..."
cat > /var/named/zhangabc.com.zone <<EOL
\$TTL 86400
@ IN SOA ns1.zhangabc.com. admin.zhangabc.com. (
2024032501 ; 序列号
3600 ; 刷新时间
1800 ; 重试时间
604800 ; 过期时间
86400 ; 最小TTL
)
@ IN NS ns1.zhangabc.com.
ns1 IN A 192.168.86.129
@ IN A 192.168.86.130
www IN A 192.168.86.130
EOL
# 修改权限
echo "修改文件权限..."
sudo chown named:named /var/named/zhangabc.com.zone
sudo chmod 640 /var/named/zhangabc.com.zone
# 检查配置文件是否正确
echo "检查配置文件..."
sudo named-checkconf
sudo named-checkzone zhangabc.com /var/named/zhangabc.com.zone
# 启动并启用 BIND 服务
echo "启动并启用 BIND 服务..."
sudo systemctl enable named
sudo systemctl start named
# 开放防火墙 53 端口
echo "配置防火墙..."
sudo firewall-cmd --add-port=53/tcp --permanent
sudo firewall-cmd --add-port=53/udp --permanent
sudo firewall-cmd --reload
# 重启防火墙和 BIND 服务
echo "重启防火墙和 BIND 服务..."
sudo systemctl restart named
sudo systemctl restart firewalld
# 验证 DNS 配置
echo "验证 DNS 配置..."
nslookup zhangabc.com 127.0.0.1
3. 在此基础上添加以下
vim /var/named/zhangabc.com.zone
$TTL 86400
@ IN SOA ns.zhangabc.com. admin.zhangabc.com. (
2025032501 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns.laodi.com.
zhangabc.com. IN A 192.168.86.129
ns IN A 192.168.86.129
ftp IN A 192.168.86.145
samba IN A 192.168.86.145
[root@dns ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.86.129
nameserver 192.168.86.2
4.在 Windows 10 远程测试:
在另一台centos 7部署ftp服务
yum install vsftpd -y
6. 创建 vsftpd使用的系统用户, 主目录为/home/vsftpd,禁止ssh登录, 创建之后所有虚拟用户使用这个系统用户访问文件
useradd vsftpd -d /vsftpd -s /bin/false
7.创建虚拟用户主目录,比如虚拟用户叫zhang1
mkdir -p /vsftpd/zhang1/
mkdir -p /vsftpd/zhang2/
chown -R vsftpd.vsftpd /vsftpd/*
8.创建虚拟用户
vim /etc/vsftpd/loginusers.conf
zhang1
123456
zhang2
456789
9.创建数据库文件
db_load -T -t hash -f /etc/vsftpd/loginusers.conf /etc/vsftpd/loginusers.db
chmod 600 /etc/vsftpd/loginusers.db
chmod 600 /etc/vsftpd/loginusers.conf
10. 启用数据库文件
vim /etc/pam.d/vsftpd # 注释掉所有内容后,增加下面的内容
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
11.创建虚拟用户配置文件
mkdir -p /etc/vsftpd/userconf
12. 这里的文件名称必须与虚拟用户名一致
# vim /etc/vsftpd/userconf/zhang1
local_root=/vsftpd/zhang1
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
# vim /etc/vsftpd/userconf/zhang2
local_root=/vsftpd/zhang2
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#网络与端口
listen=NO
listen_ipv6=YES
pasv_min_port=40000
pasv_max_port=40010
listen_port=21
#超时与并发
idle_session_timeout=300
data_connection_timeout=600
max_clients=3000
max_per_ip=3000
#虚拟用户
guest_enable=YES
guest_username=vsftpduser
user_config_dir=/etc/vsftpd/vconf
virtual_use_local_privs=YES
#日志与传输
xferlog_enable=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
#其他配置
use_localtime=YES
ftpd_banner=Welcome to blah FTP service.
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
dirmessage_enable=YES
connect_from_port_20=YES
async_abor_enable=YES
13.重启服务使配置生效
systemctl restart vsftpd
部署Samba服务
yum install samba -y
mkdir -p /samba
chmod -R 777 /samba
useradd -M samba #创建系统用户不创建属主目录
smbpasswd -a samba #为其设置samba密码
4.
vim /etc/samba/smb.conf
[samba]
comment = IMMENGXIN ##共享的描述性注释
path = /samba ##共享目录的实际路径
public = yes ##表明允许未授权的用户访问该共享
browseable = yes ##表示这个共享在网络中是可见的
read only = no ##意味着客户端对该共享目录具备读写权限
systemctl start smb nmb
systemctl enable smb nmb
systemctl restart smb nmb
验证
smbclient //192.168.86.145 /samba -U samba