一、概論
參考資料:
www.study-area.netTCP/IP(DoD)模型
資料來源應(yīng)用層(Application Layer) 定義應(yīng)用程式如何提供服務(wù)
傳訊層(Host-to-Host Transport Layer) 負(fù)責(zé)傳輸過程中的流量控制, 錯(cuò)誤處理, 資料重送等
網(wǎng)路層(Internet Layer) 決定資料如何傳送到目的地
連結(jié)層(Network Access Layer) 負(fù)責(zé)對(duì)硬體的溝通及硬體間的溝通方式
IP位址 長(zhǎng)32位元,為方便表達(dá),將此32位元數(shù)值切成四段,每連續(xù)8個(gè)位元一組,改以如下的4個(gè)10進(jìn)位數(shù)值表達(dá)IP位址 11000000101010000000000000000001 = 192.168.0.1 11000000 10101000 00000000 00000001
192 168 0 1
包含兩項(xiàng)資訊: 網(wǎng)路號(hào)碼(network number)與主機(jī)號(hào)碼(host number) TCP/IP是網(wǎng)路導(dǎo)向的
屬於相同網(wǎng)路的主機(jī),其IP位址的網(wǎng)路號(hào)碼也相同,而主機(jī)號(hào)碼則是該主機(jī)在該網(wǎng)路內(nèi)唯一的編號(hào),同網(wǎng)路的主機(jī)間可直接互通,不須藉助第三者,不同網(wǎng)路間主機(jī)則須藉助router於網(wǎng)路間遞送封包,而router賴以判斷的路由資訊即是IP位址中的網(wǎng)路號(hào)碼。
網(wǎng)路號(hào)碼 主機(jī)號(hào)碼
網(wǎng)路遮罩(Netmask) 為由IP位址濾出網(wǎng)路號(hào)碼
該遮罩同樣是32位元數(shù)值,根據(jù)IP位址的分級(jí),網(wǎng)路遮罩中與網(wǎng)路號(hào)碼對(duì)應(yīng)的位元保留為1,主機(jī)號(hào)碼的位元皆為0,將這樣的遮罩與IP位址進(jìn)行AND運(yùn)算的結(jié)果即是網(wǎng)路號(hào)碼。
次網(wǎng)路遮罩 (Subnet Mask): 取主機(jī)號(hào)碼中的部份高位元做為次網(wǎng)路號(hào)碼位元 解決不同網(wǎng)路類型並存以及長(zhǎng)距離或主機(jī)數(shù)量過多的問題
透過次網(wǎng)路的設(shè)置,不同種類的網(wǎng)路即可擁有自己的次網(wǎng)路位址,再透過IP選徑器即可連接這些次網(wǎng)路,而主機(jī)數(shù)量過多的區(qū)域網(wǎng)路也可使用次網(wǎng)路技巧將之打散成數(shù)個(gè)小網(wǎng)路,以減少主機(jī)間封包碰撞頻率過高、導(dǎo)致網(wǎng)路傳輸率下降的問題。
網(wǎng)路號(hào)碼 主機(jī)號(hào)碼
主機(jī)號(hào)碼 次網(wǎng)路號(hào)碼 主機(jī)號(hào)碼
表示方式 1~32: 32 個(gè) bit 中要用幾個(gè) bit 來代表網(wǎng)路號(hào)碼
如同 IP 的表示方法: 將此32位元數(shù)值切成四段, 每連續(xù)8個(gè)位元一組,以4個(gè)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位址分級(jí) TCP/IP網(wǎng)路依其中所能容納的主機(jī)數(shù)量多寡分成A、B、C三級(jí), D級(jí)目前為multicast位址,E級(jí)則保留作為未來發(fā) 展之用 A級(jí)網(wǎng)路的最高位元值為0
B級(jí)網(wǎng)路的為10
C級(jí)網(wǎng)路為110
最高三個(gè)位元值為111則保留做為其它特殊用途
WHY? 網(wǎng)路分級(jí)的原因是考慮到不同規(guī)模的網(wǎng)路,因?yàn)镮nternet網(wǎng)路 導(dǎo)向的,當(dāng)申請(qǐng)一個(gè)網(wǎng)路時(shí),申請(qǐng)者須考慮其網(wǎng)路內(nèi)可能有的主機(jī)數(shù)目,並申請(qǐng)適當(dāng)?shù)燃?jí)的網(wǎng)路,申請(qǐng)超過實(shí)際所須的 網(wǎng)路將使得大部份IP位址被閒置,這在目前IP位址短缺的情 況下是不被允許的
在各等級(jí)的IP位址中,有兩種特別的位址已保留它用(特殊用途的主機(jī)號(hào)碼) 主機(jī)號(hào)碼的位元值皆為0的位址用以表示該網(wǎng)路
主機(jī)號(hào)碼的位元值皆為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)路號(hào)碼 預(yù)設(shè)路徑(default route): 0.0.0.0 用來簡(jiǎn)化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
nchc.gov.tw
設(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 nchc.gov.tw
編輯 /etc/hosts 檔, 該檔案格式為:
[IP_Address] [FQDN] [Aliases] # vi /etc/hosts
140.110.17.49 opensource.nchc.gov.tw opensource os
140.110.25.72 cpc002.nchc.gov.tw cpc002
在Inetnet發(fā)展的早期,僅僅使用主機(jī)名配置檔案(/etc/hosts)來作主機(jī)名/IP之間的映射,這對(duì)於互連的電腦較少時(shí)十分有效,而隨著相連的電腦的增多,hosts檔案會(huì)越來越大,如果用目前Internet上的電腦數(shù)量去衡量的話,使用hosts檔案根本不可能。
因此人們發(fā)展了一種分級(jí)的方式管理名字與IP地址對(duì)應(yīng)關(guān)系,稱為域名解析系統(tǒng)。在這個(gè)系統(tǒng)中採(cǎi)用一種分級(jí)結(jié)構(gòu),每個(gè)組織負(fù)責(zé)自己的域及通過這個(gè)域內(nèi)的名字伺服器,對(duì)域內(nèi)的電腦名字和IP地址的對(duì)應(yīng)關(guān)系進(jìn)行維護(hù),每個(gè)域內(nèi)還可以劃分為幾個(gè)不同的子域,子域由子域內(nèi)的名字伺服器負(fù)責(zé)解析,這樣就降低了維護(hù)任務(wù)的複雜程度。通過標(biāo)準(zhǔn)協(xié)議DNS, Internet上所有的名字伺服器可以相互交換數(shù)據(jù),這樣每臺(tái)電腦都能通過查詢名字伺服器來查詢Internet上所有的電腦名字。 Linux上用/etc/resolv.conf檔萊設(shè)定該主機(jī)要詢問的DNS伺服器
由於可以同時(shí)使用/etc/hosts主機(jī)檔案和/etc/resolv.conf中配置的DNS伺服器都能進(jìn)行電腦名字與IP地址之間的轉(zhuǎn)換,就可以規(guī)定查找的順序,在/etc/host.conf檔案中規(guī)定了進(jìn)行名字轉(zhuǎn)換時(shí)查找的順序。
利用 ping 測(cè)試網(wǎng)路連線狀況 語法: ping [-c count] [IP_Address] # ping -c 10 140.110.17.254
# ping -c 10 opensource.nchc.gov.tw
# ping -c 10 os
ping 指令介紹RedHat 使用 RedHat 提供的網(wǎng)路設(shè)定工具: netcfg, linuxconfig
編輯兩個(gè)設(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=nchc.gov.tw
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 可以到
這裡下載 netcardconfig, 這個(gè)工具是 knoppix 發(fā)展出來的 (OSTF改成中文)
編輯 /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)
隨地點(diǎn)改變的IP設(shè)定 - DHCP
主機(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;
}
}
用戶端取得 DHCP 核發(fā)的 IP 與相關(guān)網(wǎng)路設(shè)定 pump 語法: pump -i [interface] # /sbin/pump -i eth0
dhclient 語法: dhclient [interface] # /sbin/dhclient eth0
Note: /etc/dhclient-script
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
隨地點(diǎn)改變的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)管程式
/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: 啟動(dòng)或停止網(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的簡(jiǎn)寫,標(biāo)識(shí)IP協(xié)議,liux也支持其他幾種協(xié)議,如ipx、atalk等, /sbin/ifconfig 指令預(yù)設(shè)為 inet
一張網(wǎng)路卡設(shè)定多個(gè) 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
/sbin/route 顯示及設(shè)定路由表
/sbin/route : 顯示目前路由表設(shè)定, 若加上 -n 的參數(shù)則是不會(huì)做 IP 與 Hostname 對(duì)應(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 亦會(huì)顯示目前系統(tǒng)的 routing table
/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.nchc.gov.tw:ssh black612.local.os:32902 ESTABLISHED
tcp 0 1 debian01.local.os:58331 192.168.1.99:950 SYN_SENT
tcp 0 0 os208.nchc.gov.tw:58320 clio03.nchc.gov.tw:pop3 TIME_WAIT
netstat -s [--tcp|--udp|--raw]: 列出本機(jī)器在 TCP/IP 通訊協(xié)定上的統(tǒng)計(jì)狀況 # 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
iptraf: Interactive Colorful IP LAN Monitor # apt-get install iptraf
# /usr/sbin/iptraf
/bin/ping 這個(gè)指令的用途在於確認(rèn)網(wǎng)路上的某臺(tái)機(jī)器是否正在網(wǎng)路上運(yùn)作, 其原理就像潛水艇的聲納系統(tǒng)發(fā)出聲波並分析反彈回來的訊號(hào)以確定物體位置的方法相同。
ping 程式會(huì)丟出 icmp要求回應(yīng)的封包,並等候?qū)Ψ絹G回相對(duì)應(yīng)的icmp封包,計(jì)算兩個(gè)動(dòng)作間所耗費(fèi)的時(shí)間,以判斷兩臺(tái)機(jī)器間的「距離」。
# /bin/ping -c 5 opensource.nchc.gov.tw
PING opensource.nchc.gov.tw (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.nchc.gov.tw ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.4/0.4/0.5 ms
# /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.nchc.gov.tw (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
/usr/sbin/bing 測(cè)量往路上兩臺(tái)機(jī)器間能用的頻寬為多少, 通常與 traceroute 一起使用
原理: 送多個(gè)不同大小的ICMP封包的網(wǎng)路上, 頻寬 = 封包大小差異 / 送到遠(yuǎn)端所需時(shí)間的差異
(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.
其他參考資料
ADSL, PPPoE ADSL(Asymmetric Digital Subscriber Line)簡(jiǎn)介 在其頻寬範(fàn)圍內(nèi)將線路分成三個(gè)頻道: 接收頻道(downstream 1.5Mbps - 6Mbps), 傳送頻道(upstream 640kbps - 1 Mbps), 語音頻道(POTS)
使用 DMT 調(diào)變技術(shù) 將頻段切成256個(gè)各具不同載波信號(hào)的子頻道, 再將數(shù)位資料用QAM調(diào)變方式,分配調(diào)變於256個(gè)載波子頻道上
每個(gè)子通道所佔(zhàn)的頻寬為4KMZ,故ADSL最高傳輸訴率為
(256個(gè)通道) * (每個(gè)通道4KMZ) * (線路品質(zhì)最好時(shí)用6位元編碼)
256 * 4 * 6 = 6 Mbps
Note: 通常 6 至 31 個(gè)子通道用來上傳, 32 至 250 個(gè)小通道用來下傳
PPP 簡(jiǎn)介 利用串列通訊界面(RS232), 以點(diǎn)對(duì)點(diǎn)方式連線遠(yuǎn)端主機(jī)或網(wǎng)路的一種軟體通訊技術(shù)
LCP(Link Control Protocol): 負(fù)責(zé)建立, 設(shè)定及測(cè)試點(diǎn)對(duì)點(diǎn)連線
NCP(Network Control Protocol): 負(fù)責(zé)建立及設(shè)定在點(diǎn)對(duì)對(duì)連線上的 網(wǎng)路通訊協(xié)定
PPPoE 簡(jiǎn)介 在 Ethernet 上建立 PPP Session, 並且包裝 PPP 封包於 Ethernet 封包中
Why? 因?yàn)?PPP 有 Authorization 的機(jī)制, 透過該機(jī)制, ISP 可以進(jìn)行用互認(rèn)證, 記錄用戶連線時(shí)間, 及取得動(dòng)態(tài) IP
Discovery Stage: 發(fā)現(xiàn)對(duì)方的 MAC Address, 並且將該 MAC Address 與一個(gè) SESSiOn_ID 對(duì)應(yīng), 利用 SESSION_ID 管理連線
Session Stage: 傳送 PPP 封包 (當(dāng)然, PPP封包是包在 Ethernet 封包之中)
設(shè)定 # apt-get install pppoe pppoeconf
# pppoeconf
Packet Filtering and Monitoring Reference:
http://www.knowplace.org/netfilter/syntax.htmlhttp://www.knowplace.org/netfilter/ipt_flow_mirror.htmliptables 結(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: 拒絕送到 port 2049, 4045 的 udp 封包 # iptables -A INPUT -i eth0 -p udp -m multiport --destination-port 2049,4045 -j DROP
你也可以使用兩個(gè) rule 來描述上述的一個(gè) 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 之後, 以下兩個(gè)例子, 第一個(gè)是正確的, 第二個(gè)是錯(cuò)誤的:
# 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
A local DNS server operating as a cache-and-forward name server
限定某些使用者(只用於 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 改變封包的 IP Header 中的 IP Destination 及 TCP/UDP 中的 Port 號(hào)碼 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
將改變的封包送出去 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) 改變封包的 IP Header 中的 IP Destination 及 TCP/UDP 中的 Port 號(hào)碼 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 改變封包的 IP Header 中的 IP Source 為對(duì)外網(wǎng)卡的 IP iptables -t nat -A POSTROUTING -s inner_net -o outgoing_interface -j MASQUERADE
予許任何 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
簡(jiǎn)易防火牆設(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
ping3 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快滿時(shí), 要求送的機(jī)器不要這麼快送來
5 0-3 Redirect 當(dāng)一個(gè)網(wǎng)路上有兩個(gè)Router,兩個(gè)Router分開兩個(gè)不同的網(wǎng)路
11 0-1 TTL exceeded
traceroute12 0-1 Parameter Error 當(dāng)IP封包有錯(cuò)誤時(shí)
Reference: RFC 792
TTL(Time To Live): 最多可以經(jīng)過幾個(gè) Routers (之後該封包就無效了, Router收到就會(huì)不處理), IP 封包每經(jīng)過一個(gè) Router, TTL值就會(huì)被減去適當(dāng)?shù)闹?
/usr/sbin/tcpdump 收集網(wǎng)路封包 tcpdump -i interface 收集送到 interface 的網(wǎng)路封包
tcpdump -c#_packet 收集最多#_packet個(gè)封包
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 個(gè)在 eth0 上所有送到 192.168.8.1 的 port 68 及 port 69 的封包, 並以16進(jìn)制輸出 (觀察 192.168.8.1 上的 dhcpd 的運(yùn)作情況) # /usr/sbin/tcpdump -c100 -i eth0 host 192.168.8.1 and port 68 or port 69
nmap
ntop
五、SNMP
原理
SNMP的網(wǎng)管架構(gòu)基於三個(gè)主要的元件, 這些元件分別伴演不同的角色, 透過這些角色之間的資料傳遞, 就可以讓我們瞭解目前網(wǎng)路環(huán)境與狀態(tài)
資料來源 管理者(Manager) 進(jìn)行網(wǎng)路管理的程式, 管理者(Manager)透過SNMP向代理者(Agent)查詢所需要的資訊, 包括網(wǎng)路設(shè)備的運(yùn)作狀態(tài), 系統(tǒng)的配置情況等; 管理者在收到這些資料後, 就可以進(jìn)行統(tǒng)計(jì)及分析的處理, 再整理出圖表讓使用者瀏覽
管理者(Manager)除了主動(dòng)送出SNMP向代理者(Agent)查詢所需要資訊外, 亦可接收代理者(Agent)所發(fā)出的TRAP訊號(hào), 做為特殊狀況處理用
常見的工具程式有:
NET-SNMP, MRTG, NTOP 等
代理者(Agent) 在網(wǎng)路設(shè)備中預(yù)存在設(shè)備中的程式, 可以穫得本身設(shè)備的狀態(tài), 而這些資訊可以提供管理者(Manager)查詢所需;
代理者(Agent)所扮演的角色是管理者(Manager)與管理資料庫(kù)(MIB)間的傳訊角色, 負(fù)責(zé)由管理資料庫(kù)(MIB)中將資料回覆給管理者(Manager)
若是您裝了個(gè) Linux Box, 需要 SNMP Agent 的服務(wù), 您可以裝
NET-SNMPMIB(Management Information Base) 由許多不同資料所組成的虛擬資料庫(kù); 該虛擬資料庫(kù)的查詢方式是 KEY=VALUE 的特性, 也就是說一個(gè) KEY 會(huì)對(duì)應(yīng)一個(gè)值;
KEY 的規(guī)劃則是 MIB 的另一個(gè)重點(diǎn), KEY 是利用 SMI (Structure of Management Information), ANS.1 (Abstract Syntax Notation One) 及 BER (Basic Encoding Rule) 定義出來, 為一個(gè)樹狀的結(jié)構(gòu); 該樹狀結(jié)構(gòu)的葉子(lief)部份即為可供查詢的 OID(Object Identifies), 也就是前面所提的 KEY; 樹狀結(jié)構(gòu)中的支點(diǎn)(node), 稱為 SNMP Group
以下介紹幾個(gè)常用的 SNMP Group:
.1.3.6.1.2.1 (.iso.org.dod.internet.mgmt.mib-2) 這個(gè) SNMP Groups 定義了網(wǎng)路設(shè)備的基本狀態(tài), 其中包含了 10 個(gè) SNMP Groups (MIB I 定義了 8 個(gè), MIB II 中加了 2 個(gè)) system(1): 與系統(tǒng)相關(guān)的資訊
interfaces(2): 可送出/接收IP資料封包的網(wǎng)路介面卡數(shù)目
at(3): 網(wǎng)路位址與實(shí)際位址的轉(zhuǎn)換表
ip(4): IP路由與資料封包的統(tǒng)計(jì)
icmp(5): ICMP I/O 統(tǒng)計(jì)
tcp(6): TCP 連結(jié)參數(shù)和資料封包的統(tǒng)計(jì)
udp(7): UDP 傳輸統(tǒng)計(jì)及資料封包傳遞問題
egp(8): EGP 的傳輸設(shè)定與狀態(tài)
transmission: 傳輸媒體資料
snmp: 與 snmp 相關(guān)的物件
.1.3.6.1.4.1 (.iso.org.dod.internet.private.enterprise) 讓各個(gè)網(wǎng)路設(shè)備的廠商自行加入OID的SNMP Group, 以 Cisco 為例, 它在此建立了一個(gè) SNMP Group .1.3.6.1.4.1.9 (
參考資料),
NET-SNMP在此也建立了一個(gè) SNMP Group .1.3.6.1.4.1.2021
當(dāng)然, 要瞭解各廠商建立的 SNMP Group 及 OID, 最好的方法就是找設(shè)備廠商查詢, 以 Cisco 及 Juniper 為例, 您可以在他們的網(wǎng)頁(yè)上輸入設(shè)備型號(hào), OID, MIB 等關(guān)鍵字, 就能查詢到相關(guān)的資訊了
以下是 MIB 的參考資料
NET-SNMP (
www.net-snmp.org)
NET-SNMP 最早稱之為 UCD-SNMP, 是由 The University of California at Davis 發(fā)展出來的 SNMP 工具集, 其中包含了 SNMP 的三個(gè)主要元件 (Manager, Agent 及 MIB), 在 Debian 中您只需要下達(dá) apt-get install snmp snmpd 即可
# apt-get install snmp snmpd
以下介紹如何設(shè)定與使用 NET-SNMP
設(shè)定 NET-SNMP Agent 其實(shí) Debian 上安裝 net-snmp 後的預(yù)設(shè)設(shè)定已經(jīng)可以跑起一個(gè)能查詢 .1.3.6.1.2.1.1 的 SNMP Agent, 若您需要透過 SNMP 查詢進(jìn)一步的資料, 您只需要設(shè)定好 /etc/snmp/snmpd.conf 中的 ACL (Access Control List)即可, 以下的設(shè)定, 設(shè)定了三個(gè) ACL, 分別給與不同的權(quán)限:
在本機(jī)(localhost)上, 可透過 SNMP 讀寫 MIB 的 OID 值
在本機(jī)所管理的虛擬網(wǎng)路(192.168.1.0/24)中, 可透過 SNMP 查詢所有 MIB 中的 OID 值
其它則可透過 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
MRTG(
www.mrtg.org) MRTG會(huì)利用 SNMP 向網(wǎng)路設(shè)備或是主機(jī)系統(tǒng)查詢, 然後將回傳的資料製成統(tǒng)計(jì)圖表, 除此之外, 亦可配合相關(guān)程式的撰寫, 統(tǒng)計(jì)其它的系統(tǒng)資訊, 在此我們只討論透過 SNMP 取得資訊的部份
在 Debian 下安裝 MRTG, 只需要 apt-get install mrtg mrtg-contrib 即可
# apt-get install snmp snmpd
接著您可以透過 cfgmaker 及 indexmaker 這兩個(gè)工具來設(shè)定 MRTG, 以下介紹要透過 SNMP 向 192.168.1.50 上的無線網(wǎng)路基地臺(tái)查詢相關(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 將您想要觀察的項(xiàng)目的註解取消, 最後執(zhí)行 3 次 mrtg /etc/mrtg.cfg 就大工告成了
若是在您的 Linux Box 上裝了 net-snmp 的 SNMP Agent, 想利用 MRTG 透過 SNMP 查詢您電腦的狀況, www.mrtg.org 提供了數(shù)個(gè)
範(fàn)例六、NFS/NIS
RPC(Remote Procedure Call)
由於NIS與NFS乃是以RPC為基礎(chǔ)的網(wǎng)路服務(wù). 在正式進(jìn)行NIS和NFS兩項(xiàng)網(wǎng)路服務(wù)介紹之前,我們必須先介紹RPC的基本概念,
RPC是遠(yuǎn)端程序呼叫(RPC:Remote Procedure Calls)的縮寫, 是撰寫網(wǎng)路應(yīng)用程式常用的方法,我們需要 RPC 的原因,主要是因?yàn)槭褂?Socket撰寫網(wǎng)路應(yīng)用程式時(shí), 必須考慮通訊的所有細(xì)節(jié),例如資料型式和資料結(jié)構(gòu)的轉(zhuǎn)換,連線的管理等等. 試想如果我們能把這些細(xì)節(jié)簡(jiǎn)化,則程式設(shè)計(jì)者可以把時(shí)間轉(zhuǎn)移至更重要的應(yīng)用需求開發(fā).其架構(gòu)如下圖
RPC最早是由Sun提出的標(biāo)準(zhǔn),我們常聽到的DCOM和CORBA就是類似這種概念. 當(dāng)程式需要遠(yuǎn)端程序提供某種服務(wù)時(shí),RPC服務(wù)通常是呼叫Server上的某個(gè)程式幫我們處理一些資料, 處理完後再把處理結(jié)果送回給我們.
開啟 RPC 的服務(wù) (portmap) # /etc/init.d/portmap start
查詢目前有那些程式使用 RPC # rpcinfo -p localhost
NIS(Network Information Service)
因?yàn)?Linux 是個(gè)多人多工的環(huán)境, 所以帳號(hào)及群組的管理是非常重要的一個(gè)問題; 當(dāng)我們?cè)谪?fù)責(zé)管理一個(gè)網(wǎng)路環(huán)境時(shí),我們首先會(huì)遇到的一個(gè)困難就是—如何維護(hù)一份共通的資料,像是密碼檔,群組等. 這些在每臺(tái)主機(jī)上都存在,並且在我們所負(fù)責(zé)管理的網(wǎng)路環(huán)境中的每臺(tái)電腦應(yīng)該都是一樣的. 如此一來,我們的使用者便不需要擔(dān)心在哪一臺(tái)機(jī)器上他有帳號(hào)可以登入,哪臺(tái)機(jī)器他沒有帳號(hào)所以不能登入; 在這裡我們所謂的『維護(hù)一份共通的資料』是指只要在任何一臺(tái)我們的機(jī)器上所作的改變能夠被傳送到其他臺(tái)機(jī)器, 使得所有的機(jī)器上帳號(hào)的資訊都能夠一致. 例如,我們?nèi)粑覀兘裉煜胍略黾右晃皇褂谜叩膸ぬ?hào), 我們只要在一臺(tái)電腦上新增帳號(hào),就能讓這位使用者在每臺(tái)機(jī)器上都擁有帳號(hào)一般.
NIS是建構(gòu)在”主—從架構(gòu)”上, 由NIS server提供服務(wù)給NIS clients。 一般而言,NIS server 可以不只一臺(tái),這是為了怕萬一其中一臺(tái)出問題時(shí),還有其他臺(tái)可以接手,繼續(xù)提供服務(wù)給使用者。 所謂的 NIS server 是指一臺(tái)包含有 NIS data 和 maps 的主機(jī)。 而 client 則是向 NIS server 要求這些資料,當(dāng) NIS server 收到來自 client 端的請(qǐng)求時(shí), 會(huì)傳送資料給 NIS client。
NIS server中,又分為master server和slave server兩種。 NIS master server上所包含的資料,我們視為最具有”權(quán)威”的資料。 它們通常都會(huì)有備份,NIS slave server可視為它們的備份。 當(dāng)NIS master server上有資料被更新時(shí),它會(huì)將自己變更的資料PUSH到所有NIS slave server上。 NIS slave server並不會(huì)自己變更任何資料,變更資料的只有NIS master server。這樣一來,只要在NIS master server上變更資料,NIS slave server便會(huì)知道, 而所有的NIS client在請(qǐng)求資料時(shí),所拿到的就會(huì)是正確的資訊了。
NIS是利用認(rèn) NIS domain 的方式來管理屬於這個(gè) domain 這些機(jī)器、使用者、群組。但是,在這裡的這個(gè)domain和我們一般所提到的domain有一些出入。 這個(gè)NIS domain的名稱,是包含我們所負(fù)責(zé)的所有機(jī)器,並且這個(gè)NIS domain的名稱可以是任意的名稱。 NIS Domain涵蓋的範(fàn)圍,可以是任意IP的集合,並不侷限於Subnet或DNS Domain的限制.
啟動(dòng) 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è)定使用那臺(tái) NIS Server
NFS(Network File Service)
所謂的Network File System指的是指一個(gè)可以提供存取遠(yuǎn)方磁碟的檔案系統(tǒng)。 和Network Information Service (NIS)相比較可以發(fā)現(xiàn),NIS所提供的是集中管理我們網(wǎng)域中使用者和主機(jī)的資訊, 而Network File System (NFS)則是集中的管理磁碟。利用NFS可以使我們不必複製相同的檔案到每一臺(tái)主機(jī)上, 例如使用者的Mail Spool檔案,同時(shí)可能被使用者從Telnet Server進(jìn)入讀信或管理信件,同時(shí)亦可能被Mail Server增加新進(jìn)的信件,我們?yōu)榱艘共煌瑱C(jī)器上能夠?qū)n案做同步和集中管理的動(dòng)作, 因此必須使用NFS來達(dá)成這樣的目的。
對(duì)使用者而言,NFS提供了使用者存取遠(yuǎn)方的檔案但【不必】登入對(duì)方的主機(jī)。使用者在使用這些檔案時(shí)也無須把檔案拷貝至本地端的電腦。只要NFS被設(shè)定好,我們將能夠在本地端的電腦完成所有的工作,使用者將完全感覺不到有使用到遠(yuǎn)方的檔案系統(tǒng), 所有的檔案感覺都像是【本地端】的。
啟動(dò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 Establishing Passwordless SSH Login 在 VPN Client 及 VPN Server 上都建立一個(gè)使用者 sshvpn,
在 VPN Client 中產(chǎn)生 ssh key (ssh-keygen -t rsa|dsa -N ‘‘),
將 key 覆製到 VPN Server 的 sshvpn 家目錄下的 .ssh 中, 改名為 authorized_keys (or authorized_keys2)
Setup sudo Cmnd_Alias VPN=/usr/sbin/pppd
sshvpn ALL=NOPASSWD: VPN
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"
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