日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Linux 系統(tǒng)管理入門

 農(nóng)夫子oice 2007-05-02


一、概論
  • 參考資料: www.
  • TCP/IP(DoD)模型

    資料來源
    1. 應(yīng)用層(Application Layer)
      定義應(yīng)用程式如何提供服務(wù)

    2. 傳訊層(Host-to-Host Transport Layer)
      負(fù)責(zé)傳輸過程中的流量控制, 錯誤處理, 資料重送等

    3. 網(wǎng)路層(Internet Layer)
      決定資料如何傳送到目的地

    4. 連結(jié)層(Network Access Layer)
      負(fù)責(zé)對硬體的溝通及硬體間的溝通方式

  • IP位址
    • 長32位元,為方便表達(dá),將此32位元數(shù)值切成四段,每連續(xù)8個位元一組,改以如下的4個10進(jìn)位數(shù)值表達(dá)IP位址
      11000000101010000000000000000001 = 192.168.0.1
      11000000 10101000 00000000 00000001
      192 168 0 1

    • 包含兩項資訊: 網(wǎng)路號碼(network number)與主機(jī)號碼(host number)
      TCP/IP是網(wǎng)路導(dǎo)向的
      屬於相同網(wǎng)路的主機(jī),其IP位址的網(wǎng)路號碼也相同,而主機(jī)號碼則是該主機(jī)在該網(wǎng)路內(nèi)唯一的編號,同網(wǎng)路的主機(jī)間可直接互通,不須藉助第三者,不同網(wǎng)路間主機(jī)則須藉助router於網(wǎng)路間遞送封包,而router賴以判斷的路由資訊即是IP位址中的網(wǎng)路號碼。
      網(wǎng)路號碼 主機(jī)號碼

    • 網(wǎng)路遮罩(Netmask)
      為由IP位址濾出網(wǎng)路號碼
      該遮罩同樣是32位元數(shù)值,根據(jù)IP位址的分級,網(wǎng)路遮罩中與網(wǎng)路號碼對應(yīng)的位元保留為1,主機(jī)號碼的位元皆為0,將這樣的遮罩與IP位址進(jìn)行AND運算的結(jié)果即是網(wǎng)路號碼。

    • 次網(wǎng)路遮罩 (Subnet Mask): 取主機(jī)號碼中的部份高位元做為次網(wǎng)路號碼位元
      解決不同網(wǎng)路類型並存以及長距離或主機(jī)數(shù)量過多的問題
      透過次網(wǎng)路的設(shè)置,不同種類的網(wǎng)路即可擁有自己的次網(wǎng)路位址,再透過IP選徑器即可連接這些次網(wǎng)路,而主機(jī)數(shù)量過多的區(qū)域網(wǎng)路也可使用次網(wǎng)路技巧將之打散成數(shù)個小網(wǎng)路,以減少主機(jī)間封包碰撞頻率過高、導(dǎo)致網(wǎng)路傳輸率下降的問題。
      網(wǎng)路號碼 主機(jī)號碼
      主機(jī)號碼 次網(wǎng)路號碼 主機(jī)號碼
      表示方式
      1. 1~32: 32 個 bit 中要用幾個 bit 來代表網(wǎng)路號碼
      2. 如同 IP 的表示方法: 將此32位元數(shù)值切成四段, 每連續(xù)8個位元一組,以4個10進(jìn)位數(shù)值表達(dá)
        11111111111111111111111100000000 = 255.255.255.0
        11111111 11111111 11111111 00000000
        255 255 255 0

    • ipcalc: Parameter calculator for IPv4 addresses
      # ipcalc 192.168.0.1/24
      Address: 192.168.0.1 11000000.10101000.00000000 .00000001
      Netmask: 255.255.255.0 = 24 11111111.11111111.11111111 .00000000
      Wildcard: 0.0.0.255 00000000.00000000.00000000 .11111111
      =>
      Network: 192.168.0.0/24 11000000.10101000.00000000 .00000000 (Class C)
      Broadcast: 192.168.0.255 11000000.10101000.00000000 .11111111
      HostMin: 192.168.0.1 11000000.10101000.00000000 .00000001
      HostMax: 192.168.0.254 11000000.10101000.00000000 .11111110
      Hosts/Net: 254 (Private Internet RFC 1918)

  • IP位址分級
    • TCP/IP網(wǎng)路依其中所能容納的主機(jī)數(shù)量多寡分成A、B、C三級, D級目前為multicast位址,E級則保留作為未來發(fā) 展之用
      A級網(wǎng)路的最高位元值為0
      B級網(wǎng)路的為10
      C級網(wǎng)路為110
      最高三個位元值為111則保留做為其它特殊用途

    • WHY?
      網(wǎng)路分級的原因是考慮到不同規(guī)模的網(wǎng)路,因為Internet網(wǎng)路 導(dǎo)向的,當(dāng)申請一個網(wǎng)路時,申請者須考慮其網(wǎng)路內(nèi)可能有的主機(jī)數(shù)目,並申請適當(dāng)?shù)燃壍木W(wǎng)路,申請超過實際所須的 網(wǎng)路將使得大部份IP位址被閒置,這在目前IP位址短缺的情 況下是不被允許的

    • 在各等級的IP位址中,有兩種特別的位址已保留它用(特殊用途的主機(jī)號碼)
      主機(jī)號碼的位元值皆為0的位址用以表示該網(wǎng)路
      主機(jī)號碼的位元值皆為1的位址用以表示該網(wǎng)路的廣播位 址 (broadcast address)
      以 192.168.0.0/255.255.255.0 為例: 192.168.0.0 代表網(wǎng)路
      192.168.0.255 則為 broadcast address

    • 特殊用途的網(wǎng)路號碼
      • 預(yù)設(shè)路徑(default route): 0.0.0.0
        用來簡化IP必須處理的路徑資訊

      • 繞回位址(lookback address): 127.0.0.0
        127.0.0.1: 用來表示主機(jī)本身

      • 虛擬網(wǎng)路(private address)
        Class A 10.0.0.0/8
        Class B 172.16.0.0/12
        Class C 192.168.0.0/16

