Linux企業服務

一、SSH服務

· 基於祕鑰對認證(免密碼登錄) ———》重點掌握
需求:client端有一個用戶user01,該用戶使用root用戶免密碼登錄server端
在這裏插入圖片描述環境:
client:192.168.93.135
server:192.168.93.136

思路:
· client端生成一對密鑰
· 將生成的公鑰遠程拷貝到server端

步驟:
1.client端的user01用戶生成一對祕鑰對
①client
#useradd user01
#su -user01
$ls -a //家目錄沒有ssh,因此要生成
$ssh-keygen -t rsa //生成密鑰命令
三個回車
$ ls .ssh/ //驗證

2.將剛生成的公鑰遠程拷貝到server端的root家目錄裏指定位置
②server

#ls -a	//家目錄有ssh
#cd .ssh/
#ls    //家目錄的ssh下 暫時沒有任何公鑰
   因此要將客戶端的公鑰 遠程拷貝到這

③client
$scp .ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
 或

 **$ssh-copy-id -i .ssh/id_rsa.pub  root@192.168.93.136**  
 

3.測試驗證
④client
$ssh [email protected]
//即使服務端的root密碼改變了,也可以登錄。 因爲是基於祕鑰對的 而不是基於密碼。

· 禁止root用戶遠程登錄
⑤server
先了解軟件相關知識

#service sshd statu   //這個服務是由哪個程序搭建的
openssh-daemon(pid 2002) is running...
發覺是openssh-daemon,它默認開機啓動

#yum list | grep openssh    確認系統是否自己安裝好了
#rpm -q openssh-server

#rpm -ql openssh-server  查看相關文件路徑,瞭解該軟件的相關知識
/etc/rc.d/init.d/sshd    //啓動腳本
/etc/ssh/sshd_config     //配置文件
/usr/sbin/sshd           //二進制命令

#which ssh-keygen
/usr/bin/ssh-keygen
#rpm -qf /usr/bin/ssh-keygen   查找該文件是誰的

步驟:不管怎麼做,只要是配置文件 都要備份 養成習慣。
⑥server

#cp /etc/ssh/sshd_config  /opt/
#vim /etc/ssh/sshd_config
/Root
PermitRootLogin yes 的 註釋去掉,把yes改成no 
#service sshd restart

⑦client
# ssh 192.168.93.136 發現登錄失敗,權限拒絕

  • 修改默認端口號(更安全,在防火牆也要允許端口 或 關掉)
    #vim /etc/ssh/sshd_config 下 修改 Port 去掉註釋
    #service sshd restart
    #netstat -nltp | grep 10022 檢查是否在監聽
    #service iptables stop

  • ssh服務的訪問控制(策略管理)
    在這裏插入圖片描述補充:tcp_wrappers
    在這裏插入圖片描述在這裏插入圖片描述

補充總結:
①加密算法:RSA和DSA 有什麼不同,原理是什麼
RSA:非對稱的公鑰加密算法,安全,數據傳輸速度慢,SSH默認的加密算法
DES:堆成的公鑰加密算法,安全低,數據傳輸速度快,使用同一個密鑰進行加密或解密

②SSH 兩種基本的認證模式:基於用戶名和密碼,免密碼認證

 

 

二、DHCP服務

DHCP——UDP——67
原理:
在這裏插入圖片描述需求:
server:eth0 10.1.1.2
    eth1 192.168.1.10 網段

client:eth0 dhcp 192.168.1.0

實驗環境: 兩個虛擬機在 僅主機模式下,服務端配置IP地址。Centos 6.5
dhcp server端:增加一個網卡,並且配置192.168.1.0/24網段的IP

第一步:
增加服務端網卡:編輯——》虛擬網絡編輯器——》僅主機模式下 不啓用DHCP服務
在這裏插入圖片描述
永久更改主機名:
[root@localhost 桌面]# vim /etc/sysconfig/network

修改服務端 另一個網卡的IP地址:

[root@localhost 桌面]# cd /etc/sysconfig/network-scripts/
會發現只有eth0的網卡,沒有eth1。直接copy一個
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@localhost network-scripts]# vim ifcfg-eth1        //eth0在之前已經配置好了 10.1.1.2
   DEVICE=eth1
   TYPE=Ethernet
   ONBOOT=yes
   NM_CONTROLLED=yes
   BOOTPROTO=none
   IPADDR=192.168.1.2
   NETMASK=255.255.255.0
   GATEWAY=192.168.1.1

—————— 補充:
修改網卡信息(如果克隆後eth0網卡沒了)
vim /etc/udev/rules.d/70-persistent-net.rules
修改eth1爲eht0,複製eth1網卡MAC地址

vim /etc/sysconfig/network-scripts/ifcfg-eth0
把複製得的MAC地址 粘貼到 eth0上

service network restart 服務重啓不生效就重啓系統
——————

第二步:安裝dhcp軟件

#yum -y install dhcp
#rpm -q dhcp   驗證安裝
得知道這個服務的配置文件在哪
#rpm -ql dhcp         
/etc/dhcp/dhcpd.conf    主配置文件
/etc/rc.d/init.d/dhcpd     啓動腳本
/usr/sbin/dhcpd	     二進制命令
或
[root@server Packages]#rpm -ivh dhcp-4.1.1-38.P1.el6.centos.x86_64.rpm   (若自帶光盤米有,就去www.rpmfind.net)
[root@server Packages]#rpm -q dhcp         //查看是否安裝好了
dhcp-common-4.1.1-38.P1.el6.centos.x86_64

第三步:修改dhcp配置文件
(這個圖的配置文件IP地址只作參考,只爲參數解釋)
在這裏插入圖片描述
option domain-name “xx”;
option domain-name-servers xx;
域名、DNS服務器、日誌設備載體 可寫可不寫
(若出現啓動失敗,則原因分析:網卡的IP地址是臨時配置的,要永久修改纔會啓動成功)

[root@server 桌面]# vim /etc/dhcp/dhcpd.conf      
option domain-name "itcast.cc";
option domain-name-servers 8.8.8.8;
default-lease-time 3600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.150;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
}

[root@server 桌面]# /etc/init.d/dhcpd restart //啓動DHCP
查看下啓動日誌/var/log/messages
這裏面記錄了dhcp的啓動過程,都發生了什麼!
# tail -n 30 /var/log/messages

第四步:客戶端dhcp自動獲取地址
環境:服務端提供了DHCP,客戶端沒有IP地址而且開了DHCP服務,會進行廣播
[root@server 桌面]# /etc/init.d/dhcpd restart   //啓動DHCP,可設置開機自啓
在這裏插入圖片描述

三、FTP服務

瞭解:FTP服務器的兩種工作模式 —— 主動模式和被動模式 相對於服務器是主動還是被動
掌握:FTP服務的基本配置
FTP軟件:vsftp

①搭建簡易ftp (搭建好後,Windows可以訪問,但Linux不行)

關閉防火牆和selinux
1、關閉iptables
#service iptables stop
不行再
2、關閉SELinux
#vi /etc/selinux/config
將文件中的SELINUX=disabled ,然後重啓。

#yum -y install vsftpd    //安裝
[root@server Packages]# rpm -ivh vsftpd-2.2.2-11.el6_4.1.x86_64.rpm 
#rpm -q vsftpd		     //確認
#rpm -ql vsftpd 	     //可看vsftpd的文件    /etc/
#service vsftpd start	//啓動
#cd /var/ftp/
#touch file{1..5}      //創建 file1 ~ file5文件
ftp://10.1.1.2

