路由协议aodv-uu-0.9.6在Linux系统不能多跳问题

时间:2021-08-29 03:56:47
我想模拟组建一个ad hoc网络,路由协议为aodv-uu-0.9.6,建立三个节点,都是ARM板2440,开始运行路由协议,节点1能ping通节点3,然后节点1对节点3添加防火墙功能,iptables以后,节点1ping不通节点3,加入节点2,按理说节点2会对节点3的数据进行转发但是发现节点2没能进行数据转发,节点1ping不通节点3,怎么解决,求大神指导!!!!!

19 个解决方案

#1


iptables规则是什么

1能ping通2     2能ping通3吗

把1 2 3 的路由规则贴一下

#2


在节点1使用iptable过滤掉来自节点3的数据,在过滤之前是能ping通1、3的,过滤后不能ping通,需要通过节点2转发,但是节点2没有实现转发功能,iptables是根据节点3的MAC地址来过滤的,iptales -A INPUT -m mac –mac-source 44:33:4c:10:60:f6 -j DROP

#3


转发需要打开linux kernel的route功能,以及ip_forwards=1

#4


route是勾选了advanced router吗?ip_forwards=1 这个我是设置成这个样子的!

#5


引用 2 楼 lili88881216 的回复:
在节点1使用iptable过滤掉来自节点3的数据,在过滤之前是能ping通1、3的,过滤后不能ping通,需要通过节点2转发,但是节点2没有实现转发功能,iptables是根据节点3的MAC地址来过滤的,iptales -A INPUT -m mac –mac-source 44:33:4c:10:60:f6 -j DROP


根据你这个规则,1到3的包能正常发出, 3到1的包也能正常回复,只是1在接受到来着3的包时,把包丢弃了,中间不需要2来进行转发,所以这样测试并不能证明2没有转发功能

你可以在iptables规则链中看到这些丢弃的包,因为从3过来的包,如果经过2的话,它的源mac并没有改变,但是源ip变化了,在1接受时,还是会把这些包丢弃, 建议你使用源ip匹配过来测试一下

#6


不是这样的,这里的节点的IP都是设置固定的,

#7


我是说你用这条规则测试一下,加到节点1中

iptales -A INPUT -s  "ip3" -j DROP 

#8


这个我以前试过,貌似是不能过滤掉IP3的数据,执行后还能通

#9


引用 8 楼 lili88881216 的回复:
这个我以前试过,貌似是不能过滤掉IP3的数据,执行后还能通


如果是这样,就说明3的数据能够通过2转发到1啊,因为3经过2时做了snat转换,把源地址修改了
把规则匹配数据包打印出来就可以判断出来了

#10


使用route -n把你的路由路径贴出来

#11


Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.7.2     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.0     *               255.255.255.0   U     0      0        0 wlan0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0这是过滤后的节点1的路由表信息

#12


Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.7.1     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.3     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.0     *               255.255.255.0   U     0      0        0 wlan0这是节点2的路由表信息

#13


Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.7.1     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.3     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.0     *               255.255.255.0   U     0      0        0 wlan0这是节点2的路由表信息

#14


看起来节点1没有到节点3的路由,或许你的aodv就没正确运行起来,三个板子都需要aodv

#15


该回复于2015-06-04 17:28:30被管理员删除

#16


打开linux kernel的route功能,以及ip_forwards=1

#17


引用 16 楼 qq_28744937 的回复:
打开linux kernel的route功能,以及ip_forwards=1

你好,我这里是运行aodv路由协议,普通路由节点进行数据转发,不是网关节点进行数据转发,不知道你说的是不是我这种情况

#18


打开linux kernel的route功能,具体是什么呀?我里面的route基本都配置了的

#19


请问楼主解决了吗??遇到同样问题,求指教!!!多谢!!!

#1


iptables规则是什么

1能ping通2     2能ping通3吗

把1 2 3 的路由规则贴一下

#2


在节点1使用iptable过滤掉来自节点3的数据,在过滤之前是能ping通1、3的,过滤后不能ping通,需要通过节点2转发,但是节点2没有实现转发功能,iptables是根据节点3的MAC地址来过滤的,iptales -A INPUT -m mac –mac-source 44:33:4c:10:60:f6 -j DROP

#3


转发需要打开linux kernel的route功能,以及ip_forwards=1

#4


route是勾选了advanced router吗?ip_forwards=1 这个我是设置成这个样子的!

#5


引用 2 楼 lili88881216 的回复:
在节点1使用iptable过滤掉来自节点3的数据,在过滤之前是能ping通1、3的,过滤后不能ping通,需要通过节点2转发,但是节点2没有实现转发功能,iptables是根据节点3的MAC地址来过滤的,iptales -A INPUT -m mac –mac-source 44:33:4c:10:60:f6 -j DROP


根据你这个规则,1到3的包能正常发出, 3到1的包也能正常回复,只是1在接受到来着3的包时,把包丢弃了,中间不需要2来进行转发,所以这样测试并不能证明2没有转发功能

你可以在iptables规则链中看到这些丢弃的包,因为从3过来的包,如果经过2的话,它的源mac并没有改变,但是源ip变化了,在1接受时,还是会把这些包丢弃, 建议你使用源ip匹配过来测试一下

#6


不是这样的,这里的节点的IP都是设置固定的,

#7


我是说你用这条规则测试一下,加到节点1中

iptales -A INPUT -s  "ip3" -j DROP 

#8


这个我以前试过,貌似是不能过滤掉IP3的数据,执行后还能通

#9


引用 8 楼 lili88881216 的回复:
这个我以前试过,貌似是不能过滤掉IP3的数据,执行后还能通


如果是这样,就说明3的数据能够通过2转发到1啊,因为3经过2时做了snat转换,把源地址修改了
把规则匹配数据包打印出来就可以判断出来了

#10


使用route -n把你的路由路径贴出来

#11


Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.7.2     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.0     *               255.255.255.0   U     0      0        0 wlan0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0这是过滤后的节点1的路由表信息

#12


Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.7.1     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.3     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.0     *               255.255.255.0   U     0      0        0 wlan0这是节点2的路由表信息

#13


Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.7.1     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.3     *               255.255.255.255 UH    1      0        0 wlan0
192.168.7.0     *               255.255.255.0   U     0      0        0 wlan0这是节点2的路由表信息

#14


看起来节点1没有到节点3的路由,或许你的aodv就没正确运行起来,三个板子都需要aodv

#15


该回复于2015-06-04 17:28:30被管理员删除

#16


打开linux kernel的route功能,以及ip_forwards=1

#17


引用 16 楼 qq_28744937 的回复:
打开linux kernel的route功能,以及ip_forwards=1

你好,我这里是运行aodv路由协议,普通路由节点进行数据转发,不是网关节点进行数据转发,不知道你说的是不是我这种情况

#18


打开linux kernel的route功能,具体是什么呀?我里面的route基本都配置了的

#19


请问楼主解决了吗??遇到同样问题,求指教!!!多谢!!!