二、設(shè)定
  • 適用於所有的 Linux 套件的設(shè)定方式
    • 設(shè)定 IP 位址
      語法: /sbin/ifconfig [interface] [ipaddress] netmask [netmask] broadcast [broadcast]

      # /sbin/ifconfig eth0 140.110.25.72 netmask 255.255.255.0 broadcast 140.110.25.255

      ifconfig指令介紹

    • 設(shè)定路由表(routing table)
      語法: /sbin/route add default gw [gateway_ipaddress]

      # /sbin/route add default gw 140.110.25.254

      route指令介紹

    • 設(shè)定主機(jī)名稱
      語法: /bin/hostname [hostname]

      # /bin/hostname cpc002

    • 顯示 domain 名稱
      語法: /bin/dnsdomainname

      # /bin/dnsdomainname

    • 設(shè)定名稱伺服器(name server) 編輯 /etc/resolv.conf, 該檔案格式為:
      nameserver [nameserver_ip]
      search [domain_name] (可不設(shè)定)

      # vi /etc/resolv.conf

      nameserver 140.110.60.1
      nameserver 140.110.4.1
      search

      編輯 /etc/hosts 檔, 該檔案格式為:
      [IP_Address] [FQDN] [Aliases]
      # vi /etc/hosts

      140.110.17.49 opensource. opensource os
      140.110.25.72 cpc002. cpc002


      在Inetnet發(fā)展的早期,僅僅使用主機(jī)名配置檔案(/etc/hosts)來作主機(jī)名/IP之間的映射,這對於互連的電腦較少時十分有效,而隨著相連的電腦的增多,hosts檔案會越來越大,如果用目前Internet上的電腦數(shù)量去衡量的話,使用hosts檔案根本不可能。
      因此人們發(fā)展了一種分級的方式管理名字與IP地址對應(yīng)關(guān)系,稱為域名解析系統(tǒng)。在這個系統(tǒng)中採用一種分級結(jié)構(gòu),每個組織負(fù)責(zé)自己的域及通過這個域內(nèi)的名字伺服器,對域內(nèi)的電腦名字和IP地址的對應(yīng)關(guān)系進(jìn)行維護(hù),每個域內(nèi)還可以劃分為幾個不同的子域,子域由子域內(nèi)的名字伺服器負(fù)責(zé)解析,這樣就降低了維護(hù)任務(wù)的複雜程度。通過標(biāo)準(zhǔn)協(xié)議DNS, Internet上所有的名字伺服器可以相互交換數(shù)據(jù),這樣每臺電腦都能通過查詢名字伺服器來查詢Internet上所有的電腦名字。 Linux上用/etc/resolv.conf檔萊設(shè)定該主機(jī)要詢問的DNS伺服器
      由於可以同時使用/etc/hosts主機(jī)檔案和/etc/resolv.conf中配置的DNS伺服器都能進(jìn)行電腦名字與IP地址之間的轉(zhuǎn)換,就可以規(guī)定查找的順序,在/etc/host.conf檔案中規(guī)定了進(jìn)行名字轉(zhuǎn)換時查找的順序。

    • 利用 ping 測試網(wǎng)路連線狀況
      語法: ping [-c count] [IP_Address]
      # ping -c 10 140.110.17.254
      # ping -c 10 opensource.
      # ping -c 10 os

      ping 指令介紹

  • RedHat
    1. 使用 RedHat 提供的網(wǎng)路設(shè)定工具: netcfg, linuxconfig
    2. 編輯兩個設(shè)定檔: /etc/sysconfig/ifcfg-ethX, /etc/sysconfig/network 並執(zhí)行 /etc/init.d/network
      # vi /etc/sysconfig/ifcfg-eth0

      DEVICE=eth0
      BOOTPROTO=static
      BROADCAST=140.110.25.255
      IPADDR=140.110.25.x
      NETMASK=255.255.255.0
      NETWORK=140.110.25.x
      ONBOOT=yes

      # vi /etc/sysconfig/network

      NETWORKING=yes
      HOSTNAME=cpc002
      DOMAINNAME=
      GATEWAY=140.110.25.254
      # vi /etc/sysconfig/ifcfg-eth0

      DEVICE=eth0
      BOOTPROTO=dhcp




      ONBOOT=yes

      # vi /etc/sysconfig/network

      NETWORKING=yes
      # /etc/init.d/network restart

  • Debian
    1. 可以到這裡下載 netcardconfig, 這個工具是 knoppix 發(fā)展出來的 (OSTF改成中文)
    2. 編輯 /etc/network/interfaces
      # vi /etc/network/interfaces

      auto eth1
      iface eth1 inet static
          address 140.110.25.72
          netmask 255.255.255.0
          broadcast 140.110.25.255
          gateway 140.110.25.254
      # vi /etc/network/interfaces

      auto eth1
      iface eth1 inet dhcp
      # /etc/init.d/networking restart

三、進(jìn)階設(shè)定(Debian)
  • 隨地點改變的IP設(shè)定 - DHCP

    1. 主機(jī)上安裝及設(shè)定 DHCP 服務(wù)
      • 安裝 dhcp3-server
        # apt-get install dhcp3-server

      • 編輯設(shè)定檔 (/etc/dhcp3/dhcpd.conf)
        default-lease-time          21600;
        max-lease-time 21600;
        #use-host-decl-names on;

        option subnet-mask 255.255.255.0;
        option domain-name "drbl.org";

        subnet 192.168.0.0 netmask 255.255.255.0 {
        option broadcast-address 192.168.0.255;
        option routers 192.168.0.12;
        option domain-name-servers 192.168.0.12;

        range 192.168.0.100 192.168.0.200;

        host cpc001 {
        hardware ethernet 44:4d:50:00:01:d8;
        fixed-address 192.168.0.201;
        }

        host cpc002 {
        hardware ethernet 00:04:A7:04:03:B1;
        fixed-address 192.168.0.202;
        }

        }

    2. 用戶端取得 DHCP 核發(fā)的 IP 與相關(guān)網(wǎng)路設(shè)定
      1. pump
        語法: pump -i [interface]
        # /sbin/pump -i eth0

      2. dhclient
        語法: dhclient [interface]
        # /sbin/dhclient eth0
        Note: /etc/dhclient-script

      3. udhcpc
        語法: udhcpc -i [interface] -s [script]
        # udhcpc -i eth0 -s udhcpc.script

        udhcp.script 範(fàn)例(下載)
        #!/bin/sh

        # udhcpc script edited by Tim Riker [ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 RESOLV_CONF="/etc/resolv.conf" [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" [ -n "$subnet" ] && NETMASK="netmask $subnet" case "$1" in deconfig) /sbin/ifconfig $interface 0.0.0.0 ;; renew|bound) /sbin/ifconfig $interface $ip $BROADCAST $NETMASK if [ -n "$router" ] ; then echo "deleting routers" while route del default gw 0.0.0.0 dev $interface ; do : done for i in $router ; do route add default gw $i dev $interface done fi echo -n > $RESOLV_CONF [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF for i in $dns ; do echo adding dns $i echo nameserver $i >> $RESOLV_CONF done ;; esac exit 0


  • 隨地點改變的IP設(shè)定 - 搭配 shell script 設(shè)定網(wǎng)路
    • shell script 範(fàn)例
      ping-places.sh(下載)
      #!/bin/sh

      if [ `id -u` -ne 0 -o "$1" = "" ]; then exit 1; fi

      if [ -x /usr/bin/fping ]; then
      PING="/usr/bin/fping"
      else
      PING="/bin/ping -c 2"
      fi

      iface="$1"
      which=""

      while read addr pingme scheme; do
      if [ "$which" ]; then continue; fi

      #echo " Trying $addr & $pingme ($scheme)" >&2

      #ip addr add $addr dev $iface >/dev/null 2>&1
      #ip link set $iface up >/dev/null 2>&1
      /sbin/ifconfig $iface $addr netmask 255.255.255.0 up >/dev/null 2>&1

      if $PING $pingme >/dev/null 2>&1; then
      which="$scheme"
      fi
      /sbin/ifconfig $iface down >/dev/null 2>&1
      #ip link set $iface down >/dev/null 2>&1
      #ip addr del $addr dev $iface >/dev/null 2>&1
      done

      if [ "$which" ]; then echo $which; exit 0; fi
      exit 1

    • 編輯檔案 /etc/network/interfaces
      # The loopback interface
      auto lo
      iface lo inet loopback

      # eth0
      auto eth0
      mapping eth0
      script /etc/network/ping-places.sh
      map 192.168.8.12/24 192.168.8.1 home
      map 192.168.1.12/24 192.168.1.1 nchc
      map 192.168.0.12/24 192.168.0.1 fusan

      iface home inet static
      address 192.168.8.12
      netmask 255.255.255.0
      gateway 192.168.8.1

      iface nchc inet static
      address 192.168.1.12
      netmask 255.255.255.0
      gateway 192.168.1.1

      iface unconn inet dhcp