#rpm -ql vsftpd //可看vsftpd的文件 /etc/
在這裏插入圖片描述
在這裏插入圖片描述

②FTP服務的基本配置 (Client安裝FTP工具)
環境: FTP-Server:192.168.1.2
   Client:192.168.1.101
瞭解配置文件——》man 5 vsftpd.conf (man的默認值是不一定的,可能有更新,要以當前程序的當前配置爲準。)
-v:顯示不包含匹配文本的所有行。反向查找。
grep -v ^# /etc/vsftpd 在/etc/vsftpd文件中 不顯示以#開頭的行
在這裏插入圖片描述
設置啓動服務 開機自啓動
[root@server 桌面]#chkconfig --list | grep vsftpd
[root@server 桌面]#chkconfig vsfptd on
[root@server 桌面]#nestat -nltp | grep 21 nestat -nltp | grep vsfptd //驗證

Client
客戶端安裝 訪問ftp的工具
#yum -y install ftp lftp

#rpm -ivh ftp

總結:

1.ftp 默認使用用戶名和密碼 ——》 ftp 或者匿名用戶 密碼是回車
2.lftp 默認使用的匿名用戶登錄
#lftp 192.168.1.2 lftp 192.168.1.2:/>user username lftp [email protected]:
3.工具輔助 裏面輸入 ? 或者 man ftp 和 lftp
4.匿名用戶可以下載文件但是不能上傳文件
5.本地用戶可以上傳和下載文件

——————————————————————
1.FTP服務的基本應用
根據需求通過修改配置文件來完成服務的搭建
需求1:允許匿名用戶上傳文件

#cd /etc/vsftpd/
#vim vsftpd.conf
#grep -v ^# vsftpd.conf>vsftpd.conf.bak 
#mv vsftpd.conf /opt/
#mv vsftpd.conf.bak vsftpd.conf
#ll
去man 5 vsftpd.conf  發現 anon_upload_enable ......... 寫入到vsftpd.conf
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#service vsftpd restart

確定是否有目錄權限
[root@server vsftpd]# ll -d /var/ftp
drwxr-xr-x. 3 root root 4096 214 21:43 /var/ftp
[root@server vsftpd]# chmod o+w /var/ftp/
——————  改了權限後 又遇到問題:  (權限太大)
驗證  拒絕,因爲ftp會認爲匿名用戶上傳文件不安全

在這裏插入圖片描述

如下FTP用戶的家目錄是不能針對 所有用戶、用戶組、其它用戶組完全開放;
[root@localhost ~]# ls -ld /var/ftp
drwxrwxrwx 3 root root 4096 2005-03-23 /var/ftp 修正這個錯誤
——————
解決辦法:權限改回去:chmod o-w /var/ftp/
但現在又不能上傳,因此改爲只能上傳到 pub目錄 
解決:在pub目錄下增加 w權限, 不要在根目錄下加權限
chmod o+w /var/ftp/pub

在這裏插入圖片描述

需求2:下載其他匿名用戶上傳的文件
在這裏插入圖片描述
因爲安全機制,會把當時匿名用戶上傳的 文件進行修改,同組和其他人都沒有r權限,因此下載不了。
所以要讓所有匿名用戶上傳的時候,默認把 u g o 加上r權限。 (控制默認上傳文件的權限)因此 ↓

反掩碼 anon_umask 077 (匿名用戶) 默認是077,因此設置指定爲022
該設置的權限:file:666-077 =600 rw- — --- 改爲:rw- r-- r-- (644) 實際上是 666-022
dir:777-077=700 rwx — --- 改爲:rwx r-- r-- (744)
在這裏插入圖片描述
#vim /etc/vsftpd/vsftpd.conf
添加修改:anon_umask=022 和 local_umask=022
#service vsftpd restart
在這裏插入圖片描述
需求3:開啓本地用戶消息功能
當別人連接的時候 能看到消息提示
(1)本地用戶默認訪問 ——》/home/username
(2)匿名用戶默認訪問 ——》/var/ftp
[root@server ~]# echo “welcome to my home” > /home/linux123/.message
[root@server 桌面]# echo “welcome to anon home” > /var/ftp/.message
在這裏插入圖片描述名字是固定的 .message

另外一種 man 5 vsftpd 的 banner_file
不管是什麼人,都能看到我指定文件的公告
第一步:修改配置文件指定消息文件
vim /etc/vsftpd/vsftpd.conf

第二步:創建消息文件
cd /etc/vsftpd/
vim banner_file=/etc/vsftpd/banner_file 然後再直接保存退出去
對↓ 該文件修改
vim banner_file
service vsftpd restart
在這裏插入圖片描述
需求4:禁錮本地用戶的家,只能在自己的家中活動
原本:本地用戶 可以到處切換 cd。
(1)禁錮所有的本地用戶
#vim /etc/vsftpd/vsftpd.conf

chroot_local_user=YES
#service vsftpd restart

(2)禁錮大部分用戶,允許小部分
#vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES //啓用用戶文件列表
chroot_list_file=/etc/vsftpd/chroot_list //定義用戶文件列表,這個chroot_list是自己取的
#echo linux123 > chroot_list

(3)允許大部分,禁錮小部分
#vim /etc/vsftpd/vsftpd.conf
chroot_local_user=NO
chroot_list_enable=YES //啓用用戶文件列表
chroot_list_file=/etc/vsftpd/chroot_list //定義用戶文件列表,這個chroot_list是自己取的

需求5:指定匿名用戶和本地用戶上傳文件的目錄
按照如下要求搭建一個ftp服務器: #vim /etc/vsftpd/vsftpd.conf #man 5 vsftpd
(1)允許匿名用戶上傳文件,並且可以下載其他用戶上傳的文件
#vim/etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
anon_umask=022 //下載

(2)匿名用戶上傳的文件都保存在/anon/data裏
默認保存:/var/ftp
#mkdir /anon/data
#vim/etc/vsftpd/vsftpd.conf

anon_root=/anon/data   //又想放這,但又不想被拒絕上傳 。原本是放在pub下 不會被拒絕。 改爲
anon_root=/anon   //會產生這樣的原因是因爲 匿名用戶的根 權限給太大了,需求1中的匿名用戶的根 是
/var/ftp,此時 是anon_root=/anon/data 修改了根 #chmod o+w /anon/data
//權限給小一點,給具體一點,因此是指定到data裏

(3)本地用戶上傳的文件都保存在/local/data裏
默認保存:/home/username
#mkdir /local/data
#vim/etc/vsftpd/vsftpd.conf
local_root=/local/data
(4)禁錮所有用戶的家,不能來回跳轉
#chroot_local_user=YES

擴展1:查看ftp文件數量 ❤
想看普通文件的話,ls -l肯定是以 -開頭
ls -l [文件目錄名] | grep “^-” | wc -l

想略過目錄的話,就找以非 d開頭的
ls -l [文件目錄名] | grep -v “^d” | wc -l

擴展2:修改用戶密碼 ❤
格式:echo 密碼 |passwd –stdin 用戶名
例子:將用戶名wyl的密碼改爲123
$ echo ‘123’|passwd --stdin wyl
Changing password for user wyl.
passwd: all authentication tokens updated successfully.

 
 

