找回密码
 注册
查看: 2347|回复: 22

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

[复制链接]
发表于 2006-6-2 00:58:45 | 显示全部楼层 |阅读模式
RH AS3
有三个网卡eth0,eth1,eth2
希望将eth0收到的数据包全部从eth1转发,应该怎样设置呢?

已经试过将/proc/sys/net/ipv4/ip_forward设为1
关闭了iptables
用tcpdump -i eth0可以捕获eth0收到的包,全部是192.168.1.1->192.168.1.10
将eth1设为192.168.1.9/22
加了路由route add -net 192.168.1.8 netmask 255.255.255.252 dev eth1
与eth1相连的另一台机器设为192.168.1.10/22
可是没有成功,在与eth1相连的机器上用tcpdump抓不到任何数据

有没有不通过路由更简单的设置,直接将eth0收到的包转发到eth1呢
发表于 2006-6-2 09:25:18 | 显示全部楼层
你是怎么连接的?好像没有用什么网络设备。
192.168.1.1是那个设备,子网掩码是多少,与那个设备相连?eth0的IP地址又是多少?
现在就知道eth1和192.168.1.10是一个网段,但是在route table中看到的是192.168.1.8,它又是那个设备?
具体的网络环境还没有将清楚~~
回复

使用道具 举报

 楼主| 发表于 2006-6-2 09:39:42 | 显示全部楼层
192.168.1.8是网络号,表示eth1和192.168.1.10的网段
192.168.1.1是别人的设备,专门给我发送数据,发往eth0网卡,我用tcpdump抓包看到的是192.168.1.1->192.168.1.10.由于想把所有的数据通过eth1发送出去,因此设置了上面的路由,是不是有什么不合适的地方?

[quote:05be8b9e72="jsliu"]你是怎么连接的?好像没有用什么网络设备。
192.168.1.1是那个设备,子网掩码是多少,与那个设备相连?eth0的IP地址又是多少?
现在就知道eth1和192.168.1.10是一个网段,但是在route table中看到的是192.168.1.8,它又是那个设备?
具体的网络环境还没有将清楚~~ [/quote]
回复

使用道具 举报

发表于 2006-6-2 10:00:58 | 显示全部楼层
如果数据包是发往eth2的,你还让他从eth1转发到哪去???


你的192.168.1.9/22与net 192.168.1.8 netmask 255.255.255.252确定没有问题?

看了好长时间,还是没看明白。也不清楚你的eth0,eth2的ip地址是多少。

别人发的包为什么要到你的eth0,为何要必须转到eth1?? 
回复

使用道具 举报

发表于 2006-6-2 10:09:23 | 显示全部楼层
我的计算机也是这样,但我用的是IPTABLES来实现的,直接用IPTABLES的FORWARD来实现,,很简单,,但也很实用1!
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
当然实际情况当然没有这么简单,如果你的两个网卡链接不同的IP 段,,用IP 是最好的..
回复

使用道具 举报

 楼主| 发表于 2006-6-2 10:33:22 | 显示全部楼层
sorry,还是没说清楚.....
eth2是没有连接的
eth0连接另一台服务器,这台服务器专门给我发送数据,我没有控制权,我只需要接收数据而不需要与它通信,发过来的包sip和dip分别是192.168.1.1->192.168.1.10,如果存在本地的话我只需要用tcpdump捕获就可以了
可是现在的问题是不把数据存在本地,而是发给我自己的另外一台服务器存储,这台服务器与eth1相连

[quote:a7702456cc="Axin"]如果数据包是发往eth2的,你还让他从eth1转发到哪去???


你的192.168.1.9/22与net 192.168.1.8 netmask 255.255.255.252确定没有问题?

看了好长时间,还是没看明白。也不清楚你的eth0,eth2的ip地址是多少。

别人发的包为什么要到你的eth0,为何要必须转到eth1?? [/quote]
回复

使用道具 举报

 楼主| 发表于 2006-6-2 10:39:03 | 显示全部楼层
thanks,下回试试这个方法
我对iptables不熟,不过这条语句是不是就是一条规则呢,允许所有来自eth0的包可以被转发到eth1,可是我已经把iptables关闭了,所以是不是默认已经允许了?

[quote:6ea8999ba2="shepherb"]我的计算机也是这样,但我用的是IPTABLES来实现的,直接用IPTABLES的FORWARD来实现,,很简单,,但也很实用1!
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
当然实际情况当然没有这么简单,如果你的两个网卡链接不同的IP 段,,用IP 是最好的..[/quote]
回复

