- 论坛徽章:
- 0
|
第19章 网络文件NFS
19.1 NFS概念
NFS(Networking File System)是由SUN公司发展,并於1984年推出。NFS是一个RPC service ,它使我们能够达到文件的共享,它的设计是为了在不同的系统间使用,所以它的通讯协定设计与主机及操作系统无关。当使用者想用远程文件时只要用“mount”就可把remote文件系统挂接在自己的文件系统之下,使得远程的文件使用上和local机器的文件没两样。
假如我们在机器A上,要把机器B上的目录/usr/man挂接到机器A的/usr/man只要用下面的命令:
#mount machine_name:/usr/man /usr/home
就可mount过来。而我们不只是可以mount目录,就是一个文件也是可以的。在挂接之後我们只能对文件做reading (or writing) 的动作,而不能在remote machie上把此文件或目录move,delete掉,但须注意的是如我们使用- mount /usr後,不能再mount /usr底下的目录,否则会发生错误。
NFS就是促使Servers上的文件能被其他的机器mount,而达到资源共享,享用这些文件的机器就可称为Client,一个client可以从server上mount一个文件或是一个层次的目录(file hierarchies)。然而事实上任何一台机器都可以做NFS server or NFS client ,甚至同时为NFS server and NFS client也可以。
19.2 配置网络文件NFS
server端的配置
Scoadmin -> Filesystem -> Filesystem Manager > Export -> NFS -> Add Export Configuration或 手工编辑/etc/exports文件来进行一些特殊的设置 clients端的配置
Scoadmin -> Filesystem -> Filesystem Manager
> Mount -> Add Mount Configuration -> Remote或 手工编辑/etc/default/filesys文件来进行设置
NFS是如何工作的?
当我们启动NFS file server时,系统会自动启动exportfs这一个应用程序,指定可以export的文件或目录,而我们所能mount的也只能是其所指定的目录。
NFS架设在XDR/RPC的协议之上。
XDR : (eXternal Data Representation) 外部资料表示法
XDR(eXternal Data Representation) 提供一种方法把资料从一种格式转换成另一种标准资料格式表示法,确保在不同的电脑,操作系统及电脑语言中,所有资料代表的意义都是相同的
RPC : (Remote Procedure Calls) 远程程序呼叫
RPC(Remote Procedure Calls) 远程程序呼叫, 请求远程电脑给予服务。 客户机(client)就会透过网络传送RPC到远程电脑,请求服务。
NFS daemons (守护应用程序) 的功用
mountd,nfsd,inetd , portmap ,pcnfsd ,biod,statd,lockd是这些守护程序。
详细见《网络管理教程P5-16 》
mountd:mountd是一台RPC server ,启动rpc.mountd daemon後 它会读取/etc/xtab查看哪一台client正在mount哪一个file system,并回应client所要mount的路径
nfsd:依client对文件系统的需求情况启动” file system request daemon “以应付client的需求,而一般file system request daemon的数目是” 8 “,这也就是我们写” nfsd 8 & “的原因了。
biod:此命令是在NFS client上用的, 用来启动” asynchronous block I/O daemon”用来建立buffer cache ,处理在client上的读写
inetd : inetd (Internet services daemon) , 当系统启动时rc。local会启动inetd读取inetd。conf这一个configuration-file ,读取网络上所有server’s address , 连结启动inetd。conf中所有的server , 当client请求服务时, inetd就会为clinet启动相关的server daemon负责任务, 如user用telnet时 , 则- inetd启动telnetd迎合user telnet的需求,其馀像ftp ,finger , rlogin之类的应用应用程序 , inetd也都会启动相对应的daemons, ftpd, fingerd, rloingd
portmap : portmap是一台server ,主要功能 转换TCP/IP通讯协定的port number变成RPC program number , 因为这样clinet才能做RPC calls
一般RPC server是被inetd所启动的, 所以portmap必须在inetd之前启动, 否则无法做RPC call
NFS引起的网络安全方面的问题有哪些?
NFS使server上的文件能被client所取用,乍看之下好像server上的文件任何人都可取用没什麽保护性,其实不是如此的。一开始server要exportfs之前在 /etc/exporrc中就已经设定了文件的使用权限,像/usr/src -access=engineering:accounting就是限定只有rcgineering和accounting这两台client才能mount /usr/src
/usr/src -access=oak,root=oak这是说只有oak这台cilent能mount这一个路径且只有oak client’s superuser才能行使read & write的权力
另外管理者为了维护exported和mounted的安全,一定要建立公共(public)和私人(secret)的key(password), 然而这些安全性问题是要建立在NIS (network infomation system) 上的, 有一个/etc/publickey文件 ,里面记录了public and secret keys , 而这些key是依照machine_name和user_name ,以16进位码表示出来的, 管理者可在有NIS的机器上用
newkey -u username给予user login权力
newkey -h hostname造出login此机器时所需的password
在NFS刚安装时user是 “nobody” 任何人都可以进入, 所以管理者一定要做修改,以保护资料的安全。
当使用者为nobody时publickey的内容
netname user’s public key : user’s secret key
nobody 3d91f44568fbbefada5a7:7675cd9b8753b5db09dabf12
在管理者给予user权力之後, user就可使用chkey修改自己的secret key创造自己的帐号。
willow% chkey
Generating new key for username
password :
Sending key change request to server 。。。
Done。
willow%
所设定的password是使用者位於NIS中的加密键, 当我们login时NIS就会将此密码解开,(因为publickey中是以16进位码记录) , 存放到keyserv里加以保管, 再将加密键传给client , 当client发出请求时 ,此键会附在每个NFS请求上一起送到NFS server上, 当加密键和server上所保存的keyserv核对无错後, 请求就会被接受
l When fail to mount server
1. 用rpcinfo -p server_name去查看此server是否存在
2. 用rpcinfo -u server_name mount查看mountd daemon是否有在server上执行
3. 假如server都没问题,检查server和client之间的Ethernet connetions
4. 在client上 用ps ax看portmap and several biod daemons running or not !
(rpcinfo : 用来对RPC server做RPC呼叫,回传远程程序呼叫过程中的讯息)
遇到NFS方面的问题时,可用Networking Guide ,“Configuring the Networking File
System“,“Troubleshooting NFS”
第20章 PPP协议
配置PPP点对点协议(Point to Point Protocol)
PPP 协议是SLIP ( 串行协议网际协议)的后继,PPP变成了异步网络通信的工业标准。
PPP的特点:
l 允许IP数据包在串行或电话线上传输
l 知道如何对modem拨号来实现拨输出连接请求,如何应答modem来实现拨入连接请求
l 可被配置为监督线路,当一段时间内没有数据包发送时挂断线路
l 提供网络管理的许多便利
配置UUCP文件
配置PPP 之前,首先要配置UUCP 文件。因动态拨出(dynamic outgoing) PPP连接使用UUCP工具来选择正确的modem,对其设置并拨号,以与远端系统建立连接。动态拨入(dynamic incoming) PPP连接使用UUCP工具来设置modem以接收拨入呼叫。
配置UUCP 文件方法:
1. UNIX 的工具
# mkdev modem 设置 Devices文件
# scoadmin -- networks -- ppp 设置Systems 文件
2. 可用vi命令对文件进行编辑
3. 可用/etc/uuinstall工具来配置或修改文件。
1. Devices文件
UUCP软件在文件/usr/lib/uucp/Devices中列出了可用于与远端系统建立连接的所有设备。该文件为文本文件,包括以下两类项:
l 连接到机器上的modem列表
l 与其它机器直连的串行线
为设置动态PPP连接,通常使用modem,如不考虑项的类别,文件中的每一项都包含以下五个域:
type 为通过modem建立PPP,该域必须为“ACU”,即
automatic call unit。
Ttylin 指定modem所连的串口名字。例如,如果modem
在第二个标准的PC串口上,则该域为/dev/tty2A。
Dialerline 如果modem不能自己拨号,可在此域指定电话拨
号器所在串口的名字,现代modem都能拨号,故
该域为“-”,表示无另外的拨号器。
speed 在该域填写modem和串口共同支持的最高速率,并不一定等于modem
远端系统相连接的速率。
dialer-token 为通过modem建立PPP,该域必须为拨号器程序的绝对路径名,拨号器
序知道如何发送相应的代码到modem以进行拨号并解释结果。SCO在
/usr/lib/uucp目录中提供了许多常用的modem的拨号器程序,这些程序以
dial或atdial开头。
#mkdev modem
2. Systems文件
UUCP系统使用文件/usr/lib/uucp/Systems列出与本地主机通过直连线或modem相连的远端系统的名字。每一项包括:
l 所建立连接的类型(modem或直连线)
l 连接的速率
l 如为modem连接,所拨的电话号码
对于动态拨入(dynamic incoming) PPP连接,不需在该文件中建立对应项,而对于动态拨出(dynamic outgoing) PPP连接,则需建立。各项的格式为:
sitename 被呼叫的机器名字,即在远端主机上使于带-n标志的uname命
时所报告的文字。
schedule 对于拨出(outgoing) PPP连接,将该域设为“Any”。
device 对于动态PPP拨出,该域为“ACU”,表示为modem,如果通过
直连串行线实现动态PPP连接,该域为串口设备的名字。
speed 与远端系统相连所使用的速率,该速率值应与预先建立的Devices
文件中相应项的速率兼容。
phone 所连机器的电话号码。
login-script 该域用于与远端系统协商登录。它包括你希望远端系统发给你的
一系列提示符,如login:,和你希望作为对这些提示符的响应,发
给远端系统的信息,如nppp。
#scoadmin --- networks --- ppp
3. 使用uuinstall (ADM)和对UUCP设置进行测试
正如前面所提到的,你可以使用菜单驱动的uuinstall命令来建立Devices文件和Systems文件。uuinstall命令:
l 允许你选择所修改的文件
l 提示你每个域的值
l 检查无效的项,并对你提出警告
l 一旦Devices和Systems中的项被建立,允许通过菜单选择Test connection with remote site来测试连接。
如果呼叫失败,指出并修改问题所在,然后再次测试。也可通过以下命令行来进行测试:
/usr/lib/uucp/uutry -r system
system为你所测试的连接的远端系统名。
4 建立PPP接口
一旦UUCP文件已被建立以支持PPP,你可以运行scoadmin命令并执行以下步骤来配置实际的PPP接口:
步骤 Networks -- Network Configuration Manager --
Add new WAN connection -SCO TCP/IP PPP driver -- 从PPP
connection Type中选择PPP连接类型,并单击OK按钮。
Dynamic outgoing 动态拨出
Dynamic incoming 动态拨入
Dedicated 直连
Manual outgoing 手工拨出
对于单一的系统,每种类型可以有多个接口,每个接口在/etc/ppphosts文件中都会有对应的一项。
Local host name 到Destination IP address 各域
“Local host name”, “Host IP address”, “Destination name”和“Destination IP address”这四个域是互相联系的,并根据是否对链路的一端或两端使用动态IP地址而有所不同。
如果你希望链路的一端或两端使用动态IP地址,那么:
步骤1 将相应的“name”域留空。
步骤2 将相应的“IP address”域填为0.0.0.0。
如果你希望固定链路的一端或两端的IP地址,那么:
l 在PPP链路对应端的“name”域和“IP address”域中填入所期望的名字和IP地址。每个网络接口都应有唯一的名字和IP地址。
Network Configuration Manager将建议名字格式为ppp_machine, “machine”为主机名,另一种更常用的命名规则为将“_ppp#”添加到主机名后,这里#为PPP接口的序号。并不一定非要在“name”域填写,但最好填写。
l “name”域的值将成为该接口的名字,如使用DNS或NIS将需要在与接口相应的文件中手工创建数据项。
ppphosts文件包含系统中每个PPP链路相对应的项,每项的第一个域称为“link name”域,当按OK按钮以创建接口时,该域的内容被填入。
l “linkname”域的格式为:dest_name: local_name
l dest_name和local_name分别包含“Destination name”和“Local host name”域的值。
l 如果两个“name”域中有空,相应的IP地址将会代替name。
Netmask域
“Netmask”域设置该接口的网络掩码,如该域被设置,则/etc/ppphosts文件中将用“mask=网络掩码”的格式来记录,这里网络掩码以4个“点分十进制”字段来表示,即如用ifconfig命令时所看到的。如该域未设置,则缺省值255.255.255.0将被使用。
UUCP destination name域
“UUCP destination name”域指明/usr/lib/uucp/Systems文件中的哪一项被用来拨号并登录到远端系统。如该域被设置,则/etc/ppphosts文件中将以“uucp=系统名”的格式来记录,这里系统名与Systems文件中的一项相匹配。如该域未设置,则上述的“Destination IP Address”域的值将作为其缺省值来使用。
Number of UUCP retries域
“Number of UUCP retries”域指定UUCP系统在放弃连接尝试之前,应该被呼叫多少次以建立dynamic outgoing link。如该域被设置,则/etc/ppphosts文件使用“retry=次数”格式来记录,这里次数即为希望UUCP试图建立连接的次数。如该域未设置,则使用缺省值2。
Gateway 域
“Gateway”域允许你指明主机是否作为网关来工作。只有当你已经配置了另一个网络接口时,该域才会出现,将其设为Yes(缺省值)将会以inconfig命令来打开ipforwarding和ipsendredirects这两个核心参数。
下面是拨出的配置:
Attach name: ispname
Local hostname: scosysv
Host IP address: 192.168.88.102
Destination Name: ppp_server
Destination IP address: 192.168.88.200
Netmask : 255.255.255.0
UUCP Destination name :scolo
Numbers of UUCP retries: 5
Gateway: Yes No
在 Advanced Options 中可选择 Debug level 为2 ,Line flow Control
为 rtscts , 即硬件流控。
5. 动态拨出链路(Dynamic outgoing links)
Dynamic outgoing links用于当你需要在数据包要求被发送到PPP链路的远端时,该链路能自动建立和挂断。Dynamic outgoing links可用于以下几种情况:
l 主机需要初始化一个以上的连接时
l 链路两边的IP地址都是固定的
其设置与Manual outgoing links的配置相似,但有以下几点不同:
l “Attach name”域不存在,这是因为当一个IP数据包要通过该链路发送时,由pppd守护进程来建立该链路。
l 如以前所讨论的,Dynamic outgoing links不支持动态IP地址,因此,表格中的所有“name”和“address”域必须填写。
6. 动态拨入链路(Dynamic incoming links)
当一个或更多的主机通过modem以PPP拨入你的主机时,需在你的主机上配置Dynamic incoming links。
其设置与Dedicated link相似,只是没有“TTY line for PPP”和“Baud rate”域,而多了“PPP login name”域。
“PPP login name”域的内容在/etc/ppphosts文件中作为“Link name”域(该项的起始域)来记录,格式为*login,这里login为该域所键入的文本。
当远端主机通过PPP登录进你的主机时,发生以下情况:
步骤1 远端主机给出帐户名,该帐户已在你的主机上创建,其shell为/usr/lib/ppp/ppp。
步骤2 远端主机给出相应的口令字。
步骤3 shell /usr/lib/ppp/ppp 被启动,以对所用的登录名称确认。
步骤4 当在/etc/ppphosts文件中找到该登录名时,以该文件中所列出的相应链路参数来建立链路。
在设置过程中,如果键入“PPP login name”域内的名称并不存在,则Network Configuration Manager将问你是否要建立该帐户,如果创建该帐户,将赋予正确的shell。
如果希望对应于不同的链路,使用不同的“非协商高级参数集”,则需要为每个链路指定一个不同的登录名。同时远端主机需要使用不同的登录名来获取相应的参数。
配置Dynamic incoming link与配置其它类型的PPP最大的区别在于“name”域被如何记录。由于该类型包含登录名的配置,所以“name”域的值在/etc/ppphosts文件中以下列格式来记录:
local=lip_addr remote=rip_addr
这里lip_addr和rip_addr为“Local host name”和“Destination name”域的值,如果“name”域为空,则相应的“address”域的值将被使用。
注意:SCO OpenServer Release 5的PPP不能通过使用前面所讨论过的将IP地址设为全0的方法来实现Dynamic incoming link上的动态IP地址协商,而是通过使用2.6节的“ppppool文件”来实现。
ppppool文件
对于dynamic incoming连接,可以根据/etc/ppppool文件中列出的IP地址来设置连接两端的IP地址。为使一个PPP接口实现动态IP地址协商,/etc/ppphosts文件中相应的dynamic incoming项应该增加两个域:
noipaddr remote=+ “标识符”
该标识符指明/etc/ppppool文件中的一项,/etc/ppppool包含一组项,每一逻辑行为一项,每项的格式为:
tagname local: remote [local: remote...]
这里:tagname唯一地标识一个地址表
local和remote为IP地址对,两者以“:”隔开。
逻辑行长度可以超越一个物理行,通过在物理行的结尾加入一个“\”来进行扩展。
当建立PPP连接时,pppd搜索/etc/ppppool文件中相应逻辑行的IP地址对,一旦找到一个未被使用的IP地址对,那么就把它们分配给链路的两端。
如果没有找到有效的IP地址,则PPP连接失败。
在我们的例子中,bardados可以在它的/etc/ppphosts文件中增加一项:
noipaddr remote=+inbound
并且它的/etc/ppppool文件中包含如下项:
inbound 200.100.50.100: 200.100.50.101 200.100.50.100:200.100.50.102\
200.100.50.100:200.100.50.103 200:100:50:100: 200.100.50.104
该项指定本地IP地址总为200.100.50.100,但远端地址可在200.100.50.101至200.100.50.104之间变化。
pppfilter文件
当两个LAN通过接口互连,并且其中一个LAN不是很安全时,好在两个LAN之间建立防火墙,在与ISP相连的情况下,尤其如此。
“包过滤”可以看作建立防火墙的一块砖,它使pppd守护进程能够选择哪些数据包可能通过PPP接口进行传输和接收:
l 导致一个PPP接口被建立
l 导致一个timeout计时器被启动以保持一个PPP连接
l “包过滤”基于:
² 传输协议
² 源或目标IP地址
² 源或目标端口号
² 数据包的长度或类型
“包过滤”可以针对每个PPP接口,配置为不同的情况。
在我们的例子中,barbados与Internet的PPP接口可以使用“包过滤”,而其它普通的PPP接口的“包过滤”配置可以不同,甚至普通PPP接口可以不设置“包过滤”,关于“包过滤”的其它讨论不在本课程范围之内。
3. 核心参数
当SCO主机上使用高速串行通信时(例如PPP运行于串行线路)有两个核心参数需要调整:
TTHOG 决定串行设备驱动器的raw输入队列的大小,它限制了在不丢失字符的情况下,输入队列中数据量的最大值。缺省为256,显然对于PPP是不够的,至少应为2048,可能需要4096或更高。
NCLIST 串行设备驱动器可用的64byte cblock的数量。并不是所有的串行接口卡驱动器都使用该参数,NCLIST的值可用下列公式计算:
NCLIST= old_NCLIST+
(TTHOG*number_of_fast_serial_ports/64)
以-y和-a参数来执行sar命令可以确定这两个参数是否过低。使用configure命令可以改变核心参数的有效值,之后必须重新链接核心并重新启动以使改变生效。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/17749/showart_103829.html |
|