2.FTP服務的訪問控制
· FTP服務的對象訪問控制
ftpusers 黑名單
user_list 默認是黑名單 (可以成爲白名單)

需求1:不允許linux123用戶訪問ftp服務
#cd /etc/vsftpd/
#cat ftpusers
#echo linux123 >> ftpusers

需求2:只允許linux123用戶訪問ftp服務
在這裏插入圖片描述
(1)修改配置文件將user_list文件變成白名單
#vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
#service vsftpd restart
(2)將linux123用戶加入到user_list文件中
echo linux123 >> /etc/vsftpd/user_list

 

總結:
1.用戶在ftpusers文件中,那麼用戶不能訪問ftp服務器
2.用戶在user_list文件中,如果該文件是白名單,那麼只在該文件中的用戶可以訪問ftp服務
3.如果user_list文件是白名單,用戶即在ftpusers中,又在user_list中,那麼ftpusers拒絕優先
ftp機制排查錯誤:先看ftpusers 再看user_list

 

· FTP服務的網絡訪問控制
· 支持tcp_wrappers
它的主要功能就是控制誰可以訪問,常見的程序有rpcbind、vsftpd、sshd,telnet。
TCP_Wrappers的使用主要是依靠兩個配置文件/etc/hosts.allow, /etc/hosts.deny
在這裏插入圖片描述寫法:

/etc/hosts.deny
vsftpd:all             全部拒絕
vsftpd:all  EXCEPT 192.168.0.2    拒絕所有除了192.168.0.2
vsftpd:192.168.0.254   拒絕單個IP地址 等價於hosts.allow文件裏增加 vsftpd:192.168.0.254:deny
vsftpd:192.168.0.0/255.255.255.0    拒絕某個網段
vsftpd:192.168.0.0/255.255.255.0 EXCEPT 192.168.0.254   拒絕某個網段,但是除了某個ip地址

注意:子網掩碼不支持192.168.0.0/24這種寫法

思考:如何判斷一個服務是否支持tcp_wrappers?
方法:#ldd /usr/sin/vsftpd | grep libwrap*
(1)./configure --enable-libwrap 表示支持tcp_wrappers訪問控制
(2)rpm安裝

需求:拒絕10.1.1.0/24和192.168.91.0/24網段的所有人訪問,除了10.1.1.3服務器
vim /etc/host.deny
vsftpd:10.1.1.0/255.255.255.0,192.168.91.0/255.255.255.0 EXCEPT 10.1.1.3
//如果先前不知道是空格還是逗號,則去 #man 5 hosts_oprions 或者 #man 5 hosts_access

 

總結:FTP訪問控制
1、對象的訪問控制(用戶)
ftpusers 和 user_list
2、網絡訪問控制
·tcp_wrappers工具 ——》/etc/hosts.allow和/etc/hosts.deny
·託管給xinetd服務去管理 (瞭解)

補充: max_clients #最大客戶端連接數,默認沒有限制
max_per_ip #單個IP最大連接限制,默認沒有限制
anon_max_rate=50000 #限制匿名用戶50KB
local_max_rate=200000 #限制本地用戶200KB
指定到下載的位置: 先 lcd 然後直接get 就是下載到lcd的位置

 
FTP配置虛擬用戶

虛擬賬號來登錄ftp。 而不是一個真正的系統用戶來登錄。保證安全性
第一步:創建虛擬賬戶的文件,偶數行是密碼
[root@localhost vsftpd]# vim  /etc/vsftpd/vuser.list
student1
123456
student2
654321

第二步:創建數據庫
使用db_load命令用HASH算法生成FTP用戶數據庫文件vuser.db並查看文件
#cd /etc/vsftpd/
#db_load -T -t hash -f vuser.list vuser.db


第三步:創建虛擬用戶的PAM認證的配置,參數db用於指向剛剛生成的vuser.db文件,但不要寫後綴
#vim /etc/pam.d/vsftpd.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser


第四步:創建用戶virtual並設置爲不允許登錄系統並定義該用戶的家目錄,讓虛擬用戶映射到系統的用戶
#useradd -d /var/ftproot -s /sbin/nologin virtual
#chmod 700 /var/ftproot/


第五步:修改主配置文件
#vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.vu
userlist_enable=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=ftpvu
virtual_use_local_privs=YES   #讓虛擬用戶和本地賬號virtual有同樣的權限
user_config_dir=/etc/vsftpd/ftpvuconf


第六步:爲各個虛擬用戶設置不同的目錄,權限,設置配置文件的存放位置
創建用戶的主目錄:mkdir -p /var/ftpsite/student1
			   mkdir -p /var/ftpsite/student2
切換進入到該目錄中:cd /var/ftpsite/
修改文件所屬主:chown virtual student1 student2
修改文件所屬組:chgrp virtual student1 student2
等同於:chown virtual:virtual student1 student2
修改文件權限:chmod 777 student1 student2

創建 student1的配置文件:
#mkdir -p /etc/vsftpd/ftpvuconf
#vim /etc/vsftpd/ftpvuconf/student1   配置文件的名字要和用戶名字一樣
local_root=/var/ftpsite/student1  #該目錄所屬主所屬主應爲virtual
anon_world_readable_only=NO
anon_upload_enable=YES   #上傳
anon_mkdir_write_enable=YES  #寫入
anon_other_write_enable=YES   #刪除

#vim /etc/vsftpd/ftpvuconf/student2 
local_root=/var/ftpsite/student2
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

第七步:把用戶的配置的目錄 寫入到/etc/vsftpd/vsftpd.conf配置文件裏
#vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/ftpvuconf



重啓vsftpd
#systemctl restart vsftpd

 
 

四、NFS服務

掌握NFS服務器實現讀/寫文件共享
掌握NFS Client 訪問及掛載
NFS (Network File System) 網絡文件系統
  主要用於linux系統上實現文件共享的一種協議,其客戶端主要是Linux
  沒有用戶認證機制,且數據在網絡上傳送的時候是明文傳送,一般只能在局域網中使用
  支持多節點同時掛載及併發寫入
  
企業應用:爲集羣中的web server提供後端存儲
在這裏插入圖片描述
該服務包括的組件:
RPC(Remote Procedure Call Protocol)遠程過程調用協議。它是一種通過網絡從遠程計算機程序上請求服務,不需要了解底層網絡技術的協議
rpcbind    //負責NFS的數據傳輸,遠程過程調用tcp協議,端口111
nfs_utils   //控制共享哪些文件,權限管理

 

  • NFS服務搭建

#rpm -q rpcbind
#rpm -aq|grep ^nfs //查看以nfs開頭的軟件包,Linux系統自己裝好的
#rpm -ql nfs-utils //發現並沒有配置文件
在 /etc/exports 下的配置:
在這裏插入圖片描述需求1:共享本地/share/nfs目錄給所有人,以讀寫方式共享

Server
#vim /etc/exports
/share/nfs     *(rw)
#mkdir /share/nfs -p      //-p遞歸創建目錄
#service rpcbind restart   
#service nfs start
#netstat -nltp|grep rpcbind  //查看端口狀態
#touch /share/nfs/file{1..5}
Client (必須掛載)
#mkdir /u01
#mount.nfs 192.168.1.2:/share/nfs /u01
#df -h
#cd /u01
#ls   //可以查看到
測試寫入:
[root@client opt]# cd /u01
[root@client u01]# ls
file1  file2  file3  file4  file5
[root@client u01]# touch file6
touch: 無法創建"file6": 權限不夠
原因:server端的共享目錄權限不夠
解決:在server端下,#chmod o+w /share/nfs/

