當前位置:首頁 » 操作系統 » linux網卡混雜模式

linux網卡混雜模式

發布時間: 2024-02-26 14:00:40

1. 怎樣網卡設置混雜模式

有時候為嗅探到網路上的數據,需要將網卡設置到混雜襪辯模式。進入該模式將網路上的數據一並抓獲,為此在告爛缺歷者設置nic的混雜模式的時候有諸多方法:
一、通過shell命令來實現:
ifconfig eth1 promisc 設置混雜模式
ifconfig eth1 -promisc 取消混雜模式
執行結果如下
[root@localhost tftpboot]# ifconfig
eth6 Link encap:Ethernet HWaddr 08:00:27:70:1D:79
inet6 addr: fe80::a00:27ff:fe70:1d79/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:100124 errors:0 dropped:0 overruns:0 frame:0
TX packets:8795 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12986638 (12.3 MiB) TX bytes:6452270 (6.1 MiB)
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:1303 errors:0 dropped:0 overruns:0 frame:0
TX packets:1303 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:303973 (296.8 KiB) TX bytes:303973 (296.8 KiB)
[root@localhost tftpboot]# ifconfig eth6 promisc
[root@localhost tftpboot]# ifconfig
eth6 Link encap:Ethernet HWaddr 08:00:27:70:1D:79
inet6 addr: fe80::a00:27ff:fe70:1d79/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:100154 errors:0 dropped:0 overruns:0 frame:0
TX packets:8795 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13007885 (12.4 MiB) TX bytes:6452270 (6.1 MiB)
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:1303 errors:0 dropped:0 overruns:0 frame:0
TX packets:1303 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:303973 (296.8 KiB) TX bytes:303973 (296.8 KiB)
[root@localhost tftpboot]#
二、通過C語言方式編程來實現
#include <stdio.h>

#include <unistd.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <errno.h>

#include <linux/if_ether.h>

#include <net/if.h>

#include <sys/ioctl.h>

#include <string.h>

#define ETH_NAME "eth1"

int do_promisc(void) {

int f, s;

struct ifreq ifr;

if ( (f=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)))<0){

return -1;

}

strcpy(ifr.ifr_name, ETH_NAME);

if ((s = ioctl(f, SIOCGIFFLAGS, &ifr))<0){

close(f);

return-1;

}

if(ifr.ifr_flags & IFF_RUNNING){

printf("eth link up\n");

}else{

printf("eth link down\n");

}

ifr.ifr_flags |= IFF_PROMISC;

if ((s = ioctl(f, SIOCSIFFLAGS, &ifr)) < 0){

return -1;

}

printf("Setting interface ::: %s ::: to promisc\n\n", ifr.ifr_name);

return 0;

}

int check_nic(void)

{

struct ifreq ifr;

int skfd = socket(AF_INET, SOCK_DGRAM, 0);

strcpy(ifr.ifr_name, ETH_NAME);

if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0)

{

close(skfd);

return -1;

}

if(ifr.ifr_flags & IFF_RUNNING){

printf("link up\n");

close(skfd);

return 0; // 網卡已插上網線

}else {

printf("link down\n");

close(skfd);

return -1;

}

}

int main(void) {

do_promisc();

return 0;

}

2. Windows/Linux下,某個C++網路監聽程序,設置了網卡為混雜模式。這會不會影響其他程序。

一般無影響,混雜模式開啟,結果是不屬於你的數據包也流入網卡,其他非監聽程序根本不會去接收也無法接收這些數據,所以無影響。
當然混雜模式會增加網卡壓力和CPU負荷,可能在這方面造成對其他程序的一點影響。

3. linux 查看 網卡介面是否為混雜模式

ifconfig 可以看到網卡是否混雜模式,如:

ifconfig eth0 看是否有「PROMISC」標志

ifconfig eth0 promisc #設置混雜模式

ifconfig eth0 -promisc #取消混雜模式

4. linux 下怎樣查看網卡是否支持混雜模式

使用ifconfig命令可查看當前網卡是否設置為混雜模式[zhaihf@localhost~]$ ifconfig
eth0 Linkencap:Ethernet HWaddr 00:16:31:FF:A6:2E
inet addr:192.168.9.1 Bcast:192.168.9.255 Mask:255.255.255.0
UPBROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:98420000-98440000

eth1 Link encap:Ethernet HWaddr 00:16:31:FF:A6:2F
inet addr:192.168.8.48 Bcast:192.168.8.255 Mask:255.255.255.0
inet6 addr: fe80::216:31ff:feff:a61f/64 Scope:Link
UPBROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:28011022 errors:0 dropped:0 overruns:0 frame:0
TX packets:18408510 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31733322503 (29.5 GiB) TX bytes:21092798216 (19.6GiB)
Memory:98400000-98420000

5. linux下網卡混雜模式如何設置

那就每次開機登錄時自動修改唄~~~
這個修改重啟後會丟失,因此你要自己去修改~~修改mac地址也是重啟就失效了

echo "ifconfig eth0 promisc " >>/root/.bash_profile
或者
echo "ifconfig eth0 promisc " >>/root/.bashrc

/root/.bashrc是進入root時自動會執行的一個腳本~~

熱點內容
零起點學通c語言視頻 發布:2024-11-28 14:29:42 瀏覽:290
python獲取串口數據 發布:2024-11-28 14:22:39 瀏覽:666
台灣ip代理伺服器雲主機 發布:2024-11-28 14:18:24 瀏覽:465
php寫後端 發布:2024-11-28 14:09:36 瀏覽:234
拍環衛工人的腳本 發布:2024-11-28 14:03:35 瀏覽:990
java課程實戰培訓 發布:2024-11-28 13:57:11 瀏覽:303
linux硬碟空間 發布:2024-11-28 13:55:55 瀏覽:531
寫簡單編譯器 發布:2024-11-28 13:55:42 瀏覽:512
編譯net時 發布:2024-11-28 13:52:38 瀏覽:405
sqlserver2008分區表 發布:2024-11-28 13:41:58 瀏覽:481