linux 服务器

连接 Internet

网络配置相关文件

  • /etc/sysconfig/network-scripts/ifcfg-eth0:用于查看IPNetmaskDHCPGateway
    • DEVICE:网卡的名称,这个值需要与ifcfg后的值相同
    • BOOTRPROTO:是否使用dhcp,如果是手动分配 IP,需要输入staticnone
    • HWADDR:是否加入网卡MAC地址,可以区分不同的网卡
    • IPADDR:IP 地址
    • NETMASK:子网掩码
    • ONBOOT:要不要默认启动此端口
    • GATEWAY:网关地址,代表整个主机系统的Default Gateway
    • NM_CONTROLLED:额外的网管软件,建议取消
  • /etc/sysconfig/network:主机名
    • NETWORKING:要不要使用网络
    • NETWORKING_IPV6:是否支持 IPV6
    • HOSTNAME:主机名
  • /etc/resolv.confName Server DNS的 IP 地址可以直接输入中国电信的 DNS202.96.199.133
  • /etc/hosts:私有 IP 主机名别名
  • /etc/services:记录构建在TP/IP上的各种协议,包括HTTPFTPSSHTelnet等服务所定义的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:不要使用通信协议或主机名,直接使用IPport number
    • -ee:显示更详细的信息
    • -net:表示后面接的路由为一个网络
    • -host:表示后面接的为连接到单部主机的路由
    • netmask:与网络有关,可以设置netmask决定网卡的大小
    • gwgateway的简写,后续接的是 IP 的数值,与dev不同
    • dev:如果只是要指定由那一块网卡连接出去,使用这个设置,后面接eth0等 它能够有以下几个参数显示
  • Destination | Genmask:这两个参数分别就是networknetmask

  • 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> <动作> <命令>:这个命令综合了ifconfigroute两个命令

    • -s:显示出设备的统计数据,例如接受数据包的总数等 关于接口设备的相关设置 ip link ,包括 MTU 以及改完络接口的 MAC 等,当然也可以启动 updown 某个网络接口

      • 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:这个选项的参数
  • iwlistiwconfig可以设置无线网络

  • 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=1ICMP的检测次数

    • ttl=243TTLIP数据包内的TTL是相同的,没经过一个带有MAC的节点,比如routerbridge时,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后面接的是gatewayIP
  • netstat:查看本机的网络连接与后门 与路由有关的参数

    • -r:列出路由表route table,功能如同route这个命令

    • -n:不使用主机名与服务名称,使用IPport number,如同route -n与网络接口有关的参数 与网络有关的参数

    • -a:列出所有连接状态,包括tcp/udp/unix socket

    • -t:仅列出TCP数据包的连接

    • -u:仅列出UDP数据包的连接

    • -l:仅列出已在listen监听的服务的网络状态

    • -p:列出PIDProgram的文件名

    • -c <num>:可以设置几秒钟后更新一次

  • host:这个命令可以查出是某个主机名的IP,这个IP是通过/etc/resolv.conf那个文件内的 DNS 服务器 IP

    • -a:列出各主机详细的各项主机名设置数据
  • nslookup:这条命令和host基本是一样,也是使用/etc/resolv.conf文件来作为 DNS 服务器的来源选择

    • -query=type:查询单类型,除了传统的IP与主机名对应外,DNS还有很多信息:所以我们可以查询很多不同的信息,比如mxcname

远程连接命令与即时通信软件

远程连接就是在不同计算机之间进行登录

  • 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:它不但可以分析数据包的流向,连数据包的内容也可以进行监听,如果使用明文传输的话,在RouterHub上就会被别人监听
    • -A:数据包的内容以ASCII显示,通常用来抓取WWW的网页数据包数据
    • -e:使用数据链路层OSI第二层的MAC数据包来显示
    • -nn:直接以IPport number显示,而非主机名与服务名称
    • -q:仅列出较短的数据包信息,第一行比较精简
    • -X:可以列出十六进制以及ASCII的数据包内容
    • -i:后面接要坚挺的网络接口,比如eth0loppp0等界面
    • -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命令时,最重要的是你所规划的路由必须要是你的设备,比如eth0IP可以直接沟通的情况才行
  • 动态路由:需要额外的软件支持,比如zebra 可以通过 ifconfigip 命令实现一个网卡对应多个 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类型的主机不建议开放远程连接功能
  • 只对内网开放 SSHSecure Shell Protocol 的简写,它可以通过数据包加密技术等将传输的数据包加密后传输到网络上 目前常见的网络数据包加密技术通常是通过所谓的对称密钥系统来处理的,主要是通过两把不一样的公钥和私钥来处理,它们的作用如下
  • 公钥Public Key:提供给远程主机进行数据加密的行为
  • 私钥Private Key:远程主机使用你的公钥加密的数据,在本地端就能够使用私钥进行解密,私钥是不能进行外流的 SSH 服务器端与客户端的连接步骤如下
  1. 服务器建立公钥文件:每一次启动SSHD服务时,该服务会主动找/etc/ssh/ssh_host*文件,如果没有会主动计算出这些需要的公钥文件,同时也会计算出服务器需要的私钥文件
  2. 客户端主动连接要求:若客户端想要连接到SSH服务器,则需要使用适当的客户端程序来连接,包括SSHPietty等客户端程序
  3. 服务器传送公钥文件给客户端:接收到客户端要求后,服务端便将第一个步骤取得的公钥文件传送给客户端使用
  4. 客户端记录/比对服务器端公钥数据以及随机计算自己的公私钥:若客户端第一次连接到此服务器,则会将服务器端公钥数据记录到客户端的用户主目录内的~/.ssh/known_hosts。如果已经记录过该服务器的公钥数据,则客户端回去比对此次接受到的与之前的记录是否有差异。若接受此公钥数据,则开始计算客户端自己公私钥数据
  5. 返回客户端的公钥数据到客户端:此时服务器拥有服务器的私钥与客户端的公钥,而客户端则具有服务器的公钥以及客户端自己的私钥
  6. 服务器接受私钥开始双向加解密:服务器传送数据时,将用户的公钥加密后进行发送,客户端接受后,用自己的私钥解密,客户端也是如此
  • 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 ,必须要使用 SFTPSCP

  • 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.ruleiptable.allow