如果更新了,要重新掛載。 #umount /u01 #mount.nfs …

 

練習:
搭建一個NFS服務,將本機的/nfs/share目錄共享給192.168.91.0/24網段和10.1.1.2,10.1.1.3主機,192網段以讀寫的方式訪問,10網段以只讀的方式共享

server端  192.168.1.2
#mkdir /nfs/share
#vim /etc/exports
/nfs/share 192.168.91.0/24(rw) 10.1.1.2(ro) 10.1.1.3(ro)

client端  192.168.1.101
1.創建一個空的目錄 掛載點  /u01
2.#mount.nfs 192.168.1.2:/nfs/share  /u01
或者
#mount -t nfs 192.168.1.2:/nfs/share  /u01

# which mount.nfs
/sbin/mount.nfs
# rpm -qf /sbin/mount.nfs
nfs-utils-1.2.3-39.e16.x86_64
(mount.nfs是工具包nfs-utils)

 

示例1
在這裏插入圖片描述
A主機用戶user1把文件上傳到/home/user1中去,實際上對應的是B主機的設備 —— 掛載
(假設A主機的home下空間不夠)

思路:

A主機上:
1.需要創建相應的用戶user1~user3   eg:user1 ——》/user1(掛載點)
B主機上:
搭建NFS服務,將/nfs/share共享出來
A主機上:
1.掛載B主機上的共享目錄到指定掛載點上
測試驗證:在A主機進行

步驟:
環境:

FTP-SERVER:10.1.1.2
NFS-SERVER:10.1.1.3
CLIENT:10.1.1.4
CLIENT 訪問 FTP-SERVER,上傳文件的時候,對於客戶端來說,是不知道服務器的文件存儲到FTP還是NFS。

FTP-SERVER上完成

創建用戶並且指定用戶的家目錄     //創建用戶的時候,系統會默認分配一個家。目前情況就是 我不想要這個家,同時我要指定一個家
#mkdir /rhome   //把所有的家目錄都放在rhome下
#useradd -d /rhome/user01 -M user01    //-M 是不自動創建家目錄  -d 是指定家
#tail -3 /etc/passwd   //驗證
#su - user01  報錯,因爲我只是指定家目錄,並沒有創建指定的家目錄
#useradd -d /rhome/user02 -M user02
#useradd -d /rhome/user03 -M user03  
#echo 123|passwd --stdin user01
#echo 123|passwd --stdin user02
#echo 123|passwd --stdin user03
即使創建好了密碼也不能訪問FTP,因爲還沒有創建指定的家目錄

NFS-SERVER操作:

共享出一個目錄,然後FTP-SERVER掛載過去
#vim /etc/exports            //發佈共享目錄   /data共享目錄,10.1.1.2表共享給FTP服務器
/data   10.1.1.2(rw)
#service nfs start
#mkdir /data/user0{1..3}     //在NFS-SERVER的/data創建三個用戶

FTP-SERVER端操作:

把NFS-SERVER的/data掛載到/rhome/user01
#mkdir /rhome/user0{1..3}
#mount.nfs 10.1.1.3:/data/user01 /rhome/user01
#mount.nfs 10.1.1.3:/data/user02 /rhome/user02
#mount.nfs 10.1.1.3:/data/user03 /rhome/user03

CLIENT
#ftp 10.1.1.2
ftp>ls
此時在NFS-SERVER創建文件,看CLIENT是否能看到

NFS-SERVER:
#cd /data/user01
#echo hello world > file 1
CLIENT:
ftp>ls 能看到成功。
·····································
開始處理小問題
說明:正常情況下,user01用戶只能訪問ftp服務器,但是不能上傳文件,原因是nfs-server的共享目錄沒有權限

FTP-SERVER:
現在有user01用戶,按道理來說可以往家裏寫東西,實際發現卻不能 ↓

[root@ftp-server ~]#su -user01
-bash-4.1$pwd
/rhome/user01
-bash-4.1$touch file2
touch:cannot touch 'file2':Permission denied

因爲NFS-SERVER的 /data/user01 沒有寫的權限
NFS-SERVER: #chmod 1777 /data/ -R
//加個1表粘滯位 就意味着 在這個目錄裏 只有root和文件創建者可以刪除
//❤粘滯位 一般作用在公共的目錄上(777)

問題解決後再次驗證

FTP-SERVER: -bash-4.1$touch file2
            -bash-4.1$

CLIENT:ftp>put install.log 這個就上傳到NFS-SERVER裏了

從此,解決FTP空間不夠 ~~~~~~~~~!!!
在這裏插入圖片描述
——————————————————————

方法2:(簡單點)
FTP-SERVER:10.1.1.2
NFS-SERVER:10.1.1.3
CLIENT:10.1.1.4
步驟:
FTP-SERVER操作:
1.創建用戶
#useradd uu1 ——》/home/uu1
#useradd uu2 ——》/home/uu2
#echo 123|passwd --stdin uu1
#echo 123|passwd --stdin uu2

NFS-SERVER操作:
1.在/data目錄裏給用戶創建相應的目錄
#mkdir /data/uu1
#mkdir /data/uu2
2.給共享目錄設置相應的權限
#chmod 1777 /data -R
3.發佈共享目錄
#vim /etc/exports
/data 10.1.1.2(rw)
4.重啓nfs服務
#service nfs restart

FTP-SERVER端操作:
uu1用戶:#mount.nfs 10.1.1.3:/data/uu1 /home/uu1
uu2用戶:#mount.nfs 10.1.1.3:/data/uu2 /home/uu2

NFS-SERVER端操作:
#cd /data/uu1
#touch test1 test2

CLIENT端 上傳和下載 OK
——————————————————————

示例2
在這裏插入圖片描述
客戶訪問第1、2、3臺Web服務器的時候都能看到同一個Web頁面

NFS-SERVER端:共享目錄,並且創建一個首頁文件 10.1.1.2

#mkdir /share/web -p
#echo "hello world" > /share/web/index.html
#vim /etc/exports
/share/web   10.1.1.0/24(ro)
重啓服務(NFS)
#service nfs restart

Client端
WEB1端: 10.1.1.3
1.安裝httpd軟件
#rpm -q httpd 確認
2.掛載nfs-server端的共享目錄到/var/www/html
#mount -t nfs 10.1.1.2:/share/web /var/www/html
或者 #mount.nfs 10.1.1.2:/share/web /var/www/html
#df -h
3.啓動服務
#service httpd start
4.測試驗證
windows 瀏覽器 : http://10.1.1.3

WEB2端亦是如此 10.1.1.4

 
 
 

五、SAMBA服務

主要用於windows和Linux下的文件共享、打印共享。 實現匿名與本地用戶文件共享
Samba服務的主要進程:

  • smbd進程 控制發佈共享目錄與權限、負責文件傳輸 TCP 139 445
  • nmbd進程 用於名稱解析netbios UDP 137
    138;基於NETBIOS協議獲得計算機名稱——》解析爲相應的IP地址,實現信息通訊

NetBIOS是Network Basic Input/Output System的簡稱,一般用於局域網通信的一套API

