Linux, 工作, 生活, 家人

Linux, Programming

[Linux] fakenetdev 假的 network interface

有些時候, 我們會需要一個假的 network device.
像是
1) 某些軟體會去 check network interface
2) 需要學習寫作一些軟體

所以我花了一點點時間寫了這一個 kernel modules
主要功能就是在 linux 下建立一個假的 network interface
這個 network interface
只能送(馬上就 free 掉 packet buffer), 沒有收的 function .

在 insert 時, 可以用參數 name 和 mac 指定特定的 network device name 和 mac address.
ex: # insmod fakenetdev.ko name=fake0 mac=00:aa:bb:cc:dd:ee
mac 的格式也可以是 00aabbccddee 或 00-aa-bb-cc-dd-ee
也支援用 ifconfig 修改 mac
ex: # ifconfig eth2 down
# ifconfig eth2 hw ether 00:aa:bb:cc:dd:ee
# ifconfig eth2 up

這個程式在 ubuntu 8.10 (interpid), Linux kernel 2.6.27 下測試.
目前看起來沒有很大的問題, 原作者要用的目地可以達到

可以從這個 URL 下載程式 fakenetdev

— English —
Sometimes, we will need a fake network device for some purpose
like,
1) cheat some software which will check network mac
2) learn how to write a simple network device driver

So, I spend a little time to write this kernel module.
Major function is that create fake network interface.
It can send packet, but driver will free it immediately.

When insert modules, the module support argument “name” and “mac” to
modify default name and mac.
ex: # insmod fakenetdev.ko name=fake0 mac=00:aa:bb:cc:dd:ee
it also support other format for mac, like 00aabbccddee or 00-aa-bb-cc-dd-ee
and support modify mac by ifconfig
ex: # ifconfig eth2 down
# ifconfig eth2 hw ether 00:aa:bb:cc:dd:ee
# ifconfig eth2 up

This module was tested at ubuntu 8.10 (interpid), Linux kernel 2.6.27.
It seems work fine for me .

You can download follow this link fakenetdev

後記:

這 Driver 不難寫, 麻煩的是在 Debug .不小心少寫一行就 Core Dump.
又懶得弄 KGDB 或是 User Mode Linux, 因為弄的時可能比寫完還多
網路上掃了一遍沒有看到馬上可以用的, 所以就自己亂寫, 希望
大家都可以用得到, 因為是用在*謎*用途的呀 :p

不過這個功能可以用 dummy device 達成,
我寫的頂多就是可以在 load driver 的時候改 name 和 mac .

2 留言

  1. figo1802

    你好,拜读了你的blog,我也是做台湾的一家IC公司,也是搞linux的,能否交个朋友?我的MSN: figo1802@hotmail.com

  2. cool, 感謝分享 🙂

發佈留言