唐抉的个人博客

CentOS 7之关于网络管理的那些知识

字数统计: 6.5k阅读时长: 26 min
2022/11/16

前置知识

Linux常见目录

目录参数 说明
/ 根目录,文件的最顶端,/etc、/bin、/dev、/lib、/sbin应和根目录放置在一个分区中,而类似/usr/local可以单独位于另一个分区
/bin 存放系统所需的重要命令,如文件或目录操作的命令ls、cp、mkdir等。/usr/bin也存放了一些系统命令,这些命令对于的文件都是可执行的,普通用户可以使用大部分的命令
/boot 存放Linux启动时内核及引导系统程序所需要的核心文件,内核文件和grub系统引导管理器都位于此目录
/dev 存放Linux系统下的设备文件,如光驱、磁盘等。访问该目录下的文件相当于访问某个硬件设备,常用于挂载光驱
/etc 存放系统的配置文件,作为一些软件启动时默认配置文件读取的目录,如/etc/fstab存放系统分区信息
/home 系统默认的用户主目录。若添加用户时不指定用户的主目录,默认在/home下创建与用户名同名的文件夹。代码中可以用HOME环境变量表示当前用户的主目录
/lib 64位系统有/lib64文件夹,主要存放动态链接库,类似的目录还有/usr/lib、/usr/local/lib等
/lost+found 存放一些当系统意外崩溃或机器意外关机时产生的文件碎片
/mnt 存放挂载储存设备的挂载目录,如光驱等
/proc 存放操作系统运行时的运行信息,如进程信息、内核信息、网络信息等。此目录的内容存在于内存中,实际不占用磁盘空间。如/etc/cpuinfo存放CPU相关信息
/root Linux超级权限用户root的主目录
/sbin 存放一些系统管理的命令,一般只能由超级权限用户root执行。大多数命令普通用户一般无权执行,如/sbin/ifconfig,普通用户使用绝对路径也可执行,用于查看当前系统网络配置,如/usr/sbin、/usr/local/sbin
/tmp 临时文件目录,任何人都可以访问。系统软件或用户运行程序时产生的临时文件存放到这里。此目录数据需要定期清除,重要数据不能放在该目录下,其目录空间也不能过小
/usr: 应用程序存放目录,如命令、帮助文件等。安装Linux软件包时默认安装到/usr/local目录下,如/usr/share/fonts存放系统字体,/usr/share/man存放帮助文档,/usr/include存放软件的头文件等。建议将/usr/local目录单独分区并设置较大的磁盘空间
/var /var/log存放系统日志,/var/lib存放系统库文件。目录内容会经常变动
/sys 与/proc类似,是一个虚拟的文件系统,主要记录与系统核心相关的信息,如系统已经载入的模块信息等,该目录实际不占硬盘容量

网络管理协议

TCP/IP协议

TCP/IP协议体系

TCP/IP协议主要包含传输控制协议(TCP)和网际协议(IP)。

TCP/IP体系是一种分层结构,由基于硬件层次上的4个概念层次构成,从上往下看,即为应用层、传输层、网际互联层和网络接口层。

TCP/IP层次 功能及作用
应用层 为用户提供所需要的各自应用服务,如FTP、Telnet、DNS、SMTP等
传输层 为应用层提供端到端的通信功能,同时提供流量控制,确保数据完整和正确。TCP协议位于该层,提供一种可靠的、面向连接的数据传输服务,对之对应的是UDP协议,提供不可靠的、无连接的数据报传输服务
网际互联层 解决主机到主机之间的通信问题。其主要协议有:网际协议(IP)、地址解析协议(ARP)、反向地址解析协议(RARP)和互联网控制报文协议(ICMP)
网络接口层 为上层提供服务,完成链路控制等功能

包(packet)

包(packet)是网络上传输的数据片段,也称为分组或IP数据报。用户数据按照规定划分为大小适中的若干组,每个组加上包头构成一个包,该过程便称为封装。网络上使用包为单位进行数据传输。