四、網(wǎng)管程式
  1. /sbin/ifconfig
    用來設(shè)定網(wǎng)路介面, 並可查詢目前網(wǎng)路介面的設(shè)定情形

    /sbin/ifconfig [interface]: 顯示 [interface] 的使用狀況, 若[interface]沒寫, 則顯示目前使用中的介面
    # /sbin/ifconfig
    eth0 Link encap:Ethernet HWaddr 00:10:5A:5C:51:83
    inet addr:140.110.17.208 Bcast:140.110.17.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:11601497 errors:0 dropped:0 overruns:113 frame:0
    TX packets:4411140 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:100
    RX bytes:1570462670 (1.4 GiB) TX bytes:3200223909 (2.9 GiB)
    Interrupt:9 Base address:0xc400

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:684195 errors:0 dropped:0 overruns:0 frame:0
    TX packets:684195 errors:0 dropped:0 overruns:0 carrier:0

    /sbin/ifconfig -a: 列出所有的網(wǎng)路介面情形
    # /sbin/ifconfig -a
    eth0 Link encap:Ethernet HWaddr 00:10:5A:5C:51:83
    inet addr:140.110.17.208 Bcast:140.110.17.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:11601497 errors:0 dropped:0 overruns:113 frame:0
    TX packets:4411140 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:100
    RX bytes:1570462670 (1.4 GiB) TX bytes:3200223909 (2.9 GiB)
    Interrupt:9 Base address:0xc400

    eth1 Link encap:Ethernet HWaddr 00:C0:26:67:C5:FF
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:3151438 errors:0 dropped:0 overruns:0 frame:0
    TX packets:4477296 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:100
    RX bytes:2260946194 (2.1 GiB) TX bytes:372864333 (355.5 MiB)
    Interrupt:10 Base address:0x4f00

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:684195 errors:0 dropped:0 overruns:0 frame:0
    TX packets:684195 errors:0 dropped:0 overruns:0 carrier:0

    /sbin/ifconfig [interface] up|down: 啟動或停止網(wǎng)路界面
    # /sbin/ifconfig eth0 down
    # ping 192.168.1.1
    PING 192.168.1.1 (192.168.1.1): 56 data bytes
    ping: sendto: Network is unreachable
    ping: wrote 192.168.1.1 64 chars, ret=-1
    ping: sendto: Network is unreachable
    ping: wrote 192.168.1.1 64 chars, ret=-1

    # /sbin/ifconfig eth0 up
    # ping 192.168.1.1
    PING 192.168.1.1 (192.168.1.1): 56 data bytes
    64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=2.7 ms
    64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.3 ms
    64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.3 ms

    /sbin/ifconfig [interface] inet [ipaddr] netmask [netmask]: 設(shè)定網(wǎng)路介面
    # /sbin/ifconfig eth0 inet 192.168.1.12 netmask 255.255.255.0
    # /sbin/ifconfig eth0
    eth0 Link encap:Ethernet HWaddr 00:00:E2:54:24:8A
    inet addr:192.168.1.12 Bcast:192.168.1.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:15934 errors:0 dropped:0 overruns:0 frame:0
    TX packets:6227 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:100
    RX bytes:5320332 (5.0 MiB) TX bytes:643823 (628.7 KiB)
    Interrupt:11 Base address:0x2000
    Note: inet為inetnet的簡寫,標(biāo)識IP協(xié)議,liux也支持其他幾種協(xié)議,如ipx、atalk等, /sbin/ifconfig 指令預(yù)設(shè)為 inet

    一張網(wǎng)路卡設(shè)定多個 IP:
    # /sbin/ifconfig eth0:1 inet 192.168.0.12 netmask 255.255.255.0
    # /sbin/ifconfig eth0:1
    eth0:1 Link encap:Ethernet HWaddr 00:00:E2:54:24:8A
    inet addr:192.168.0.12 Bcast:192.168.0.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    Interrupt:11 Base address:0x2000

  2. /sbin/route
    顯示及設(shè)定路由表

    /sbin/route : 顯示目前路由表設(shè)定, 若加上 -n 的參數(shù)則是不會做 IP 與 Hostname 對應(yīng)
    # /sbin/route 
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    140.110.58.0 * 255.255.255.0 U 0 0 0 eth1
    192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
    192.168.0.0 * 255.255.255.0 U 0 0 0 vmnet8
    192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
    default debian01.local. 0.0.0.0 UG 0 0 0 eth0

    # /sbin/route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    140.110.58.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

    /sbin/route add|del default gw [gateway] [dev ifname]
    # /sbin/route del default gw 192.168.1.1
    # /sbin/route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    # /sbin/route add default gw 192.168.1.1 dev eth1
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

    route add|del -net [network] netmask [netmask] dev [ifname]
    route add|del -host [host] dev [ifname]
    設(shè)定路由表
    # /sbin/route add -host 192.168.1.3 dev eth0
    # /sbin/route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    140.110.58.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    192.168.1.3 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
    # /sbin/route del default gw 192.168.1.1
    # /sbin/route del -host 192.168.1.3 dev eth0
    # /sbin/route del -net 192.168.1.0 netmask 255.255.255.0 dev eth0
    # /sbin/route del -net 140.110.58.0 netmask 255.255.255.0 dev eth1

    # /sbin/route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    # /sbin/route add default gw 192.168.1.1
    # /sbin/route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
    # /sbin/route add -net 140.110.58.0 netmask 255.255.255.0 dev eth1

    PS: netstate -nr 亦會顯示目前系統(tǒng)的 routing table

  3. /bin/netstat
    用來顯示目前本機(jī)器所有的網(wǎng)路連線與其狀態(tài)

    netstat -a [--tcp|--udp|--ip|--raw|--unix]: 列出本機(jī)器所有的網(wǎng)路服務(wù)連線狀態(tài)
    # netstat -a --tcp
    ctive Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 *:8000 *:* LISTEN
    tcp 0 0 *:32768 *:* LISTEN
    tcp 0 0 *:2049 *:* LISTEN
    tcp 0 0 *:12865 *:* LISTEN
    tcp 0 0 *:cvspserver *:* LISTEN
    tcp 0 0 *:printer *:* LISTEN
    tcp 0 0 *:time *:* LISTEN
    tcp 0 0 *:globus-gatekeeper *:* LISTEN
    tcp 0 0 *:discard *:* LISTEN
    tcp 0 0 debian01.lo:netbios-ssn *:* LISTEN
    tcp 0 0 *:daytime *:* LISTEN
    tcp 0 0 *:pop3 *:* LISTEN
    tcp 0 0 *:imap2 *:* LISTEN
    tcp 0 0 *:911 *:* LISTEN
    tcp 0 0 *:sunrpc *:* LISTEN
    tcp 0 0 *:x11 *:* LISTEN
    tcp 0 0 *:www *:* LISTEN
    tcp 0 0 *:914 *:* LISTEN
    tcp 0 0 *:ftp *:* LISTEN
    tcp 0 0 debian01.local.o:domain *:* LISTEN
    tcp 0 0 os208.nchc.gov.t:domain *:* LISTEN

    netstat -i : 列出本機(jī)器上所有的網(wǎng)路介面以及其通訊狀況
    # netstat -i
    Kernel Interface table
    Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
    eth0 1500 0 11749 0 0 0 3352 0 0 0 BMRU
    lo 16436 0 22 0 0 0 22 0 0 0 LRU

    netstat --inet | --ip | --tcp | --udp: 列出 Internet 所用的通訊協(xié)定(亦即TCP/IP)目前的狀態(tài)為何
    # netstat --inet
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 os208.:ssh black612.local.os:32902 ESTABLISHED
    tcp 0 1 debian01.local.os:58331 192.168.1.99:950 SYN_SENT
    tcp 0 0 os208.:58320 clio03.:pop3 TIME_WAIT

    netstat -s [--tcp|--udp|--raw]: 列出本機(jī)器在 TCP/IP 通訊協(xié)定上的統(tǒng)計狀況
    # netstat -s --tcp
    Tcp:
    281675 active connections openings
    0 passive connection openings
    273953 failed connection attempts
    0 connection resets received
    4 connections established
    2055858 segments received
    1748223 segments send out
    131515 segments retransmited
    6 bad segments received.
    963 resets sent
    TcpExt:
    36 resets received for embryonic SYN_RECV sockets
    11 packets pruned from receive queue because of socket buffer overrun
    12 ICMP packets dropped because they were out-of-window
    3 ICMP packets dropped because socket was locked
    ArpFilter: 0
    13835 TCP sockets finished time wait in fast timer
    1 packets rejects in established connections because of timestamp
    16217 delayed acks sent
    319 delayed acks further delayed because of locked socket
    Quick ack mode was activated 311 times
    226003 packets directly queued to recvmsg prequeue.
    155812 packets directly received from backlog
    9983765 packets directly received from prequeue
    1227824 packets header predicted
    56266 packets header predicted and directly queued to user
    TCPPureAcks: 425235
    TCPHPAcks: 206145
    TCPRenoRecovery: 2227
    TCPSackRecovery: 388
    TCPSACKReneging: 0
    TCPFACKReorder: 1
    TCPSACKReorder: 0
    TCPRenoReorder: 3
    TCPTSReorder: 5
    TCPFullUndo: 5
    TCPPartialUndo: 11
    TCPDSACKUndo: 3
    TCPLossUndo: 163
    TCPLoss: 329
    TCPLostRetransmit: 3
    TCPRenoFailures: 549
    TCPSackFailures: 178
    TCPLossFailures: 465
    TCPFastRetrans: 4423
    TCPForwardRetrans: 36
    TCPSlowStartRetrans: 4569
    TCPTimeouts: 119996
    TCPRenoRecoveryFail: 347
    TCPSackRecoveryFail: 91
    TCPSchedulerFailed: 156
    TCPRcvCollapsed: 534
    TCPDSACKOldSent: 183
    TCPDSACKOfoSent: 4
    TCPDSACKRecv: 349
    TCPDSACKOfoRecv: 1
    TCPAbortOnSyn: 0
    TCPAbortOnData: 29
    TCPAbortOnClose: 6
    TCPAbortOnMemory: 0
    TCPAbortOnTimeout: 29
    TCPAbortOnLinger: 0
    TCPAbortFailed: 0
    TCPMemoryPressures: 0


  4. iptraf: Interactive Colorful IP LAN Monitor
    # apt-get install iptraf
    # /usr/sbin/iptraf
  5. /bin/ping
    • 這個指令的用途在於確認(rèn)網(wǎng)路上的某臺機(jī)器是否正在網(wǎng)路上運作, 其原理就像潛水艇的聲納系統(tǒng)發(fā)出聲波並分析反彈回來的訊號以確定物體位置的方法相同。

    • ping 程式會丟出 icmp要求回應(yīng)的封包,並等候?qū)Ψ絹G回相對應(yīng)的icmp封包,計算兩個動作間所耗費的時間,以判斷兩臺機(jī)器間的「距離」。

    # /bin/ping -c 5 opensource.
    PING opensource. (140.110.17.49): 56 data bytes
    64 bytes from 140.110.17.49: icmp_seq=0 ttl=63 time=0.5 ms
    64 bytes from 140.110.17.49: icmp_seq=1 ttl=63 time=0.4 ms
    64 bytes from 140.110.17.49: icmp_seq=2 ttl=63 time=0.4 ms
    64 bytes from 140.110.17.49: icmp_seq=3 ttl=63 time=0.4 ms
    64 bytes from 140.110.17.49: icmp_seq=4 ttl=63 time=0.4 ms

    --- opensource. ping statistics ---
    5 packets transmitted, 5 packets received, 0% packet loss
    round-trip min/avg/max = 0.4/0.4/0.5 ms

  6. /usr/bin/traceroute
    這個指令是用來將兩臺機(jī)器間的路徑及延遲的時間顯示出來,就好像你把從家裡到辦公室的路徑畫在地圖上是一樣的意義
    # /usr/bin/traceroute tw.yahoo.com
    traceroute to tw.yahoo.com (202.1.237.21), 30 hops max, 38 byte packets
    1 debian01.local.os208. (192.168.1.1) 0.272 ms 0.185 ms 0.146 ms
    2 140.110.17.254 (140.110.17.254) 0.437 ms 0.442 ms 0.356 ms
    3 140.110.249.229 (140.110.249.229) 1.093 ms 1.169 ms 1.603 ms
    4 140.110.249.246 (140.110.249.246) 0.684 ms 0.713 ms 0.692 ms
    5 TANetBackbone-MOE.edu.tw (192.83.196.111) 2.164 ms 4.774 ms 2.227 ms
    6 210.242.253.170 (210.242.253.170) 2.349 ms 17.666 ms 2.556 ms
    7 tp-twix-r1.router.hinet.net (211.22.35.66) 2.637 ms 2.328 ms 2.217 ms
    8 tp-s2-c12r2.router.hinet.net (211.22.35.230) 2.493 ms 2.549 ms 2.254 ms
    9 tp-s2-c6r8.router.hinet.net (211.22.35.181) 2.409 ms 2.540 ms 2.044 ms
    10 211.22.41.89 (211.22.41.89) 2.804 ms 2.302 ms 2.167 ms
    11 alteon5.tpe.yahoo.com (202.1.237.252) 2.992 ms 2.895 ms 2.809 ms

  7. /usr/sbin/bing
    測量往路上兩臺機(jī)器間能用的頻寬為多少, 通常與 traceroute 一起使用
    原理: 送多個不同大小的ICMP封包的網(wǎng)路上, 頻寬 = 封包大小差異 / 送到遠(yuǎn)端所需時間的差異
    (time = transmission delay + propagation delay + queue delay)

    bing -e [sample#] -c [cycle#] host1 host2
    # /usr/sbin/bing -e 10 -c 1 192.168.1.1 192.168.1.12
    BING 192.168.1.1 (192.168.1.1) and 192.168.1.12 (192.168.1.12)
    44 and 108 data bytes
    1024 bits in 0.000ms
    1024 bits in 0.015ms: 68266667bps, 0.000015ms per bit
    1024 bits in 0.023ms: 44521739bps, 0.000022ms per bit
    1024 bits in 0.024ms: 42666667bps, 0.000023ms per bit
    1024 bits in 0.025ms: 40960000bps, 0.000024ms per bit

    --- 192.168.1.1 statistics ---
    bytes out in dup loss rtt (ms): min avg max
    44 10 10 0% 0.071 0.147 0.247
    108 10 10 0% 0.069 0.076 0.086

    --- 192.168.1.12 statistics ---
    bytes out in dup loss rtt (ms): min avg max
    44 10 10 0% 0.171 0.187 0.282
    108 10 10 0% 0.196 0.198 0.201

    --- estimated link characteristics ---
    warning: rtt big host1 0.069ms < rtt small host2 0.071ms
    estimated throughput 40960000bps
    minimum delay per packet 0.083ms (3392 bits)

    average statistics (experimental) :
    packet loss: small 0%, big 0%, total 0%
    warning: rtt big host1 0.076ms < rtt small host2 0.147ms
    average throughput 102400000bps
    average delay per packet 0.023ms (947 bits)
    weighted average throughput 102400000bps

    resetting after 10 samples.

其他參考資料
  1. ADSL, PPPoE
    • ADSL(Asymmetric Digital Subscriber Line)簡介
      • 在其頻寬範(fàn)圍內(nèi)將線路分成三個頻道: 接收頻道(downstream 1.5Mbps - 6Mbps), 傳送頻道(upstream 640kbps - 1 Mbps), 語音頻道(POTS)
      • 使用 DMT 調(diào)變技術(shù)
        將頻段切成256個各具不同載波信號的子頻道, 再將數(shù)位資料用QAM調(diào)變方式,分配調(diào)變於256個載波子頻道上
        每個子通道所佔的頻寬為4KMZ,故ADSL最高傳輸訴率為
        (256個通道) * (每個通道4KMZ) * (線路品質(zhì)最好時用6位元編碼)
        256 * 4 * 6 = 6 Mbps
        Note: 通常 6 至 31 個子通道用來上傳, 32 至 250 個小通道用來下傳
    • PPP 簡介
      • 利用串列通訊界面(RS232), 以點對點方式連線遠(yuǎn)端主機(jī)或網(wǎng)路的一種軟體通訊技術(shù)
      • LCP(Link Control Protocol): 負(fù)責(zé)建立, 設(shè)定及測試點對點連線
      • NCP(Network Control Protocol): 負(fù)責(zé)建立及設(shè)定在點對對連線上的 網(wǎng)路通訊協(xié)定
    • PPPoE 簡介
      • 在 Ethernet 上建立 PPP Session, 並且包裝 PPP 封包於 Ethernet 封包中
      • Why? 因為 PPP 有 Authorization 的機(jī)制, 透過該機(jī)制, ISP 可以進(jìn)行用互認(rèn)證, 記錄用戶連線時間, 及取得動態(tài) IP
      • Discovery Stage: 發(fā)現(xiàn)對方的 MAC Address, 並且將該 MAC Address 與一個 SESSiOn_ID 對應(yīng), 利用 SESSION_ID 管理連線
      • Session Stage: 傳送 PPP 封包 (當(dāng)然, PPP封包是包在 Ethernet 封包之中)
    • 設(shè)定
      # apt-get install pppoe pppoeconf
      # pppoeconf

  2. Packet Filtering and Monitoring
    Reference:
    http://www./netfilter/syntax.html
    http://www./netfilter/ipt_flow_mirror.html

    • iptables 結(jié)構(gòu)圖
      table chain rule
      filter
      • INPUT
      • OUTPUT
      • FORWARD
      • ACCEPT
      • DROP
      • REJECT
        --reject-with <ICMP type 3> icmp-port-unreachable(default), icmp-net-unreachable, icmp-host-unreachable, icmp-proto-unreachable, icmp-net-prohibited, icmp-host-prohibited
      • LOG
        --log-level <syslog level> emerg(0), alert(1), crit(2), err(3), warn(4), notice(5), info(6), debug(7)
        --log-prefix "log_prefix" print the quoted string at the start of the log message
        --log-ip-options including any IP header options in the log output
        --log-tcp-sequence including the TCP packets sequence number in the log output
        --log-tcp-options including any TCP header options in the log output
      • QUEUE
      • RETURN
      nat
      • PREROUTING
      • POSTROUTING
      • OUTPUT
      • SNAT
      • DNAT
      • MASQUERADE
      • REDIRECT
      mangle
      • PREROUTING
      • OUTPUT
      • MARK
      • TOS

    • 封包進(jìn)入規(guī)則表及規(guī)則流程圖

    • Example:
      1. 拒絕送到 port 2049, 4045 的 udp 封包
        # iptables -A INPUT -i eth0 -p udp -m multiport --destination-port 2049,4045 -j DROP

        你也可以使用兩個 rule 來描述上述的一個 rule:

        # iptables -A INPUT -i eth0 -p udp --destination-port 2048 -j DROP
        # iptables -A INPUT -i eth0 -p udp --destination-port 4045 -j DROP

        使用 -m multiport 要注意必須緊接在 -p tcp|udp 之後, 以下兩個例子, 第一個是正確的, 第二個是錯誤的:

        # iptables -A INPUT -i <interface> -p tcp -m multiport ! --syn --source-port 80,443 -j ACCEPT
        # iptables -A INPUT -i <interface> -p tcp ! --syn -m multiport --source-port 80,442 -j ACCEPT

      2. A local DNS server operating as a cache-and-forward name server

      3. 限定某些使用者(只用於 OUTPUT)
        # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
        # iptables -A OUTPUT --out-interface eth0 -p udp -s [SOURCE_IP] --source-port 53 -d [DESTINATION_IP] --destination-port 53 -m state NEW,RELEATED -j ACCEPT
        # iptabls -A OUTPUT -o eth0 -p tcp -s [SOURCE_IP] --sport 1024:65535 -d [DESTINATION_IP] --dport 22 -m owner --uid-owner [UID] --gid-owner [GID] -j ACCEPT

    • Port Forwarding
      1. 改變封包的 IP Header 中的 IP Destination 及 TCP/UDP 中的 Port 號碼
        iptables -t nat -A PREROUTING -i incomming_interface -p protocol -d ip_address_of_incomming_interface --dport original_port_number -j DNAT --to destination_ip_address:destination_port_number

      2. 將改變的封包送出去
        iptables -A FORWARD -i incomming_interface -o outgoing_interface -p protocol -d destination_ip_address --dport destination_port_number -j ACCEPT

      Example: 要將送到 192.168.1.1 (eth0) 的 www (port 80) 的封包, 改送到 192.168.2.2 (eth1) 的 port 8888
      # /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.1.1 --dport 80 -j DNAT \
      --to 192.168.2.2:8888
      # /sbin/iptables -A FORWARD -i eth0 -o eth1 -p tcp -d 192.168.2.2 --dport 8888 -j ACCEPT

    • Port Forwarding (To "This" Host)
      1. 改變封包的 IP Header 中的 IP Destination 及 TCP/UDP 中的 Port 號碼
        iptables -t nat -A PREROUTING -i incomming_interface -p protocol -d ip_address_of_incomming_interface --dport original_port_number -j REDIRECT --to-ports destination_port_number


      Example: 要將送到 192.168.1.1 (eth0) 的 www (port 80) 的封包, 改送到 192.168.2.2 (eth1) 的 port 8888
      # /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.1.1 --dport 80 -j DNAT \
      --to 192.168.2.2:8888
      # /sbin/iptables -A FORWARD -i eth0 -o eth1 -p tcp -d 192.168.2.2 --dport 8888 -j ACCEPT

    • NAT: IP Masquerade
      1. 改變封包的 IP Header 中的 IP Source 為對外網(wǎng)卡的 IP
        iptables -t nat -A POSTROUTING -s inner_net -o outgoing_interface -j MASQUERADE
      2. 予許任何 INPUT, FORWARD
        iptables -P FORWARD ACCEPT
        iptables -P INPUT ACCEPT

      Example: 要將內(nèi)部網(wǎng)路 192.168.8.0/24 以 eth0 的 IP 送出
      # /sbin/iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth0 -j MASQUERADE
      # /sbin/iptables -P FORWARD ACCEPT
      # /sbin/iptables -P INPUT ACCEPT

    • 簡易防火牆設(shè)定
      outer_nic="eth0"
      inner_nic="eth1"
      inner_net="192.168.1.0/24"

      # clean filter table
      iptables -F
      iptables -X
      # clean mangle table
      iptables -F -t mangle
      iptables -t mangle -X
      # clean nat table
      iptables -F -t nat
      iptables -t nat -X

      #individual port forwarding
      iptables -A PREROUTING -t nat -i eth0 -d $inner_net -j DROP
      echo "no portfw started"

      #forward rules
      iptables -t nat -A POSTROUTING -s $inner_net -o $outer_nic -j MASQUERADE
      iptables -A FORWARD -i $inner_nic -j ACCEPT
      iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
      #clean up a bad syn which needs a specific rule
      iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
      #clean these up as well
      iptables -A FORWARD -m state --state INVALID -j DROP

      #Final default policy
      iptables -P FORWARD DROP
      #iptables -P FORWARD ACCEPT
      echo "FORWARD rules now in place"

      #INPUT rules

      #denied rule
      iptables -A INPUT -s 140.110.127.243 -j DROP
      iptables -A INPUT -s 140.119.74.54 -j DROP

      #general
      iptables -A INPUT -i $inner_nic -j ACCEPT
      iptables -A INPUT -p tcp --syn --sport 20 -j ACCEPT #ftp-data
      iptables -A INPUT -p tcp --syn --dport 21 -j ACCEPT #ftp
      iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT #ssh
      iptables -A INPUT -p tcp --syn --dport 80 -j ACCEPT #www
      iptables -A INPUT -p tcp --syn --dport 443 -j ACCEPT #ssl
      iptables -A INPUT -p tcp --syn --dport 1863 -j ACCEPT #msn messagener

      # open for specific host
      iptables -A INPUT -s 140.110.60.112/32 -j ACCEPT
      iptables -A INPUT -s 140.110.58.220/32 -p tcp --syn --dport 25 -j ACCEPT #smtp
      iptables -A INPUT -s 140.110.58.220/32 -p tcp --syn --dport 110 -j ACCEPT #pop3
      iptables -A INPUT -s 140.110.58.220/32 -p tcp --syn --dport 143 -j ACCEPT #imap2
      iptables -A INPUT -s 207.46.104.20/32 -p tcp --syn --dport 1863 -j ACCEPT # msn
      iptables -A INPUT -s 140.110.58.220/32 -p tcp --syn --dport 2401 -j ACCEPT #pserver

      iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      iptables -A INPUT -m state --state NEW -i ! $outer_nic -j ACCEPT
      #allow ping replies (may not be desired)
      iptables -A INPUT -p icmp -s 0/0 --icmp-type echo-request -j ACCEPT

      iptables -P INPUT DROP
      #iptables -P INPUT ACCEPT
      echo "INPUT rules now in place"

      #specific defence rules eg DoS attacks
      #syn-flood protection
      iptables -A FORWARD -p tcp --syn -m limit -j ACCEPT
      #furtive port scanner
      iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit
      #ping of death
      iptables -A FORWARD -p icmp --icmp-type echo-request -m limit
      echo "DoS defences setup"

  • ICMP(Internet Control Message Protocol)介紹:
    ICMP封包的結(jié)構(gòu):
    1 2 3 4 5...
    Type Code Checksum 根據(jù)Type改變

    Type/Code的意義:
    Type Code Function
    0/8 0 Echo response/request ping
    3 0-15 Destination unreachable
    • network-unreachable
    • host-unreachable
    • protocol-unreachable
    • port-unreachable
    • network-unknown
    • host-unknown
    • network-prohibited
    • host-prohibited
    • ...
    4 0 Source quench 當(dāng)Router可處理的Buffer快滿時, 要求送的機(jī)器不要這麼快送來
    5 0-3 Redirect 當(dāng)一個網(wǎng)路上有兩個Router,兩個Router分開兩個不同的網(wǎng)路
    11 0-1 TTL exceeded traceroute
    12 0-1 Parameter Error 當(dāng)IP封包有錯誤時

    Reference: RFC 792

  • TTL(Time To Live): 最多可以經(jīng)過幾個 Routers (之後該封包就無效了, Router收到就會不處理), IP 封包每經(jīng)過一個 Router, TTL值就會被減去適當(dāng)?shù)闹?
  1. /usr/sbin/tcpdump
    收集網(wǎng)路封包
    • tcpdump -i interface
      收集送到 interface 的網(wǎng)路封包

    • tcpdump -c#_packet
      收集最多#_packet個封包

    • tcpdump -x
      輸出結(jié)果以16進(jìn)制表示, 該結(jié)果可用 xethereal 來分析

    • tcpdump host [ip_address]
      收集所有送到 [ip_address] 或者是 [ip_address] 送出的封包

    • tcpdump dst [ip_address]
      收集所有送到 [ip_address] 的封包

    • tcpdump src [ip_address]
      收集所有 [ip_address] 送出的封包

    • tcpdump port [port_number]
      收集所有送到 port_number 的封包


    Example: 收集 100 個在 eth0 上所有送到 192.168.8.1 的 port 68 及 port 69 的封包, 並以16進(jìn)制輸出 (觀察 192.168.8.1 上的 dhcpd 的運作情況)
    # /usr/sbin/tcpdump -c100 -i eth0 host 192.168.8.1 and port 68 or port 69

  2. nmap
  3. ntop

