(十二天)

上午
samba nfs 都是用于局域网
1 、安装 samba 软件
1 )关闭防火墙与 selinux
[root@samba ~]# systemctl stop firewalld
[root@samba ~]# setenforce 0
[root@samba ~]# systemctl disable firewalld
[root@samba ~]# vim /etc/selinux/config
2 )配置网络
[root@samba ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none // 修改为 none
IPADDR=10.0.0.15
NETMASK=255.0.0.0
GATEWAY=10.0.0.2
DNS1=8.8.8.8
DNS2=114.144.114.114
# 修改 uuid 的目的是为了保证网络服务的唯一性
[root@samba ~]# systemctl restart network // 重启网络服务
[root@samba ~]# ping www.baidu.com // 测试网络配置
PING www.a.shifen.com (180.101.50.242) 56(84) bytes of data.
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=1 ttl=128 time=29.6
ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=2 ttl=128 time=26.4
ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=4 ttl=128 time=32.8
ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 3003ms
rtt min/avg/max/mdev = 26.458/29.653/32.852/2.614 ms
3 )创建自建库,安装 samba
[root@samba ~]# yum -y install --downloadonly --downloaddir=./soft/ samba
// 下载 samba 安装包
创建仓库文件
[root@samba ~]# yum -y install createrepo // 安装 createrepo
[root@samba ~]# createrepo ./soft/ // 调用 createrepo 指令创建仓库文件
[root@samba ~]# vim /etc/yum.repos.d/samba.repo // 创建 repo 文件
[samba]
name=samba
baseurl=file:///root/soft/
gpgcheck=0
enable=1
[root@samba ~]# yum clean all // 建立缓存
[root@samba ~]# yum makecache
[root@samba ~]# yum -y install samba // 安装 samba
[root@samba ~]# yum liat install | grep samba // 检查是否安装以及安装的文件
[root@samba ~]# rpm -qa | grep samba
[root@samba ~]# rpm -ql samba
2 、配置 samba 服务器
1 )创建共享目录
[root@samba ~]# mkdir /share
2 )配置文件
[root@samba ~]# vim /etc/samba/smb.conf
[smb_share]
comment = smb share server
path = /share/
guest ok = no
writable = yes
3 )创建账号密码
[root@samba ~]# useradd user01
[root@samba ~]# smbpasswd -a user01
New SMB password:123
Retype new SMB password:123
Added user user01.
4 )启动服务 nmb smb
[root@samba ~]# systemctl start nmb.service
[root@samba ~]# systemctl start smb.service
3 、使用 windows samba 客户端访问 samba 服务器
1 )搜索 启动或关闭 windows 功能 ,勾选 SMB 功能
2 )点击 映射网络驱动器
3 )输入文件夹位置,点击 完成
4 )输入用户名与密码
5 )发现无权限执行写操作
6 )赋予用户 user01 拥有读写执行操作
[root@samba ~]# setfacl -m u:user01:rwx /share
7 )可以创建文件与目录并实时同步
4 、使用 linux samba 客户端访问 samba 服务器
1 )下载 samba-client 软件
[root@sambaclient ~]# yum -y install samba-client
2 )访问 samba 服务器
[root@sambaclient ~]# smbclient -L 10.0.0.15 -U user01
[root@sambaclient ~]# smbclient //10.0.0.15/smb_share -U user01
5 、挂载 cifs smb
1 )下载 cifs-utils 软件
[root@sambaclient ~]# yum -y install cifs-utils
2 )创建挂载目录并进行挂载
[root@sambaclient ~]# mkdir /root/samba
[root@sambaclient ~]# mount.cifs -o user=user01,pass=123 //10.0.0.15/smb_share
/root/samba
3 )查看挂载内容并创建一个文件
[root@sambaclient ~]# ls samba/
windows 哈哈 .txt
[root@sambaclient ~]# touch samba/windows/xixi.txt
[root@samba ~]# ls /share/windows/
xixi.txt
6 、为什么要安装配置 DNS 服务器
1 、我们已经可以通过 ip 地址访问 web 主机上发布的 web 服务
2 http://10.0.0.30 访问其他主机上发布的 80 端口的服务
3 、我们觉得 ip 本身无意义,我们需要有一个有语义的符号去标识 ip ,方便记忆和使用
4 dns 出现了
5 、当客户端要访问其他主机提供的服务,首先获取该主机的域名,然后将这个域名交给 dns 服务器
解析为 ip ,然后拿到 dns 服务器返回的 ip ,根据 ip 访问目标主机
6 、最终访问主机,我们使用唯一标识,就是 ip 地址
7 、多了一个第三方,的确是降低了效率,但是让网络环境更加的人性化,也让开发者更加模块化的
开发网络环境,因为域名是有语义的。
要求:
下午建立 dns 服务器,解析内网域名,能够访问内网 web 应用
7 DNS 的作用
DNS Domain Name System ,域名系统) 的主要作用是将易于人类理解和记忆的域名转换为计
算机能够理解和处理的 IP 地址。
以下是 DNS 作用的具体体现:
1. 实现域名到 IP 地址的解析 :当用户在浏览器中输入一个域名(如 www.example.com )时,
DNS 会将其转换为对应的 IP 地址(如 192.168.0.1 ),以便计算机能够找到并连接到正确的服
务器来获取所需的网页或服务。
例如,您想访问淘宝网站,输入的是 taobao.com 这个域名, DNS 就会将其解析为对应的 IP
地址,让您的设备能够与淘宝的服务器建立连接。
2. 提高网络访问的效率 :通过缓存已经解析过的域名和 IP 地址的对应关系,当再次访问相同的域
名时,可以直接从缓存中获取 IP 地址,减少了解析的时间和网络开销。
3. 分布式的架构保证可靠性 DNS 系统采用分布式的架构,避免了单点故障。即使某个 DNS
务器出现问题,其他服务器仍可以提供服务。
4. 支持域名的层次结构 :使得域名的管理和分配更加灵活和易于扩展。
总之, DNS 在互联网中起着至关重要的作用,它使得用户能够方便地通过域名访问各种网络资源,
而无需记住复杂的 IP 地址。
将域名正向解析为 IP A 记录
DNS IP 反向解析域名 PTR 反向解析
8 DNS 的结构
从右向左解析 在整个 DNS 系统的最上方一点是 ., 这个 dns 服务器称为 root ,也叫根域, 共有 13 个根
域,一个为主根域服务器在美国,其余 12 个为辅根域,美国 9 个,欧洲 2 个英国和瑞典,亚洲一个,位于
日本。
一级域名 国家域名 顶级域名
com edu gov org cc io cn uk us ru ja ko
com 商业公司 net 互联网公司 edu 教育 , 学校
gov 政 府 部 门 io 存储设备
cn|uk|us|hk|t w 国 家 域
二 级 域 名 自 己 购 买 域 名
qq.com baidu.com
购 买 域 名 的 机 构
新 网 万 网 ( 阿 里 云 )
9 、创建 dns 测试环境
1 web.li 10.0.0.10 发布并且管理 web 服务
2 dns.li 10.0.0.11 提供 dns 域名解析服务
3 lib.li 10.0.0.12 模拟客户端主机
1 、修改 hostname
2 、关闭 firewalld selinux
3 、设置静态 ip 地址
web:
[root@dns ~]# hostnamectl set-hostname web.li
[root@dns ~]# hostname
web.li
[root@dns ~]# systemctl stop firewalld
[root@dns ~]# systemctl disable firewalld
[root@dns ~]# setenforce 0
[root@dns ~]# vim /etc/selinux/config
SELINUX=disabled
[root@dns ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=10.0.0.10
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=8.8.8.8
DNS2=114.114.114.114
dns:
[root@dns ~]# hostnamectl set-hostname dns.li
[root@dns ~]# hostname
dns.li
[root@dns ~]# systemctl stop firewalld
[root@dns ~]# systemctl disable firewalld
[root@dns ~]# setenforce 0
[root@dns ~]# vim /etc/selinux/config
SELINUX=disabled
[root@dns ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=10.0.0.11
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=8.8.8.8
DNS2=114.114.114.114
lib:
[root@dns ~]# hostnamectl set-hostname lib.li
[root@dns ~]# hostname
lib.li
[root@dns ~]# systemctl stop firewalld
[root@dns ~]# systemctl disable firewalld
[root@dns ~]# setenforce 0
[root@dns ~]# vim /etc/selinux/config
SELINUX=disabled
[root@dns ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=10.0.0.12
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=8.8.8.8
DNS2=114.114.114.114
下午
1 、配置 web 主机
[root@web ~]# yum -y install nginx // 下载 nginx 软件包
[root@web ~]# rpm -qa | grep nginx // 查看 nginx 安装的所有软件包
[root@web ~]# rpm -ql nginx // 查看 nginx 安装的所有的有关文件
[root@web ~]# echo "i am web server marjor is web static file manager" >
/usr/share/nginx/html/index.html // 修改 html 文件
[root@web ~]# nginx // 启动服务
使用浏览器访问 web 网页,测试页面如下所示:
2 、使用客户端访问 web 网页
[root@lib ~]# curl http://10.0.0.10:80
i am web server marjor is web static file manager
[root@lib ~]# yum -y install elinks.x86_64
[root@lib ~]# elinks
q 退出
3 、安装部署 DNS 服务器
1 )安装 bind 软件
[root@dns ~]# yum list | grep bind // 查询 yum 仓库所有的有关 bind 的软件包
[root@dns ~]# yum -y install bind.x86_64 // 下载 bind 软件
[root@dns ~]# rpm -ql bind // 获取 bind 配置文件
/etc/named.conf
/etc/named.rfc1912.zones
2 )备份主要文件
[root@dns ~]# cp /etc/named.conf /etc/named.conf.bak
[root@dns ~]# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
3 )修改配置文件
/etc/named.conf
主要配置访问权限控制
配置哪些主机可以访问 dns 服务器
/etc/named.rfc1912.zones
主要定义域名如何解析,正向解析,解析到具体的 ip 地址
[root@dns ~]# vim /etc/named.conf // 修改管理权限 添加两个 any ,所有主机都可以访问
[root@dns ~]# vim /etc/named.rfc1912.zones // 配置域名解析文件 ( 文件末尾添加以下
内容 )
zone "haha.lijiaqi" IN {
type master;
file "haha.lijiaqi.zone";
allow-update { none; };
};
[root@dns ~]# cp -p /var/named/named.localhost /var/named/haha.lijiaqi.zone
// 注意将权限全部复制, -p 保持文件原属性赋值
[root@dns ~]# vim /var/named/haha.lijiaqi.zone // 在最后一行按 o 加入即可
www A 10.0.0.10
[root@dns ~]# named-checkconf /etc/named.conf // 检查配置文件
[root@dns ~]# named-checkconf /etc/named.rfc1912.zones
[root@dns ~]# cd /var/named/
[root@dns named]# named-checkzone haha.lijiaqi.zone haha.lijiaqi.zone
zone haha.lijiaqi.zone/IN: loaded serial 0
OK
[root@dns named]# systemctl restart named // 重启 named 服务
4 )客户端测试
[root@lib ~]# echo "nameserver 10.0.0.11" > /etc/resolv.conf // 临时添加,重启
network 就还原了
[root@lib ~]# ping www.haha
PING www.haha (10.0.0.10) 56(84) bytes of data.
64 bytes from 10.0.0.10 (10.0.0.10): icmp_seq=1 ttl=64 time=0.564 ms
64 bytes from 10.0.0.10 (10.0.0.10): icmp_seq=2 ttl=64 time=0.365 ms
^C
--- www.haha ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.365/0.464/0.564/0.101 ms
[root@lib ~]# elinks
4 DNS 工作原理与 dig 工具
DNS 域名解析都是 udp/53, 主从之间的数据传输默认使用 tcp/53
查询方式
1. 递归查询,逐级查询,一次到位,但是速度慢
2. 迭代查询,多次查询一个地址,可以缓存
一次递归,多次迭代
dig 下载与使用:
yuminstallbind-utils
dig domaininformationgroper 的缩写,它是一种用于查询 DNS (域名系统)信息的命令行
工具。可以用来探测 DNS 服务器并解决与 DNS 服务器相关的问题,常用于测试域名系统工作是否正
常。其命令的基本语法为: dig(@global-server)(domain)(q-type)(q-class){q-opt}
{global-d-opt}host(@local-server){local-d-opt} 。常用的参数如下:
-b :当主机具有多个 IP 地址时,指定使用本机的哪个 IP 地址向域名服务器发送域名查询请求;
-f :指定 dig 以批处理的方式运行,指定的文件中保存着需要批处理查询的 DNS 任务信息;
-p :指定域名服务器所使用端口号;
-t :指定要查询的 DNS 数据类型;
-x :执行逆向域名查询;
-4 :使用 ipv4
-6 :使用 ipv6
-h :显示指令帮助信息。
例如,直接查询一个域名的 A 记录可以使用以下命令: digwww.163.com ;递归解析并显示完整的
查询记录可以使用: digwww.163.com+trace
dig 解析域名
[root@localhost ~]# dig www.baidu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36090
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 5 IN CNAME www.a.shifen.com. www.a.shifen.com. 5 IN A
180.101.50.188 www.a.shifen.com. 5 IN A 180.101.50.242 反向解析
;; Query time: 78 msec
;; SERVER: 192.168.83.2#53(192.168.83.2)
;; WHEN: 7 22 23:11:22 CST 2024
;; MSG SIZE rcvd: 90
反向解析
[root@localhost ~]# dig -x 180.101.50.188
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> -x
180.101.50.188
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 6416
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0,
ADDITIONAL: 0
;; QUESTION SECTION:
;188.50.101.180.in-addr.arpa. IN PTR
;; Query time: 73 msec
;; SERVER: 192.168.83.2#53(192.168.83.2)
;; WHEN: 7 22 23:16:32 CST 2024
;; MSG SIZE rcvd: 45
  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第二十二天的算法训练营主要涵盖了Leetcode题目中的三道题目,分别是Leetcode 28 "Find the Index of the First Occurrence in a String",Leetcode 977 "有序数组的平方",和Leetcode 209 "长度最小的子数组"。 首先是Leetcode 28题,题目要求在给定的字符串中找到第一个出现的字符的索引。思路是使用双指针来遍历字符串,一个指向字符串的开头,另一个指向字符串的结尾。通过比较两个指针所指向的字符是否相等来判断是否找到了第一个出现的字符。具体实现的代码如下: ```python def findIndex(self, s: str) -> int: left = 0 right = len(s) - 1 while left <= right: if s[left == s[right]: return left left += 1 right -= 1 return -1 ``` 接下来是Leetcode 977题,题目要求对给定的有序数组中的元素进行平方,并按照非递减的顺序返回结果。这里由于数组已经是有序的,所以可以使用双指针的方法来解决问题。一个指针指向数组的开头,另一个指针指向数组的末尾。通过比较两个指针所指向的元素的绝对值的大小来确定哪个元素的平方应该放在结果数组的末尾。具体实现的代码如下: ```python def sortedSquares(self, nums: List[int]) -> List[int]: left = 0 right = len(nums) - 1 ans = [] while left <= right: if abs(nums[left]) >= abs(nums[right]): ans.append(nums[left ** 2) left += 1 else: ans.append(nums[right ** 2) right -= 1 return ans[::-1] ``` 最后是Leetcode 209题,题目要求在给定的数组中找到长度最小的子数组,使得子数组的和大于等于给定的目标值。这里可以使用滑动窗口的方法来解决问题。使用两个指针来表示滑动窗口的左边界和右边界,通过移动指针来调整滑动窗口的大小,使得滑动窗口中的元素的和满足题目要求。具体实现的代码如下: ```python def minSubArrayLen(self, target: int, nums: List[int]) -> int: left = 0 right = 0 ans = float('inf') total = 0 while right < len(nums): total += nums[right] while total >= target: ans = min(ans, right - left + 1) total -= nums[left] left += 1 right += 1 return ans if ans != float('inf') else 0 ``` 以上就是第二十二天的算法训练营的内容。通过这些题目的练习,可以提升对双指针和滑动窗口等算法的理解和应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值