在IP路由转发的主机上如何过滤TCP数据包?

pzf_2008 2011-03-22 05:17:05
我在本机(windows xp)开启了IP路由转发功能, 方法是通过设置注册表的键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters\IPEnableRouter为1。设置成功后,局域网中所有发送到本机的数据全部自动转发到网关。

现在,我需要过滤发送到本机的TCP数据包,并对数据包进行某些修改再转发,但不知道是在哪一层进行数据包的捕获和修改,是数据链路层吗,用WinPcap能否实现?

...全文
246 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pzf_2008 2011-06-01
  • 打赏
  • 举报
回复
我最近看了关于NDIS拦截数据包方面的知识,像看天书一样,好难懂!

SPI相对简单些,但不知SPI能否拦截流经网卡的数据包? 请高手指点
pzf_2008 2011-04-06
  • 打赏
  • 举报
回复
我对NDIS一窍不通, 如何用ndis截获并转发TCP数据包呢? 请哪位帮忙指点迷津!谢谢了!
西湖秀才 2011-03-29
  • 打赏
  • 举报
回复
winpcap只能获取本机数据包的一份拷贝,不能过滤,过滤可以考虑ndis网络驱动
pzf_2008 2011-03-29
  • 打赏
  • 举报
回复
在Linux下用自带的iptables可以实现过滤并转发TCP数据包的功能。例如用iptables把80端口数据转发到8080的命令为:
iptables -t nat -A PREROUTING -p tcp --destinationport 80 -j REDIRECT --to-ports 8080

我现在想在windows下实现同样的功能,我的本机是局域网的网关,局域网内所有主机通过本机访问外部网络,本机开启了IP路由转发功能,我想捕获所有流经本机的TCP数据包,捕获后进行端口的转发,用winpcap能够捕获到吗?是不是开启了IP路由转发功能后,所有通过本机IP发往外网的数据就捕获不到了?
jwybobo2007 2011-03-23
  • 打赏
  • 举报
回复
ndis
tdi
spi
IsItNothing 2011-03-23
  • 打赏
  • 举报
回复
ndis编程。看看微软的passthru
Eleven 2011-03-23
  • 打赏
  • 举报
回复
网络驱动编程~
pzf_2008 2011-03-23
  • 打赏
  • 举报
回复
winPcap可以抓包,也可以过滤数据包的!

大家都说得都很笼统,期待更熟悉这方面的专家的高见!!
IsItNothing 2011-03-23
  • 打赏
  • 举报
回复
或者你不用xp的路由功能。用winpcap设置过滤条件,然后自己写程序转发数据包。
IsItNothing 2011-03-23
  • 打赏
  • 举报
回复
winpcap好像不行。winpcap是抓包的。建议ndis。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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