当前位置: 技术问答>linux和unix
模拟一个路由器转发,从一个IP上转发包给另一个IP,不要源码,给个思路就好
来源: 互联网 发布时间:2016-10-23
本文导语: 本帖最后由 houyingjiangsu 于 2010-12-04 11:03:27 编辑 如题,没有思路,各位大侠给个思路,可以详细就详细点…… | 实现路由器的功能,你应该使用 混杂模式,或者用原始套接字,接收原始数据包,分...
|
实现路由器的功能,你应该使用 混杂模式,或者用原始套接字,接收原始数据包,分析包发送包,
大概思路:
arp广播来获取各个机器的MAC地址及对应IP,记录下来,然后启用混杂模式或者用原始套接字,抓取数据包,
抓取数据包后,分析,然后填充对应数据,转发至目的机器就可以了。
|
首先收包是由客户机发过来到了路由器的指定网口,所以这部分没有问题。
然后路由器内部应该有一个管理数据转发的table, 内容大概如下:
172.22.11.0 eth0
172.22.12.0 eth1
这样收到到目的地为172.22.11.xxx的数据包从eth0转发出去
这样收到到目的地为172.22.12.xxx的数据包从eth1转发出去
在这个处理的过程中,应用源始套接字,数据包的源IP不需改变,另外从性能考虑,在进行数据转发的处理过程中尽可能的用指针操作而不要直接拷贝数据。
然后路由器内部应该有一个管理数据转发的table, 内容大概如下:
172.22.11.0 eth0
172.22.12.0 eth1
这样收到到目的地为172.22.11.xxx的数据包从eth0转发出去
这样收到到目的地为172.22.12.xxx的数据包从eth1转发出去
在这个处理的过程中,应用源始套接字,数据包的源IP不需改变,另外从性能考虑,在进行数据转发的处理过程中尽可能的用指针操作而不要直接拷贝数据。
|
路由器的本地路由表就已经实现了LZ的需求
可以用命令来查看 ip route ls table local
可以参考一下ip命令
可以用命令来查看 ip route ls table local
可以参考一下ip命令