200分:禁止网络内未经许可的机子上网(最好能禁止其MAC,因为IP他会改来改去)。(200分)

装台带网管的交换机,用一台计算机来控制各个端口的上网权限,然后将各个端口的IP与连接网卡MAC地址进行绑定,我想只要管理好交换机和网管计算机,应该能限制其他人员上网了。
 
限制网卡也不行
网卡mac也可以改的,一些无盘工具就能改
有些交换机能限制端口的
 
装个MS的ISA服务器,不就可以了?
 
网络执法官之类的没有用的,现在的基本都是用交换机,除非你那里都是纯粹的HUB,不过我觉得可能性不大,多半带有交换功能,就是所谓的傻交换。
 
网络执法官就是靠抓取网络上当前的报文来判断是否是合法机上网的.
不过如果它抓不到呢??
这种问题最好的解决方法就是要么在网关上动手脚,要么在交换机上绑定.

也可以在程序中不断轮询当前正在上网的所有ip地址所对应的mac, 发现
与原始数据(合法的mac-ip对应表)不一致,网管就马上知道了. 然后....

如果你要用网络执法官的方案,就要去写抓包的程序,不容易了.
 
我刚看过你的问题,其实有人已经给出答案了啊,你在服务器上用一个程序截获所有发出的网络封包,然后检测他的ip是否是你允许的,若否,则把封包的ip改掉,
 
qknife,我支持你
 
强烈关注中。。。。。。。。。。。。。
 
我是新来的,大家好!
 
你不会倒过来想?不要禁止那些MAC,你只允许某些MAC即可啊!

这个是改MAC的,方便得很
http://www.klcconsulting.net/Change_MAC_w2k.htm
 
主要问题就是怎样"在服务器上用一个程序截获所有发出的网络封包"?????????
 
那个程序不被搞死了就怪。。

我原来在实验室下xp, 2分30秒 = 550M, 这么多封包早把监控程序搞死了
 
这里有个C的代码,有兴趣的可以参考

//****************************
//得到远程机器MAC地址源代码
//****************************

#include
#include
#include
#include "iphlpapi.h"

#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "Iphlpapi.lib" )

void main( int argc, char ** argv )
{
int numberOfHost = 1;
struct hostent *remoteHostent;

//处理命令行参数
if ( argc == 3 )
numberOfHost = atoi( argv[2] );
if ( ( argc >3 ) || ( argc < 2 ) )
{
printf( "RmtHost v0.2 - Get remote HostName /MacAddress/n" );
printf( "by ShotgunLabs ( Shotgun@xici.net )/n/n" );
printf( "Usage :/n/tRmtHost.exe [RemoteIP] /n/n" );
printf( "Example:/n/tRmtHost.exe 192.168.0.3/n" );
printf( "/tRmtHost.exe 192.168.0.3 255/n/n" );
exit( 0 );
}
//初始化SOCKET
WSADATA wsaData;
int iRet = WSAStartup(MAKEWORD(2,1), &amp;wsaData);
if ( iRet != 0 )
{
printf( "WSAStartup Error:%d/n", GetLastError() );
exit( 0 );
}
int nRemoteAddr = inet_addr( argv[1] );
remoteHostent= (struct hostent*)malloc( sizeof(struct hostent ));
struct in_addr sa;
for ( int i = 0; i < numberOfHost; i ++ )
{
//获取远程机器名
sa.s_addr = nRemoteAddr;
printf( "/nIpAddress : %s/n", inet_ntoa( sa ) );
remoteHostent = gethostbyaddr( (char*)&amp;nRemoteAddr,4, AF_INET );
if ( remoteHostent )
printf( "HostName : %s/n",remoteHostent->h_name );
else
printf( "gethostbyaddr Error:%d/n",GetLastError() );
//发送ARP查询包获得远程MAC地址

unsigned char macAddress[6];
ULONG macAddLen = 6;
iRet=SendARP(nRemoteAddr, (unsigned long)NULL,(PULONG)&amp;macAddress, &amp;macAddLen);
if ( iRet == NO_ERROR )
{
printf( "MacAddress: " );
for( int i =0; i<6; i++ )
{
printf( "%.2x", macAddress );
if ( i<5 ) printf( "-" );
}
printf( "/n" );
}
else
printf( "SendARP Error:%d/n", GetLastError());
nRemoteAddr = htonl( ntohl( nRemoteAddr ) + 1 );
}
}
 
我们总经理更变态,要限制上网时间!!!
 
先让她(老板)用代理服务器软件爽吧。
学习慢慢来。
 
用Microsoft ISA Server 2000吧,这些小事轻而举
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
902
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部