Linux網路基礎(轉)

ba發表於2007-08-17
Linux網路基礎(轉)[@more@]1. 宣告

2. 網路相關配置檔案介紹

2.1 /etc/hosts


包含(本地網路中)已知主機的一個列表。如果系統的 IP 不是動態獲取,就可以使用它。對於簡單的主機名解析(點分表示法),在請求 DNS 或 NIS 網路名稱伺服器之前,/etc/hosts.conf 通常會告訴解析程式先檢視這裡。

檔案格式:
ip地址 主機名 別名

$ cat /etc/hosts

127.0.0.1 localhost.localdomain localhost

2.2 /etc/services

Internet網路服務檔案,將網路服務名轉換為埠號/協議。由 inetd、telnet、tcpdump 和一些其它程式讀取。檔案中的每一行對應一種服務,它由4個欄位組成,中間用TAB或空格分隔,分別表示“服務名稱”、“使用埠”、“協議名稱”以及“別名”。

檔案格式:
服務 埠/埠型別 別名

$ cat /etc/services |more

tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol

2.3 /etc/hostname

主機名配置檔案,該檔案只有一行,記錄著本機的主機名。

檔案格式:

主機名
$ cat /etc/hostname
tonybox

2.4 /etc/host.conf

當系統中同時存在DNS域名解析和/etc/hosts主機表機制時,由該/etc/host.conf確定主機名解釋順序。示例:

order hosts,bind #名稱解釋順序
multi on #允許主機擁有多個IP地址
nospoof on #禁止IP地址欺騙

order是關鍵字,定義先用本機hosts主機表進行名稱解釋,如果不能解釋,再搜尋bind名稱伺服器(DNS)。

2.5 /etc/nsswitch.conf

名稱服務交換設定檔。它控制了資料庫搜尋的工作,包括承認的 主機,使用者,群組等。此外,這個檔案還定義了所要搜尋的 資料庫,例如此行:

hosts: files dns

指明主機資料庫來自兩個地方,files ( /etc/hosts file) 和 DNS, 並且本機上檔案優先於 DNS。

$ cat /etc/nsswitch.conf

passwd: compat
group: compat
shadow: compat

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

2.6 /etc/resolv.conf

該檔案是DNS域名解析的配置檔案,它的格式很簡單,每行以一個關鍵字開頭,後接配置引數。resolv.conf的關鍵字主要有四個,分別是:

nameserver #定義DNS伺服器的IP地址
domain #定義本地域名
search #定義域名的搜尋列表
sortlist #對返回的域名進行排序

下邊是一個示例:

#cat /etc/resolv.conf
domain mydebian.com
nameserver 192.168.1.1 //最多三個域名伺服器地址

2.7 /etc/network/interfaces

網路介面引數配置檔案, 下面是一個配置示例, 有兩個網路介面, 其中eth0 分配靜態IP地址, eth1動態獲取IP地址 :

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.254
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1

auto eth1
iface eth1 inet dhcp

如果對此檔案進行修改, 需要重啟網路方能生效:

# /etc/init.d/networking restart

3. 基本的網路配置命令和指令碼

3.1 etherconf


Debian 下提供一個名叫 etherconf軟體包, 用於配置網路資訊,這包括主機名,IP,DHCP,DNS,GATEWAY,NETMASK...等, 預設沒有安裝這一軟體包, 需要您手動安裝:

# aptitude install etherconf

安裝完畢後執行:

$dpkg-reconfigure etherconf

進行配置.

這個軟體會修改以下配置檔案:

/etc/resolv.conf
/etc/network/interfaces
/etc/hosts
/etc/hostname

重複使用這一配置檔案的方法是:

# dpkg-reconfigure etherconf

3.2 /etc/init.d/networking

系統啟動時的初始化指令碼, 當系統以某個級別啟動時, 它負責初始化所有的已配置的網路介面.

3.3 ifconfig

用於配置常駐核心的網路介面。它用於在引導成功時設定網路介面。此後,只在需要除錯及系統調整時才使用。

命令格式:
ifconfig [介面]
ifconfig 介面 [aftype] options | address ...

如沒有給出引數, ifconfig 顯示當前有效介面的狀態。如給定單個 介面 作為引數,它只顯示給出的那個介面的狀態;如果給出一個 -a 引數,它會顯示所有介面的狀態,包括那些停用的介面。否則就對一個介面進行配置。

選項
介面 介面名稱。通常是一個後跟單元號的驅動裝置名,例如第一個以太介面 eth0 。

up
此選項啟用介面。如果給介面宣告瞭地址,等於隱含宣告瞭這個選項。
down
此選項使介面驅動裝置關閉。

