转自
http://blogold.chinaunix.net/u/28949/showart_251891.html
這三個指令的用途都是在啟動網路介面,不過, ifup 與 ifdown 僅能就 /etc/sysconfig/network-scripts 內的 ifcfg-ethx (x 為數字) 進行啟動或關閉的動作,並不能直接修改網路參數,除非手動調整 ifcfg-ethx 檔案才行。至於 ifconfig 則可以直接手動給予某個介面 IP 或調整其網路參數! 底下我們就分別來談一談先!
ifconfig
ifconfig 主要是可以手動的啟動、觀察與修改網路介面的相關參數,可以修改的參數很多啊, 包括 IP 參數以及 MTU 等等都可以修改,他的語法如下:
[root@linux ~]# ifconfig {interface} {up|down} <== 觀察與啟動介面
[root@linux ~]# ifconfig interface {options} <== 設定與修改介面
參數:
interface:網路卡介面代號,包括 eth0, eth1, ppp0 等等
options :可以接的參數,包括如下:
up, down :啟動 (up) 或關閉 (down) 該網路介面(不涉及任何參數)
mtu :可以設定不同的 MTU 數值,例如 mtu 1500 (單位為 byte)
netmask :就是子遮罩網路;
broadcast:就是廣播位址啊!
範例:
範例一:觀察所有的網路介面(直接輸入 ifconfig)
[root@linux ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0F:EA:A3:06:A2
inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::20f:eaff:fe73:682/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3439 errors:0 dropped:0 overruns:0 frame:0
TX packets:2735 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:646935 (631.7 KiB) TX bytes:562313 (549.1 KiB)
Interrupt:209 Memory:fb000000-0
一般來說,直接輸入 ifconfig 就會列出目前已經被啟動的卡, 不論這個卡是否有給予 IP ,都會被顯示出來。而如果是輸入 ifconfig eth0 , 則會秀出這張介面的相關資料,而不管該介面是否有啟動。所以如果您想要知道某張網路卡的 Hardware Address,直接輸入『 ifconfig "網路介面代號" 』即可喔! ^_^! 至於上表出現的各項資料是這樣的(資料排列由上而下、由左而右):
eth0:就是網路卡的代號,也有 lo 這個 loopback ;
HWaddr:就是網路卡的硬體位址,俗稱的 MAC 是也;
inet addr:IPv4 的 IP 位址,後續的 Bcase, Mask 分別代表的是 Broadcast 與 netmask 喔!
inet6 addr:是 IPv6 的版本的 IP ,我們沒有使用,所以略過;
MTU:就是 MTU 啊!
RX:那一行代表的是網路由啟動到目前為止的封包接收情況, packets 代表封包數、errors 代表封包發生錯誤的數量、 dropped 代表封包由於有問題而遭丟棄的數量等等
TX:與 RX 相反,為網路由啟動到目前為止的傳送情況;
collisions:代表封包碰撞的情況,如果發生太多次, 表示您的網路狀況不太好;
txqueuelen:代表用來傳輸資料的緩衝區的儲存長度;
RX bytes, TX bytes:總傳送、接收的位元組總量
Interrupt, Memory:網路卡硬體的資料, IRQ 岔斷與記憶體位址;
透過觀察上述的資料,大致上可以瞭解到您的網路情況,尤其是那個 RX, TX 內的 error 數量, 以及是否發生嚴重的 collision 情況,都是需要注意的喔! ^_^
範例二:暫時修改網路介面
[root@linux ~]# ifconfig eth0 192.168.100.100
# 如果不加任何其他參數,則系統會依照該 IP 所在的 class 範圍,
# 自動的計算出 netmask 以及 network, broadcast 等 IP 參數;
[root@linux ~]# ifconfig eth0 192.168.100.100 netmask 255.255.255.128 \
> mtu 8000
# 設定網路介面,同時設定 MTU 的數值!
[root@linux ~]# ifconfig eth0 mtu 9000
# 僅修改該介面的 MTU 數值,其他的保持不動!
[root@linux ~]# ifconfig eth0:0 192.168.50.50
# 仔細看那個介面, eth0:0 喔!那就是在該網路介面上,再模擬一個網路介面,
# 亦即是在一張網路卡上面設定多個 IP 的意思啦!
[root@linux ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0F:EA:A3:06:A2
inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3669 errors:0 dropped:0 overruns:0 frame:0
TX packets:2892 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:667547 (651.9 KiB) TX bytes:584799 (571.0 KiB)
Interrupt:209 Memory:fb000000-0
eth0:0 Link encap:Ethernet HWaddr 00:0F:EA:A3:06:A2
inet addr:192.168.200.2 Bcast:192.168.200.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:209 Memory:fb000000-0
# 仔細看,是否與硬體有關的資訊都相同啊!沒錯!因為是同一張網卡嘛!
[root@linux ~]# ifconfig eth0:0 down
# 關掉 eth0:0 這個介面。如果想要啟動 eth1 ,並且不給予任何網路參數,
# ifconfig eth1 up 就可以達到了!
[root@linux ~]# /etc/init.d/network restart
# 剛剛設定的資料全部失效,會以 ifcfg-ethx 的設定為主!
呵呵!使用 ifconfig 可以暫時手動來設定或修改某個介面卡的相關功能, 並且也可以透過 eth0:0 這種虛擬的網路介面來設定好一張網路卡上面的多個 IP 喔! 手動的方式真是簡單啊!並且設定錯誤也不打緊,因為我們可以利用 /etc/init.d/network restart 來重新啟動整個網路介面,那麼之前手動的設定資料會全部都失效喔!另外, 要啟動某個網路介面,但又不讓他具有 IP 參數時,直接給他 ifconfig eth0 up 即可! 這個動作經常在無線網卡當中會進行, 因為我們必須要啟動無線網卡讓他去偵測 AP 存在與否啊!
ifup, ifdown
即時的手動修改一些網路介面參數,可以利用 ifconfig 來達成,如果是要直接以設定檔, 亦即是在 /etc/sysconfig/network-scripts 裡面的 ifcfg-ethx 等檔案的設定參數來啟動的話, 那就得要透過 ifdown 或 ifup 來達成了。
[root@linux ~]# ifup {interface}
[root@linux ~]# ifdown {interface}
[root@linux ~]# ifup eth0
ifup 與 ifdown 真是太簡單了!這兩支程式其實是 script 而已,他會直接到 /etc/sysconfig/network-scripts 目錄下搜尋對應的設定檔,例如 ifup eth0 時,他會找出 ifcfg-eth0 這個檔案的內容,然後來加以設定。 關於 ifcfg-eth0 的設定則請參考前一章連上 Internet 的說明。
不過,由於這兩支程式主要是搜尋設定檔 (ifcfg-ethx) 來進行啟動與關閉的, 所以在使用前請確定 ifcfg-ethx 是否真的存在於正確的目錄內,否則會啟動失敗喔! 另外,如果以 ifconfig eth0 .... 來設定或者是修改了網路介面後, 那就無法再以 ifdown eth0 的方式來關閉了!因為 ifdown 會分析比對目前的網路參數與 ifcfg-eth0 是否相符,不符的話,就會放棄該次動作。因此,使用 ifconfig 修改完畢後,應該要以 ifconfig eth0 down 才能夠關閉該介面喔!