VNC

VNC Server 会在服务端启动一个监听用户要求的端口,一般端口号码在 5901 ~ 5910 中间,当客户端启动 X Server 连接到 5901 之后, VNC Server 再将一堆设置好的 X Clinent 通过这个连接传递到客户端上 默认的 VNC Server 都是独立提供给单一一个客户端来连接的

  • vncserver <:号码> <-geometry 分辨率> <options>

    • :号码:将VNC Server开在哪个端口,如果是:1代表VNC 5901端口
    • -geometry:设置分辨率,比如1024x768800x600
    • options:其他x相关的选项,例如-query localhost之类的
  • vncserver <-kill :号码>

    • -kill:将已经启动的VNC端口删除,根据身份进行控制 需要首先使用 tigervnc-server 安装 VNC
  • vncpasswd设置修改或设置vnc的密码

DHCP 服务器

DHCP(Dynamic Host Configuration Protocol) :就是自动地将网络参数正确地分配给网络中的每台计算机,让客户端的计算机可以在开机的时候就立即自动配置好网络的参数值,比如 IPnetmasknetworkgatewayDNSDHCP 通常是用于句句网内的一个通信协议,它主要是通过客户端发送官博数据包给整个物理网段内的所有主机,若局域网内有 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 文件访问需求时,他又会如何向服务器端请求数据呢

  1. 客户端会向服务器端的RPC(port111)发出NFS文件访问功能的查询要求
  2. 服务器端找到对应的已注册NFS daemon端口后,会通知给客户端
  3. 客户端了解正确的端口后,就可以直接与NFS daemon连接 NFS 必须在 RPC 存在时才能成功地提供服务,因此我们称 NFSRPC 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.nfsdrpc.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启动的port111,同时启动在UDPTCP
  • NFS本身的服务启动在port 2049
  • 其他rpc.*服务启动的port则是随机产生的,因此需向port 111注册 每个 rpc 服务可以使用 rpcinfo -p <IP | hostname> 查看
  • -p:针对某IP显示出所有的portprogram的信息
  • -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 的防火墙除了特定的端口 1112049 外,还需要处理各种不固定的端口, CentOS 6.x 提供了一个固定特定 NFS 服务的端口配置文件,那就是 /etc/sysconfig/nfs

代理服务器

代理服务器的原理就是以类似代理人的身份去取得用户所需要的数据 客户端向外部要求的数据实际上就是 Proxy 帮用户取得的,此外,Proxy 也可作为防火墙 当客户端指定了代理服务器后,在客户端想要取得因特网上面的信息时工作流程如下

  • 当 Proxy 的缓存拥有用户所想要的数据时
    1. Client端向Server端发送一个数据需求数据包
    2. Server端接收之后,先比对这个数据包的来源与预计要前往的目标网站是否接收,如果可以,那么Server端会替Client取得数据
    3. Server首先会检查自己缓存
    4. 将数据发送给Client
  • 当 Proxy 的缓存没有用户想要的数据时
    1. Client端向Server端发送一个需求数据包
    2. Server端接收之后,开始进行数据比对
    3. Server端发现缓存没有Client所需要的数据时,准备前往因特网获取数据
    4. Server开始向 Internet 发送要求与取得相关数据
    5. 最后将数据会送给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 记忆的时间,缓存就会释放 这样修改的好处是

  1. 主机名修改单仅需更改自己的DNS即可,不需通知其他人
  2. DNS服务器对主机名解析结果的缓存时间,过了这个时间domain name才可能全面启用
  3. 每一台可以记录主机名与 IP 对应的DNS服务器都可以更动它自己的数据库对应,因此主机名与域名在各个主机下面都不相同 DNS 使用的是 53 这个 port ,可以到 Linux 的 /etc/services 这个文件搜索下 domain ,另外,通常 DNS 是以 UDP 这个较快的数据传输协议来查询的,但是万一没法查询到完整信息时,就会再次以 TCP 这个协议重新查询,所以防火墙需要放行 TCPUDPport 53

申请区域查询授权

DNS 服务器的架设还有合法与不合法之分,我们必须向上层区域注册取得合法的区域查询授权,比如 .ksu.edu.tw 必须向 .edu.tw 那台主机注册申请区域授权 向上层区域注册取得合法的区域查询授权,有两种方式

  • 上层DNS授权区域查询权,让你自己设置DNS服务器
  • 直接请上层DNS服务器来帮你设置主机名对应 拥有区域查询权后,所有的主机名信息都以自己为准,与上层无关。当 DNS 服务器宕机时,在 ISP 上的主机名是查不到 IP

正解、反解、Zone

  • 从主机名查询到IP的流程称为正解,每个人都可以申请正解的DNS服务器架设权,只要改域没人使用,就可以申请
  • IP查询到主机名的流程为反解,只有IP的拥有人才有权利设置反解
  • 不管正解还是反解,每个域的记录就是一个区域zone