netmask addr
為介面設定 IP 網路掩碼。預設值通常是 A,B 或 C 類的網路掩碼 (由介面的 IP 地址推出),但也可設為其它值。
add addr/prefixlen
為介面加入一個 IPv6 地址。
del addr/prefixlen
為介面刪除一個 IPv6 地址。
hw class address
如介面驅動程式支援,則設定介面的硬體地址。此選項必須後跟硬體的型別名稱和硬體地址等價的可列印 ASCII 字元。當前支援的硬體型別包括 ether (乙太網), ax25 (AMPR AX.25), ARCnet 和 netrom (AMPR NET/ROM)

  利用ifconfig命令檢視網路資訊:

ifconfig
eth0 Link encap:Ethernet HWaddr 00:15:58:3E:F2:6B
inet addr:192.168.1.254 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::215:58ff:fe3e:f26b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:29458 errors:0 dropped:0 overruns:0 frame:0
TX packets:23690 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10945195 (10.4 MiB) TX bytes:2935004 (2.7 MiB)
Interrupt:169 Base address:0xe200

eth0:0 Link encap:Ethernet HWaddr 00:15:58:3E:F2:6B
inet addr:192.168.1.244 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:169 Base address:0xe200

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:354 errors:0 dropped:0 overruns:0 frame:0
TX packets:354 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:45062 (44.0 KiB) TX bytes:45062 (44.0 KiB)

ppp0 Link encap:Point-to-Point Protocol
inet addr:18.18.18.13 P-t-P:18.18.18.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
RX packets:9631 errors:0 dropped:0 overruns:0 frame:0
TX packets:9189 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:8460352 (8.0 MiB) TX bytes:913898 (892.4 KiB)

ifconfig的第一種格式(或使用不帶任何引數的ifconfig命令)可以用來檢視當前系統的網路配置情況。

* eth0 : 表示網路卡代號
* lo :Linux內部的網路迴環地址, 用於模擬網路行為,
* HWaddr :網路卡的硬體地址,也就是MAC地址
* inet addr :網路卡的ip地址
* Bcast :廣播地址( broadcast ) ;
* Mask :子網掩碼;
* MTU :最大傳輸單元的縮寫(Maximum Trasmission Unit), 標示此網路介面的可傳輸的最大封包, 此值的設定錯誤可能引起網路故障.
* RX :網路從起動到現在為止資料的接收情況
* TX :網路從起動到現在為止資料的傳送情況
* collisions :網路訊號發生衝突的情況;

啟用網路裝置

ifconfig eth0 up

更改網路裝置資訊

#ifconfig eth0 192.168.1.112 netmask 255.255.255.0

關閉網路裝置

ifconfig eth0 down

修改網路卡的MAC地址

ifconfig eth0 down
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
ifconfig eth0 up

4. 網路服務相關

5. 測試網路

5.1 ping