包是一种统称,在不同的层次,包有不同的名字。如TCP/IP中称作帧,而IP层称之为IP数据报,TCP层称之为TCP报文等。

网络字节顺序

TCP/IP协议定义了一种所有机器在互联网分组的二进制字段中必须使用的网络标准字节顺序,与之对应的是主机字节顺序,主机字节顺序和各个主机密切相关。

传输时需遵循以下转换规则:主机字节顺序→网络字节顺序→主机字节顺序

即发送方将主机字节顺序的整数转换为网络字节顺序后发送出去,接收方收到数据后将网络字节顺序的整数转换为自己的主机字节顺序,然后再进行处理。

地址解析协议(ARP)

TCP/IP网络使用IP地址进行寻址,IP包在IP层实现路由选择,但IP包在网络接口层的传输却需要知道设备的物理地址,此时便需要一种IP地址到物理地址的转换协议ARP。

ARP协议是一种在以太网这种有广播能力的网络中解决地址转换问题的方法,该方法允许在不重新编译代码、不需维护一个集中式数据库的情况下,在网络中动态增加新机器。

其原理为:当主机A想转换某一IP地址时,通过向网络中广播一个专门的报文分组,要求具有该IP地址的机器以其物理地址做出应答。所有主机都将收到这个请求,但只有符合条件的主机才辨认该IP地址,同时发回一个包括其物理地址的应答。主机A收到应答时便知道该IP地址对应的物理地址,并使用这个地址将数据分组发过去。

UDP协议

UDP是一种无连接的传输层协议,主要用于不要求分组顺序到达的传输中。其优点为资源消耗小、处理速度快。由于其不提供数据包分组、组装和不能对数据包进行排序的缺点,当报文发送后,无法得知其是否安全完整到达的,因此UDP协议丢包会比较严重。

ICMP协议

ICMP协议是Internet控制报文协议,属于TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制信息。控制信息是指网络是否通畅、主机是否可达、路由是否可用等网络本身的信息,其唯一的功能是报告问题,而不是纠正错误,纠错的任务由发送方完成。

网络管理命令

Ping:检查网络连接速度及网络是否通畅

ping常用于测试与目标主机或域名是否可达。ping的结果通常是可信的(部分服务器设置了禁止ping的除外)

ping命令不会自动终止,需要按"ctrl+c"终止,或是用参数"-c"指定要求完成的回应次数。

在CenOS 7中,ping的常用命令如下:

1
2
3
4
5
6
7
8
9
10
11
#ping目的ip地址如192.168.3.100
ping 192.168.3.100

#ping外网域名如www.baidu.com
ping www.baidu.com

#ping目的ip地址n次,下面命令中的n为次数
ping -c n 192.168.3.100

#以0.01s的时间间隔来ping目的ip地址3次,下面命令中的0.01为指定的时间间隔0.01秒
ping -c 3 -i 0.01 192.168.3.100

ifconfig:配置网络或显示当前网络接口状态

ifonfig命令可以用于查看、配置、启用或禁用指定网络接口,如配置网卡的IP地址、掩码、广播地址、网关等。

在CenOS 7中,查看网卡基本信息:

查看指定网络接口ens33的信息:

其中:

  • 第一行:UP表示该网络接口为启用状态。RUNNING表示网卡设备已连接,MULTICAST表示组播,mtu为数据包最大传输单元

  • 第二行:网卡IP、子网掩码、广播地址

  • 第三行:IPv6地址

  • 第四行:ether为网卡的MAC地址,Ethernet表示连接类型

  • 第五行:接收数据包个数、大小统计信息

  • 第六行:异常接收数据包的数量,如丢包量、错误等

  • 第七行:发送数据包个数、大小统计信息

  • 第八行:产生错误数据包的数量,如丢包量,错误等

ifconfig的常用命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#关闭ens33网卡
ifconfig ens33 down

#开启ens33网卡
ifconfig ens33 up

#配置ip地址
ifconfig ens33:1 192.168.100.100

#配置ip地址和子网掩码
ifconfig ens33:1 192.168.100.100 netmask 255.255.255.0

#配置ip地址、子网掩码和广播地址
ifconfig ens33:1 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.1.255

#删除ip地址
ifconfig ens33 del 192.168.1.100

#启用arp协议
ifconfig ens33 arp

#禁用arp协议
ifconfig ens33 -arp

route:显示添加或修改路由表

route命令用于查看或编辑计算机的IP路由表。

route的常用命令如下:

1
2
3
4
5
6
#显示所有路由表
route -n
#添加一条路由:发往192.168.60.0网段的全部要经过网关192.168.19.1
route add -net 192.168.18.0 netmask 255.255.255.0 gw 192.168.18.2
#删除一条路由:删除时不需要网关
route del -net 192.168.18.0 netmask 255.255.255.0

scp:Linux系统之间复制文件和目录

scp可以将本地文件传送到远程主机或从远程主机拉取文件到本地。注意由于各发行版本不同,scp语法也不同。

scp使用方法如下所示:

1
2
3
4
5
6
7
8
9
10
11
#将本地/root/lk目录下所有文件传输到远程主机192.168.3.100的/home/lk/cpfile目录下:
scp -r /root/lk root@192.168.3.100:/home/lk/cpfile

#将远程主机192.168.3.100的/home/lk/目录下所有文件全部复制到本地的/root目录下:
scp -r root@192.168.3.100:/home/lk /root

#使用端口号4588将本地文件test.py传送至远程主机198.168.3.100的/usr目录下:
scp -P 4588 test.py root@192.168.3.100:/usr

#使用端口号4588将远程主机198.168.3.100的/etc/1.txt文件复制到本地的/root目录下:
scp -P 4588 root@192.168.3.100:/etc/1.txt /root

rsync:数据镜像备份工具

rsync是Linux系统下常用的数据镜像备份工具,用于在不同的主机之间同步文件。除了单个文件外,rsync还可以保存整个目录树和文件系统,可以增量同步,并保持文件原来的属性,数据传输过程是加密的,保证数据的安全。

rsync不仅可以远程同步数据,还可以本地同步数据。与cp或scp不同的是,使用rsync备份数据时不会直接覆盖已经存在的数据,而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。

rsync使用方法如下所示:

1
2
3
4
5
#将本地/etc/passwd文件同步到本地的/tmp/目录下,并改名为1.txt
rsync -av /etc/passwd /tmp/1.txt

#将本地/etc/passwd文件备份到远程主机192.168.3.100的/tmp/目录下,并改名为1.txt
rsync -av /etc/passwd 192.168.3.100:/tmp/1.txt

netstat:显示网络连接、路由表或接口状态

netstat命令用于监控系统网络配置和工作状况,可以显示内核路由表、活动的网络状态以及每个网络接口有用的统计数字。

netstat的常用命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#显示所有端口,包含UDP和TCP端口
netstat -a|head -4
#显示所有TCP端口
netstat -at
#显示所有UDP端口
netstat -au
#显示所有处于监听状态的端口并以数字方式显示而非服务名
netstat -ln
#显示所有TCP端口并显示对应的进程名称或进程号
netstat -plnt
#显示核心路由信息
netstat -r
#显示网络接口列表
netstat -i
#统计各个TCP连接的各个状态对应的数量
netstat -plinta|sed '1,2d'|awk '{print $6}'|sort|uniq -c

traceroute:探测至目的地址的路由信息

traceroute跟踪数据包到达网络主机所经过的路由,其原理是试图以最小的TTL发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。

traceroute的常用命令如下:

1
2
3
4
5
#先检查主机与www.baidu.com之间的网络是否通畅
ping www.baidu.com
#显示本地主机到www.baidu.com所经过的路由信息
traceroute -n www.baidu.com
#运行结果的每行记录对应一跳,每跳表示一个网关,最大30跳。每行有3个时间,单位是ms。星号则表示ICMP信息没有返回

telnet:测试、登录或控制远程主机

telnet通常用来远程登录。在客户端使用telnet在程序中输入命令,可以在本地控制服务器。由于telnet采用明文传送报文,安全性较差。telnet可以确定远程服务端口的状态,以便确认服务是否正常。

telnet常用命令如下:

1
2
3
4
#检查198.168.3.100对应的56789端口服务是否正常
telnet 198.168.3.100 56789
#检查www.pjp.net对应的80端口服务是否正常
telnet www.php.net 80

wget:下载网络文件

wget可以断点续传,同时支持FTP或HTTP协议下载,并可以设置代理服务器。

wgett常用命令如下:

1
2
3
4
5
6
#下载文件http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz
wget http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz
#断点续传
wget -c http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz
#批量下载,其中download.txt文件里是一系列网址
wget -i download.txt

Linux网络配置

与Linux网络配置相关的文件主要有以下这些:

目录 功能及作用
/etc/hostname 主要用于修改主机名称
/etc/sysconfig/network-scrips/ifcfg-enoN 设置网卡参数的文件,如IP地址、子网掩码、广播地址、网关等,N为一串数字
/etc/resolv.conf 设置DNS相关的信息,用于将域名解析到IP
/etc/hosts 计算机IP对应的主机名称或域名对应的IP地址
/etc/nsswitch.conf 规定通过哪些途径、按照什么顺序通过这些途径来查找特定类型的信息。通过修改选项可以选择是DNS解析优先还是本地设置优先

配置Linux系统的IP地址

可以通过终端命令直接设置主机的IP地址,如想设置在系统重启后依然生效,可以通过设置对应的网络端口文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
oot@localhost admin]# cat /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet" #设备连接类型,此处为以太网
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp" #使用动态IP
DEFROUTE="yes" #是否为默认路由
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="cc581056-9262-44ab-877f-645d0b306352"
DEVICE="ens33"
ONBOOT="yes" #系统启动时是否设置此网络接口

#可以使用命令
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#将BOOTPROTO="dhcp" 修改为BOOTPROTO=none 后,增加以下字段。按i键即可输入,输入完成后按下Esc键,输入冒号:和wq将更改保存后退出

IPADDR0=设定的ip地址
PREFIX0=设定的子网掩码
GATEWAT0=设定的网关
DNS1=DNS服务器地址1
DNS2=DNS服务器地址2

设置完接口文件后,需要重启网络服务才能生效,重启后使用ifconfig查看设置是否生效:

1
service network restart

同一个网络接口可以使用子接口的方式设置多个IP地址:

1
2
#配置网络接口ens33子接口1的ip地址和子网掩码
ifconfig ens33:1 192.168.100.100 netmask 255.255.255.0

当服务器重启或网络服务重启后,子接口的配置将消失。若需要重启后仍生效,可以将配置子接口命令加入/etc/rc.local文件中。

使用hostname设置主机名

主机名是识别某个计算机在网络中的标识。在单机情况下,主机名可任意设置。执行以下命令修改主机名,重新登录后可以发现主机名已改变。

1
hostname mycomputername

如要修改重启后依然生效,可以将主机名写入文件/etc/hostname中。

设置默认网关

设置好IP地址后,若要访问其他的子网或Internet,用户还需要设置路由,这里采用设置默认网关的方法来设置路由。

在Linux中,设置默认网关有两种方法:

  • 第一种是直接使用route命令。在设置默认网关之前,先用route -n 命令查看路由表,而后执行下面命令设置网关:

    1
    route add default gw 192.168.10.254

    若不想每次开机都执行route命令,则应把要执行的命令写入/etc/rc.d/re.local文件中。

  • 第二种是在/ect/sysconfig/network-scripts/ifcfg-接口文件中添加如下字段:

    1
    GATEWAY=192.168.10.254

    然后重启网络服务来使设置生效。

    1
    service network restart

设置DNS服务器

设置DNS服务器只需修改/etc/resolv.conf文件即可:

1
2
3
4
5
6
7
8
9
10
11
[root@localhost admin]# cat /etc/resolv.conf