五、SNMP
  1. 原理

    SNMP的網(wǎng)管架構(gòu)基於三個主要的元件, 這些元件分別伴演不同的角色, 透過這些角色之間的資料傳遞, 就可以讓我們瞭解目前網(wǎng)路環(huán)境與狀態(tài)

    資料來源
    • 管理者(Manager)
      進(jìn)行網(wǎng)路管理的程式, 管理者(Manager)透過SNMP向代理者(Agent)查詢所需要的資訊, 包括網(wǎng)路設(shè)備的運作狀態(tài), 系統(tǒng)的配置情況等; 管理者在收到這些資料後, 就可以進(jìn)行統(tǒng)計及分析的處理, 再整理出圖表讓使用者瀏覽

      管理者(Manager)除了主動送出SNMP向代理者(Agent)查詢所需要資訊外, 亦可接收代理者(Agent)所發(fā)出的TRAP訊號, 做為特殊狀況處理用

      常見的工具程式有: NET-SNMP, MRTG, NTOP 等

    • 代理者(Agent)
      在網(wǎng)路設(shè)備中預(yù)存在設(shè)備中的程式, 可以穫得本身設(shè)備的狀態(tài), 而這些資訊可以提供管理者(Manager)查詢所需;

      代理者(Agent)所扮演的角色是管理者(Manager)與管理資料庫(MIB)間的傳訊角色, 負(fù)責(zé)由管理資料庫(MIB)中將資料回覆給管理者(Manager)

      若是您裝了個 Linux Box, 需要 SNMP Agent 的服務(wù), 您可以裝 NET-SNMP

    • MIB(Management Information Base)
      由許多不同資料所組成的虛擬資料庫; 該虛擬資料庫的查詢方式是 KEY=VALUE 的特性, 也就是說一個 KEY 會對應(yīng)一個值;

      KEY 的規(guī)劃則是 MIB 的另一個重點, KEY 是利用 SMI (Structure of Management Information), ANS.1 (Abstract Syntax Notation One) 及 BER (Basic Encoding Rule) 定義出來, 為一個樹狀的結(jié)構(gòu); 該樹狀結(jié)構(gòu)的葉子(lief)部份即為可供查詢的 OID(Object Identifies), 也就是前面所提的 KEY; 樹狀結(jié)構(gòu)中的支點(node), 稱為 SNMP Group

      以下介紹幾個常用的 SNMP Group:
      • .1.3.6.1.2.1 (.iso.org.dod.internet.mgmt.mib-2)
        這個 SNMP Groups 定義了網(wǎng)路設(shè)備的基本狀態(tài), 其中包含了 10 個 SNMP Groups (MIB I 定義了 8 個, MIB II 中加了 2 個)
        • system(1): 與系統(tǒng)相關(guān)的資訊
        • interfaces(2): 可送出/接收IP資料封包的網(wǎng)路介面卡數(shù)目
        • at(3): 網(wǎng)路位址與實際位址的轉(zhuǎn)換表
        • ip(4): IP路由與資料封包的統(tǒng)計
        • icmp(5): ICMP I/O 統(tǒng)計
        • tcp(6): TCP 連結(jié)參數(shù)和資料封包的統(tǒng)計
        • udp(7): UDP 傳輸統(tǒng)計及資料封包傳遞問題
        • egp(8): EGP 的傳輸設(shè)定與狀態(tài)
        • transmission: 傳輸媒體資料
        • snmp: 與 snmp 相關(guān)的物件

      • .1.3.6.1.4.1 (.iso.org.dod.internet.private.enterprise)
        讓各個網(wǎng)路設(shè)備的廠商自行加入OID的SNMP Group, 以 Cisco 為例, 它在此建立了一個 SNMP Group .1.3.6.1.4.1.9 (參考資料), NET-SNMP在此也建立了一個 SNMP Group .1.3.6.1.4.1.2021

        當(dāng)然, 要瞭解各廠商建立的 SNMP Group 及 OID, 最好的方法就是找設(shè)備廠商查詢, 以 Cisco 及 Juniper 為例, 您可以在他們的網(wǎng)頁上輸入設(shè)備型號, OID, MIB 等關(guān)鍵字, 就能查詢到相關(guān)的資訊了

      以下是 MIB 的參考資料
  2. NET-SNMP (www.)

    NET-SNMP 最早稱之為 UCD-SNMP, 是由 The University of California at Davis 發(fā)展出來的 SNMP 工具集, 其中包含了 SNMP 的三個主要元件 (Manager, Agent 及 MIB), 在 Debian 中您只需要下達(dá) apt-get install snmp snmpd 即可

    # apt-get install snmp snmpd

    以下介紹如何設(shè)定與使用 NET-SNMP
    • 設(shè)定 NET-SNMP Agent
      其實 Debian 上安裝 net-snmp 後的預(yù)設(shè)設(shè)定已經(jīng)可以跑起一個能查詢 .1.3.6.1.2.1.1 的 SNMP Agent, 若您需要透過 SNMP 查詢進(jìn)一步的資料, 您只需要設(shè)定好 /etc/snmp/snmpd.conf 中的 ACL (Access Control List)即可, 以下的設(shè)定, 設(shè)定了三個 ACL, 分別給與不同的權(quán)限:
      1. 在本機(jī)(localhost)上, 可透過 SNMP 讀寫 MIB 的 OID 值
      2. 在本機(jī)所管理的虛擬網(wǎng)路(192.168.1.0/24)中, 可透過 SNMP 查詢所有 MIB 中的 OID 值
      3. 其它則可透過 SNMP 查詢 .1.3.6.1.2.1.1 (與系統(tǒng)相關(guān)的資料)的 OID 值

      #       sec.name  source          community
      com2sec local localhost private
      com2sec mynet 192.168.1.0/24 public
      com2sec public default public

      ####
      # Second, map the security names into group names:

      # sec.model sec.name
      group MyROSystem v1 public
      group MyROSystem v2c public
      group MyROSystem usm public
      group MyROGroup v1 mynet
      group MyROGroup v2c mynet
      group MyROGroup usm mynet
      group MyRWGroup v1 local
      group MyRWGroup v2c local
      group MyRWGroup usm local

      ####
      # Third, create a view for us to let the groups have rights to:

      # incl/excl subtree mask
      view all included .1 80
      view system included .iso.org.dod.internet.mgmt.mib-2.system

      ####
      # Finally, grant the 2 groups access to the 1 view with different
      # write permissions:

      # context sec.model sec.level match read write notif
      access MyROSystem "" any noauth exact system none none
      access MyROGroup "" any noauth exact all none none
      access MyRWGroup "" any noauth exact all all none

      另外, 您也可以在 /etc/snmp/snmpd.conf 中加入一些新的 OID 做為您額外要查詢的資料之用, 以下的例子是在 .1.3.6.1.4.1.2021.50 中加入 date 的查詢, 在 .1.3.6.1.4.1.2021.51 中加入 ps 的查詢:

      exec .1.3.6.1.4.1.2021.50 /bin/date -j -u
      exec .1.3.6.1.4.1.2021.51 /bin/ps


    • 使用 NET-SNMP 指令進(jìn)行 SNMP 管理
      • snmpget
      • snmpgetnext
      • snmpwalk
      • snmptable
      • snmpset
      • snmptranslate
      • snmpnetstat

  3. MRTG(www.)
    MRTG會利用 SNMP 向網(wǎng)路設(shè)備或是主機(jī)系統(tǒng)查詢, 然後將回傳的資料製成統(tǒng)計圖表, 除此之外, 亦可配合相關(guān)程式的撰寫, 統(tǒng)計其它的系統(tǒng)資訊, 在此我們只討論透過 SNMP 取得資訊的部份

    在 Debian 下安裝 MRTG, 只需要 apt-get install mrtg mrtg-contrib 即可

    # apt-get install snmp snmpd

    接著您可以透過 cfgmaker 及 indexmaker 這兩個工具來設(shè)定 MRTG, 以下介紹要透過 SNMP 向 192.168.1.50 上的無線網(wǎng)路基地臺查詢相關(guān)資料的設(shè)定方法

    # cfgmaker public@192.168.1.50 --output=/etc/mrtg.cfg
    # vi /etc/mrtg.cfg
    # mrtg /etc/mrtg.cfg
    # mrtg /etc/mrtg.cfg
    # mrtg /etc/mrtg.cfg

    cfgmaker 只是透過 snmpwalk 向 192.168.1.50 取得可透過 SNMP 得到的資訊, 您要自行去編輯 /etc/mrtg.cfg 將您想要觀察的項目的註解取消, 最後執(zhí)行 3 次 mrtg /etc/mrtg.cfg 就大工告成了

    若是在您的 Linux Box 上裝了 net-snmp 的 SNMP Agent, 想利用 MRTG 透過 SNMP 查詢您電腦的狀況, www. 提供了數(shù)個範(fàn)例


