Linux

Linux 网络服务

·17 分钟阅读·6510 字

梳理 Linux 常见网络服务的工作原理、部署配置、访问验证与排查要点,覆盖 DHCP、Samba、FTP、rsync、SSH 与虚拟化网络模式

📋 目录

Linux 网络服务

1. Linux 网络服务概览

Linux 网络服务管理关注网络配置、服务监听、访问控制、协议行为和故障排查。常见服务包括 DHCP、Samba、FTP、rsync 和 SSH。

服务主要用途常见端口典型场景
DHCP自动分配 IP、网关、DNS 等网络参数UDP 67/68局域网地址分配
Samba提供 SMB/CIFS 文件共享TCP 139/445Linux 与 Windows 文件共享
FTP文件上传下载TCP 20/21 与被动端口范围传统文件传输
rsync增量同步文件TCP 873 或 SSH 22备份、镜像同步、发布分发
SSH远程登录、命令执行、加密传输TCP 22Linux 远程管理

2. DHCP 服务

2.1. DHCP 工作原理

DHCP(Dynamic Host Configuration Protocol)用于为客户端自动分配 IP 地址、子网掩码、网关、DNS 等网络参数。

Discover -> Offer -> Request -> Acknowledgment -> Lease Renewal / Release
阶段说明
Discover客户端广播寻找可用 DHCP 服务器。
OfferDHCP 服务器返回可用地址与网络配置。
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. 通用排查顺序

  1. 查看服务是否运行:systemctl status <service>。
  2. 查看端口是否监听:ss -lntup。
  3. 查看本机防火墙:firewall-cmd --list-all 或 iptables -S。
  4. 查看访问路径:ping、traceroute、curl、telnet 或 nc。
  5. 查看服务日志:journalctl -u <service>。
  6. 检查配置语法、目录权限、SELinux、账号认证和网络安全组。

8.2. 常用命令清单

ip addr
ip route
ss -lntup
systemctl status sshd
journalctl -u sshd
firewall-cmd --list-all
getenforce

网络服务异常通常不是单一原因造成的,应同时从服务进程、监听端口、网络路径、认证授权、文件权限和安全策略几个维度交叉验证。


关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro