自学 Linux 22—Linux 应用层网络服务程序简介—自定义网络服务

自定义网络服务

  Linux 操作系统是为网络而诞生的操作系统,它为用户进行网络服务配置提供了诸多便利。接下来将对用户配置自己的网络服务进行简单的介绍,通过本篇博客内容的学习,用户可以配置简单的网络服务程序。

1. xinetd/inetd

  在 Linux 操作系统中,一些小的服务程序或者不经常使用的服务程序,被集成到一个服务器管理程序中,通常是 inetd,目前一般使用 xinetdxinetdeXtended InterNET services daemon),也叫做扩展因特网驻留程序。它是一种控制因特网服务的应用程序,例如常用的 TELNET 服务、FTP 服务和 POP 等服务程序通常都集成在这个服务器中。

  在往后看之前,小伙伴先检査一下系统中是否已经安装了 xinetd 服务程序,可以使用如下命令:

$ ps ax|grep xinetd

  如果没存安装 xinetd 服务程序,可以使用 apt-get install xinetd 安装这个软件包。

2. xinetd 服务配置

  xinetd 的默认配置文件是 /etc/xinetd.conf,查看这个配置文件的内容会发现,它将 /etc/xinetd.d 目录里的文件包含了进来。

includedir  /etc/xinetd.d

  在 /etc/xinet.d 目录中有很多默认的配置文件,查看其中的 time 服务配置文件。

$ cat /etc/xinetd.d/time	#査看 time 服务配置文件
# default: off		#释默认值为打开
# description: An RFC 868 time server. This protocol provides a #描述信息
# site-independent, machine readable date and time. The Time service sends back
# to the originating source the time in seconds since midnight on January first
# 1900.
# This is the tcp version.		#时间服务的 TCP 版本
service time					#服务程序名称
{
	disable		= yes			#默认为服务关闭
	type		= INTERNAL		#类型为内部程序
	id			= time-stream	#标识为 time-stream
	socket_type = stream		#流式套接字
	protocol	= tcp			#协议为 TCP
	user		= root			#root 用户启动
	wait		= no			#不等待到启动完成
}
# This is the udp version.			#时间服务的 UDP 版本
service time						#服务程序名称
{
	disable			= yes			#默认为服务关闭
	type			= INTERNAL		#类型为内部程序
	id				= time-dgram	#标识为 time-dgram
	socket_type		= dgram			#数据报套接字
	protocol		= udp			#协议为 UDP
	user			= root			#root 用户启动
	wait			= yes			#不等待到启动完成
}

  服务 time 是一个时间服务,用于向客户端提供网络时间校准。对于一个服务 xinetd 的描述类型,按照如下格式进行定义:

service 服务名称
{
	选项		=  值
	选项		+=}

  其中的 service 是必需的关键字“ 服务名称 ” 要描述的服务名字,之后的属性表用大括号括起,其中的每一项都定义了由 service-name 定义的服务。服务名称是任意的,通常是标准网络服务名,也可增加其他非标准的服务。选项的操作符可以是 =+=、或 -=。所有属性可以使用 =,其作用是分配一个或多个值,某些属性可以使用 “ += ” 或的形式,它的作用是将其值增加到某个表中,或将其值从某个表中删除。xinetd 的指示符如下表(xinetd 的指示符)所示。

指示符描述
socket_type网络套接字类型,流或者数据包,值可能为 stream(TCP)dgram(UDP)rawseqpacket(可靠的有序数据报)
protocolIP协议,通常是 TCP 或者 UDP
waityes/no,等同于 inetdwait/nowait
user运行进程的用户 ID
server要激活的进程,必须指定执行程序的完整路径
server_args传递给 server 的变量,或者是值
instances可以启动的实例的最大值
start max_load负载均衡
log_on_success成功启动的登记选项
log_on_failure联机失败的时候的日志信息
only_from接受的网络或是主机
no_access拒绝访问的网络或是主机
disabled用在默认的 { } 中禁止服务
log_type日志的类型和路径 FILE/SYSLOG
nice运行服务的优先级
id日志中使用的服务名

3. 自定义网络服务

  此次以 vsftpd 为例进行自定义网络服务的设置。首先安装 vsftpd 服务器程序,使用命令 apt-get install vsftpd 进行安装。

  现在应该以 root 的身份在 /etc/xinetd.d/目录中编辑文本文件 proftpd,内容如下:

# default: on		默认值为打开
# description: The vsftpd server  vsftpd sessions;
# 这是一个 vsftpd 服务器设置文件 
service vsftpd					#服务程序名称
{
	disable = no				#默认为服务打开
	port = 21					#侦听端口为 21
	socket_type = stream		#流式套接字
	protocol = tcp				#协议为 TCP
	user = root					# root 用户启动
	server = /usr/sbin/vsftpd	#服务程序路径为 /usr/sbin/vsftpd
	type = UNLISTED
	wait = no					#不等待到启动完成
}

  上述配置的含义如下所述。

  █ 第 1 和第 2 行是注释行,不用管它。第 3 行是定义服务的名称为 vsftpd
  █ 第 5disable 的意思是禁用,那么,disable=no 就是启动。
  █ 第 6 行是指定该服务的端口,ftp 的端口是 21。如果不用 21 端口,可以根据 vsftpd.conf 文件做相应的改变。
  █ 第 7 行是 socket 的类型,这里设为 stream (流)。
  █ 第 8 行是指定协议,这里设为 tcp 协议。
  █ 第 9 行是启动该服务的用户,设为 root
  █ 第 10 行是指定运行文件的路径。
  █ 第 12 行是不等待至启动完成。

  在编写完毕配置文件后,运行 killall -HUP xinetd。然后使用 ftp localhost 登录进行测试,可以发现 FTP 程序已经可以登录了。

小结

  HTTP 协议、FTP 协议和 TELNET 协议是互联网比较常用的协议,分别用于 Web 访问、 文件传输和远程主机的登录。这 3 种协议都是基于 TCP 协议,利用文本命令进行控制。

  NFS 协议是 Linux 上经常使用的一种协议,用于主机之间共享文件。由于 NFS 协议采用 UDP 协议作为传输基础,所以速度上要快得多。NFS 协议在嵌入式设备开发的时候经常使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值