向網路主機傳送ICMP回顯請求(ECHO_REQUEST)分組 程式使用 ICMP 協議的強制回顯請求資料包以使主機或閘道器傳送一份 ICMP 的回顯應答。回顯請求資料包(`` pings IP 及 ICMP 的報頭,後跟一個``時間值關鍵字'然後是一段任意長度的填充位元組用於把保持分組長度為16的整數倍。以下是程式的選項:

ping [-c count ] [-i wait ] [-p pattern ] [-s packetsize ] [ -t ttl] destination

-c
count 在傳送(和接收)了正好數量為 count 的回顯應答分組後停止操作。
-i
wait 在傳送每個分組時等待 wait 個秒數。預設值為每個分組等待一秒。此選項與-f選項不能同時使用。

-p
pattern 可以指定最多16個填充位元組用於保持分組長度為16的整數倍。在網路上診斷與資料相關問題時此選項很有用。例如``-p ff'將使發出的分組都用全1填充資料區。

-s
packetsize 指定要傳送資料的位元組量。預設值為 56 ,這正好在新增了 8 位元組的 ICMP 首部後組裝成 64 位元組的 ICMP 資料包。

-t

ttl指存活數值TTL的大小預設為255

tony@tonybox:~$ ping -c 4
PING (218.61.34.138) 56(84) bytes of data.
64 bytes from 218.61.34.138: icmp_seq=1 ttl=52 time=103 ms
64 bytes from 218.61.34.138: icmp_seq=2 ttl=52 time=125 ms
64 bytes from 218.61.34.138: icmp_seq=3 ttl=52 time=126 ms
64 bytes from 218.61.34.138: icmp_seq=4 ttl=52 time=110 ms

--- ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 103.513/116.329/126.598/9.856 ms
tony@tonybox:~$

5.2 route

Route route 程式對核心的 IP 路由表進行操作。它主要用於給那些已經用 ifconfig(8) 程式配置過的介面指定主機或網路設定靜態路由。

當使用了 add 或 del 選項的時候, route 修改路由表.如果沒有這些選項, route 顯示當前路由表的內容.

# route [-nee]
# route add [-net|-host] 目標主機或網路 [netmask] [gw|dev]
# route del [-net|-host] 目標主機或網路 [netmask] [gw|dev]

-n   :數字地址形式代替解釋主機名形式來顯示地址。此項對檢測為何你到域名伺服器的路由發生故障的原因非常有用。
-ee   :將產生包括選路表所有引數在內的大量資訊
add   :新增一條路由
del   :刪除一條路由
-net  :路由目標 target 為網路。
-host  :路由目標 target 為主機。
netmask :為新增的路由指定網路掩碼!
gw    :透過一個閘道器進行包路由.

注意:

指定的閘道器首先必須是可達的。也就是說必須為該閘道器預先指定一條靜態路由。如果你為本地介面之一指定這個閘道器地址的話,那麼此閘道器地址將用於決定此介面上的分組將如何進行路由。這是相容 BSD 風格。 dev   :強制路由與指定的裝置關聯,否則核心自己會試圖檢測相應的裝置 (方法是檢查要增加的路由項所處環境中已存在的路由和裝置宣告)。在多數正常的網路上無需使用。

# route 檢視本地路由資訊
tonybox:/etc/network/run# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
18.18.18.1 * 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
default * 0.0.0.0 U 0 0 0 ppp0

route add -net 127.0.0.0
加一條普通的迴環記錄,它使用掩碼 255.0.0.0 (從目標地址可以判斷它是 A 類網)並與裝置 "lo" 相關聯 .

route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
給透過 "eth0" 的路由表新增一條指向網路 192.56.76.x 的路由。其中 C 類子網掩碼修飾詞並不是必須的,因為 192.* 是個 C 類的 IP 地址。這裡可省略關鍵字 "dev"。

route add default gw 192.168.1.1
加入一條預設路由(如果無法匹配其它路由則用它)。使用此路由的所有包都將透過閘道器 192.168.1.1進行傳輸。

route add 224.0.0.0 netmask 240.0.0.0 dev eth0
這是一條模糊的命令,把它記錄在案就可以讓人們知道如何做了.此命令設定所有 D 類地址(用於組播)的路由透過 "eth0" 進行。這是用於帶組播的核心正確的配置行。

5.3 traceroute

traceroute [ -dFIlnrvx ] [ -f first_ttl ] [ -g gateway ]
[ -i iface ] [ -m max_ttl ] [ -p port ]
[ -q nqueries ] [ -s src_addr ] [ -t tos ]
[ -w waittime ] [ -z pausemsecs ]
host [ packetlen ]

透過Traceroute我們可以知道資訊從你的計算機到網際網路另一端的主機是走的什麼路徑。當然每次資料包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。UNIX系統中,我們稱之為 Traceroute,MS Windows中為Tracert。 Traceroute透過傳送小的資料包到目的裝置直到其返回,來測量其需要多長時間。一條路徑上的每個裝置Traceroute要測3次。輸出結果中包括每次測試的時間(ms)和裝置的名稱(如有的話)及其IP地址。

-d
指定不對計算機名解析地址。
-h maximum_hops
指定查詢目標的跳轉的最大數目。
-jcomputer-list
指定在 computer-list 中鬆散源路由。
-w timeout
等待由 timeout 對每個應答指定的毫秒數。
host
目標計算機的名稱。

# traceroute
traceroute to (218.61.34.138), 30 hops max, 40 byte packets

6. 配置ADSL上網

首先,你要擁有上網帳號和密碼, 並且有一塊網路卡正確的與ADSL moden正確相連

6.1 安裝PPPoE軟體包

$ sudo install pppoe pppoeconf

6.2 然後進行配置

確認檢測到了您的網路卡
輸入您的ADSL帳號
輸入您的ADSL帳號密碼
常規選項:是否修改預設路由: yes
是否獲取DNS: yes
是否在引導時自動連線: yes
是否馬上建立連線: yes

完成這些步驟以後, 連線應該可以正常使用了

6.3 手動控制

$ sudo pon dsl-provider #手動連線
$ sudo poff dsl-provider #手動斷開連線

6.4 FAQ

Q:撥號成功, 但無法和外網通訊

A:使用route命令檢查本地路由, 看預設路由是否正確

Q:無法解析域名

A:檢查/etc/resolv.conf檔案,看是否正確獲取了DNS

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-963529/,如需轉載,請註明出處,否則將追究法律責任。

相關文章