六、NFS/NIS
  • RPC(Remote Procedure Call)

    • 由於NIS與NFS乃是以RPC為基礎(chǔ)的網(wǎng)路服務(wù). 在正式進(jìn)行NIS和NFS兩項網(wǎng)路服務(wù)介紹之前,我們必須先介紹RPC的基本概念,

    • RPC是遠(yuǎn)端程序呼叫(RPC:Remote Procedure Calls)的縮寫, 是撰寫網(wǎng)路應(yīng)用程式常用的方法,我們需要 RPC 的原因,主要是因為使用 Socket撰寫網(wǎng)路應(yīng)用程式時, 必須考慮通訊的所有細(xì)節(jié),例如資料型式和資料結(jié)構(gòu)的轉(zhuǎn)換,連線的管理等等. 試想如果我們能把這些細(xì)節(jié)簡化,則程式設(shè)計者可以把時間轉(zhuǎn)移至更重要的應(yīng)用需求開發(fā).其架構(gòu)如下圖

    • RPC最早是由Sun提出的標(biāo)準(zhǔn),我們常聽到的DCOM和CORBA就是類似這種概念. 當(dāng)程式需要遠(yuǎn)端程序提供某種服務(wù)時,RPC服務(wù)通常是呼叫Server上的某個程式幫我們處理一些資料, 處理完後再把處理結(jié)果送回給我們.

    • 開啟 RPC 的服務(wù) (portmap)
      # /etc/init.d/portmap start

    • 查詢目前有那些程式使用 RPC
      # rpcinfo -p localhost


  • NIS(Network Information Service)

    • 因為 Linux 是個多人多工的環(huán)境, 所以帳號及群組的管理是非常重要的一個問題; 當(dāng)我們在負(fù)責(zé)管理一個網(wǎng)路環(huán)境時,我們首先會遇到的一個困難就是—如何維護(hù)一份共通的資料,像是密碼檔,群組等. 這些在每臺主機(jī)上都存在,並且在我們所負(fù)責(zé)管理的網(wǎng)路環(huán)境中的每臺電腦應(yīng)該都是一樣的. 如此一來,我們的使用者便不需要擔(dān)心在哪一臺機(jī)器上他有帳號可以登入,哪臺機(jī)器他沒有帳號所以不能登入; 在這裡我們所謂的『維護(hù)一份共通的資料』是指只要在任何一臺我們的機(jī)器上所作的改變能夠被傳送到其他臺機(jī)器, 使得所有的機(jī)器上帳號的資訊都能夠一致. 例如,我們?nèi)粑覀兘裉煜胍略黾右晃皇褂谜叩膸ぬ? 我們只要在一臺電腦上新增帳號,就能讓這位使用者在每臺機(jī)器上都擁有帳號一般.

    • NIS是建構(gòu)在”主—從架構(gòu)”上, 由NIS server提供服務(wù)給NIS clients。 一般而言,NIS server 可以不只一臺,這是為了怕萬一其中一臺出問題時,還有其他臺可以接手,繼續(xù)提供服務(wù)給使用者。
      • 所謂的 NIS server 是指一臺包含有 NIS data 和 maps 的主機(jī)。 而 client 則是向 NIS server 要求這些資料,當(dāng) NIS server 收到來自 client 端的請求時, 會傳送資料給 NIS client。

      • NIS server中,又分為master server和slave server兩種。 NIS master server上所包含的資料,我們視為最具有”權(quán)威”的資料。 它們通常都會有備份,NIS slave server可視為它們的備份。 當(dāng)NIS master server上有資料被更新時,它會將自己變更的資料PUSH到所有NIS slave server上。 NIS slave server並不會自己變更任何資料,變更資料的只有NIS master server。這樣一來,只要在NIS master server上變更資料,NIS slave server便會知道, 而所有的NIS client在請求資料時,所拿到的就會是正確的資訊了。

      • NIS是利用認(rèn) NIS domain 的方式來管理屬於這個 domain 這些機(jī)器、使用者、群組。但是,在這裡的這個domain和我們一般所提到的domain有一些出入。 這個NIS domain的名稱,是包含我們所負(fù)責(zé)的所有機(jī)器,並且這個NIS domain的名稱可以是任意的名稱。 NIS Domain涵蓋的範(fàn)圍,可以是任意IP的集合,並不侷限於Subnet或DNS Domain的限制.


    • 啟動 NIS 服務(wù)
      • NIS Server
        # apt-get install nis
        # vi /etc/default/nis
        # vi /etc/yp.conf
        # vi /etc/ypserv.securenets
        # /usr/lib/yp/ypinit -m
        # cd /var/yp; make
        # /etc/init.d/nis restart

      • NIS Client
        # apt-get install nis
        # vi /etc/yp.conf
        # vi /etc/passwd
        # vi /etc/shadow
        # vi /etc/group
        # /etc/init.d/nis restart


    • NIS 管理工具
      • ypcat: 查詢 NIS Server 分享出來的資料(passwd, group, services, protocols ...)
      • ypwhich: 顯示目前 binding 的 NIS Server
      • ypset: 設(shè)定使用那臺 NIS Server

  • NFS(Network File Service)
    • 所謂的Network File System指的是指一個可以提供存取遠(yuǎn)方磁碟的檔案系統(tǒng)。 和Network Information Service (NIS)相比較可以發(fā)現(xiàn),NIS所提供的是集中管理我們網(wǎng)域中使用者和主機(jī)的資訊, 而Network File System (NFS)則是集中的管理磁碟。利用NFS可以使我們不必複製相同的檔案到每一臺主機(jī)上, 例如使用者的Mail Spool檔案,同時可能被使用者從Telnet Server進(jìn)入讀信或管理信件,同時亦可能被Mail Server增加新進(jìn)的信件,我們?yōu)榱艘共煌瑱C(jī)器上能夠?qū)n案做同步和集中管理的動作, 因此必須使用NFS來達(dá)成這樣的目的。

    • 對使用者而言,NFS提供了使用者存取遠(yuǎn)方的檔案但【不必】登入對方的主機(jī)。使用者在使用這些檔案時也無須把檔案拷貝至本地端的電腦。只要NFS被設(shè)定好,我們將能夠在本地端的電腦完成所有的工作,使用者將完全感覺不到有使用到遠(yuǎn)方的檔案系統(tǒng), 所有的檔案感覺都像是【本地端】的。

    • 啟動 NFS 服務(wù)
      • NFS Server
        # apt-get install nfs-user-server (nfs-kernel-server)
        # vi /etc/exports
        # /etc/init.d/nfs-user-server restart

      • NFS Client
        # mount -t nfs -o rw,intr,soft,bg [NFS_SERVER_IP]:[EXPORTS_FS] [MOUNT_POINT]
        or # vi /etc/fstab
        or use automounter utilities (eg. amd)
        # apt-get install am-utils # ln -s /net/[NFS_SERVER_IP]/[MOUNT_POINT] [LINK_NAME]


