1. 網絡相關配置文件介紹
1.1 /etc/hosts
包含(本地網絡中)已知主機的一個列表。如果系統的 IP 不是動態獲取,就可以使用它。對于簡單的主機名解析(點分表示法),在請求 DNS 或 NIS 網絡名稱服務器之前,/etc/host.conf 通常會告訴解析程序先查看這里。
文件格式:
ip地址 主機名 別名
$ cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
1.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
1.3 /etc/hostname
主機名配置文件,該文件只有一行,記錄著本機的主機名。
文件格式:
主機名
$ cat /etc/hostname
tonybox
1.4 /etc/host.conf
當系統中同時存在DNS域名解析和/etc/hosts主機表機制時,由該/etc/host.conf確定主機名解釋順序。示例:
order hosts,bind #名稱解釋順序
multi on #允許主機擁有多個IP地址
nospoof on #禁止IP地址欺騙
order是關鍵字,定義先用本機hosts主機表進行名稱解釋,如果不能解釋,再搜索bind名稱服務器(DNS)。
1.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
1.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 //最多三個域名服務器地址
1.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
2. 基本的網絡配置命令和腳本
2.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
2.2 /etc/init.d/networking
系統啟動時的初始化腳本, 當系統以某個級別啟動時, 它負責初始化所有的已配置的網絡接口.
2.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
3. 網絡服務相關
4. 測試網絡
4.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 www.linuxsir.org -c 4
PING www.linuxsir.org (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
--- www.linuxsir.org 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:~$
4.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" 進行。這是用于帶組播的內核正確的配置行。
4.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 www.linuxsir.org
traceroute to www.linuxsir.org (218.61.34.138), 30 hops max, 40 byte packets
5. 配置ADSL上網
首先,你要擁有上網帳號和密碼, 并且有一塊網卡正確的與ADSL moden正確相連
5.1 安裝PPPoE軟件包
$ apt-get install pppoe pppoeconf
5.2 然后進行配置
確認檢測到了您的網卡
輸入您的ADSL帳號
輸入您的ADSL帳號密碼
常規選項:是否修改默認路由: yes
是否獲取DNS: yes
是否在引導時自動連接: yes
是否馬上建立連接: yes
完成這些步驟以后, 連接應該可以正常使用了
5.3 手動控制
$ pon dsl-provider #手動連接
$ poff dsl-provider #手動斷開連接
5.4 FAQ
Q:撥號成功, 但無法和外網通訊
A:使用route命令檢查本地路由, 看默認路由是否正確
Q:無法解析域名
A:檢查/etc/resolv.conf文件,看是否正確獲取了DNS