/etc/samba/smb.conf 配置文件
在這裏插入圖片描述Samba服務器搭建
SAMBA服務器 (192.168.1.2)

#yum -y install samba
#rpm -aq|grep ^samba
#rpm -q samba   //找執行腳本  
#service smb start
#service nmb start

CLIENT客戶端 (192.168.1.101)

默認安裝好 smbclient  可以 #which smbclient 驗證
[root@client 桌面]# smbclient -L //192.168.1.2
Enter root's password: 回車  //查看samba服務器的共享名,回車表匿名用戶
Anonymous login successful

基於用戶名和密碼訪問,前提是在Server端把用戶加到數據庫中

#smbpasswd --help 
[root@server 桌面]# smbpasswd -a linux123
New SMB password:        //這個密碼是smb的數據庫密碼  (我設爲123456)
Retype new SMB password:
Added user linux123.                                //指定用戶名訪問    
        
[root@client 桌面]# smbclient //192.168.1.2/linux123 -U linux123    訪問linux123家
Enter linux123's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
smb: \> ?

 

Windows下: (我原以爲訪問不了是FTP和SAMBA衝突,其實並不會,也能訪問FTP)
\10.1.1.2 發覺訪問不了,找不到路徑,然後去 啓動 網絡和打印共享發現,再安裝了下面這個 重啓

打開 控制面板 -> 程序 程序和功能 -> 啓用和關閉windows功能 ,再依次找到圖中所示的

【SMB 1.0 /CIFS 服務器】,勾選左側的勾,點擊【確定】。完成後按提示重啓電腦即可。
CMD ,\10.1.1.2 用戶名:linux123 密碼:123456
在這裏插入圖片描述
需求:讓匿名用戶訪問/samba/share共享資源,本地用戶可以訪問
[root@server 桌面]#vim /etc/samba/smb.conf
[anon_share] 名字隨便寫
path=/samba/share
public=yes
writable=yes
[root@server 桌面]#mkdir /samba/share -p
[root@server 桌面]#chmod o+w /samba/share/

CLIENT:
#smbclient //192.168.1.2/anon_share //這裏跟的是標籤,而不是具體的路徑
#smbclient //10.1.1.2/anon_share -U linux123 本地用戶可以訪問
事實上 沒有指定本地用戶,默認情況下,本地用戶是可以訪問的。

需求: Client 通過掛載到本地方式訪問

[root@client ~]# mount.cifs -o user=linux123,pass=123456 //192.168.1.2/anon_share  /u1
[root@client ~]# cd /u1
[root@client u1]# touch file1.txt
[root@client u1]# ls
file1.txt  nimingyonghufangwen-anon_share  需求.png

 
總結:
1.samba服務默認是基於用戶名和密碼認證的服務
2.samba服務的用戶必須是samba服務器上存在的用戶,密碼必須是samba數據庫裏的密碼
3.對於發佈的共享資源,默認情況下本地用戶是可以訪問的,匿名用戶是否可訪問 看是否打開public=yes
.

訪問控制
/etc/samba/smb.conf 配置文件
在這裏插入圖片描述
綜合案例:

需求:
公司:itcast,有三個部分cw,rs,sc和一個公共區pub,每個部門的資料根據如下需求進行共享:
1、財務部門 /samba/itcast_cw,cw01財務總監有可讀可寫權限,財務部門員工可讀,boss01對其有管理權限。
2、市場部門 /samba/itcast_sc,市場部門員工可讀可寫,公司員工可以查詢資料,boss02對其有管理權限。
3、HR部門 /samba/itcast_rs,rs01HR總監可讀寫,HR部門員工可以對財務部查詢,vip用戶可以查詢
4、休息區 /samba/ticast_pub 自己管理自己的文件

步驟:
1.在服務器上創建相應的目錄保存不同部門的資料
mkdir /smb/{cw,rs,sc,pub} -p

2.創建相應的用戶組(方便管理)
groupadd itcast
groupadd cw
groupadd rs
groupadd sc

useradd cw01 -g cw -G itcast
useradd cw02 -g cw -G itcast
useradd rs01 -g rs -G itcast
useradd rs02 -g rs -G itcast
useradd sc01 -g sc -G itcast
useradd sc02 -g sc -G itcast
useradd boss01 -g itcast
useradd boss02 -g itcast
useradd vip
  
3.修改相應目錄的權限
 訪問控制在4.有寫到。 write list
 
4.搭建samba服務,共享不同部門的資料
 vim /etc/samba/smb.conf
 ...
 [cw]
     path=/smb/cw
     valid users = boss01,@cw,@rs
     write list = cw01,boss01   //沒有寫在裏面的就是默認只讀
 
 [rs]
     path=/smb/rs
     valid users = vip,@rs
     write list = rs01
     
 [sc]
     path=/smb/sc
     valid users = @itcast
     write list = @sc,boss02
     
 [pub]
     path=/smb/pub
     valid users = @itcast
     writable = yes   //不管是誰,只要是公司的都有寫權限

5.將用戶加入到samba數據庫裏
smbpasswd -a cw01
....  一個個加 或 寫腳本循環加

6.測試驗證
Linux:
Windows:


補充1:Windows cmd的netuse命令
>net use * /delete
>net use * /delete/y  斷開所有連接,可以解決訪問共享時提示多重連接的問題
>net use /?  查看net use下的命令。  用net use命令可以查看你當前與網絡資源的連接


補充2:browseable 和 guest
參數browseable 用戶環境變量
當前狀態下的共享文件是否公開可見(或可供瀏覽)的參數
example :
browseable=yes
通俗的說,就是在配置文件中的共享文件下敲這個命令,只有的通過samba服務共享當前文件允許可見。其他的非當前共享文件不影響本身效果。

browseable=no
通俗的說,就是在配置文件中的共享文件下敲這個命令,只有的通過samba服務共享當前文件不允許可見。其他的非當前共享文件不影響本身效果。


參數public=guest ok 全局變量
全局狀態下的共享文件是否公開允許可見(或可供瀏覽)的參數
example :
public=yes  或 guset ok=yes
通俗的說,就是在配置文件中任何地方敲這個命令,所有的通過samba服務共享文件都允許可見。

public=no 或 guset ok=no
通俗的說,就是在配置文件中任何地方敲這個命令,所有的通過samba服務共享文件都允許不可見。

總結:
1.ftp
2.nfs 局域網,沒有用戶密碼認證機制,通過掛載方式訪問 mount.nfs 。
3.samba 局域網,直接訪問(smbclient) 掛載方式訪問。

 

 

六、DNS服務

· DNS服務的正向和反向解析配置 正向:域名解析爲IP地址 A 反向:PTR
· DNS服務的主從同步搭建
www.baidu.com.
DNS結構:
在這裏插入圖片描述
根域: .
一級域名<頂級域 | 國家域>
二級域名:qq.com baidu.com
如果詢問一次得到結果 遞歸查詢 C-S
如果詢問多次得到結果 迭代查詢 S-S

DNS工作原理:
在這裏插入圖片描述
DNS服務器搭建
DNS的域名解析 是 udp/53,主從之間的數據傳輸默認使用tcp/53
DNS軟件: Bind是一款開放源碼的DNS服務器軟件,支持各種Unix和Windows平臺
遞歸:一次性獲取結果

