怎样限制局域网中的机器只访问内网?(都来看看,帮我出出主意!)

kk_ray 2003-10-21 02:51:27
我是一个热爱编程的机房管理员,为了能控制局域网中的机器只能访问局域网而不能访问INTERNET,绞尽脑汁也没有找到一个好的方法。

现在只是通过程序动态更改机器的DNS来控制,但是知道DNS地址的人随便改一下DNS配置就可以上网了。

哪位大侠有什么好的思路吗?

只要有建议我就给分。

谢谢各位!
...全文
124 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
kk_ray 2003-10-28
  • 打赏
  • 举报
回复
PMibIfTable, TMibIfRow在哪定义的?

现在编译不了,还要包含哪些单元?
kk_ray 2003-10-28
  • 打赏
  • 举报
回复
哈哈,两天没上班居然来了这么多好心的朋友。

我马上就去试!

谢谢各位关注!
kk_ray 2003-10-28
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/setifentry.asp

谢谢各位的帮助!
delphibo 2003-10-27
  • 打赏
  • 举报
回复
划分网段,设定子网 ,然后锁定计算机的IP信息
vagerent 2003-10-27
  • 打赏
  • 举报
回复
方法2:
关闭所有网卡:
procedure TForm1.DisplayInterfaceList;
var
IfTable: PMibIfTable;
Row: TMibIfRow;
Size: ULONG;
I, J: Integer;
S,ss: string;
begin
Size := 0;
if not GetIfTable(nil, Size, True) = ERROR_BUFFER_OVERFLOW then Exit;
IfTable := AllocMem(Size);
try
if GetIfTable(IfTable, Size, True) = ERROR_SUCCESS then
begin
for I := 0 to IfTable^.dwNumEntries - 1 do
begin
ss:='';
Row := IfTable^.Table[I];
ss:=ss+Format('0x%-x ..... ', [Row.dwIndex]);
S := '';
for J := 0 to Row.dwDescrLen - 1 do
S := S + Chr(Row.bDescr[J]);
ss:=ss+s;
Form1.memo1.Lines.Add(ss);
row.dwAdminStatus:=MIB_IF_ADMIN_STATUS_UP;
SetIfEntry(row);
end;
end;
finally
FreeMem(IfTable);
end;
end;
试试行不行啊。不过禁用网卡是比较好的选择。
vagerent 2003-10-27
  • 打赏
  • 举报
回复
楼主已有思路了阿,就是先让网卡禁用再启用。
用IphlpApi中的函数
Platform SDK: Internet Protocol Helper

SetIfEntry

Use the SetIfEntry function to set the administrative status of an interface.


DWORD SetIfEntry(
PMIB_IFROW pIfRow
);

Parameters
pIfRow
[in] Pointer to a MIB_IFROW structure. The dwIndex member of this structure specifies the interface on which to set administrative status. The dwAdminStatus member specifies the new administrative status. The dwAdminStatus member can be one of the following values.

Value Meaning
MIB_IF_ADMIN_STATUS_UP The interface is administratively enabled.
MIB_IF_ADMIN_STATUS_DOWN The interface is administratively disabled.

Return Values
If the function succeeds, the return value is NO_ERROR.

If the function fails, use FormatMessage to obtain the message string for the returned error.

Requirements
Windows NT/2000/XP: Included in Windows NT 4.0 SP4 and later.
Windows 95/98/Me: Included in Windows 98 and later.
Header: Declared in Iphlpapi.h.
Library: Use Iphlpapi.lib.
ntfs2 2003-10-27
  • 打赏
  • 举报
回复
不一定的,你们的设置方法我认为都有漏洞!我认为还是要根据网卡的物理地址来限制比较的好,这方面的软件也是很多的!
saien 2003-10-26
  • 打赏
  • 举报
回复
用sygate软件控制即可.
wing_er 2003-10-26
  • 打赏
  • 举报
回复
封闭端口
XXSingle 2003-10-26
  • 打赏
  • 举报
回复
装防火墙,过滤IP,很简单
kk_ray 2003-10-24
  • 打赏
  • 举报
回复
哪位高手能告诉我怎样通过程序让网卡禁用再启用?!
kk_ray 2003-10-24
  • 打赏
  • 举报
回复
不设网关可以禁止上网,但是如果在想让那台机器上网的话就必须要重新启动,不能通过远程控制让它马上上网!
kink 2003-10-23
  • 打赏
  • 举报
回复
把网关设为空
kk_ray 2003-10-23
  • 打赏
  • 举报
回复
上面各位兄台的方法我都考虑过,但是由于种种原因都不太容易实现。

我就想在局域网内的机器上想办法,看有没有可能通过自己的程序控制上网。

其实我觉得动态屏蔽DNS也可以,只是在98和Me下一旦给机器添加了DNS,想在禁用就必须要重新启动机器才可以生效。

Xp下面虽然可以,但是不重新启动的话QQ等聊天工具还是可以用。

有没有可能在不重新启动机器的情况下让我的程序能够实现我想要的效果?!
waxberry2000 2003-10-22
  • 打赏
  • 举报
回复
路由器的管理软件上,可以先屏蔽所有的用户,再为每个用户IP设个帐号,先登录再用,也可以管到网段上.
zmonarch 2003-10-22
  • 打赏
  • 举报
回复
你看看这个行不,我们就是用的这个:
sysGate(为了让局域网内的机子访问互联网)
天网防火墙(随意控制局域网内的机子访问互联网--想让谁上就让谁上;增强网络安全)
如果你感觉这个合适你,请回短消息,我在对给你,呵呵,交流嘛
Wally_wu 2003-10-22
  • 打赏
  • 举报
回复
使用代理服务器
Proxy,ISA,WinGate 或SysGate
lanshing 2003-10-22
  • 打赏
  • 举报
回复
如果只是禁止上网(即封80端口)倒是很多软件都可以做到。封TCP连接即使就是网络监听型的软件都可以实现这个功能(采用IP欺骗的办法),这样就可以在局域网内的路由器旁边安装一个软件,其他机器不需要任何配置。
kk_ray 2003-10-22
  • 打赏
  • 举报
回复
有那种控制路由器的上网监控软件,直接监视从路由器上经过的数据,具有网络访问控制的功能。

现在我的网络是这样的:有192.168.0到192.168.2共三个网段,直接接到网络中心的交换机上,通过那里上网。

但是某些时候要禁止部分网段的机器上网,所有可行的办法就是自己做一个程序运行在每一台机器上。

我现在用的办法就是通过这个程序动态的禁用DNS,但是一旦启用了DNS,想要禁用的话,虽然TCP/IP属性里面没有了DNS,但是那些机器还是同样可以上网;再一个就是只要是知道DNS地址的人到TCP/IP属性里面改了DNS配置后同样也可以上网。

显然,这样的漏洞太大。
醉马不肖 2003-10-22
  • 打赏
  • 举报
回复
安装防火墙,再设置一下(很简单)
加载更多回复(5)

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