這三個命令的用途都是啟動網絡接口,不過,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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
一般來說,直接輸入 ifconfig 就會列出目前已經被啟動的卡,不論這個卡是否有設置 IP,都會被顯示出來。而如果是輸入 ifconfig eth0
,則會顯示出這個接口的相關數據,而不管該接口是否啟動。所以,如果你想要知道某個網卡的 Hardware Address,直接輸入“ifconfig "網絡接口代號"
”即可。至於上述代碼中出現的各項數據是這樣的(數據排列由上而下、由左而右)。
- eth0:網卡的代號,也有 lo 這個 loopback。
- HWaddr:網卡的硬件地址,習慣稱為 MAC。
- inet addr:IPv4 的 IP 地址,后續的 Bcase、Mask 分別代表的是 Broadcast 與 Netmask。
- inet6 addr:是 IPv6 的版本的 IP,我們沒有使用,所以略過。
- 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 的設置為主
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
使用 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
- 1
- 2
- 3
- 4
- 5
ifup 與 ifdown 真是太簡單了。這兩個程序其實是 script 而已,它會直接到 /etc/ sysconfig/network-scripts 目錄下搜索對應的配置文件,例如 ifup eth0
,它會找出 ifcfg-eth0 這個文件的內容,然后加以設置。關於 ifcfg-eth0 的設置請參考下面的說明。
不過,由於這兩個程序主要是搜索設置文件(ifcfg-ethx)來進行啟動與關閉的,所以在使用前請確定 ifcfg-ethx 是否真的存在於正確的目錄內,否則會啟動失敗。另外,如果以 ifconfig eth0
來設置或者是修改了網絡接口后,就無法再以 ifdown eth0
的方式來關閉了。因為 ifdown 會分析比較目前的網絡參數與 ifcfg-eth0 是否相符,不符的話,就會放棄這次操作。因此,使用 ifconfig 修改完畢后,應該要以 ifconfig eth0 down
才能夠關閉該接口。
三、配置 ifcfg-eth0
網絡接口配置文件 ifcfg-eth0 在 /etc/sysconfig/network-script 在這個目錄下面,存放的是網絡接口(網卡)的腳本文件(控制文件),ifcfg-eth0 是默認的第一個網絡接口,如果機器中有多網絡接口,那么名字就將依此類推 ifcfg-eth1、ifcfg-eth2、ifcfg-eth3 ……
配置項目說明(形式:設定項=值):
- DEVICE 接口名(設備,網卡)
- USERCTL [yes|no](非root用戶是否可以控制該設備)
- BOOTPROTO IP 的配置方法 [none|static|bootp|dhcp](引導時不使用協議|靜態分配IP|BOOTP協議|DHCP協議)
- HWADDR MAC地址
- ONBOOT 系統啟動的時候網絡接口是否有效(yes/no)
- TYPE 網絡類型(通常是Ethemet)
- NETMASK 網絡掩碼
- IPADDR IP地址
- IPV6INIT IPV6是否有效(yes/no)
- GATEWAY 默認網關IP地址
- BROADCAST 廣播地址
-
NETWORK 網絡地址
例如,可以設置成這樣:
DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 HWADDR=00:0C:2x:6x:0x:xx IPADDR=192.168.1.23 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes TYPE=Ethernet