共计 8090 个字符,预计需要花费 21 分钟才能阅读完成。
Linux 服务篇
3.1 Linux 服务部署
3.1. 1 构建 NTP 时间服务器
NTP 服务器是用于局域网服务器时刻同步运用的,能够确保局域网所有的服务器与时刻服务器的时刻保持一致,某些使用对时刻实时性要求高的有必要一致时刻。
互联网的时间服务器也有很多,例如 ntpdate ntp.fudan.edu.cn 复旦大学的 NTP 免费提供互联网时间同步。
NTP 服务器监听端口为 UDP 的 123,那就需要在本地防火墙开启运行客户端访问 123 端口,vi /etc/sysconfig/iptables 添加如下规则:
-A INPUT -m state –state NEW -m udp -p udp –dport 123 -j ACCEPT
NTP 时间服务器配置:
yum install ntp ntpdate -y 即可!
修改 ntp.conf 配置文件
cp /etp/ntp.conf /etc/ntp.conf.bak
vi /etc/ntp.conf 只修改如下两行,把 #号去掉即可!
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
以守护进程启动 ntpd
/etc/init.d/ntpd start 即可
(注意 *:ntpd 启动后,客户机要等几分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。)
配置时间同步客户机
crontab -e
增加一行,在每天的 6 点 10 分与时间同步服务器进行同步
10 06 * * * /usr/sbin/ntpdate ntp-server 的 ip >>/usr/local/logs/crontab/ntpdate.log
备注:如果客户机没有 ntpdate,可以 yum –y install ntp 即可!
以下是 ntp 服务器配置文件内容 (局域网 NTP,如果需要跟外网同步,添加外网 server 即可)
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
下面是参数详解:
restrict default ignore | # 关闭所有的 NTP 要求封包 |
restrict 127.0.0.1 | # 开启内部递归网络接口 lo |
restrict 192.168.0.0 mask 255.255.255.0 nomodify | # 在内部子网里面的客户端可以进行网络校时,但不能修改 NTP 服务器的时间参数。 |
server 198.123.30.132 | #198.123.30.132 作为上级时间服务器参考 |
restrict 198.123.30.132 | # 开放 server 访问我们 ntp 服务的权限 |
driftfile /var/lib/ntp/drift | 在与上级时间服务器联系时所花费的时间,记录在 driftfile 参数后面的文件内 |
broadcastdelay 0.008 | # 广播延迟时间 |
自此 NTP 服务搭建完毕,然后在所有客户端 crontab 里面添加如下语句:
0 0 * * * /usr/sbin/ntpdate 10.0.0.155 >>/data/logs/ntp.log 2>&1
3.1. 2 构建 DHCP 服务器
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用 UDP 协议工作,主要用途:给内部网络或网络服务供应商自动分配 IP 地址,DHCP 有 3 个端口,其中 UDP67 和 UDP68 为正常的 DHCP 服务端口,分别作为 DHCP Server 和 DHCP Client 的服务端口。
DHCP 可以部署在服务器、交换机或者服务器,可以控制一段 IP 地址范围,客户机登录服务器时就可以自动获得 DHCP 服务器分配的 IP 地址和子网掩码。其中 DHCP 所在服务器的需要安装 TCP/IP 协议,需要设置静态 IP 地址、子网掩码、默认网关。
正式安装 DHCP 服务:
Yum install dhcp dhcp-devel –y 即可,然后修改 DHCP /etc/dhcpd.conf 配置文件内容如下:
ddns-update-style interim;
ignore client-updates;
next-server 192.168.0.79;
filename “pxeLinux.0”;
allow booting;
allow bootp;
subnet 192.168.0.0 netmask 255.255.255.0 {
# — default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.252.0;
# option nis-domain “domain.org”;
# option domain-name “192.168.0.10”;
# option domain-name-servers 192.168.0.11;
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# — Selects point-to-point node (default is hybrid). Don’t change this unless
# — you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.0.100 192.168.0.200;
host ns {
hardware ethernet 00:1a:a0:2b:38:81;
fixed-address 192.168.0.101;}
}
参数解析如下:
注意如上配置,需要修改成对应服务器网段 IP,然后重启 DHCP 服务,/etc/init.d/dhcpd restart 即可。
客户端要从这个 DHCP 服务器获取 IP,需要做简单的设置,如果是 Linux 需要把 /etc/sysconfig/network-scritps/ifcfg-eth0 里 BOOTPROTO 相改成 dhcp 即可,windows 机器的话,需要修改本地连接,把它设置成自动获取 IP 即可。
BOOTPROTO=dhcp
3.1. 3 搭建 Samba 服务器
Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成,
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB 协议是客户机 / 服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得 Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
安装 SAMBA 服务器:
Yum install samba –y
安装完毕,然后做如下设置(过滤 #号行、空行如下命令)
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak ;egrep -v “#|^$” /etc/samba/smb.conf.bak |grep -v “^;” >/etc/samba/smb.conf
查看 smb.conf 配置文件如下:
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
security = share
passdb backend = tdbsam
load printers = yes
cups options = raw
[temp]
comment=Temporary file space
path=/tmp
read only=no
public=yes
[data]
comment=Temporary file space
path=/data
read only=no
public=yes
根据需求修改之后重启服务:
[root@node1 ~]# /etc/init.d/smb restart
Shutting down SMB services: [FAILED]
Shutting down NMB services: [FAILED]
Starting SMB services: [OK]
Starting NMB services: [OK]
在浏览器里面访问方式为:\\192.168.33.10(SMB 文件共享服务端 IP),如何没有权限访问,需要注意防火墙和 seLinux 设置,可以使用如下命令关闭:
/etc/init.d/iptables stop ;sed –i‘/SELINUX/s/enforcing/disabled’/etc/sysconfig/seLinux
3.1. 4 搭建 NFS 服务器
NFS 是 Network File System 的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由 Sun 公司开发,于 1984 年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类 Unix 系统间实现磁盘文件共享的一种方法。
NFS 在文件传送或信息传送过程中依赖于 RPC 协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS 本身是没有提供信息传输的协议和功能的。
NFS 应用场景,常用于高可用文件共享,多台服务器共享同样的数据,可扩展性比较差,本身高可用方案不完善,取而代之的数据量比较大的可以采用 MFS、TFS、HDFS 等等分布式文件系统。
NFS 安装配置:
Yum install nfs* portmap -y 如下图,安装成功即可。
NFS 安装完毕,需要创建共享目录,共享目录在 /etc/exports 文件里面配置,可配置参数如下:
/data/ 192.168.33.11(rw,sync,no_hide,no_all_squash)
在配置文件中添加如上一行,然后重启 Portmap,NFS 服务即可,/etc/init.d/portmap restart ;/etc/init.d/nfs restart
第一列 /data/ 表示需要共享的目录。
IP 表示允许哪个客户端访问。
IP 后括号里的设置表示对该共享文件的权限。
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
hide 在 NFS 共享目录中不共享其子目录
no_hide 共享 NFS 目录的子目录
all_squash 共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录。
no_all_squash 保留共享文件的 UID 和 GID(默认)
root_squash root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)
no_root_squas root 用户具有根目录的完全管理访问权限
Linux 客户端,如何想使用这个 NFS 文件系统,需要在客户端挂载,挂载命令为:
Mount –t nfs 192.168.33.10:/data/ /mnt 即可。如果有报错根据错误信息排查。常见问题有 rpc 服务没有启动、防火墙没关闭、seLinux 未关闭等问题。(拓展 * 有兴趣的童鞋可以研究 MFS(分布式文件系统)。)
3.1. 5 搭建 FTP 服务器
FTP 是文件传输协议,正是由于这种协议使得主机间可以共享文件。FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。
vsftpd 是一款在 Linux 发行版中最主流的 FTP 服务器程序;特点是小巧轻快,安全易用;能让其自身特点得发发挥和掌握。
目前在开源操作系统中常用的 FTP 服务器程序主要有 vsftpd、ProFTPD、PureFTPd 和 wuftpd 等,这么多 FTP 服务器程序,关键在于自己熟练哪一个就使用哪一个。今天我们来研究一下 VSFTPD 简单安装及使用。安装命令: yum install vsftpd* -y
修改配置文件如下:
#vsftpd config 2014 by wugk
anonymous_enable=NO // 禁止匿名用户访问
local_enable=YES // 允许本地用户登录 FTP
write_enable=YES // 运行用户在 FTP 目录有写入的权限
local_umask=022 // 设置本地用户的文件生成掩码为 022,默认是 077
dirmessage_enable=YES // 激活目录信息, 当远程用户更改目录时, 将出现提示信息
xferlog_enable=YES // 启用上传和下载日志功能
connect_from_port_20=YES // 启用 FTP 数据端口的连接请求
xferlog_std_format=YES // 是否使用标准的 ftpd xferlog 日志文件格式
listen=YES // 使 vsftpd 处于独立启动监听端口模式
pam_service_name=vsftpd // 设置 PAM 认证服务配置文件名称,文件存放在 /etc/pam.d/ 目录
userlist_enable=YES // 用户列表中的用户是否允许登录 FTP 服务器, 默认是不允许
tcp_wrappers=YES // 使用 tcp_wrqppers 作为主机访问控制方式
1) 第一种方法就是使用系统用户登录 FTP,但是也是比较危险的,先测试系统用户登录 FTP,在 Linux 系统上创建 useradd test 用户,并为其设置名,然后在 xp 客户端打开我的电脑资源里面访问 ftp://192.168.33.10,输入用户名和密码即可访问,进行创建和删除操作。
2) 第二种方法比较安全,配置相对复杂一点,就是使用 vsftpd 虚拟用户登录 FTP 服务器进行常见的操作。
Ø 首先安装 FTP 虚拟用户需要用到的软件及认证模块
yum install pam* db4* –skip-broken –y
创建并生成 vsftpd 数据库文件 vi /etc/vsftpd/ftpusers.txt,内容如下:
第一行为 FTP 虚拟用户,登录用户名,第二行为密码,第三行为用户名,依次类推。
wugk
1
wugk1
1
Ø 生成数据库文件命令:
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_login.db
Ø 配置 PAM 验证文件:
在配置文件 vi /etc/pam.d/vsftpd 行首加入如下两行认证语句:(如果是 32 位,lib64 需改成 lib,如果 RedHat,加入的语句不一样,需注意)
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
Ø 创建 vsftpd 映射本地用户:
所有的 FTP 虚拟用户需要使用一个系统用户,这个系统用户不需要密码,也不需要登录。主要用来做虚拟用户映射使用。
useradd –d /home/ftpuser –s /sbin/nologin ftpuser
Ø 修改完整版配置文件内容如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES
guest_enable=YES
guest_username=ftpuser
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
保存重启,/etc/init.d/vsftpd restart 即可使用虚拟用户登录,这时候所有的虚拟用户共同使用 /home/ftpuser 目录上传下载,如果想使用自己独立的目录,可以在 /etc/vsftpd/vsftpd_user_conf 目录创建各自的配置文件,如给 wugk 创建独立的配置文件:
vi /etc/vsftpd/vsftpd_user_conf/wugk,内容如下,建立自己的 FTP 目录。
local_root=/home/ftpsite/wugk
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
重启,使用客户端登录 FTP,测试即可。关于 FTP 讲解就到此,windows 还可以使用 Server- U 来搭建 FTP 服务器端,有兴趣的童鞋可以研究一下。
Ø FTP 主被动模式
FTP 主动模式:客户端从一个任意的非特权端口 N(N>1024)连接到 FTP 服务器的 port 21 命令端口。然后客户端开始监听端口 N +1,并发送 FTP 命令“port N+1”到 FTP 服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
FTP 被动模式:客户端从一个恣意的非特权端口 N(N>1024)衔接到 FTP 服务器的 port 21 指令端口。然后客户端开端监听端口 N +1,一起客户端提交 PASV 指令。服务器会敞开一个恣意的非特权端口(P >1024),并发送 PORT P 指令给客户端。然后客户端建议从本地端口 N + 1 到服务器的端口 P 的衔接用来传送数据。
马哥学习交流群
马哥教育 -Linux 学习 - 1 群 485374463
马哥教育 -Linux 学习 - 2 群 339184057