一、概論
- 參考資料: www.
- TCP/IP(DoD)模型
 資料來源
- 應(yīng)用層(Application Layer)
定義應(yīng)用程式如何提供服務(wù)
- 傳訊層(Host-to-Host Transport Layer)
負(fù)責(zé)傳輸過程中的流量控制, 錯誤處理, 資料重送等
- 網(wǎng)路層(Internet Layer)
決定資料如何傳送到目的地
- 連結(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)路遮罩(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~32: 32 個 bit 中要用幾個 bit 來代表網(wǎng)路號碼
- 如同 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]
- 顯示 domain 名稱
語法: /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
- 使用 RedHat 提供的網(wǎng)路設(shè)定工具: netcfg, linuxconfig
- 編輯兩個設(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
- 可以到這裡下載 netcardconfig, 這個工具是 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)
- 隨地點改變的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]
- dhclient
語法: dhclient [interface]
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
|
- 隨地點改變的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: 啟動或停止網(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
|
- /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
- /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
|
- iptraf: Interactive Colorful IP LAN Monitor
# apt-get install iptraf # /usr/sbin/iptraf |
- /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
|
- /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
|
- /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.
|
其他參考資料
- 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 |
- 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 |
|
- 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 |
|
|
- 封包進(jìn)入規(guī)則表及規(guī)則流程圖
- Example:
- 拒絕送到 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 |
- 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 號碼
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 號碼
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 為對外網(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
|
簡易防火牆設(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ù)闹?
|
- /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 |
- nmap
- ntop
五、SNMP
- 原理
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 的參考資料
- 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)限:
- 在本機(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會利用 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
- 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
- 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)
- 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 |
|