複製鏈接
請複製以下鏈接發送給好友

ifconfig

鎖定
ifconfig是linux中用於顯示或配置網絡設備(網絡接口卡)的命令,英文全稱是network interfaces configuring。配置網卡IP地址語法例:ifconfig eth0 192.168.0.1 netmask 255.255.255.0
中文名
網絡接口配置
外文名
ifconfig
全    稱
network interfaces configuring
來    源
Linux命令
用    途
顯示或配置網絡設備

ifconfig系統命令

Linux命令:ifconfig

ifconfig語法

ifconfig [網絡設備][down up -allmulti -arp -promisc][add<地址>][del<地址>][<硬件地址>] [media<網絡媒介類型>][mem_start<內存地址>][metric<數目>][mtu<字節>][netmask<子網掩碼>][tunnel<地址>][-broadcast<地址>] [-pointopoint<地址>]

ifconfig補充説明

補充説明:ifconfig可設置網絡設備的狀態,或是顯示當前的設置。

ifconfig參數

參 數
[網絡設備] 網絡設備的名稱。
down 關閉指定的網絡設備。
up 啓動指定的網絡設備。
-arp 打開或關閉指定接口上使用的ARP協議。前面加上一個負號用於關閉該選項。
-allmuti 關閉或啓動指定接口的無區別模式。前面加上一個負號用於關閉該選項。
-promisc 關閉或啓動指定網絡設備的promiscuous模式。前面加上一個負號用於關閉該選項。
add<地址> 設置網絡設備IPv6的IP地址。
del<地址> 刪除網絡設備IPv6的IP地址。
media<網絡媒介類型> 設置網絡設備的媒介類型。
mem_start<內存地址> 設置網絡設備在主內存所佔用的起始地址。
metric<數目> 指定在計算數據包的轉送次數時,所要加上的數目。
mtu<字節> 設置網絡設備的MTU。
netmask<子網掩碼> 設置網絡設備的子網掩碼。
tunnel<地址> 建立IPv4與IPv6之間的隧道通信地址。
-broadcast<地址> 將要送往指定地址的數據包當成廣播數據包來處理。
-pointopoint<地址> 與指定地址的網絡設備建立直接連線,此模式具有保密功能

ifconfig網卡命令

無論是Linux 自動安裝還是我們手工安裝,Linux 都會向你詢問有關網絡的問題並配置相關的軟件。這個用於配置網卡的基本命令就是ifconfig。
在執行ifconfig 命令後,系統將在內核表中設置必要的參數,這樣Linux 就知道如何與網絡上的網卡通信。ifconfig 命令有以下兩種格式:
※ifconfig [interface]
※ifconfig interface [aftype] option | address …
ifconfig 的第一種格式(或使用不帶任何參數的ifconfig 命令)可以用來查看當前系統的網絡配置情況。
在剛剛安裝完系統之後,實際上是在沒有網卡或者網絡連接的情況下使用Linux,但通過ifconfig 可以使用迴繞方式工作,使計算機認為自己工作在網絡上。
下面我們運行一下ifconfig 命令,不帶參數的ifconfig 命令可以顯示當前啓動的網絡接口,其輸出結果為:
[root@machine1 /sbin]#ifconfig
eth0 Link encap:Ethernet HWaddr 52:54:AB:DD:6F:61
inet addr:210.34.6.89 Bcast:210.34.6.127 Mask:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:46299 errors:0 dropped:0 overruns:0 frame:189
TX packets:3057 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xece0
lo Link encap:Local Loopback
inet addr:127.0.0.1Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
其中以eth0 為首的部分是本機的以太網卡配置參數,這裏顯示了網卡的設備名/dev/eth0 和硬件的MAC 地址52:54:AB:DD:6F:61,MAC 地址是生產廠家定的,每個網卡擁有的一個地址。
不過我們可以手工改動網卡的MAC 地址,只要我們在/etc/rc.d/init.d/中的network 中加入:
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
Jiania 解説注:
eth0,eth1,eth2,代表網卡一,網卡二,網卡三
hw 代表hardware 硬件意思
ether 代表ethernet以太網的意思
然後重啓,此時再用ifconfig 命令查看一下,我們就會發現網卡的MAC 地址已經變成xx:xx:xx:xx:xx:xx了。

ifconfig配置網卡

配置網卡的IP地址
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
在eth0上配置上192.168.0.1 的IP地址及24位掩碼。若想再在eth0上在配置一個192.168.1.1/24 的IP地址用下面的命令:
ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0
這時再用ifconifg命令查看,就可以看到兩個網卡的信息了,分別為:eth0和eth0:0。若還想再增加IP,那網卡的命名就接着是:eth0:1、eth0:2……想要幾個就填幾個。
配置網卡的硬件地址
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx就將網卡的硬件地址更改了,此時你就可以騙過局域網內的IP地址綁定了。
將網卡禁用
ifconfig eth0 down
將網卡啓用
ifconfig eth0 up
ifconfig 命令的功能很強大,還可以設置網卡的MTU,混雜模式等。

ifconfig源碼分析

int main(int argc, char **argv)
{
……
argc--;
argv++;
/*首先判斷以 - 開頭的各種參數,如-a,-s等等*/
while (argc && *argv[0] == '-') {
……
}
打開內核支持的所有協議的套接字,主要是一個循環調用socket的過程
if ((skfd = sockets_open(0)) < 0) {
perror("socket");
exit(1);
}
/*可能是顯示全部網卡的信息,或者是顯示單一指定的網卡*/
if (argc == 0) {
int err = if_print((char *) NULL);
(void) close(skfd);
exit(err < 0);
}
/* No. Fetch the interface name. */
spp = argv;
safe_strncpy(ifr.ifr_name, *spp++, IFNAMSIZ);
if (*spp == (char *) NULL) {
int err = if_print(ifr.ifr_name);
(void) close(skfd);
exit(err < 0);
}
/*接着判斷下一個參數,有可能是協議簇名,或者是一個選項,如果是一個選項,則協議簇默認為ipv4*/
if ((ap = get_aftype(*spp)) != NULL)
spp++; /* it was a AF name */
else
ap = get_aftype(DFLT_AF);
if (ap) {
addr_family = ap->af;
skfd = ap->fd;
}
/*做一個循環,處理餘下的參數,有兩種情況
1、如果是開關參數,則調用set_flag或clr_flag函數處理
2、如果是功能參數,直接調用ioctl 處理之*/
while (*spp != (char *) NULL) {
}
/*餘下的主要是添加IP地址及餘下的下理,IP地址的添加先利用switch判斷協議簇,然後調用ioctl 處理之……*/
switch (ap->af) {
……
r = ioctl(fd, SIOCSIFADDR, &ifr);
……
}