linux 服务器
连接 Internet
网络配置相关文件
/etc/sysconfig/network-scripts/ifcfg-eth0
:用于查看IP
、Netmask
、DHCP
、Gateway
等DEVICE
:网卡的名称,这个值需要与ifcfg
后的值相同BOOTRPROTO
:是否使用dhcp
,如果是手动分配 IP,需要输入static
或none
HWADDR
:是否加入网卡MAC
地址,可以区分不同的网卡IPADDR
:IP 地址NETMASK
:子网掩码ONBOOT
:要不要默认启动此端口GATEWAY
:网关地址,代表整个主机系统的Default Gateway
NM_CONTROLLED
:额外的网管软件,建议取消
/etc/sysconfig/network
:主机名NETWORKING
:要不要使用网络NETWORKING_IPV6
:是否支持 IPV6HOSTNAME
:主机名
/etc/resolv.conf
:Name Server DNS
的 IP 地址可以直接输入中国电信的 DNS202.96.199.133
/etc/hosts
:私有 IP 主机名别名/etc/services
:记录构建在TP/IP
上的各种协议,包括HTTP
、FTP
、SSH
、Telnet
等服务所定义的port number
/etc/protocols
:这个文件是定义IP
数据包协议的相关数据
网络方面的启动命令
/etc/init.d/network restart
:可以一口气重新启动整个网络的参数ifup eth0 (ifdown eth0)
:启动或是关闭某个网络接口,这两个script
会主动到/etc/sysconfig/network-scripts/
目录下读取适当的配置文件来处理ifconfig eth0
:用于查看配置是否正确route -n
:查看路由定义是否正确dig <域名>
:用于查看解析域名的 DNS 服务器hostname
:获取主机名
无线网络
在无线网络中,也需要一个接收信号的设备,就是无线接入点 AP(Wireless Access Point)
比如 TP-Link
路由器,另一个设备就是装在计算机主机上的无线网卡了
iwconfig
:用于无线网络设置的一个命令,与ifconfig
类似,可以查看模块与对应的网卡代号,如果发现加粗字体,就代表该网络接口使用的是无线网卡ifconfig ra0 up
:其中ra0
就是网卡别名,用于启动无线网卡iwlist ra0 scan
:用于搜索整个区域内的无线接入点/etc/sysconfig/network-scripts/ifup-wireless
:用于查看无线网卡设置 网卡设置DEVICE
:设备名,比如上面的ra0
BOOTPROTO
:类似有线ONBOOT
:是否开机启动RATE
:严格指定传输的速率,与iwconfig
相同 启动无线网卡ifup ra0
常见问题说明
- 如果两部主机之间无法查询到正确的主机名与 IP 的对应信息,将可能发生持续查询主机名对应的动作,这个动作一般持续 30~60 秒,此时可以在
/etc/hosts
中给予内部的每台主机一个名称与 IP 的对应即可 - 域名无法解析,需要进入
/etc/resolv.conf
文件中配置 - 如果使用拨号,不要在
ifcfg-eth0
中指定GATEWAY
或是GATEWAYDEV
等变量
常用的网络命令
设置网络参数的命令
-
ifconfig
:没有参数可以查看所有网络接口ifconfig <interface>
:可以查看对应网卡的数据ifconfig <interface> <up|down>
:可以手动启动、查看与修改网络接口的相关参数,包括IP
参数以及MTU
等,其中interface
为网卡接口名称ifconfig <interface> <optioins>
:options
为可以使用的参数,包括up, down
:启动或关闭该网络接口mtu
:可以设置不同的MTU
数值netmask
:就是子网掩码broadcast
:就是广播地址
-
ifup
|ifdown
:这两个其实是script
,它会直接到/etc/sysconfig/network-scripts
目录下查找到对应的配置文件,比如ifup ehto
,它会读取ifcfg-eth0
这个文件的内容,然后加以设置。如果以ifconfig eth0
的方式来设置或是修改了网络接口后,就无法再以ifdown eth0
的方式来关闭 -
route
:用于查看路由 两条主机一定要有路由才能够互通TCP/IP
协议,否则无法连接,一般来说,只要有网络接口,该接口就会产生一个路由-n
:不要使用通信协议或主机名,直接使用IP
或port number
-ee
:显示更详细的信息-net
:表示后面接的路由为一个网络-host
:表示后面接的为连接到单部主机的路由netmask
:与网络有关,可以设置netmask
决定网卡的大小gw
:gateway
的简写,后续接的是 IP 的数值,与dev
不同dev
:如果只是要指定由那一块网卡连接出去,使用这个设置,后面接eth0
等 它能够有以下几个参数显示
-
Destination
|Genmask
:这两个参数分别就是network
与netmask
-
Gateway
:改完落实通过哪个Gateway
连接出去,如果显示0.0.0.0
则表示该路由是直接由本机传送;如果显示 IP 的话,表示该路由需要经过路由器(网关)的帮忙才能够发送出去 -
Flags
:总共有多个标志,代表的意义如下U(route is up)
:该路由是启动的H(target is a host)
:目标是一台主机而非网络G(use gateway)
:需要通过外部的主机来传递数据包R(reinstate route for dynamic routing)
:使用动态路由时,恢复路由信息的标志D(dynamiclly installed by daemon or redirect)
:动态路由M(modified from routing daemon or redirect)
:路由已经被修改了!(reject route)
:这个路由不会被接受,用来阻止不安全的网络
-
iface
:这个路由传递数据包的接口 -
ip <option> <动作> <命令>
:这个命令综合了ifconfig
和route
两个命令-
-s
:显示出设备的统计数据,例如接受数据包的总数等 关于接口设备的相关设置ip link
,包括MTU
以及改完络接口的MAC
等,当然也可以启动up
和down
某个网络接口ip -s link show
:单纯查看该设备相关信息ip link set <device> <动作与参数>
:其中动作与参数包括下面的动作,但是使用前需要关闭网卡up
|down
:启动或关闭某个接口address
:如果这个设别可以更改MAC
的话,用这个参数修改name
:给予这个设备的一个特殊名字mtu
:就是最大传输单元
ip address show
:查看 IP 参数ip address <add | del> <IP参数> <dev 设备名> <相关参数>
:进行相关参数的增加或删除设置,相关参数有下面这些broadcast
:设置广播地址,如果设置值是+
表示让系统自动计算label
:就是这个设备的别名,比如eth0:0
scope
:这个选项的参数
-
-
iwlist
和iwconfig
可以设置无线网络 -
dhclient
:如果使用DHCP
协议,则这个命令才是真正发送DHCP
请求的 -
ping
主要通过ICMP
数据包来进行整个网络的状态报告,其中最重要的就是ICMP type0、8
这两个类型,它还是使用IP
数据包来传送ICMP
数据包,而IP
数据包里有个相当重要的TTL
属性-
-c
:后面接数字,表示执行ping
的次数 -
-n
:在输出数据时不进行IP
与主机名的反差,直接使用IP
输出 -
-s <num>
:发送出去的ICMP
数据包的大小,默认为56 bytes
,不过可以放大此数值 -
-t <num>
:TTL
的数值,默认为255
,每经过一个节点就会少一 -
-W <num>
:等待响应对方主机的秒数 -
-M [do|dont]
:主要在检测网络的MTU
数值大小,两个常见的项目时:do
:代表传送一个DF(Don't Fragment)
标志,让数据包不能重新拆包与打包dont
:代表不要传送DF
标志,表示数据包可以在其他主机上拆包与打包显示的数据有以下信息
-
64 bytes
:表示这次发送的ICMP
数据包大小为64 bytes
-
icmp_seq=1
:ICMP
的检测次数 -
ttl=243
:TTL
和IP
数据包内的TTL
是相同的,没经过一个带有MAC
的节点,比如router
、bridge
时,TTL
就会减少 1,默认为255
,但如果是在同一个网络内,默认为64
-
time=15.4ms
:响应时间,越小越好
-
-
traceroute <IP>
:此命令可以跟踪两台主机之间通过的各个节点的好坏-n
:可以不必进行主机的名称解析,单纯用IP
,速度较快-U
:使用UDP
的端口33434
来进行检测,这是默认的检测协议-I
:使用ICMP
的方式来进行检测-T
:使用TCP
的方式进行检测,一般使用端口80
进行检测-w
:如果对方主机在几秒钟内没有回应就声明不通,默认5
秒-p <端口号>
:如果不想使用UDP
或是TCP
的默认端口测试,则可在此改变端口号-i <设备>
:用子啊比较复杂的环境,如果网络很多很复杂时,参会用到这个参数-g <路由>
:和-i
的参数相似,只是-g
后面接的是gateway
的IP
-
netstat
:查看本机的网络连接与后门 与路由有关的参数-
-r
:列出路由表route table
,功能如同route
这个命令 -
-n
:不使用主机名与服务名称,使用IP
与port number
,如同route -n
与网络接口有关的参数 与网络有关的参数 -
-a
:列出所有连接状态,包括tcp/udp/unix socket
等 -
-t
:仅列出TCP
数据包的连接 -
-u
:仅列出UDP
数据包的连接 -
-l
:仅列出已在listen
监听的服务的网络状态 -
-p
:列出PID
与Program
的文件名 -
-c <num>
:可以设置几秒钟后更新一次
-
-
host
:这个命令可以查出是某个主机名的IP
,这个IP
是通过/etc/resolv.conf
那个文件内的 DNS 服务器 IP-a
:列出各主机详细的各项主机名设置数据
-
nslookup
:这条命令和host
基本是一样,也是使用/etc/resolv.conf
文件来作为 DNS 服务器的来源选择-query=type
:查询单类型,除了传统的IP
与主机名对应外,DNS
还有很多信息:所以我们可以查询很多不同的信息,比如mx
、cname
远程连接命令与即时通信软件
远程连接就是在不同计算机之间进行登录
telnet <host | IP port>
:他不但可以直接连接到服务器上,还可以连接到BBS
,但是数据在telnet
上是通过明文传输FTP
连接软件ftp <host | IP> <port>
:用于处理FTP
服务器的下载数据lftp
:默认使用你们登录FTP
服务器,可以使用类似网址的方式取得数据-p
:后面可以接上远程FTP
主机提供port
-u
:后面接上账号和密码,就能够连接上远程主机了,如果没有账号密码,会适应anonymous
登录-f
:可以将命令写入监本中,这样可以帮助进行shell script
的自动处理-c
:后面直接加上所需命令
文字接口网页浏览
links <url>
:文字接口浏览器,这个命令可以来浏览网页但最大的功能是可以使用它来茶语Linux
本机上以HTML
语法写成的文件数据-anonymous [0|1]
:是否使用匿名登录-dump [0|1]
:是否将网页数据直接输出到标准输出而非links
软件功能-dump_charset
:谋面接想要通过dump
输出到屏幕的语系编码,简体中文使用cp936
wget <网址>
;能够进行网页数据的取得--http-user=username
:当连接的网站需要登录时输入用户名--http-passwork=password
:当连接的网站需要登录时输入密码--quiet
:不要显示wget
在捕获数据时的显示信息
数据包捕获
tcpdump
:它不但可以分析数据包的流向,连数据包的内容也可以进行监听,如果使用明文传输的话,在Router
或Hub
上就会被别人监听-A
:数据包的内容以ASCII
显示,通常用来抓取WWW
的网页数据包数据-e
:使用数据链路层OSI
第二层的MAC
数据包来显示-nn
:直接以IP
和port number
显示,而非主机名与服务名称-q
:仅列出较短的数据包信息,第一行比较精简-X
:可以列出十六进制以及ASCII
的数据包内容-i
:后面接要坚挺的网络接口,比如eth0
,lo
,ppp0
等界面-w
:如果想要将监听所得的数据包数据存储下来,用这个参数就行,后面接文件名-r
:从后面接的文件将数据包数据读出来,这个文件是已经存在的文件,并且这个文件是由-w
制作出来的-c
:监听的数据包数,如果没有这个参数,tcpdump
会不断地监听
wireshark
:这个软件是图形接口的数据包捕获器nc <IP | host> <port>
:可以作为某些服务的检测,因为它可以连接到某个port
来进行通信,还可自行启动一个port
来监听其他用户的连接-l
:作为监听之用,也就是打开一个port
来监听用户连接-u
:不使用TCP
而是使用UDP
作为连接的数据包状态
路由的概念与路由器设置
路由
路由最大的功能是帮我们规划网络数据包的方式和方向,每台主机都有自己的路由表,你必须要通过自己的路由表将主机的数据包转发到下一个路由器
route -n
:可以列出路由表 路由表主要按下面几种情况设计- 依据网络接口产生的
IP
而存在的路由,当有几个网络接口存在时,该网络接口就会存在一个路由 - 手动或默认路由:可以使用
route
这个命令手动给予额外的路由设置,例如默认路由0.0.0.0/0
,使用route
命令时,最重要的是你所规划的路由必须要是你的设备,比如eth0
或IP
可以直接沟通的情况才行 - 动态路由:需要额外的软件支持,比如
zebra
可以通过ifconfig
或ip
命令实现一个网卡对应多个IP
的网络,它也被称为ip alisa
,它有以下几个常见功能 - 测试
- 在一个实体网络内有多个 IP 网络,比如在补习班或是学校单位
- t 既有设备无法提供更多实体网卡时
如果想要在开机就使用
ip alias
时,可以通过以下方法设置 - 将
ipconfig
写入/etc/rc.d/rc.local
文件中 - 建立
/etc/sysconfig/network-scripts/ifcfg-eth0:0
配置文件
路由器配置
路由器的主要功能就是转发网络数据包。路由器会分析来源段数据包的 IP
包头,在包头内找出要送达的目标 IP
后,通过路由器本身的路由表 Routing Table
来将这个数据包向下一个目标 Next Hop
传送。路由器的功能目前有两种方法实现功能
- 硬件功能:比如
TP-Link
- 软件功能:如 Linux 这个操作系统的内核就提供了数据包传递的能力
NAT(Network Address Translation
网络地址转换服务器可以实现IP
共享的功能,其实路由器就是最简单的NAT
服务器,不过NAT
服务器比IP
路由器多了一个IP
转换的功能,二者的差别如下 - 一般来说,路由器有两个网络接口,通过路由器本省的
IP
转发功能让两个网段可以互相沟通网络数据包。如果两个接口一边是公共IP
,一边是私有IP
,此时就需要IP
转换 - Linux 的
NAT
服务器可以通过修改数据包的IP
包头数据的来源或目标IP
,让来自私有IP
的数据包可以转成NAT
服务器的公共IP
远程连接服务器
远程连接服务器
远程连接服务器通过文字或图形接口的方式来远程登录系统,让你在远程的终端面前登录 Linux 主机以取得可操作主机的接口,而登陆后的操作感觉上就像坐在系统面前一样 远程连接服务器有以下功能
- 分享
Unix-Like
主机的运算功能 - 有限度地开放连接,除非必要,否则
Server
类型的主机不建议开放远程连接功能 - 只对内网开放
SSH
是Secure Shell Protocol
的简写,它可以通过数据包加密技术等将传输的数据包加密后传输到网络上 目前常见的网络数据包加密技术通常是通过所谓的对称密钥系统来处理的,主要是通过两把不一样的公钥和私钥来处理,它们的作用如下 - 公钥
Public Key
:提供给远程主机进行数据加密的行为 - 私钥
Private Key
:远程主机使用你的公钥加密的数据,在本地端就能够使用私钥进行解密,私钥是不能进行外流的SSH
服务器端与客户端的连接步骤如下
- 服务器建立公钥文件:每一次启动
SSHD
服务时,该服务会主动找/etc/ssh/ssh_host*
文件,如果没有会主动计算出这些需要的公钥文件,同时也会计算出服务器需要的私钥文件 - 客户端主动连接要求:若客户端想要连接到
SSH
服务器,则需要使用适当的客户端程序来连接,包括SSH
、Pietty
等客户端程序 - 服务器传送公钥文件给客户端:接收到客户端要求后,服务端便将第一个步骤取得的公钥文件传送给客户端使用
- 客户端记录/比对服务器端公钥数据以及随机计算自己的公私钥:若客户端第一次连接到此服务器,则会将服务器端公钥数据记录到客户端的用户主目录内的
~/.ssh/known_hosts
。如果已经记录过该服务器的公钥数据,则客户端回去比对此次接受到的与之前的记录是否有差异。若接受此公钥数据,则开始计算客户端自己公私钥数据 - 返回客户端的公钥数据到客户端:此时服务器拥有服务器的私钥与客户端的公钥,而客户端则具有服务器的公钥以及客户端自己的私钥
- 服务器接受私钥开始双向加解密:服务器传送数据时,将用户的公钥加密后进行发送,客户端接受后,用自己的私钥解密,客户端也是如此
-
ssh <账号@IP> <command>
:可以远程连接主机 shell-f
:需要配合后面的command
,不登录远程主机直接发送一个命令过去而已-o
:参数项目,主要的参数项目有ConnectTimeout=秒数
:连接等待的描述,减少等待的时间StrictHostKeyChecking=<yes|no|ask>
:默认为ask
,若要让publick key
主动加入known_hosts
,则可以设置为no
即可
p <port>
:如果sshd
服务启动在非标准的端口,需使用此项目 当登录远程服务器时,本机会主动利用接受到的服务器的Public Key
去比对~/.ssh/known_hosts
有无相关的公钥,然后进行下面的操作:
-
若接受的公钥尚未记录,则询问用户是否记录,若要记录则写入
~/.ssh/known_hosts
且执行后续工作;若不记录则不写入该问阿金 -
若接收到的公钥已有记录,则比对记录是否相同,若相同则继续登录动作,不相同则不能登录
SSH
是登录远程服务器进行工作,如果只是想要从远程服务器下载或上传文件,就不是使用SSH
,必须要使用SFTP
或SCP
-
SFTP
:进入到SFTP
之后,就与一般FTP
模式下的操作方法没有两样了 -
SCP <file> <账号@主机:目录名>
:可进行文件异地直接复制,但是必须知道文件名 -
SCP <账号@主机:目录名> <file>
:下载-p
:保留文件原有信息-r
:复制来源为目录时,可以复制整个目录-l <速率>
:可以限制传输的速率,单位为Kbits/s
基本上所有的SSHD
服务器的详细设置都在/etc/ssh/sshd_config
配置文件中
SSH
服务只是因为传输的数据被加密过所以称为安全的传输工具,但是 SSHD
这个服务并不是一定安全,所以尽量将 ssh
限制在几个小范围内的主机名或 IP
上,有以下三个方面进行安全的设置
- 服务器软件本身的设置强化:
/etc/ssh/sshd_config
,可以设置不能登录的组或用户 TCP Wrapper
的强化:/etc/hosts.allow
,/etc/hosts.deny
,设置能够登录的IP
iptables
的使用:iptables.rule
,iptable.allow
VNC
VNC Server
会在服务端启动一个监听用户要求的端口,一般端口号码在 5901 ~ 5910
中间,当客户端启动 X Server
连接到 5901
之后, VNC Server
再将一堆设置好的 X Clinent
通过这个连接传递到客户端上
默认的 VNC Server
都是独立提供给单一一个客户端来连接的
-
vncserver <:号码> <-geometry 分辨率> <options>
:号码
:将VNC Server
开在哪个端口,如果是:1
代表VNC 5901
端口-geometry
:设置分辨率,比如1024x768
或800x600
options
:其他x
相关的选项,例如-query localhost
之类的
-
vncserver <-kill :号码>
-kill
:将已经启动的VNC
端口删除,根据身份进行控制 需要首先使用tigervnc-server
安装VNC
-
vncpasswd
设置修改或设置vnc
的密码
DHCP 服务器
DHCP(Dynamic Host Configuration Protocol)
:就是自动地将网络参数正确地分配给网络中的每台计算机,让客户端的计算机可以在开机的时候就立即自动配置好网络的参数值,比如 IP
、 netmask
、 network
、 gateway
、 DNS
等
DHCP
通常是用于句句网内的一个通信协议,它主要是通过客户端发送官博数据包给整个物理网段内的所有主机,若局域网内有 DHCP
服务器时,才会响应客户端的 IP
参数要求
整个 DHCP
数据包在服务器与客户端间的交互情况如下:
-
客户端通过
broadcast
搜索DHCP
服务器 若客户端网络设置使用DHCP
协议取得IP
,则当客户端开机或是重新启动网卡时,客户端主机会发送出查找DHCP
服务器的UDP
数据包给所有物理网段内的计算机, -
服务器端通过
unicast
给客户端提供参数:DHCP
服务器在接收到客户端的要求后,会针对这个客户端的硬件地址MAC
与本身的设置数据来进行下列工作:-
到服务器的日志文件中查找待用户之前是否曾经租用过某个
IP
,若有且该IP
目前无人使用,则通过此IP
给客户端 -
若配置文件针对该
MAC
地址提供特定的固定IP(static IP)
时,则提供该固定IP
给客户端 -
若不符合上述两个条件,则随机选取当前没有被使用的
IP
参数给客户端,并记录下来 我们可以设定DHCP
服务器给予客户端的IP
参数主要有两种 -
固定
IP(Static)
:只要计算机的网卡不换掉,那么MAC
肯定就不会改变,这种情况比较适合当这台客户端计算机需要用来作为网络内的一些服务器主机的情况 -
动态
IP(Dynamic)
:客户端每次连上DHCP
服务器所取得的IP
都不是固定的,都是由DHCP
服务器在未被使用的IP
地址池中随机选中并提供的
-
-
客户端通过
broadcast
选择参数并向服务器确认: 由于局域网内可能并非仅有一台DHCP
服务器,但客户端仅能接受一组网络参数租约,因此客户端需要选择是否要认可该服务器提供的相关网络参数的租约,当决定使用此服务器的网络参数租约后,客户端便开始使用这组网络参数来配置自己的网络环境 -
服务器端通过
unicast
确认服务:记录此次租约行为并向客户端发送响应数据包,并且开始租约计时。租约到期而解约有以下几种情况- 客户端脱机:关闭网络接口
ifdown
、重新启动reboot
、关机shutdown
都是脱机状态,此时Server
端就会将该IP
回收,并放到Server
的备用区中 - 客户端租约到期:
DHCP Server
发放的IP
有使用的期限,客户端使用这个IP
到达期限规定的时间而没用重新提出DHCP
的申请时,Server
端就会将该IP
收回,这个时候就会造成断线
- 客户端脱机:关闭网络接口
NFS 服务器
NFS(Network File System
就是让不同的及其不同的操作系统可以彼此共享数据文件
NFS 的由来与功能
NFS
这个通过网络共享文件系统的服务在搭建的时候是很简单的,不过,它最大的问题在于权限。我们并不是只要启动 NFS
就可以了,我们还需要启动 RPC
这个服务才行
NFS
服务器可以让 PC
将网络中的 NFS
服务器共享的目录挂载在本地端的文件系统中,而在本地端的系统中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样
默认 NFS
用来传输的端口是随机选择的,小于 1024
的端口
RPC(Remote Procedure Call)
:远程过程调用服务,它会指定每个 NFS
功能所对应的 port number
,并通知客户端,让客户端可以连接到正确的端口上去。
服务器会在启动 NFS
时随机选取数个端口,并主动向 RPC
注册,因此 RPC
可以知道每个端口对应的 NFS
功能,而 RPC
又是固定使用 port111
来监听客户端的需求并向客户端响应正确的端口
当客户端有 NFS
文件访问需求时,他又会如何向服务器端请求数据呢
- 客户端会向服务器端的
RPC(port111)
发出NFS
文件访问功能的查询要求 - 服务器端找到对应的已注册
NFS daemon
端口后,会通知给客户端 - 客户端了解正确的端口后,就可以直接与
NFS daemon
连接NFS
必须在RPC
存在时才能成功地提供服务,因此我们称NFS
为RPC Server
的一种 启动一个功能较为单纯的NFS
服务器,需要启动一下daemon
rpc.nfsd
:最主要的NFS
服务提供程序,这个daemon
主要的功能就是管理客户端是否能够使用服务器文件系统挂载信息等,其中还包含判断这个登录用户的ID
rpc.mounted
:主要在于管理NFS
的文件系统,当客户端顺利通过rpc.nfsd
登录服务之后,在它可以使用NFS
服务器提供的文件之前,还会经过文件权限的认证程序,它会去读NFS
配置文件/etc/exports
来比对客户端的权限,当通过这一关后客户端就可以取得使用NFS
文件的权限了rpc.lockd(非必要)
:这个daemon
可以用于管理文件的锁定方面,因为当多个客户端同时写入某个文件时,rpc.lockd
可以克服这些问题,但rpc.lockd
需要在客户端与服务器端都开启才行,另外rpc.lockd
也常与rpc.statd
同时启动rpc.statd(非必要)
:可用来检测文件的一致性,与rpc.lockd
有关,当客户端同时使用同一文件造成文件有所损毁时,这个服务可以用来检测并尝试恢复该文件,这个daemon
也需要同时启动
NFS Server 端的配置
要配置好 NFS
服务器,我们必须要有如下两个软件
RPC
主程序:rpcbind
在启动任意一个RPC
服务之前,我们都需要做好port
的对应工作,这就表示在启动任何一个RPC
服务之前,我们都要启动rpcbind
才行NFS
主程序:nfs-utils
提供rpc.nfsd
及rpc.mountd
这两个NFS daemons
与其他相关documents
与说明文件、可执行文件等的软件。这个是NFS
服务所需要的主要软件NFS
的软件结构/etc/exports
:这个文件就是NFS
的主要配置文件,不过系统没有默认值,所以这个文件可能不会存在,如果不存在需要首先创建。这个配置文件很多简单,每一行最前面是要共享出来的目录,然后这个目录可以依照不同的权限共享给不同的主机。主机后以()
定义权限参数,若权限参数不止一个时,以,
分开,可以利用#
注释 主机名的设置主要由以下几种方式- 可以使用完整的
IP
或是网络号,比如192.168.100.10
- 可以使用主机名,但这个主机名必须要在
/etc/hosts
内,或可使用DNS
找到该名称才行,可以支持通配符*
或是?
- 可以使用完整的
/usr/sbin/exportfs
:维护NFS
共享资源的命令,可以利用这个命令重新共享/etc/exports
更新的目录资源、将NFS Server
共享的目录卸载或重新共享等/var/lib/nfs/*tab
:该目录下有两个重要的日志文件etab
:记录了NFS
缩宫想出来的目录的完整权限设置值xtab
:记录了曾经链接到此NFS
服务器的相关客户端的数据
usr/sbin/showmount
:客户端查询服务器共享资源的命令
启动 NFS
/etc/init.d/rpcbind start
:启动rpcbind
,如果已经执行,就不需要启动了/etc/init.d/nfs start
:启动NFS
NFS
会启动很多port
,主要的端口有rpcbind
启动的port
在111
,同时启动在UDP
与TCP
NFS
本身的服务启动在port 2049
- 其他
rpc.*
服务启动的port
则是随机产生的,因此需向port 111
注册 每个rpc
服务可以使用rpcinfo -p <IP | hostname>
查看 -p
:针对某IP
显示出所有的port
与program
的信息-t
:针对某主机的某个程序检查其TCP
数据包所在的软件版本-u
:针对某主机的某支程序检查其UDP
数据报所在的软件版本
NFS 的连接查看
-
showmount <hostname | ip>
:在server
端测试是否可以连接-a
:显示当前主机与客户端NFS
连接共享的状态-e
:显示某台主机的/etc/exports
所共享的目录数据 默认参数在/var/lib/nfs/etab
-
exportfs
:当更改了/etc/exports
文件,可通过这个命令来重新启动NFS
-a
:全部挂载(或卸载)/etc/exports
文件中的设置-r
:重新挂载/etc/exports
里面的设置-u
:卸载某一目录-v
:在export
时,将共享的目录显示在屏幕上
NFS 的安全性
一般来说, NFS
的服务仅会对内部网络开放,不会对因特网开放。而 NFS
的防火墙除了特定的端口 111
、 2049
外,还需要处理各种不固定的端口, CentOS 6.x
提供了一个固定特定 NFS
服务的端口配置文件,那就是 /etc/sysconfig/nfs
代理服务器
代理服务器的原理就是以类似代理人的身份去取得用户所需要的数据 客户端向外部要求的数据实际上就是 Proxy 帮用户取得的,此外,Proxy 也可作为防火墙 当客户端指定了代理服务器后,在客户端想要取得因特网上面的信息时工作流程如下
- 当 Proxy 的缓存拥有用户所想要的数据时
Client
端向Server
端发送一个数据需求数据包Server
端接收之后,先比对这个数据包的来源与预计要前往的目标网站是否接收,如果可以,那么Server
端会替Client
取得数据Server
首先会检查自己缓存- 将数据发送给
Client
端
- 当 Proxy 的缓存没有用户想要的数据时
Client
端向Server
端发送一个需求数据包Server
端接收之后,开始进行数据比对Server
端发现缓存没有Client
所需要的数据时,准备前往因特网获取数据Server
开始向 Internet 发送要求与取得相关数据- 最后将数据会送给
Client
端 Proxy 对于缓存的速度要求很高 Proxy 也可指定另一个 Proxy 为自己的代理服务器,这样的好处在于分流
代理服务器的用途与优缺点
- 作为
www
的网页数据获取代理人 - 作为内部局域网的单点对外防火墙系统,如果 Proxy 是在内部局域网的
Gateway
上,那么这部代理服务器就能够作为内部计算机的防火墙 优点 - 节省单点对外的网络带宽,降低网络负载。当用户想取得数据时,会从 Proxy 的缓存中取得,而不去要向因特网请求数据,所以可以节省带宽
- 以较短的路径取得网络数据,有网络加速的感觉,比如可以指定你的
ISP
提供的代理服务器连接到国外 - 通过上层代理服务器的辅助,达到自动数据分流的效果
- 提供防火墙内部的计算机连上 Internet,也就是单点对外防火墙功能
DNS 服务器
DNS
服务帮我们将主机名解析为 IP
,让大家记得主机名就能使用 Internet
什么是 DNS
- 在私有网络内部,最好将所有私有 IP 与主机名对应都写入这个文件中
BIND(Berkeley Internet Name Domain)
域名系统可以通过阶层式管理,轻松地维护DNS
服务器DNS
利用类似树形目录的架构,将主机名的管理分配在不同层级,这样一台DNS
服务器记忆点信息就不会很多Fully Qualified Domain Name(FQDN)
就是主机名与域名组成的完整主机名的概念。比如www
为主机名,而domain name
是由hostname
比如baidu
和区域主机名比如.com
组成
DNS 的阶层架构与 TLD
- 在整个 DNS 的最上方一定是
.
这个服务器,也就是root
,最早在它下面管理的只有.com
、.edu
、.gov
、.mil
、.org
、.net
这种特殊区域以及以国家为分类的第二层主机名,比如cn
,jp
等,这两者称为TLDs(Top Level Domains)
- 授权与分层负责
我们无法自己设置
TLD
,得向上层ISP
申请域名的授权才行,比如中国台湾地区最上层的域名是以.tw
开头,管理这个区域名的机器 IP 是在中国台湾地区,但是.tw
这台服务器必须向root(.)
注册域名查询授权才行 每个上一层的DNS
服务器所记录的信息,其实只有下一层的主机名而已
通过 DNS 查询主机名 IP 的流程
每一台 DNS
服务器仅管理自己的下一层主机名的转译,比如 www.ksu.edu.tw
,会根据 root
=> .tw
=> .edu.tw
=> .ksu.edu.tw
查询 DNS
,之后会将结果记录到自己的缓存中,当过了 DNS
记忆的时间,缓存就会释放
这样修改的好处是
- 主机名修改单仅需更改自己的
DNS
即可,不需通知其他人 DNS
服务器对主机名解析结果的缓存时间,过了这个时间domain name
才可能全面启用- 每一台可以记录主机名与 IP 对应的
DNS
服务器都可以更动它自己的数据库对应,因此主机名与域名在各个主机下面都不相同DNS
使用的是53
这个port
,可以到 Linux 的/etc/services
这个文件搜索下domain
,另外,通常DNS
是以UDP
这个较快的数据传输协议来查询的,但是万一没法查询到完整信息时,就会再次以TCP
这个协议重新查询,所以防火墙需要放行TCP
、UDP
的port 53
申请区域查询授权
DNS
服务器的架设还有合法与不合法之分,我们必须向上层区域注册取得合法的区域查询授权,比如 .ksu.edu.tw
必须向 .edu.tw
那台主机注册申请区域授权
向上层区域注册取得合法的区域查询授权,有两种方式
- 上层
DNS
授权区域查询权,让你自己设置DNS
服务器 - 直接请上层
DNS
服务器来帮你设置主机名对应 拥有区域查询权后,所有的主机名信息都以自己为准,与上层无关。当DNS
服务器宕机时,在ISP
上的主机名是查不到IP
的
正解、反解、Zone
- 从主机名查询到
IP
的流程称为正解,每个人都可以申请正解的DNS
服务器架设权,只要改域没人使用,就可以申请 - 从
IP
查询到主机名的流程为反解,只有IP
的拥有人才有权利设置反解 - 不管正解还是反解,每个域的记录就是一个区域
zone