# Generated by NetworkManager
search localdomain
nameserver 192.168.18.2 #第一名字服务器

#如需添加DNS服务器,直接在下面添加nameserver即可,注意nameserver指定的DNS服务器只有前三条生效
#resolv.conf文件还有其他参数如下:
option rotate #在这DNS server之间轮询
option timeout:1 #表示解析超时时间1s(默认为5s)
attempts:2 #表示解析域名尝试的次数

FTP服务器

FTP服务概述

FTP文件共享基于TCP/IP协议,是一种通用性比较强的网络文件共享方式。FTP是仅基于TCP的服务,不支持UDP。FTP使用两个端口,一个数据端口和一个命令端口(控制端口)。通常这两个端口是21(命令端口)和20(数据端口)。由于FTP工作方式的不同,数据端口并不总是20,分为主动FTP和被动FTP。

  • 主动FTP
    • 主动模式是从服务器向客户端发起连接。主动模式下,服务端开启的是20和21端口,客户端开启的是1024以上的端口
  • 被动FTP
    • 被动模式是客户端向服务端发起连接。被动模式下,服务端开启的是21命令端口和大于1024的数据连接端口,客户端开启的是大于1024的两个端口

两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同。

vsftp的安装与配置

在Linux系统下,vsftp是一款应用比较广泛的FTP软件,其特点是小巧轻快、安全易用。

vsftp安装

使用yum工具安装vsftp:

1
2
3
4
5
6
#使用yum工具下载vsftp
yum install -y vsftpd
#使用rpm安装vsftp
rpm -qa|grep vsftp
#安装依赖的库文件
yum install -y libcap libcap-devel

匿名FTP设置

这种运行匿名用户访问并上传文件,配置文件路径一般为/etc/vsftpd.conf,若是使用rpm包安装,则配置文件位于/etc/vsftpd/vsftpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#将默认目录赋予用户ftp权限以便可以上传文件
[root@localhost admin]# chown -R ftp.users /var/ftp/pub/
#取消配置文件中的注释并显示有效行
[root@localhost admin]# grep -v ^# /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #允许匿名用户登录和上传
local_enable=YES
write_enable=YES #允许写
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO #是否允许在监听
listen_ipv6=YES #是否允许IPv6上的监听

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

#配置文件使用vim /etc/vsftpd/vsftpd.conf修改为如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

启动FTP服务

1
2
3
4
5
6
#启动vsftpd
[root@localhost admin]# systemctl start vsftpd
#检查是否启动成功,默认配置文件位于/etc/vsftpd/vsftpd.conf
[root@localhost admin]# ps -ef|grep vsftp
root 60170 1 0 00:55 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 60223 54792 0 00:56 pts/0 00:00:00 grep --color=auto vsftp

匿名用户登录测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#登录ftp
[root@localhost admin]# ftp 192.168.18.128 21
Connected to 192.168.18.128 (192.168.18.128).
220 (vsFTPd 3.0.2)
#输入匿名用户名
Name (192.168.18.128:root): anonymous
331 Please specify the password.
#密码为空
Password:
#登录成功
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
#切换目录
ftp> cd pub
250 Directory successfully changed.

#查看当前目录下的文件
ftp> !ls -l
总用量 3048
drwxr-xr-x. 2 admin admin 6 10月 12 05:13 Desktop
drwxr-xr-x. 2 admin admin 19 11月 16 01:18 Documents
drwxr-xr-x. 2 admin admin 6 10月 12 05:13 Downloads
drwxr-xr-x. 2 admin admin 6 10月 12 05:13 Music
drwxr-xr-x. 2 admin admin 6 10月 12 05:13 Pictures
drwxr-xr-x. 2 admin admin 6 10月 12 05:13 Public
drwxr-xr-x. 2 admin admin 6 10月 12 05:13 Templates
drwxr-xr-x. 2 admin admin 6 10月 12 05:13 Videos
-rw-r--r--. 1 root root 3118130 8月 5 2012 wget-1.14.tar.gz
#上传文件测试
ftp> put wget-1.14.tar.gz
local: wget-1.14.tar.gz remote: wget-1.14.tar.gz
227 Entering Passive Mode (192,168,18,128,72,253).
553 Could not create file.