七、專題
  • PenguinZilla (無磁碟遠(yuǎn)端開機(jī))
    開機(jī)程序
    Etherboot/PXE 下載 kernel 及 initrd
    Initial Ram Disk 載入網(wǎng)路卡所需要的模組, 利用 dhcp 取得設(shè)定, 透過 NFS 掛載所需要的根目錄
    /sbin/init 透過 NFS 掛載 /etc, /var 等設(shè)定 client 的目錄

  • 利用 SSH 及 PPP 架設(shè) VPN
    1. Establishing Passwordless SSH Login
      • 在 VPN Client 及 VPN Server 上都建立一個使用者 sshvpn,
      • 在 VPN Client 中產(chǎn)生 ssh key (ssh-keygen -t rsa|dsa -N ‘‘),
      • 將 key 覆製到 VPN Server 的 sshvpn 家目錄下的 .ssh 中, 改名為 authorized_keys (or authorized_keys2)
    2. Setup sudo
      Cmnd_Alias VPN=/usr/sbin/pppd
      sshvpn ALL=NOPASSWD: VPN

    3. Establishing PPP Connection
      % sudo /usr/sbin/pppd updetach noauth pty "sudo -u sshvpn ssh -t -t [VPN_SERVER] sudo /usr/sbin/pppd noauth 192.168.254.254:192.168.254.253"
    4. Adjust the Routing Table
      % sudo route add -net 192.168.1.0/24 gw 192.168.254.254
      % sudo route add -net 192.168.2.0/24 gw 192.168.254.253

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多