找回密码
 注册
楼主: highb

求助:如何将一个网卡收到的包从另一个网卡转发出去

[复制链接]
发表于 2006-6-2 13:46:27 | 显示全部楼层
[quote:60409b82bf="jsliu"]我不知道他的192.168.1.1和eth0的IP地址和子网掩码是什么,所以我猜他的eth0连接的网段和eth1连接的网段使用的是不同的子网掩码,所以他的Linux要把两个不同的子网连接起来就启用router就可以了,就像VLAN一样,用一个router提供两个vlan之间的通信.[/quote]

他的那台发包的机器是不可控的,你如何配制他的路由?即你如何教他到192.168.1.10的数据包走你的eth0???
回复

使用道具 举报

 楼主| 发表于 2006-6-2 14:22:18 | 显示全部楼层
A  ---------------------------  (eth0) B  (eth1)  ---------------------(eth1) C ----(eth0)(internet)
(192.168.1.1)      (192.168.1.2/22)   (192.168.1.9/22)      (192.168.1.10/22)

上面大致是连接关系,我可以控制的是B和C两台机器,C与internet连接,我可以ssh到C上管理,然后在C上ssh到B管理B.
A是别人的机器,不停的发送数据,我只要接收存储数据就可以了.在B上用tcpdump发现数据的IP头是192.168.1.1->192.168.1.10的
B由于硬盘限制,不能存储数据而只能存到C上;而由于连接关系不能改变,不能直接将C与A相连
B和C的网络设置都可以是任意改变的
开始我说的办法只是我自己想的一个办法,也就是把B的eth1和C的eth0设置为192.168.1.8/22网段(这个应该没错吧,8是网络号(00001000),9和10分别是00001001和00001010,掩码22(11111100)),可是发现行不通


[quote:b7e58e4550="Axin"]两个网络有两个相同的地址,如何路由??? 他是找本网的还是另外一个网络的??

数据包是从192.168.1.1->192.168.1.10,如果192.168.1.1和192.168.1.10是同一个网络,当然只能使用二层交换;如果不是同一个网络,则使用三层路由转发。

楼主提供的信息非常模糊,所以你怎么回答都不能帮助他解决问题。

但他又提供了一个掩码是22一网络,另一个是30的网络,这两个网络是不能共存路由的。 [/quote]
回复

使用道具 举报

发表于 2006-6-2 14:42:28 | 显示全部楼层
你现在还是不清楚(至少你没有说清楚)192.168.1.1(A)与你的B机器上的eth0(192.168.1.2/22)是不是同一个网段。

依我按你所作的图的理解,你上面所有计算机的所有网卡都在同一个网段,不是吗?数据包是192.168.1.1到192.168.1.10,你又还构造了一台叫192.168.1.10/22的计算机

别人(A)的数据包192.168.1.1->192.168.1.10为什么要经过你的计算机B从而到达你所构想的计算机C?
回复

使用道具 举报

发表于 2006-6-2 17:20:52 | 显示全部楼层
[quote:183ef07a51="highb"]A  ---------------------------  (eth0) B  (eth1)  ---------------------(eth1) C ----(eth0)(internet)
(192.168.1.1)      (192.168.1.2/22)   (192.168.1.9/22)      (192.168.1.10/22)
[/quote]

那很简单,你没有办法把A直接连到C上,你就把B机器作为Router.
在B机器上的eth1的IP地址不要用192.168.1.x,用192.168.0.x;
在C机器上的eth1的IP地址也用192.168.0.x,和B的eth1在一个网段。
然后再B机器上使用router就可以了。
回复

使用道具 举报

 楼主| 发表于 2006-6-2 17:36:31 | 显示全部楼层
我把B的eth0配成192.168.1.2/22就是为了跟A是一个网段啊,因为我无法改变A的配置,只知道它发过来的包的源IP是192.168.1.1
现在的route table是
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.8     *               255.255.255.252   U     0      0        0 eth1
192.168.1.0     *               255.255.255.252   U     0      0        0 eth0
127.0.0.0         *               255.0.0.0               U     0      0        0 lo

根据我的理解,在B机器看来,A与B的eth0是同一网段,B的eth1与C的eth1是同一网段,并不是所有网卡都是同一网段的
按说B的eth0收到的包发现目的地址是192.168.1.10,会按照第一条规则转发到eth1(/proc/sys/net/ipv4/ip_forward已置1),可是实际上不是这样,不知道为什么

[quote:052aa1c770="Axin"]你现在还是不清楚(至少你没有说清楚)192.168.1.1(A)与你的B机器上的eth0(192.168.1.2/22)是不是同一个网段。

依我按你所作的图的理解,你上面所有计算机的所有网卡都在同一个网段,不是吗?数据包是192.168.1.1到192.168.1.10,你又还构造了一台叫192.168.1.10/22的计算机

别人(A)的数据包192.168.1.1->192.168.1.10为什么要经过你的计算机B从而到达你所构想的计算机C?[/quote]
回复

使用道具 举报

发表于 2006-6-2 18:05:56 | 显示全部楼层
如果是同一网段,router还会转发吗?  
回复

使用道具 举报

发表于 2006-6-2 18:22:31 | 显示全部楼层
[quote:a4b4e22414="highb"]我把B的eth0配成192.168.1.2/22就是为了跟A是一个网段啊,因为我无法改变A的配置,只知道它发过来的包的源IP是192.168.1.1
现在的route table是
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.8     *               255.255.255.252   U     0      0        0 eth1
192.168.1.0     *               255.255.255.252   U     0      0        0 eth0
127.0.0.0         *               255.0.0.0               U     0      0        0 lo

根据我的理解,在B机器看来,A与B的eth0是同一网段,B的eth1与C的eth1是同一网段,并不是所有网卡都是同一网段的
按说B的eth0收到的包发现目的地址是192.168.1.10,会按照第一条规则转发到eth1(/proc/sys/net/ipv4/ip_forward已置1),可是实际上不是这样,不知道为什么

[quote:a4b4e22414="Axin"]你现在还是不清楚(至少你没有说清楚)192.168.1.1(A)与你的B机器上的eth0(192.168.1.2/22)是不是同一个网段。

依我按你所作的图的理解,你上面所有计算机的所有网卡都在同一个网段,不是吗?数据包是192.168.1.1到192.168.1.10,你又还构造了一台叫192.168.1.10/22的计算机

别人(A)的数据包192.168.1.1->192.168.1.10为什么要经过你的计算机B从而到达你所构想的计算机C?[/quote][/quote]

感觉你非常不了解路由什么的。

首先你看能不能在B上ping通A吧。如果能通,请告诉我此时你的计算机B的ip地址以及掩码。
回复

使用道具 举报

发表于 2006-6-2 18:27:31 | 显示全部楼层
其实你的这问题解决办法是:把eth0和eth1 bridge到一起,这样你的计算机B作为一个桥,让你的计算机A能将数据包发给C。

你既然不能控制A,那你也无法控制A,使其发到192.168.1.10的数据从你的计算机B路由转发。你只有理解了这个道理才有利于你解决问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-15 11:27 , Processed in 0.040477 second(s), 13 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表