需求1:搭建DNS服務器,能夠將www. xxx 解析成 192.168 ——》正向解析
環境:
DNS-SERVER:10.1.1.2
CLIENT:10.1.1.3

思路:
1.關閉防火牆和selinux
2.配置yum源
3.軟件三步曲:查看並安裝軟件,確認成功安裝,查看軟件列表
4.瞭解配置文件(語法 | 參數配置) ——》man 5 xxx.conf
5.根據需求通過修改配置文件完成服務的搭建
6.啓動服務,開機自啓動
7.測試驗證

步驟:

DNS-server上完成
1.關閉防火牆和selinux
#service iptables stop
#chkconfig iptables off
#getenforce
Enforcing
#setenforce 0   //臨時關閉
#getenforce
Permissive
#vim /etc/sysconfig/selinux   //永久關閉
#grep ^SELINUX /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted



2.配置yum源

3.軟件三部曲
#yum list | grep bind	 //查看並安裝軟件
#yum -y install bind		
#rpm -q bind			//確認成功安裝
#rpm -ql bind                  //查看軟件的文件列表
看到了NetwrokManager ,這個要關掉。不然會刷新配置文件
/etc/named     //配置文件的主目錄
/etc/named.conf      //主配置文件
/etc/named.rfc1912.zones     //zone文件,定義域
/etc/rc.d/init.d/named       //啓動腳本

/usr/sbin/named      //程序的二進制命令
/usr/sbin/named-checkconf    //檢查配置文件的命令  named.conf  named.rfc1912.zones
/usr/sbin/named-checkzone    //檢查配置文件的命令

/var/log/named.log   //日誌文件
/var/named           //數據文件的主目錄
/var/named/named.ca  //根域服務器,因此DNS服務器知道根在哪
/var/named/named.localhost   //正向解析區域文件的模板
/var/named/named.loopback    //反向解析區域文件的模板
/var/named/slaves            //從dns服務器下載文件的默認路徑
/var/run/named               //進程文件


4.瞭解配置文件
主配置文件:/etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; any; };      監聽方式,any表示全網監聽
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";               
        dump-file       "/var/named/data/cache_dump.db";    DNS緩存文件
        statistics-file "/var/named/data/named_stats.txt";  統計
        memstatistics-file "/var/named/data/named_mem_stats.txt";   內存統計
        allow-query     { localhost; any; };    允許哪些人可以查詢,any任何人
        recursion yes;      是否遞歸
 
        dnssec-enable no;   安全擴展機制(簽名認證),默認yes
        dnssec-validation yes;
        dnssec-lookaside auto;
 
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
 
        managed-keys-directory "/var/named/dynamic";
};
說明:
DNSSEC 域名系統安全,是DNS的安全擴展協議
DLV DNSSEC 後備祕鑰
這些安全機制的設定,是爲了保護DNS服務器與用戶之間的數據安全,避免惡意數據對用戶的欺騙
 
zone "." IN {               根服務器
        type hint;
        file "named.ca";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
 ————————————————————————————————————————————————————————
域是在子配置文件定義
子配置文件: /etc/named.rfc1912.zones
/etc/named.rfc1912.zones
//正向模板
zone "localhost.localdomain" IN {   
        type master;
        file "named.localhost";     注意下面會對引號內的文件進行修改配置
        allow-update { none; };
};
//反向模板 IP反過來寫
zone "1.0.0.127.in-addr.arpa" IN {      
        type master;
        file "named.loopback";
        allow-update { none; };
};


#cd /var/named
#cat named.localhost   正向模板
@符號在這裏已經有它的含義了,所以用 點 來分隔
#cat named.loopback   反向模板
cat /etc/named/named.localhost
正向
$TTL 1D                             緩存的生命週期
@   IN SOA  @ rname.invalid. (      
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  @
    A   127.0.0.1
    AAAA    ::1
 
@ = zonename = itcast.com  當前域
IN 互聯網
SOA 開始協議
NS dns服務端
A ipv4正向
AAAA ipv6
CNAME 別名
MX 郵件交互記錄   5 表示優先級 數字越小越優先
 
反向
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial            更新序列號
                    1D  ; refresh           更新間隔(從服務器下載數據)
                    1H  ; retry             失敗重試
                    1W  ; expire            區域文件的過期時間
                    3H )    ; minimum       緩存的最小生命週期
    NS  @
    A   127.0.0.1
    AAAA    ::1
    PTR localhost.

5.根據需求通過修改配置文件來完成服務的搭建
需求1:www.misshou.io 解析成 192.168.1.2             (需求3已清空需求1和需求2的環境)
1.修改主配置文件 /etc/named.conf ——》監聽方式和允許誰來查詢
#cp /etc/named.conf  /etc/named.conf.bak
#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
#vim /etc/named.conf
options {
	listen-on port 53 { 127.0.0.1;any; };     any全網監聽
	listen-on-v6 port 53 { ::1; };
	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     { localhost;any; };   any允許所有人查詢
	recursion yes;

	dnssec-enable no;          關閉
	dnssec-validation no;      關閉
	dnssec-lookaside auto;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";
};
.......................

2.修改子配置文件 /etc/named.rfc1912.zones定義管理域 ——》定義管理域 misshou.io
www.misshou.io
[root@server 桌面]# cp /etc/named.conf /etc/named.conf.bak
[root@server 桌面]# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
[root@server 桌面]# vim /etc/named.rfc1912.zones
在該文件最後面增加以下內容:
 43 zone "misshou.io" IN {
 44         type master;
 45         file "misshou.io.zone";  //文件名沒要求,但必須在 /var/name中創建一模一樣的名字
 46         allow-update { none; };
 47 };

3./var/named目錄裏面創建相應的zone文件
/var/named/named.localhost   正向模板
!!!切記不能改變文件屬性,會解析報錯,因爲權限問題。
通過複製來進行, -p :連同檔案的屬性一起復制過去,而非使用預設屬性;
[root@server 桌面]# touch /var/named/misshou.io.zone
[root@server 桌面]# cp -p /var/named/named.localhost /var/named/misshou.io.zone
[root@server 桌面]# ll /var/named/misshou.io.zone
總用量 4
-rw-r----- 1 root named 152 621 2007 named.localhost

#vim /var/named/misshou.io.zone
$TTL 1D
@       IN SOA  misshou.io.  rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns1.misshou.io. //代表dns服務器名字 //此處的dns1可以隨便指定,abc都行,但是要和後面的A記錄保持一致
dns1    A       10.1.1.2           //關鍵前兩行一定是當前DNS服務器的IP地址
www     A       192.168.1.254      //這個是 域名對應的地址,DNS服務器只幫忙解析,與DNS網段無關

4.使用命令檢查配置文件的語法
[root@server ~]# named-checkconf /etc/named.conf    //什麼都沒有代表OK
[root@server ~]# named-checkconf /etc/named.rfc1912.zones    //什麼都沒有代表OK 
[root@server ~]# cd /var/named  進入該目錄檢查.zone文件
[root@server named]# ls
data     misshou.io.zone  named.empty      named.loopback
dynamic  named.ca         named.localhost  slaves
[root@server named]# named-checkzone misshou.io.zone misshou.io.zone //區域文件名寫兩遍
zone misshou.io.zone/IN: loaded serial 0
OK



6.啓動服務,開機自啓動
[root@server named]# service named start
[root@server named]# chkconfig named on
[root@server named]# netstat -nltup|grep 53   //看端口啓了沒

7.測試驗證
client:10.1.1.3          臨時更改:#ifconfig eth0 10.1.1.3/24
www.misshou.io 192.168.1.254
先指定DNS服務器❤
[root@client ~]# echo nameserver 10.1.1.2 > /etc/resolv.conf 
[root@client ~]# cat /etc/resolv.conf 
nameserver 10.1.1.2
 
第一個命令nslookup
[root@client 桌面]# nslookup www.misshou.io
Server:		10.1.1.2
Address:	10.1.1.2#53

Name:	www.misshou.io
Address: 192.168.1.254

 —————————— ——————————
[root@client ~]# which nslookup
/usr/bin/nslookup
[root@client ~]# rpm -qf /usr/bin/nslookup
bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64
[root@client ~]# nslookup www.misshou.io
Server:     10.1.1.2
Address:    10.1.1.2#53
 
Name:   www.misshou.io
Address: 192.168.1.254
  —————————— ——————————
  
第二個命令dig
[root@client ~]# dig @10.1.1.2 www.misshou.io
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @10.1.1.2 www.misshou.io
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22390
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.misshou.io.            IN  A
 
;; ANSWER SECTION:
www.misshou.io.     86400   IN  A   192.168.1.254
 
;; AUTHORITY SECTION:
misshou.io.     86400   IN  NS  dns1.misshou.io.
 
;; ADDITIONAL SECTION:
dns1.misshou.io.    86400   IN  A   10.1.1.2
 
;; Query time: 1 msec
;; SERVER: 10.1.1.2#53(10.1.1.2)
;; WHEN: Wed Apr 24 18:36:41 2019
;; MSG SIZE  rcvd: 83
 
第三個命令host
[root@client ~]# host www.misshou.io
www.misshou.io has address 192.168.1.254
 
結果:
1.看到以上信息說明正向解析沒問題
2.不能反向解析是因爲沒有配置
3.如果配置文件沒有錯誤,服務也啓動了,還是不能解析,那麼檢查防火牆、selinux和網絡

需求2: 搭建DNS服務器實現正向反向解析192.168.1.254 ——》 www.misshou.io
步驟:

搭建DNS服務器實現正向反向解析192.168.1.254 ——》 www.misshou.io
步驟:                     (需求3已清空需求1和需求2的環境)
1.修改配置文件(在上午的基礎上)
/etc/named.conf     主配置文件 全網監聽,任意訪問,兩個any 
/etc/named.rfc1912.zones    定義了一個misshou.io正向域,再定義一個反向域
增加以下內容:
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.zone";
        allow-update { none; };
};