上述上传文件时,遇到了553 Could not create file错误。解决方式如下:

  • 输入quit退出vsftpd,在ftp的目录创建一个目录,然后设置权限为777:

    1
    2
    3
    [root@localhost admin]# mkdir /var/ftp/write
    [root@localhost admin]# chmod -R 777 /var/ftp/write
    [root@localhost admin]# vim /etc/vsftpd/vsftpd.conf

  • 然后修改位于/etc/vsftpd/vsftpd.conf的配置文件,在文件最后加上以下代码:

    1
    local_root=/var/ftp

  • 杀死vsftpd进程,然后重启vsftpd服务器程序:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #杀死vsftpd进程
    [root@localhost admin]# pkill vsftpd
    #查看是否还有vsftpd进程
    [root@localhost admin]# pgrep vsftpd
    #启动vsftpd服务器
    [root@localhost admin]# /usr/sbin/vsftpd &
    [1] 61422
    #查看是否有vsftpd进程
    [root@localhost admin]# pgrep vsftpd
    61418

  • 然后再试试登录ftp上传文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #上传文件测试
    ftp> put wget-1.14.tar.gz
    local: wget-1.14.tar.gz remote: wget-1.14.tar.gz
    227 Entering Passive Mode (192,168,18,128,122,212).
    150 Ok to send data.
    226 Transfer complete.
    3118130 bytes sent in 0.00845 secs (368834.88 Kbytes/sec)
    #上传文件成功退出ftp
    ftp> quit
    221 Goodbye.
    #查看上传后的文件信息,文件属于ftp用户
    [root@localhost admin]# ll /var/ftp/pub/
    总用量 3048
    -rw-------. 1 ftp ftp 3118130 11月 16 01:29 wget-1.14.tar.gz

实名FTP设置

除了配置匿名FTP服务外,vsftp还可以配置实名FTP服务器,以便实现更精确的权限控制。

实名需要的用户认证信息位于/etc/vsftpd/目录下,用户启动时可以单独指定其他的配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#配置文件使用vim /etc/vsftpd/vsftpd.conf修改为如下:
[root@localhost admin]# grep -v ^# /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #禁止匿名用户登录
local_enable=YES #允许本地用户访问,默认为YES
write_enable=YES #允许写入
local_umask=022 #上传后的文件默认的权限掩码
anon_upload_enable=NO #匿名用户上传权限
anon_mkdir_write_enable=NO #匿名用户创建目录的同时上传文件
anon_other_write_enable=NO #匿名用户删除权限
chroot_local_user=YES #禁止本地用户离开自己的ftp主目录
chroot_list_enable=NO #禁止ftp用户离开自己的ftp主目录
chroot_list_file=/etc/vsftpd.chroot_list #虚拟用户列表,每行一个用户名
listen=YES
listen_address=192.168.18.128 #绑定本机ip

pam_service_name=vsftpd.vu #验证方式
local_root=/var/ftp #

guest_enable=YES #开启虚拟用户功能
guest_username=ftp #虚拟用户的宿主目录
virtual_use_local_privs=YES #用户登录后操作主目录和本地用户具有同样的权限
user_config_dir=/etc/vsftpd/vconf #虚拟用户主目录设置文件

#新建/etc/vsftpd.chroot_list文件
[root@localhost admin]# touch /etc/vsftpd.chroot_list
#编辑/etc/vsftpd.chroot_list如下,每行一个用户名
[root@localhost admin]# vim /etc/vsftpd.chroot_list
[root@localhost admin]# cat /etc/vsftpd.chroot_list
user1
user2

#增加用户并指定主目录
[root@localhost admin]# mkdir /data
[root@localhost admin]# mkdir /data/user1
[root@localhost admin]# mkdir /data/user2
[root@localhost admin]# chmod -R 775 /data/user1 /data/user2

