科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件solaris9高级系统管理

solaris9高级系统管理

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

系统启动(level 2)时默认启动的服务 系统启动时是不启动的,只有当Client端向Server发出申请服务的呼叫时,Server会启动对应的进程;

作者:blog.chinaunix.net 来源:blog.chinaunix.net 2007年9月7日

关键字: 系统 管理 Sun Solaris

  • 评论
  • 分享微博
  • 分享邮件

olaris9高级系统管理

 


第二章        client-server model(网络服务)
一、        client-server进程(网络服务进程)

                 
               
                          级别:  /etc/rc#.d/S****
                                
                固定端口服务

server                            需要

                                 级别:/etc/rc#.d/S****                                
               动态端口服务
                                                                监听       
                                 需要: inetd进程
                                       /etc/inet/inetd.conf         /etc/rpc
                                                       ( /etc/services)

 

二、        启动server进程
1、        网络服务的后台进程
Inetd后台进程
?        该进程是一种特殊的网路进程,它的作用是启动那些在系统启动时不能够自动启动的服务器进程。inetd进程是在系统启动时, 运行到/etc/rc2.d/S72inetsvc脚本,在后台启动的;inetd读取/etc/inet/services文件和/etc/inet/inetd.conf文件,然后开始监听网络上其它主机发出的联接请求,同时监听/etc/inet/services文件中定义的所有端口。
?        当网上某台机器作为client端,向某台服务器发出联接请求时,如果该请求在服务器的/etc/inet/services文件中没有定义,则不会启动任何服务;client端会收到一个“connection refused”的信息。
?        如果client端发出请求的端口在服务器端是有定义的,则inetd会运行/etc/inet/inetd.conf文件中的path字段列出的程序, 并用/etc/inet/inetd.conf文件中指定的用户启动该服务。
?        server端启动的网络服务将会通过网络与发出请求的client端建立联接。
?        在/etc/inet/inetd.conf文件中, 有一些服务的path的描述中是internal一词。

?        internal的意思为: 当一个联结接请求送到这个服务的时候,inetd不会启动另一个过程,而是直接与发出请求的计算机通过网络进行通信.(换句话说,就是这个网络服务是inetd内置的功能 )。

?        只有那些能够进行快速处理的过程才会采用这样的方式。如echo、chargend以及iscard。


2、        网络端口
固定端口: well-known ports
动态(临时)端口: ephemeral (short-lived) ports
端口的两种分配方式:固定端口服务和动态邦定端口服务

网上的任何服务(如ftp、rlogin、telnet等)的建立都是通过端口(port)建立的端口号就相当于网络服务通讯时用的地址,但它不是一种物理的地址,是一种抽象的地址
为了正确建立这种联接,需要有一个规则来定义网上的各种服务及对应的端口号;要求每个服务的端口号是不同的。

3、        启动一个使用固定端口的服务
固定端口服务定义在/etc/inet/services文件中,定义了端口号和服务的对应关系;如果用户自己想增加某些网络服务及定义对应的端口号,必须在client和server端二边都修改这些文件,端口号必须在1024以后;因为1024之前的端口是系统占用的;
查看telnet使用的固定端口,使用如下命令
# grep telnet /etc/inet/services
telnet 23/tcp


    系统启动(level 2)时默认启动的服务

    系统启动时是不启动的,只有当Client端向Server发出申请服务的呼叫时,Server会启动对应的进程;一旦服务结束,Server端将自动关闭对应的进程
有些大型网络服务或负荷较重的网络服务是不靠inetd管理的;如sendmail等。
它们虽然在/etc/services中有定义, 但是启动、关闭都是在/etc/rc2.d 下由单独
的脚本启动, 并在后台有单独的进程管理。


Sendmail进程就是一个系统启动时默认启动的服务的一个例子
# grep mail /etc/inet/services
smtp 25/tcp mail
当启动sol9系统时,sendmail进程由启动脚本/etc/rc2.d/S88sendmail初始化;sendmail进程启动之后开始监听端口25来收取邮件。不需要inetd进程来监听端口25和启动sendmail进程,因为sendmail进程已经运行了。
  手工停止sendmail进程
/etc/init.d/sendmail stop


不由inetd控制的固定端口服务有:


?        DNS,  通过S72inetsvc启动。
?        NIS,  通过S71rpc或者S71yp启动。
?        NIS+, 通过S71rpc启动。
?        NFS,  通过S15nfs.server启动。
?        in.routed, 通过S72inetsvc启动。


这样做的好处是:大型网络服务是由自己的专用后台进程来监听和处理,速度较快。
inetd则仅负责监听和处理负荷不重的网络服务,防止消耗系统资源。

 


telnet服务是一个系统启动时没有自动启动的固定端口服务;telnet服务使用inetd daemon 去监听网络请求,这样telnet服务就不必一直启动着,当inetd daemon在某一端口接收到网络请求,就会参照/etc/inet/service文件决定启动哪个服务。下面是连接到telnet服务的过程:
   