2.創建反向192.168.1.zone文件,放到/var/named/目錄裏
[root@server ~]# cp -p /var/named/named.loopback /var/named/192.168.1.zone
[root@server ~]# vim /var/named/192.168.1.zone 
[root@server ~]# cat /var/named/192.168.1.zone 
$TTL 1D                             //rname.invalid表郵箱
@   IN SOA  misshou.io. rname.invalid. (     //@表當前域,IN表互聯網,SOA表開始授權,開始給misshou.io域授權,在/etc/named.rfc1912.zones下定義的域
              	      0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
@   NS  abc.misshou.io.    //代表dns服務器名字 //如果abc.misshou.io在正向區域文件存在,就可以不寫下面A記錄 。意思就是 如果寫 dns1.misshou.io,則DNS服務器的A記錄可以不寫
abc A   10.1.1.2            // DNS服務器地址, 這個abc跟上面正向配置時說的一樣,隨便寫,反正兩行要對應
254 PTR www.misshou.io.     //192.168.1. (這個對應在/etc/named.rfc1912.zones寫好了)   
                            //misshou.io. 最後這個. 不能省略

3.重啓服務
[root@server ~]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]

4.客戶端測試驗證
[root@client ~]# dig -x 192.168.1.254 @10.1.1.2
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -x 192.168.1.254 @10.1.1.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61276
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
 
;; QUESTION SECTION:
;254.1.168.192.in-addr.arpa.    IN  PTR
 
;; ANSWER SECTION:
254.1.168.192.in-addr.arpa. 86400 IN    PTR www.misshou.io.
 
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400   IN  NS  abc.misshou.io.
 
;; Query time: 1 msec
;; SERVER: 10.1.1.2#53(10.1.1.2)
;; WHEN: Thu Apr 25 08:18:46 2019
;; MSG SIZE  rcvd: 90
 ——————————————————————————————————————————————————————————————————
如果用nslookup不行的話,需重新指定dns服務器echo nameserver 10.1.1.2 > /etc/resolv.conf
[root@client ~]# echo nameserver 10.1.1.2 >/etc/resolv.conf 
[root@client ~]# cat /etc/resolv.conf 
nameserver 10.1.1.2
[root@client ~]# nslookup www.misshou.io     ❤
Server:     10.1.1.2
Address:    10.1.1.2#53
 
Name:   www.misshou.io
Address: 192.168.1.254

[root@client ~]# nslookup
> server
Default server: 10.1.1.2
Address: 10.1.1.2#53
> 192.168.1.254
Server:     10.1.1.2
Address:    10.1.1.2#53
 
254.1.168.192.in-addr.arpa  name = www.misshou.io.
[root@client ~]# nslookup 192.168.1.254     ❤   
Server:     10.1.1.2
Address:    10.1.1.2#53
 
254.1.168.192.in-addr.arpa  name = www.misshou.io.


兩個any   第一個any,對客戶端來說,不管寫服務器哪個的網卡地址 都能解析 全網監聽。
 第二個any,是任何人都可以

需求3:(總和)

