Linux复习笔记(二) 网络服务配置(samba /DNS)
遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。
二、网络服务配置
2.1Samba服务
协议基础
- Samba基于SMB/CIFS协议(Server Message Block / Common Internet File System),该协议用于实现局域网内跨平台的文件、打印机共享及网络资源访问,其核心是通过模拟Windows的网络邻居功能,使Linux/Unix系统与Windows系统无缝通信
核心进程:
- smbd:使用SMB协议提供文件共享和打印服务。smbd服务还负责资源锁定和验证连接的用户的工作。smbd服务可以systemd进程进行启动和停止。
- nmbd:使用基于IPv4的NetBIOS协议提供主机名和IP解析服务。除了名称解析之外,nmbd服务还允许浏览SMB网络查找域、工作组、主机和打印机等信息。nmbd服务systemd进程将启动和停止。
工作流程:
- 协议协商:客户端发送支持的SMB版本,服务器确认协议兼容性
- 身份认证:用户凭据验证(如用户名/密码)
- 资源访问:客户端挂载共享目录或访问打印机,smbd处理读写请求
2.1.1 Samba常用配置文件示例(掌握)
要求:对于给的配置文件要会看,并且会按要求给出配置代码
配置文件(/etc/samba/smb.conf
)
全局配置(Global Settings):
[global]
workgroup = WORKGROUP # 工作组名(需与Windows一致)
security = user # 安全模式(user需认证)
map to guest = bad user # 匿名访问处理
log file = /var/log/samba/log.%m # 日志路径
共享定义(Share Definition):
[public]
path = /srv/samba/share # 共享目录路径
browsable = yes # 允许浏览
writable = yes # 可写权限
guest ok = yes # 允许匿名访问
valid users = user1,user2 # 限制特定用户访问
2.1.2 全局配置参数及作用表(重点看蓝色)
参数 | 说明 |
---|---|
Workgroup=MYGROUP | 设置工作组名称,要求 Windows 主机的工作组必须与之同名 。这确保了 Samba 服务器与 Windows 主机在同一个逻辑工作环境中,方便资源共享与访问。 |
Server string = Samba Server %v | SMB 服务器的描述字段,其中参数 % v 会被替换为实际的 SMB 版本号。这主要用于在网络中标识服务器,方便用户识别服务器的用途和版本信息。 |
netbios name = MySamba | 定义在 Windows 系统中显示出来的计算机名称。Windows 通过 NetBIOS 协议识别网络中的计算机,此名称用于在 Windows 网络邻居等界面展示 Samba 服务器,方便用户找到对应的服务器。 |
security = user | 指定 Samba 服务器对用户的验证方式。可选值有: - user:用户访问 Samba 资源时需要提供账户和密码进行身份验证,这是最常用的方式,安全性较高,能控制不同用户对资源的访问权限。 - share:不需要提供用户名和密码,只要知道共享资源路径就可访问,这种方式安全性较低,适用于对安全性要求不高的公共共享场景。 - server:使用独立的远程主机来验证账户,如果认证失败,将自动切换为 user 方式进行验证。 - domain:借助主域控制器来完成用户认证,适用于企业中已经存在域环境的情况。 |
passdb backend = tdbsam | 规定用户密码的存储方式。可选值包括: - tdbsam:使用数据库文件(默认文件名为 passdb.tdb,存储在 /etc/samba 目录下 )来建立用户数据库,这是一种常用的本地密码存储方式,方便管理本地 Samba 用户。 - smbpasswd:通过 smbpasswd 命令为系统用户设置 Samba 密码,客户端使用该密码访问资源,相关文件默认也在 /etc/samba 目录下。 - ldapsam:基于 LDAP(轻量级目录访问协议)的账户管理方式来验证用户,适用于企业已经部署 LDAP 服务器进行用户管理的场景。 |
smb passwd file = /etc/samba/smbpasswd | 定义 Samba 用户的密码文件。如果该文件不存在,需要手动创建。这个文件专门用于存储 Samba 用户的密码信息,是 Samba 进行用户身份验证的重要依据。 |
参数 | 说明 |
---|---|
log file = /var/log/samba/log.%m | 用于指定 Samba 服务器日志文件的存储位置和命名规则 。其中 % m 会被替换为客户端主机名,这样便于区分不同客户端与 Samba 交互产生的日志信息,方便排查问题和进行管理。 |
max log size = 50 | 设置 Samba 日志文件的最大容量为 50KB 。当日志文件达到这个大小后,可能会进行滚动更新等操作(具体策略还涉及其他相关配置),避免日志文件无限增大占用过多磁盘空间。 |
max connections = 0 | 用来指定能够连接到 Samba Server 的最大连接数目 。这里设置为 0 表示不限制连接数。在实际应用中,若服务器性能有限,可设置合适的数值来防止过多连接导致服务器性能下降。 |
encrypt passwords = yes | 表示开启认证密码加密功能 。在网络传输过程中,对用户密码进行加密能提高安全性,防止密码被窃取和破解,是保障 Samba 服务安全的重要设置。 |
load printers = yes | 意味着在启动 Samba 服务时,会自动共享打印机 。如果网络中有共享打印需求,开启此选项可方便用户通过 Samba 访问共享打印机进行打印操作。 |
printcap name = cups | 用于设置共享打印机的配置文件为 cups 。cups(Common Unix Printing System)是 Unix 系统上常用的打印系统,通过指定这个配置文件,Samba 能正确获取打印机相关配置信息来实现共享打印功能。 |
cups options = raw | 是关于打印机的选项设置 。这里设置为 raw 可能表示以原始数据格式进行打印相关操作,不同的选项会影响打印机的工作方式和数据处理方式。 |
hosts allow = 192.168.86.0/24 | 表示允许连接到 Samba Server 的客户端范围 。此例中允许 192.168.86.0 这个网段(子网掩码为 255.255.255.0 ,即 / 24 表示的网段)内的客户端连接。与之对应的 hosts deny 则是用来设置拒绝连接的客户端范围。通过这两个参数可灵活控制 Samba 服务的访问权限,保障服务安全。 |
hosts allow = host_list:允许连接到Samba Server的客户端;host_list可取值
- hosts allow=172.17.2.EXCEPT172.17.2.50:表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50;
- hosts allow=172.17.2.0/255.255.0.0,表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接;
- hosts allow=M1,M2,表示容许来自M1和M2两台计算机连接;
- hosts allow=@xq,表示容许来自XQ网域的所有计算机连接。
2.1.3 共享配置参数
参数 | 说明 |
---|---|
comment = Home Directories | 对该共享的描述,可填写任意字符 |
path = /share/manager | 设置共享目录路径。/share/% u 会自动创建并共享 /share 目录下以用户名命名的目录;/share/% m 会自动创建并共享 /share 下以客户机主机名命名的目录 |
available = yes | 指定该共享是否可用,yes 表示可用 |
browseable = yes | 指定该共享资源是否可以被浏览,yes 表示可浏览 |
valid users = bobyuan,@bob | 指定允许访问该共享资源的用户,@groupName 表示组内用户 |
admin users = bobyuan,jane | 指定该共享的管理员,这些管理员对共享具有完全控制权限 |
writable = yes | 指定该共享路径是否可写,yes 表示可写 |
read only = no | 是否只读,no 表示不是只读(默认值 ) |
write list = username,@group | 拥有读取和写入权限的用户和组,以 @开头表示组 |
create mask = 0700 | 默认创建文件的权限 |
directory mask = 0700 | 默认创建目录的权限 |
printable = yes | 是否允许打印 |
2.1.4 samba中的常见内置变量
变量 | 含义 | 变量 | 含义 |
---|---|---|---|
%v | samba 服务器版本 | %m | 客户端 Netbios 主机名 |
%S | 任意用户 | %u | 当前登录用户名 |
%L | 服务器端 Netbios 主机名 | %g | 当前登录用户组名 |
%h | samba 服务器主机名 | %U | 当前对话用户名 |
2.2DNS服务
DNS(Domain Name System) 是互联网的核心服务,负责将人类可读的域名(如 www.example.com
)转换为机器可识别的 IP 地址(如 192.0.2.1
)。它的核心功能包括:
-
域名解析:将域名解析为 IP 地址(正向解析)或 IP 地址解析为域名(反向解析)。
-
负载均衡:通过轮询分配请求到多台服务器。
-
邮件路由:通过 MX 记录指定邮件服务器。
-
服务发现:通过 SRV 记录标识服务位置(如 VoIP、数据库)。
2.2.1 DNS 核心概念
记录类型:
- A 记录:域名 → IPv4 地址。
- AAAA 记录:域名 → IPv6 地址。
- CNAME 记录:域名别名(如
www
→example.com
)。 - MX 记录:邮件服务器地址。
- NS 记录:指定域名由哪些 DNS 服务器解析。
- PTR 记录:IP → 域名(反向解析)。
- TXT 记录:存储文本信息(如 SPF、DKIM 配置)。
DNS 服务器类型:
- 权威服务器:直接管理某个域名的 DNS 记录(如
.com
的根服务器)。 - 递归服务器:为用户查询其他 DNS 服务器(如 ISP 的 DNS 或 Google 的
8.8.8.8
)。
域名层次结构:
根域名(.
) → 顶级域名(.com
、.org
) → 二级域名(example.com
) → 子域名(mail.example.com
)。
DNS服务软件
-
BIND(Berkeley Internet Name Domain):最广泛使用的开源 DNS 服务器。
域名解析:
- 递归查询
- 迭代查询
图片源自网络
2.2.2DNS的配置使用
安装BIND
sudo yum install bind bind-utils
# 或
sudo dnf install bind bind-utils
配置 BIND
BIND 的主配置文件位于/etc/named.conf
,其结构如下:
options {// 全局配置(监听端口、日志等)
};zone "example.com" {// 定义域名解析区域
};zone "2.0.192.in-addr.arpa" {// 定义反向解析区域
};
2.2.3 DNS配置文件(全局配置文件、区域配置文件、正反解析区域声明文件 )
2.2.3.1 全局配置文件 /etc/name.conf
修改 options
配置:
options {listen-on port 53 { any; }; # 允许所有 IP 访问recursion yes; # 启用递归查询allow-query { any; }; # 允许所有客户端查询forwarders {8.8.8.8;8.8.4.4;}; # 指定上游 DNS
};
常用配置项 | 参数解析 |
---|---|
listen - on port 53 {…}; | 设置 named 守护进程监听的 IP 地址和端口。默认监听 127.0.0.1 和 53 端口,回环地址仅能监听本地客户端请求。可通过命令指定监听的 IP 地址,“any” 代表监听任何 IP 地址 |
listen - on - v6 port 53 {…}; | 限定监听 IPv6 的接口 |
directory “ ”; | 用于指定 named 守护进程的工作目录,各区域正反向搜索解析文件和 DNS 根服务器地址列表文件(named.ca)应放在该项目指定的目录中 |
include “…”; | 指定区域配置文件,需根据实际路径和名称修改 |
recursion yes; | 是否允许递归查询,yes 为允许,no 为拒绝 |
allow - query {…}; | 允许 DNS 查询的客户端地址。“any” 代表匹配任何地址,“none” 代表不匹配任何地址,“localhost” 代表匹配本地主机所使用的所有 IP 地址,“localnets” 代表匹配同本地主机相连的网络中的所有主机 |
dnssec - validation yes; | 在 DNS 查询过程中是否使用 DNSSEC 验证,yes 为启用,no 为禁用 |
forward{}; | 用于定义 DNS 转发器。所有非本域和在缓存中无法解析的域名记录,可由指定的 DNS 转发器来完成解析工作并进行缓存 |
zone “.” | 该条目用于指定根服务器的配置信息 |
type hint; | 区域类型。“hint” 代表根域,“master” 代表主域,“slave” 代表从域 |
file “name.ca” | 指定根域的区域配置数据文件。区域数据文件默认保存在 /var/named/ 目录中,该条目代表配置文件的目录在 /var/named/named.ca |
2.2.3.2 区域配置文件
zone "example.com" {type master;file "/etc/bind/zones/example.com.db";allow-transfer { none; }; # 禁止区域传输(生产环境需配置从服务器IP)
};
参数 | 解析 |
---|---|
zone “” IN {} | 指定解析区域,其中.in-addr.arpa 为反向解析区域 |
type master; | 区域类型,hint 代表根域,master 代表主域,slave 代表从域 |
file "named.localhost"; | 指定(正向 / 反向)查询区域的文件 |
allow-update{}; | 用于允许客户端动态更新,none 代表不允许 |
2.2.3.3 正反向区域配置文件
$TTL 1D ; 设置该区域记录的默认生存时间为1天
@ IN SOA dns.jan.cn. root.jan.cn. ( ; 定义起始授权记录,@代表当前区域名称(jan.cn),dns.jan.cn.是主DNS服务器域名,root.jan.cn.是管理员邮箱(用.代替@ )0 ; serial,序列号,用于标识区域文件版本,每次修改区域文件后应递增1D ; refresh,从服务器刷新间隔,1天1H ; retry,从服务器重试间隔,1小时1W ; expire,从服务器过期时间,1周3H ) ; minimum,最小生存时间,3小时NS dns.jan.cn. ; 定义该区域的域名服务器记录,指定dns.jan.cn.为jan.cn区域的域名服务器MX 10 mail ; 定义邮件交换记录,优先级为10,邮件服务器为mail.jan.cn(这里mail省略了后缀,实际为jan.cn区域内的主机 )
dns A 192.168.110.30 ; 定义主机记录,将dns.jan.cn映射到IP地址192.168.110.30
web A 192.168.110.6 ; 定义主机记录,将web.jan.cn映射到IP地址192.168.110.6
dhcp A 192.168.110.10 ; 定义主机记录,将dhcp.jan.cn映射到IP地址192.168.110.10
mail A 192.168.110.58 ; 定义主机记录,将mail.jan.cn映射到IP地址192.168.110.58
www CNAME web ; 定义别名记录,www.jan.cn是web.jan.cn的别名
$TTL 1D ; 设置区域记录的默认生存时间为1天
@ IN SOA 110.168.192.in-addr.arpa. root.jan.cn. ( ; 起始授权记录,@代表区域名,指定主DNS服务器和管理员邮箱0 ; 序列号,每次区域文件更新后应递增1D ; 从服务器刷新间隔,1天1H ; 从服务器重试间隔,1小时1W ; 从服务器过期时间,1周3H ) ; 最小生存时间,3小时NS dns.jan.cn. ; 域名服务器记录,指定该反向解析区域的域名服务器
30 PTR dns.jan.cn. ; 指针记录,将IP地址192.168.110.30映射到域名dns.jan.cn.
6 PTR web.jan.cn. ; 指针记录,将IP地址192.168.110.6映射到域名web.jan.cn.
10 PTR dhcp.jan.cn. ; 指针记录,将IP地址192.168.110.10映射到域名dhcp.jan.cn.
58 PTR mail.jan.cn. ; 指针记录,将IP地址192.168.110.58映射到域名mail.jan.cn.
2.2.4 URL格式解析
完整URL:
https://www.example.com:8080/docs/report.pdf?download=true&version=2#page=3
协议(Scheme):https
- 作用:指定使用加密的HTTP协议,确保数据传输安全
- 扩展:若改为
ftp
则表示文件传输协议,适用于下载场景
主机名(Host):www.example.com
- 作用:标识资源所在的服务器域名,浏览器通过DNS解析为IP地址(如
192.0.2.1
) - 扩展:可包含登录凭证(如
admin:pass@host.com
),但实际因安全风险较少使用
端口(Port)::8080
- 作用:指定服务器监听的非默认端口(HTTP默认80,HTTPS默认443),常用于测试或特殊服务
- 省略情况:若省略则自动使用协议默认端口。
路径(Path):/docs/report.pdf
- 作用:指向服务器上具体资源的物理路径,层级由
/
分隔。本例表示服务器根目录下docs
文件夹中的PDF文件 - 扩展:若路径以
/
结尾(如/docs/
),通常表示目录而非文件
查询参数(Query):?download=true&version=2
- 作用:向服务器传递动态参数,用于过滤或定制资源。本例中:
download=true
:触发文件下载而非在线预览;version=2
:请求第二版文档- 格式规则:参数键值对用
=
连接,多参数以&
分隔。
片段(Fragment):#page=3
- 作用:定位资源内部特定位置,如PDF第3页或网页锚点。仅客户端生效,不发送至服务器