a.        主机sys41通过 “telnet sys42”命令,执行网络服务请求链接到接收主机sys42
b.        telnet 服务是固定端口服务(well-know service),其端口为23
c.        telnet包请求一个链接—转到主机sys42的23端口
d.        开始,inetd daemon 监听telnet服务的23端口。Sys41主机发出的“telnet sys42”命令,产生一个到23端口的请求,通过/etc/inet/services这个文件,inetd把这个请求作为telnet请求
e.        telnet服务并不是一直运行,而是等待一个connection。一旦有请求,Inetd daemon必须动态的启动telnet服务
f.        inetd daemon 参考/etc/inetd.conf文件为所请求的服务找到匹配的入口,inetd daemon 识别到telnet service 这行。
g.        Inetd daemon 参照/etc/inetd.conf ,执行in.telnetd进程,in.telnetd daemon接管控制了当前的telnet session的通讯。
h.        In.telnetd daemon 接收本次session在23端口持续不断的通讯,直到本次session结束。

4、        启动RPC服务
Rpc服务本身是固定端口服务,记录动态端口服务的程序号和端口号
Rpc服务包括:
系统启动时默认自动启动的那些服务
Boot是没有自动启动而是按需启动的服务
(1)boot时启动的RPC服务
     Boot时通过启动脚本一起启动的RPC服务,有可利用的连续端口超过32768,rpcbind 进程关联RPC程序号和端口号,rpcbind 服务必须运行在服务系统中,以使你可以向服务器发出RPC请求。当一个RPC服务在boot时启动,它会传递如下信息给rpcbind进程:
              与其关联的端口
              RPC程序号
     当一个client想产生一个RPC call来获得一个程序号,它能够发出RPC请求之前,必须首先联系服务器端的rpcbind服务来获得端口地址。如果RPC服务在启动期间,通过rpcbind daemon已经注册了它的当前端口号,RPC服务当前的端口号反馈给client端。
当启动solaris9 OE时,启动脚本/etc/rc2.d/S71rpc初始化rpcbind服务。Rpcbin daemon所使用的端口号记录在/etc/inet/services文件中,os启动完之后,rpcbind daemon启动在111端口的监听。查看rpcbind使用的端口,协议,使用如下命令:
  #grep rpcbind /etc/services
(2)按需启动RPC服务
     有一些RPC服务只是按需启动,端口号在服务器boot时由rpcbind进程登记。当client端的一个应用请求一个服务,rpcbin进程返回这个服务的端口号给client机器,client端机器使用刚刚返回的端口号产生一个新的请求。按需启动的RPC服务,例如sprayd 服务,通过如下步骤来实现:
a.rpcbind daemon 在所有系统中通过一个启动脚本已经启动。Sprayd服务在/etc/rpc和/etc/inetd.conf两个文件中记录,而且,在开机(boot)时,由rpcbind进程登记其当前委派的端口号和程序号。
b.host1上的一个用户发出了sprayd到host2的命令,sprayd请求开始由111端口处理,并包含sprayd服务的程序号。

c.服务器host2上的rpcbind daemon读取程序号,并确定该请求为sprayd服务。Rpcbind daemon返回sprayd服务当前的端口号给client host1。
d.client机器host1发出第二次请求到服务器host1上sprayd服务的端口。Inetd daemon接收到这个请求。
e.inetd daemon参照/etc/inetd.conf文件寻找与请求服务匹配的入口。Inetd daemon启动sprady服务。
f.rpc.sprady daemon接管本次sprayd会话的通信。
(3)rpcinfo命令
Rpcinfo命令产生一个到        RPC服务器的一个RPC调用,并形成报告。Rpcinfo比较常用的两个参数为-p和-d。

 

列出已经登记的RPC服务:
#rpcinfo –p
program vers proto   port  service
100000    4   tcp    111  rpcbind
100000    3   tcp    111  rpcbind
100000    2   tcp    111  rpcbind
100000    4   udp    111  rpcbind
100000    3   udp    111  rpcbind
100000    2   udp    111  rpcbind
100232   10   udp  32772  sadmind
100021    1   udp   4045  nlockmgr
100021    2   udp   4045  nlockmgr
100021    3   udp   4045  nlockmgr
100021    4   udp   4045  nlockmgr
100011    1   udp  32773  rquotad
100002    2   udp  32775  rusersd
100002    3   udp  32775  rusersd
100021    1   tcp   4045  nlockmgr
100002    2   tcp  32771  rusersd
100024    1   udp  32774  status
100021    2   tcp   4045  nlockmgr
100002    3   tcp  32771  rusersd
100021    3   tcp   4045  nlockmgr
100024    1   tcp  32772  status
100021    4   tcp   4045  nlockmgr
100012    1   udp  32776  sprayd


该命令返回程序号,程序号的版本号,RPC协议,端口号和RPC服务。

 

删除登记的RPC服务:
Rpcinfo –d  程序号 程序号的版本号
例如:
#rpcinfo –d 100012 1
该例子删除了sprayd服务,想再次注册sprayd服务,可以给inetd daemon发一个HUB信号:
#pkill -HUP inetd
 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章