Linux 网络服务
1. Linux 网络服务概览
Linux 网络服务管理关注网络配置、服务监听、访问控制、协议行为和故障排查。常见服务包括 DHCP、Samba、FTP、rsync 和 SSH。
| 服务 | 主要用途 | 常见端口 | 典型场景 |
|---|---|---|---|
| DHCP | 自动分配 IP、网关、DNS 等网络参数 | UDP 67/68 | 局域网地址分配 |
| Samba | 提供 SMB/CIFS 文件共享 | TCP 139/445 | Linux 与 Windows 文件共享 |
| FTP | 文件上传下载 | TCP 20/21 与被动端口范围 | 传统文件传输 |
| rsync | 增量同步文件 | TCP 873 或 SSH 22 | 备份、镜像同步、发布分发 |
| SSH | 远程登录、命令执行、加密传输 | TCP 22 | Linux 远程管理 |
2. DHCP 服务
2.1. DHCP 工作原理
DHCP(Dynamic Host Configuration Protocol)用于为客户端自动分配 IP 地址、子网掩码、网关、DNS 等网络参数。
Discover -> Offer -> Request -> Acknowledgment -> Lease Renewal / Release
| 阶段 | 说明 |
|---|---|
| Discover | 客户端广播寻找可用 DHCP 服务器。 |
| Offer | DHCP 服务器返回可用地址与网络配置。 |
| Request | 客户端选择一个 Offer 并请求使用该配置。 |
| Acknowledgment | 服务器确认分配,客户端配置网卡并开始通信。 |
| Renewal | 租约到期前客户端续约地址。 |
| Release | 客户端不再使用地址时释放租约。 |
2.2. DHCP 服务部署流程
以 RHEL/CentOS 系发行版的 dhcpd 为例:
sudo dnf install dhcp-server
sudo vim /etc/dhcp/dhcpd.conf
sudo systemctl enable --now dhcpd
sudo systemctl status dhcpd
2.3. DHCP 配置示例
option domain-name "test.com";
option domain-name-servers 10.0.0.1, 114.114.114.114;
default-lease-time 43200;
max-lease-time 86400;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
range dynamic-bootp 10.0.0.11 10.0.0.250;
option routers 10.0.0.1;
option broadcast-address 10.0.0.255;
}
配置中的 subnet 必须与 DHCP 服务器网卡所在网段匹配,否则服务可能无法正常提供地址分配。
2.4. DHCP 地址保留
地址保留用于将固定 IP 绑定到指定 MAC 地址。
host notebook {
hardware ethernet 00:11:22:33:44:55;
fixed-address 10.0.0.10;
}
配置完成后重启服务并观察日志:
sudo systemctl restart dhcpd
sudo journalctl -u dhcpd -f
3. Samba 文件共享
3.1. Samba 作用
Samba 是 SMB/CIFS 协议在 Linux 上的实现,常用于向 Windows、macOS 或其他 Linux 客户端提供文件共享。
| 组件 | 作用 |
|---|---|
smbd | 提供文件共享和打印共享。 |
nmbd | 提供 NetBIOS 名称服务,旧环境中较常见。 |
smbpasswd | 管理 Samba 用户密码。 |
smbclient | 命令行访问 SMB 共享。 |
3.2. Samba 安装与启动
sudo dnf install samba samba-client
sudo systemctl enable --now smb
sudo systemctl status smb
3.3. 匿名共享配置
匿名共享适合受控内网中的公共目录,不适合暴露到不可信网络。
sudo mkdir -p /public
sudo chmod 750 /public
sudo setfacl -m u:nobody:rwx /public
/etc/samba/smb.conf 示例:
[global]
workgroup = WORKGROUP
security = user
map to guest = Bad User
guest account = nobody
[pub]
comment = Public Share
browseable = yes
read only = no
inherit acls = yes
path = /public
guest ok = yes
map to guest = Bad User 表示当登录用户名不存在时,将该访问映射为 guest 用户;如果用户名存在但密码错误,则仍然视为认证失败。
3.4. 用户认证共享配置
sudo useradd u1 -s /usr/sbin/nologin
sudo useradd u2 -s /usr/sbin/nologin
sudo smbpasswd -a u1
sudo smbpasswd -a u2
sudo pdbedit -L
目录权限示例:
sudo mkdir -p /company
sudo chmod 750 /company
sudo setfacl -m u:u1:rwx /company
sudo setfacl -m u:u2:r-x /company
共享配置示例:
[company]
comment = Company Share
browseable = yes
read only = no
inherit acls = yes
path = /company
guest ok = no
valid users = u1 u2
3.5. Samba 验证与排查
testparm
smbclient -L //127.0.0.1 -U u1
smbclient //127.0.0.1/company -U u1
sudo journalctl -u smb
排查 Samba 时应同时检查 Linux 文件系统权限、ACL、Samba 用户、共享配置和防火墙策略。
4. FTP 服务
4.1. FTP 基本概念
FTP(File Transfer Protocol)是传统文件传输协议,传输控制连接与数据连接分离。由于明文传输风险较高,生产环境通常优先考虑 SFTP、FTPS 或基于 SSH 的传输方式。
4.2. 主动模式与被动模式
| 模式 | 连接方式 | 特点 |
|---|---|---|
| 主动模式 | 客户端连接服务端 21 端口,服务端主动连接客户端数据端口。 | 客户端位于 NAT 或防火墙后时容易失败。 |
| 被动模式 | 客户端连接服务端 21 端口,再连接服务端开放的被动数据端口。 | 更适合 NAT 与防火墙环境,需要放通被动端口范围。 |
4.3. vsftpd 安装与启动
sudo dnf install vsftpd
sudo systemctl enable --now vsftpd
sudo systemctl status vsftpd
4.4. vsftpd 配置要点
常见配置文件为 /etc/vsftpd/vsftpd.conf。
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
如果启用被动模式,需要在防火墙或安全组中放通对应端口范围。
sudo firewall-cmd --add-service=ftp --permanent
sudo firewall-cmd --add-port=30000-31000/tcp --permanent
sudo firewall-cmd --reload
4.5. FTP 访问验证
ftp server.example.com
lftp -u user,password server.example.com
curl ftp://user:password@server.example.com/
FTP 连接异常时,优先检查服务状态、认证配置、目录权限、防火墙、SELinux 与被动端口范围。
5. rsync 文件同步
5.1. rsync 特点
rsync 适合增量文件同步,只传输变化部分,常用于备份、目录镜像和文件分发。
| 特点 | 说明 |
|---|---|
| 增量传输 | 仅同步差异数据,节省网络带宽。 |
| 保留属性 | 可保留权限、时间戳、软链接等元数据。 |
| 支持远程 | 可通过 SSH 或 rsync daemon 远程同步。 |
| 可删除同步 | 使用 --delete 让目标目录与源目录保持一致。 |
5.2. 基于 SSH 的 rsync
rsync -avz /data/ user@server:/backup/data/
rsync -avz -e "ssh -p 22" /data/ user@server:/backup/data/
常用参数:
| 参数 | 说明 |
|---|---|
-a | 归档模式,保留权限、时间戳、软链接等属性。 |
-v | 输出详细过程。 |
-z | 传输时压缩。 |
--delete | 删除目标端源目录中不存在的文件。 |
--exclude | 排除指定文件或目录。 |
5.3. rsync daemon 模式
/etc/rsyncd.conf 示例:
uid = root
gid = root
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
[backup]
path = /backup
comment = Backup Module
read only = no
auth users = backup
secrets file = /etc/rsyncd.secrets
启动服务:
sudo systemctl enable --now rsyncd
sudo systemctl status rsyncd
客户端同步:
rsync -avz /data/ backup@server::backup
6. SSH 远程管理
6.1. SSH 作用
SSH(Secure Shell)用于加密远程登录、远程命令执行和安全文件传输,是 Linux 运维管理中最常用的基础服务。
| 能力 | 常用命令 |
|---|---|
| 远程登录 | ssh user@server |
| 远程执行命令 | ssh user@server "hostname" |
| 文件复制 | scp、sftp、rsync -e ssh |
| 端口转发 | ssh -L、ssh -R、ssh -D |
6.2. SSH 认证方式
| 认证方式 | 说明 | 建议 |
|---|---|---|
| 用户名密码 | 依赖系统用户密码。 | 仅用于临时或低风险环境。 |
| 公钥认证 | 客户端私钥匹配服务端 authorized_keys 中的公钥。 | 生产环境优先使用。 |
| 双因素认证 | 在密码或密钥基础上增加 OTP 等因素。 | 适合高安全场景。 |
6.3. SSH 服务配置
常见配置文件为 /etc/ssh/sshd_config。
Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
修改配置后,应先校验语法再重载服务。
sudo sshd -t
sudo systemctl reload sshd
sudo systemctl status sshd
6.4. SCP 文件复制
本地复制到远程:
scp ./app.tar.gz user@server:/tmp/
远程复制到本地:
scp user@server:/var/log/app.log ./
复制目录:
scp -r ./config user@server:/opt/app/
6.5. 双机互信
双机互信通常指通过 SSH 公钥认证实现免密登录。
ssh-keygen -t ed25519 -C "ops@example"
ssh-copy-id user@server
ssh user@server
排查免密登录失败时,应重点检查:
- 客户端私钥权限通常应为
600。 - 服务端
~/.ssh目录权限通常应为700。 - 服务端
authorized_keys文件权限通常应为600。 sshd_config是否允许公钥认证。journalctl -u sshd中是否有拒绝原因。
7. VMware 网络模式
7.1. 桥接模式
桥接模式通常对应 VMnet0。虚拟机与宿主机所在物理网络处于同一网段,虚拟机像一台独立主机一样接入局域网。
| 特点 | 说明 |
|---|---|
| 网络位置 | 与宿主机处于同一物理网络。 |
| IP 来源 | 可由物理网络中的 DHCP 分配,也可手动配置。 |
| 访问能力 | 局域网其他主机可直接访问虚拟机。 |
| 适用场景 | 需要让虚拟机作为局域网服务器被其他机器访问。 |
7.2. NAT 模式
NAT 模式通常对应 VMnet8。虚拟机位于 VMware 创建的私有网段,通过宿主机 NAT 访问外部网络。
| 特点 | 说明 |
|---|---|
| 网络位置 | 位于 VMware 私有网络。 |
| 出网方式 | 通过宿主机 NAT 出网。 |
| 入站访问 | 外部主机默认不能直接访问虚拟机,除非配置端口转发。 |
| 适用场景 | 虚拟机需要访问互联网,但不希望直接暴露到局域网。 |
7.3. Host-only 模式
Host-only 模式通常对应 VMnet1。虚拟机只与宿主机和同一 Host-only 网络内的虚拟机通信,默认不直接访问外部网络。
| 特点 | 说明 |
|---|---|
| 网络位置 | 宿主机内部私有网络。 |
| 出网能力 | 默认不能访问外部网络。 |
| 隔离性 | 与外部物理网络隔离。 |
| 适用场景 | 本地实验环境、隔离测试环境。 |
8. 网络服务排查流程
8.1. 通用排查顺序
- 查看服务是否运行:
systemctl status <service>。 - 查看端口是否监听:
ss -lntup。 - 查看本机防火墙:
firewall-cmd --list-all或iptables -S。 - 查看访问路径:
ping、traceroute、curl、telnet或nc。 - 查看服务日志:
journalctl -u <service>。 - 检查配置语法、目录权限、SELinux、账号认证和网络安全组。
8.2. 常用命令清单
ip addr
ip route
ss -lntup
systemctl status sshd
journalctl -u sshd
firewall-cmd --list-all
getenforce
网络服务异常通常不是单一原因造成的,应同时从服务进程、监听端口、网络路径、认证授权、文件权限和安全策略几个维度交叉验证。
关联文档
- Linux:Linux 技术体系入口。
- Linux 系统管理:用户、服务、日志、磁盘与系统管理基础。
- Linux 基础:Linux 命令、目录与基础概念。
- SSH 认证原理与配置:SSH 认证机制与安全配置。
- Linux 磁盘管理:文件共享与同步依赖的磁盘和文件系统基础。