使用道具 举报

发表于 2006-6-2 10:41:59 | 显示全部楼层
也就是说你想把你的Pc作为一个Router,把eth0的数据包转发到eth1上对吗?如果192.168.1.1(A)和192.168.1.10(B)不在同一网段的话,如果A能ping到B,说明你的route没错~~
可是,我有个疑问(我不太清楚):
你的B机器的子网是192.168.1.10/22,掩码是255.255.252.0
eth1设为192.168.1.9/22 ,掩码也是255.255.252.0
这个网段的网络地址好像是192.168.0.0,不是192.168.1.8~~
(可能有错,请各位纠正)
回复

使用道具 举报

发表于 2006-6-2 10:44:13 | 显示全部楼层
[quote:e220aea904="highb"]sorry,还是没说清楚.....
eth2是没有连接的
eth0连接另一台服务器,这台服务器专门给我发送数据,我没有控制权,我只需要接收数据而不需要与它通信,发过来的包sip和dip分别是192.168.1.1->192.168.1.10,如果存在本地的话我只需要用tcpdump捕获就可以了
可是现在的问题是不把数据存在本地,而是发给我自己的另外一台服务器存储,这台服务器与eth1相连

[quote:e220aea904="Axin"]如果数据包是发往eth2的,你还让他从eth1转发到哪去???


你的192.168.1.9/22与net 192.168.1.8 netmask 255.255.255.252确定没有问题?

看了好长时间,还是没看明白。也不清楚你的eth0,eth2的ip地址是多少。

别人发的包为什么要到你的eth0,为何要必须转到eth1?? [/quote][/quote]

你直接把你的server,你这三网卡的机器和你自己的另一台服务器接同一个交换机上就行了。


如果没有交换机,你就把eth0 eth1 bridge到一起

最简单的办法是:你把你的“另一台服务器”直接跟你的那个发包的机器连在一起。

还有,我指出的192.168.1.9/22与net 192.168.1.8 netmask 255.255.255.252肯定是两个矛盾的东西。
回复

使用道具 举报

发表于 2006-6-2 10:44:39 | 显示全部楼层
[quote:8d3b082ea4="shepherb"]我的计算机也是这样,但我用的是IPTABLES来实现的,直接用IPTABLES的FORWARD来实现,,很简单,,但也很实用1!
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
当然实际情况当然没有这么简单,如果你的两个网卡链接不同的IP 段,,用IP 是最好的..[/quote]

那你试着把这条规则去掉,看还能不能转发数据。
回复

使用道具 举报

发表于 2006-6-2 11:31:50 | 显示全部楼层
桥接是用来连两个网段的吧,

如果两个独立的局域网有相同的IP地址群,应该是不能连到一个网里去的

假设
A局域网有台机器 pc_a,MAC是 e0:e0:e0:e0:e0 ,ip 是 192.168.1.222
B局域网有台机器 pc_b,MAC是 d0:d0:d0:d0:d0 ,ip 是 192.168.1.222

你用 pc_c 机器作交换,把它们连到一个网里去以后会怎么样?

C机器无法通过ARP找到A和B了
回复

使用道具 举报

发表于 2006-6-2 11:43:50 | 显示全部楼层
[quote:755bab826b="biff"]桥接是用来连两个网段的吧,

如果两个独立的局域网有相同的IP地址群,应该是不能连到一个网里去的

假设
A局域网有台机器 pc_a,MAC是 e0:e0:e0:e0:e0 ,ip 是 192.168.1.222
B局域网有台机器 pc_b,MAC是 d0:d0:d0:d0:d0 ,ip 是 192.168.1.222

你用 pc_c 机器作交换,把它们连到一个网里去以后会怎么样?

C机器无法通过ARP找到A和B了[/quote]

如果你能保证 A网 和 B网 在同一网段,并且没有重复的IP地址,

可以试试 给 pc_c 指定路由,这倒是可以的
回复

使用道具 举报

发表于 2006-6-2 12:30:59 | 显示全部楼层
我估计highb是想把他的机器做一个router吧~~
回复

使用道具 举报

发表于 2006-6-2 12:43:51 | 显示全部楼层
两个网络有两个相同的地址,如何路由??? 他是找本网的还是另外一个网络的??

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

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

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

GMT+8, 2025-2-15 11:31 , Processed in 0.029788 second(s), 15 queries .

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

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