#设置用户名密码数据库
[root@localhost admin]# echo -e "user1\npass1\nuser2\npass2">/etc/vsftpd/vusers.list
[root@localhost admin]# cd /etc/vsftpd
[root@localhost vsftpd]# db_load -T -t hash -f vusers.list vusers.db
[root@localhost vsftpd]# chmod 600 vusers.*
#指定认证方式
[root@localhost vsftpd]# echo -e "#%PAM-1.0\n\nauth required pam_userdb.so db=/etc/vsftpd/vusers\naccount required pam_userdb.so db=/etc/vsftpd/vusers">/etc/pam.d/vsftpd.vu
[root@localhost vsftpd]# mkdir -p /etc/vsftpd/vconf
[root@localhost vsftpd]# cd /etc/vsftpd/vconf
[root@localhost vconf]# ls
[root@localhost vconf]# touch user1
[root@localhost vconf]# touch user2
[root@localhost vconf]# ls
user1 user2

#编辑用户的用户名文件,指定主目录
[root@localhost vconf]# vim user1
[root@localhost vconf]# cat user1
local_root=/data/user1
[root@localhost vconf]# vim user2
[root@localhost vconf]# cat user2
local_root=/data/user2
#创建标识文件
[root@localhost vconf]# touch /data/user1/user1
[root@localhost vconf]# touch /data/user2/user2

#若连接ftp显示连接被拒绝,重启vsftpd服务后即可解决
[root@localhost vconf]# ftp 192.168.18.128 21
Connected to 192.168.18.128 (192.168.18.128).
220 (vsFTPd 3.0.2)
#输入用户名user1
Name (192.168.18.128:root): user1
331 Please specify the password.
#密码为之前设置的pass1
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
#查看文件
ftp> ls
227 Entering Passive Mode (192,168,18,128,47,84).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Nov 17 01:53 user1
226 Directory send OK.
#退出vsftpd
ftp> quit
221 Goodbye.

#测试用户user2
[root@localhost vconf]# ftp 192.168.18.128 21
Connected to 192.168.18.128 (192.168.18.128).
220 (vsFTPd 3.0.2)
Name (192.168.18.128:root): user2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,18,128,75,91).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Nov 17 01:53 user2
226 Directory send OK.
#退出vsftpd
ftp> quit
221 Goodbye.
CATALOG
  1. 1. 前置知识
    1. 1.1. Linux常见目录
    2. 1.2. 网络管理协议
      1. 1.2.1. TCP/IP协议
        1. 1.2.1.1. TCP/IP协议体系
        2. 1.2.1.2. 包(packet)
        3. 1.2.1.3. 网络字节顺序
        4. 1.2.1.4. 地址解析协议(ARP)
      2. 1.2.2. UDP协议
      3. 1.2.3. ICMP协议
  2. 2. 网络管理命令
    1. 2.1. Ping:检查网络连接速度及网络是否通畅
    2. 2.2. ifconfig:配置网络或显示当前网络接口状态
    3. 2.3. route:显示添加或修改路由表
    4. 2.4. scp:Linux系统之间复制文件和目录
    5. 2.5. rsync:数据镜像备份工具
    6. 2.6. netstat:显示网络连接、路由表或接口状态
    7. 2.7. traceroute:探测至目的地址的路由信息
    8. 2.8. telnet:测试、登录或控制远程主机
    9. 2.9. wget:下载网络文件
  3. 3. Linux网络配置
    1. 3.1. 配置Linux系统的IP地址
    2. 3.2. 使用hostname设置主机名
    3. 3.3. 设置默认网关
    4. 3.4. 设置DNS服务器
  4. 4. FTP服务器
    1. 4.1. FTP服务概述
    2. 4.2. vsftp的安装与配置
      1. 4.2.1. vsftp安装
      2. 4.2.2. 匿名FTP设置
      3. 4.2.3. 启动FTP服务
      4. 4.2.4. 匿名用户登录测试
      5. 4.2.5. 实名FTP设置