搭建一個DNS服務器
1.正向解析
bbs.test.org ——》172.16.10.110
www.momowu.cc ——》192.168.0.254
2.反向解析
將以上的IP反向解析
DNS-server:10.1.1.2
步驟:
1.修改主配置文件 /etc/named.conf   (兩個any2.修改子配置文件 /etc/named.rfc1912.zones ——》定義DNS管理的域
在該文件的後面增加如下內容
zone "test.org" IN {
	type master;
	file "test.org.zone";
	allow-update { none; };
};

zone "momowu.cc" IN {
	type master;
	file "momowu.cc.zone";
	allow-update { none; };
};

zone "10.16.172.in-addr.arpa" IN {
	type master;
	file "172.16.10.zone";
	allow-update { none; };
};

zone "0.168.192.in-addr.arpa" IN {
	type master;
	file "192.168.0.zone";
	allow-update { none; };
};

3./var/named裏創建相應的區域文件
//清空之前的環境,還有上面的zone也要清空   6dd  因爲配置了,又找不到解析,會報錯
[root@server named]# cd /var/named       //清空需求1和需求2的環境
[root@server named]# rm -f 192.168.1.zone misshou.io.zone

//創建相應的區域文件
[root@server named]# cp -p named.localhost momowu.cc.zone
[root@server named]# cp -p named.localhost test.org.zone
[root@server named]# cp -p named.loopback 192.168.0.zone
[root@server named]# cp -p named.loopback 172.16.10.zone
//修改區域文件

當請求bbs.test.org時域名對應的IP是什麼,就會查詢 /var/named/test.org.zone記錄
bbs A 172.16.10.11010.1.1.2dns服務器要,服務器迴應172.16.10.110

[root@server named]# vim test.org.zone 
[root@server named]# vim momowu.cc.zone
[root@server named]# vim 172.16.10.zone
[root@server named]# vim 192.168.0.zone
四個:
$TTL 1D
@	IN SOA	test.org. rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@	NS	a.test.org.
a	A	10.1.1.2
bbs	A	172.16.10.110

$TTL 1D
@	IN SOA	momowu.cc. rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@	NS	b.momowu.cc.
b	A	10.1.1.2
www	A	192.168.0.254

$TTL 1D
@	IN SOA	test.org. rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@	NS	a.test.org.  //代表dns服務器名字。如果a.test.org在正向區域文件存在,就可以不寫下面A記錄 。
// a   A   10.1.1.2
110	PTR	bbs.test.org.

$TTL 1D
@	IN SOA	momowu.cc rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@	NS	b.momowu.cc.
254	PTR	www.momowu.cc.

————————————————————————————————————————————————————————————

4.重啓服務
#service named restart
CLIENT
[root@client ~]# echo nameserver 10.1.1.2 >/etc/resolv.conf 
如果用nslookup不行的話,需重新指定dns服務器echo nameserver 10.1.1.2 > /etc/resolv.conf

5.測試驗證
[root@client ~]# cat /etc/resolv.conf 
[root@client 桌面]# nslookup 192.168.0.254
Server:		10.1.1.2
Address:	10.1.1.2#53

254.0.168.192.in-addr.arpa	name = www.momowu.cc.

[root@client 桌面]# nslookup 172.16.10.110
Server:		10.1.1.2
Address:	10.1.1.2#53

110.10.16.172.in-addr.arpa	name = bbs.test.org.

[root@client 桌面]# nslookup bbs.test.org
Server:		10.1.1.2
Address:	10.1.1.2#53

Name:	bbs.test.org
Address: 172.16.10.110

[root@client 桌面]# nslookup www.momowu.cc
Server:		10.1.1.2
Address:	10.1.1.2#53

Name:	www.momowu.cc
Address: 192.168.0.254

[root@client 桌面]# nslookup 172.16.10.110
Server:		10.1.1.2
Address:	10.1.1.2#53

110.10.16.172.in-addr.arpa	name = bbs.test.org.

[root@client 桌面]# nslookup 192.168.0.254
Server:		10.1.1.2
Address:	10.1.1.2#53

254.0.168.192.in-addr.arpa	name = www.momowu.cc.

 
 

主從DNS搭建
用於客戶端:防止主DNS服務器掛掉,就用從服務器來解析,從服務器會定期同步主服務器的數據。
1.搭建時間同步服務器
版本相同的系統,系統時間也得一致
ntp(network time protocol)端口:123
服務端:ntp.x86_64
客戶端:ntpdate

方法一:依賴於外網,同步時間有延遲
SSERVER 10.1.1.2
#rpm -q ntp
#rpm -ql ntp
#vim /etc/ntp.conf
restrict 10.1.1.0 mask 255.255.255.0 nomodify notrap //允許10.1.1.0/24網段的主機同步時間
#service ntpd start
#netstat -nltpu|grep httpd //端口123

CLIENT 10.1.1.3
#ntpdate 10.1.1.2

上面先定義好,然後
//服務器本身上外網 纔可以直接同步。 方法一:要上外網

方法二:用於局域網中
SERVER (時間同步服務器) 10.1.1.2
#rpm -q xinetd
#yum -y install xinetd
#vim /etc/xinetd.d/time-dgram

disable = no
#vim /etc/xinetd.d/time-stream

disable = no

#service xinetd start
#netstat -nltup|grep 37

CLIENT (就相當於是主從服務器) 10.1.1.3
#date
#date -s “2010-10-10 11:11:11”
#rpm -qf /usr/bin/rdate
#rdate -s 10.1.1.2

2.部署安裝
環境:
master-dns 10.1.1.2
slave-dns 10.1.1.3
ntp-server 10.1.1.4
思路:
  master和slaved 的系統時間保持一致
  slave服務器上安裝相應的軟件(系統版本、軟件版本高度保持一致)
  根據需求修改相應的配置文件(master和slave都應該修改)

步驟:

1.同步master和slave時間 (每隔2分鐘同步一次)
[root@master-dns ~]# crontab -e
*/2 * * * * /usr/bin/rdate -s 10.1.1.4 &>/dev/null  //編輯這行內容
             // &>/dev/null 表示不保留任何輸出 即同步出錯,不想要這個結果,直接扔到 null文件
//liunx中“&>" 一般一個搜索命令有標準輸出和標準錯誤輸出,也就是”>"和“2>" 這兩個的結合體就是 ”&>" 
//結果就是你輸入命令,正確和錯誤信息都不輸出在屏幕上直接輸到你重定向的一個文件內。

2.以下操作在slave上進行:
搭建一個備用的dns服務器
1)安裝軟件yum -y install bind
2)修改配置文件
vim /etc/named.conf  兩個any+  dnssec-enable no; dnssec-validation no;
3)修改子配置文件
vim /etc/named.rfc1912.zones
//添加 2個正向,主DNS有兩正兩反,想增加幾個就幾個
zone "test.org" IN {type slave;                 //類型是slave
        masters { 10.1.1.2; };      //指定master dns的IP地址
        file "slaves/slave.test.org";   //同步過來的文件的保存路徑及名字
};  //在主服務器的 /etc/named.conf 已經定義好了主目錄,所以默認就會去 /var/named主目錄去找slaves目錄
            //slaves/xxx
zone "momowu.cc" IN {
        type slave;
        masters { 10.1.1.2; };
        file "slaves/slave.momowu.cc";
};

3.在master上操作
/etc/named.conf
/etc/namde.rfc1912.zones
刪除此文件下第2步裏面的兩個域的allow-update {none};

4.在master和salve上都重啓服務
#service named start    //master和slave都要
到slave-dns裏打開/var/named/salves查看
SLAVE:
#cd slaves/
#ll

5.測試驗證
client:10.1.1.4        //是測試機 也是 時間同步服務器
[root@ntp-server ~]# echo nameserver 10.1.1.2 > /etc/resolv.conf 
[root@ntp-server ~]# echo nameserver 10.1.1.3 >> /etc/resolv.conf 
[root@ntp-server ~]# cat /etc/resolv.conf 
nameserver 10.1.1.2
nameserver 10.1.1.3
[root@ntp-server ~]# nslookup bbs.test.org
Server:     10.1.1.2        //master
Address:    10.1.1.2#53

Name:   bbs.test.org
Address: 172.16.10.110
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在master上停掉named服務
[root@ntp-server ~]# nslookup bbs.test.org
Server:     10.1.1.3        //slave
Address:    10.1.1.3#53

Name:   bbs.test.org
Address: 172.16.10.110

❤默認按客戶端指定nameserver的順序

掛斷master反向無法解析,因爲slave上沒有同步反向解析

思考:如果只允許指定的slave來同步數據怎麼做?
MASTER:
#vim /etc/named.conf
allow-transfer { 10.1.1.3; }; 只允許這個slave來同步

補充:
/etc/hosts 主機名或者域名的解析
IP hostname

@ 是當前域。所謂當前域就是在 /etc/named.rfc1912.zones 所定義的域
但創建很多DNS後,比較難區分,易混淆。  按照之前寫的就比較清晰

總結:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章