我想搭建的场景为:模拟组建一个ad hoc网络,有一个主控节点可以通过路由协议来控制其他几个节点的移动性。具体实现:3个arm板置于可以有轮的小车上,通过电路的连接,arm板可以通过程序来控制小车的移动。
我们现在是四个节点组成的ad-hoc网络,所用的路由协议为aodv-uu-0.9.6。一个节点是台式电脑(以下成为节点1),另外三个节点都是ARM板(mini6410)+Linux系统(以下成为节点2,3,4)置于小车上来实现移动性,我们将kaodv.ko编译进了内核然后放入了ARM中,网络的配置也都是按照网上所说,模式为ad-hoc,网络都配置在了一个网段192.168.1。然后将四个节点启动
aodvd应用程序,每个节点都能搜到剩余的三个相邻节点(因为几个arm板位置比较近),查看路由表也能看到邻节点的路由,但都是一跳的;
起初我们用iptables的方式屏蔽了节点1发往节点2的数据,然后节点1和节点2就不能ping通了(也就是不能找到中间节点进行转发),然后我们人为的在节点1的路由表中加入了经由 节点3 中继,目的节点为节点2的路由表项,此时节点1和 节点2 就可以
ping通了。
后来我们用了远距离断开链路的方式将节点1和节点2的一跳链路断开,节点3 放在了他们之间,保证节点1,2都能分别和节点3
ping通,但是就是不能寻找到节点1 和节点2的路由,ping的时候一直显示目的节点不可达。你看这是什么问题呢?
另,我觉得有必要把我们前期的编译工作说明一下,看是否是前期出了问题:
版本相关:
Linux 系统 Fedora9
内核 Linux2.6.38
交叉编译器 arm-linux-gcc-4.5.1
路由协议 aodv-uu-0.9.6.tar
(1)下载tar包后对其进行解压。
(2)PC版本和ARM版本分别执行命令make和make arm生成aodvd。
(3)进入lns文件夹执行make命令生成kaodv.ko。
(4)网络环境配置搭建如下所示:
#iwconfig wlan3 mode ad-hoc essid aodv-test
#ifconfig wlan3 192.168.1.1 up
# insmod kaodv.ko
#./ aodvd
跪求大神给予指导~~跪谢!!
30 个解决方案
#1
楼主,请问你是怎么解决的?遇到同样的问题了
#2
还没能解决,来这里寻求大神给予指导呢~~你也在做类似的东西么?多交流交流~~
#3
Linux内核版本、路由协议版本、交叉编译器版本都和你的一样,我直接用iptables命令过滤,使得1和3之间不能直接通信,运行aodv协议后想通过2实现转发,协议运行后,能发现邻居节点并添加到路由表,但是1和3还是ping不通,不知道哪里有问题,很捉急
#4
那你1和3的路由表中有没有经过2中继的这条路由呢?跟你的问题很像呢~~我是自己手动添加了这条转发路由,就能ping通了 但这种手动的办法也不是办法啊~~
#5
我感觉运行路由协议后我的路由表不正确,我的1\2\3都是ARM板,运行aodv后用route命令查看时,1和3显示目的节点都是2,你是怎么手动添加路由的啊,ARM板上好像不能手动添加带有中继的路由。看很多资料都是运行了aodv后可以直接实现路由转发啊,为啥就不能ping通呢 ,求指导
#6
AODV路由配置都很简单,
首先转发要打开Linux内核的转发功能,ip_forward = 1
首先转发要打开Linux内核的转发功能,ip_forward = 1
#7
我觉得你的路由表是对的,因为你用iptables屏蔽了,1和3之间就没有路由了 只有到2的路由。。就是没有实现转发功能~~
手动添加路由的具体命令我也忘了 你可以搜下 不过也没啥意义、。
你可以看下6楼的回复,试试如何~~
#8
好的,谢谢两位,是直接用命令配置linux下的转发功能就行?楼主有试过吗 你的问题解决了吗
#9
请问6楼,我想运行路由协议实现三个节点之间的转发,还需要怎么配置啊,能不能给我说的详细点儿啊,非常感谢~~
#10
还没试 我明天查看下默认的是不是0
#11
没懂这个ip_forward在哪里查看和设置,求指导,囧~~
#12
其实大部分Linux的VPN模块(ppp),基本上都采用了路由转发。当然,如果想用Linux实现最基本的路由(交换机)功能,前提也需要开启内核转发服务。在进行Linux内核转发时,需要在proc文件系统的proc/sys目录设置转发的参数,可以使用下面的方法查看该参数的值 cat /proc/sys/net/ipv4/ip_forward
1、开启Linux内核转发
echo "1" > /proc/sys/net/ipv4/ip_forward
SSH执行以上命令,1为开启,0为关闭。
2、保持开机自动启动
vi /etc/sysctl.conf
修改以下字符
# Controls IP packet forwarding
net.ipv4.ip_forward = 0 #0为关闭,1为开启
修改后保存即可,下次开机后可自动加载。
关于如何实现NAT功能,可以配合iptables或ppp,具体请参考以后的教程。
试试~~
#13
楼主你试过了吗?你问题解决了没啊?我用命令查看ip_forward原来是0,设置为1以后,终端1和3之间想通过2转发还是ping不通啊,请问你解决了吗?
#14
第一,先看路由表中是否有路由。
第二,ip_forward必须在内核编译打开router选项,设置ip_forward=1才有效
第二,ip_forward必须在内核编译打开router选项,设置ip_forward=1才有效
#15
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
#16
您的意思是说 即使没有打开router选项和设置ip_forward=1,路由表中也应该有转发的路由项?
#17
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
#18
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
你尝试用以下方式设置ip_forward的值了么?
保持开机自动启动
vi /etc/sysctl.conf
修改以下字符
# Controls IP packet forwarding
net.ipv4.ip_forward = 0 #0为关闭,1为开启
修改后保存即可,下次开机后可自动加载。
为何我的找不到/etc/sysctl.conf文件
#19
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
#20
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
额。。这样呀,我也只是修改了一下,没有试能否转发,话说make meunconfig中有router这个选项么。。不能没选吧,要不怎么能实现一跳呢。。好惆怅,过年要回家了,来年再战,有了新的情况及时来更新哦~~
#21
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
多跳问题解决了没?
#22
没有呢,就是不能自动转发,最近刚回到学校在忙其他事儿的,你的搞得怎么样啦
#23
没有呢,就是不能自动转发,最近刚回到学校在忙其他事儿的,你的搞得怎么样啦
我也刚回来两天,我突然想起来我这边用了iptables以后,路由表中就没有转发的路由,这是不是说明路由协议没有运行正确呢。。留下你的QQ或者邮箱什么的吧,方便联系~~
#24
好的啊 我的QQ是1430429215 我也是用了iptables命令过滤之后,再运行aodv协议时,用route查看路由表 里面没有转发的路由,只有可以直达的一跳路由 不知道是路由协议没有运行正确 还是不能转发的问题
#25
有谁解决了吗?我的也不能实现转发!
#26
请问楼主解决了吗?
#27
我觉得iptables是不是和aodv-uu冲突啊??我是靠拉长距离可以实现多跳,但是我想在板子(tiny6410)上使用NAT,但内核编译一加入NAT的功能后,aodv-uu就不能正常运行了,无法找到邻居节点。。你的内核是编译了哪些模块?
#28
请问下:现在有没有人做出来呀,遇到什么问题了?大家都交流交流呗....
#29
我现在边编译都通不过了!!!!!!
楼主可否把AODV的两层目录下的Makefile分享一下!
楼主可否把AODV的两层目录下的Makefile分享一下!
#30
大家有没有在linux内核3.5以上编译过这个路由协议啊,
今天试了下出现了好多的错误,没有头绪了,网上基本都是在2.6内核版本上进行的
今天试了下出现了好多的错误,没有头绪了,网上基本都是在2.6内核版本上进行的
#1
楼主,请问你是怎么解决的?遇到同样的问题了
#2
楼主,请问你是怎么解决的?遇到同样的问题了
还没能解决,来这里寻求大神给予指导呢~~你也在做类似的东西么?多交流交流~~
#3
Linux内核版本、路由协议版本、交叉编译器版本都和你的一样,我直接用iptables命令过滤,使得1和3之间不能直接通信,运行aodv协议后想通过2实现转发,协议运行后,能发现邻居节点并添加到路由表,但是1和3还是ping不通,不知道哪里有问题,很捉急
#4
Linux内核版本、路由协议版本、交叉编译器版本都和你的一样,我直接用iptables命令过滤,使得1和3之间不能直接通信,运行aodv协议后想通过2实现转发,协议运行后,能发现邻居节点并添加到路由表,但是1和3还是ping不通,不知道哪里有问题,很捉急
那你1和3的路由表中有没有经过2中继的这条路由呢?跟你的问题很像呢~~我是自己手动添加了这条转发路由,就能ping通了 但这种手动的办法也不是办法啊~~
#5
我感觉运行路由协议后我的路由表不正确,我的1\2\3都是ARM板,运行aodv后用route命令查看时,1和3显示目的节点都是2,你是怎么手动添加路由的啊,ARM板上好像不能手动添加带有中继的路由。看很多资料都是运行了aodv后可以直接实现路由转发啊,为啥就不能ping通呢 ,求指导
#6
AODV路由配置都很简单,
首先转发要打开Linux内核的转发功能,ip_forward = 1
首先转发要打开Linux内核的转发功能,ip_forward = 1
#7
我感觉运行路由协议后我的路由表不正确,我的1\2\3都是ARM板,运行aodv后用route命令查看时,1和3显示目的节点都是2,你是怎么手动添加路由的啊,ARM板上好像不能手动添加带有中继的路由。看很多资料都是运行了aodv后可以直接实现路由转发啊,为啥就不能ping通呢 ,求指导
我觉得你的路由表是对的,因为你用iptables屏蔽了,1和3之间就没有路由了 只有到2的路由。。就是没有实现转发功能~~
手动添加路由的具体命令我也忘了 你可以搜下 不过也没啥意义、。
你可以看下6楼的回复,试试如何~~
#8
好的,谢谢两位,是直接用命令配置linux下的转发功能就行?楼主有试过吗 你的问题解决了吗
#9
请问6楼,我想运行路由协议实现三个节点之间的转发,还需要怎么配置啊,能不能给我说的详细点儿啊,非常感谢~~
#10
好的,谢谢两位,是直接用命令配置linux下的转发功能就行?楼主有试过吗 你的问题解决了吗
还没试 我明天查看下默认的是不是0
#11
没懂这个ip_forward在哪里查看和设置,求指导,囧~~
#12
没懂这个ip_forward在哪里查看和设置,求指导,囧~~
其实大部分Linux的VPN模块(ppp),基本上都采用了路由转发。当然,如果想用Linux实现最基本的路由(交换机)功能,前提也需要开启内核转发服务。在进行Linux内核转发时,需要在proc文件系统的proc/sys目录设置转发的参数,可以使用下面的方法查看该参数的值 cat /proc/sys/net/ipv4/ip_forward
1、开启Linux内核转发
echo "1" > /proc/sys/net/ipv4/ip_forward
SSH执行以上命令,1为开启,0为关闭。
2、保持开机自动启动
vi /etc/sysctl.conf
修改以下字符
# Controls IP packet forwarding
net.ipv4.ip_forward = 0 #0为关闭,1为开启
修改后保存即可,下次开机后可自动加载。
关于如何实现NAT功能,可以配合iptables或ppp,具体请参考以后的教程。
试试~~
#13
楼主你试过了吗?你问题解决了没啊?我用命令查看ip_forward原来是0,设置为1以后,终端1和3之间想通过2转发还是ping不通啊,请问你解决了吗?
#14
楼主你试过了吗?你问题解决了没啊?我用命令查看ip_forward原来是0,设置为1以后,终端1和3之间想通过2转发还是ping不通啊,请问你解决了吗?
第二,ip_forward必须在内核编译打开router选项,设置ip_forward=1才有效
#15
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
#16
第一,先看路由表中是否有路由。
楼主你试过了吗?你问题解决了没啊?我用命令查看ip_forward原来是0,设置为1以后,终端1和3之间想通过2转发还是ping不通啊,请问你解决了吗?
第二,ip_forward必须在内核编译打开router选项,设置ip_forward=1才有效
您的意思是说 即使没有打开router选项和设置ip_forward=1,路由表中也应该有转发的路由项?
#17
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
#18
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
你尝试用以下方式设置ip_forward的值了么?
保持开机自动启动
vi /etc/sysctl.conf
修改以下字符
# Controls IP packet forwarding
net.ipv4.ip_forward = 0 #0为关闭,1为开启
修改后保存即可,下次开机后可自动加载。
为何我的找不到/etc/sysctl.conf文件
#19
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
#20
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
额。。这样呀,我也只是修改了一下,没有试能否转发,话说make meunconfig中有router这个选项么。。不能没选吧,要不怎么能实现一跳呢。。好惆怅,过年要回家了,来年再战,有了新的情况及时来更新哦~~
#21
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
多跳问题解决了没?
#22
没有呢,就是不能自动转发,最近刚回到学校在忙其他事儿的,你的搞得怎么样啦
#23
没有呢,就是不能自动转发,最近刚回到学校在忙其他事儿的,你的搞得怎么样啦
我也刚回来两天,我突然想起来我这边用了iptables以后,路由表中就没有转发的路由,这是不是说明路由协议没有运行正确呢。。留下你的QQ或者邮箱什么的吧,方便联系~~
#24
好的啊 我的QQ是1430429215 我也是用了iptables命令过滤之后,再运行aodv协议时,用route查看路由表 里面没有转发的路由,只有可以直达的一跳路由 不知道是路由协议没有运行正确 还是不能转发的问题
#25
有谁解决了吗?我的也不能实现转发!
#26
请问楼主解决了吗?
#27
我觉得iptables是不是和aodv-uu冲突啊??我是靠拉长距离可以实现多跳,但是我想在板子(tiny6410)上使用NAT,但内核编译一加入NAT的功能后,aodv-uu就不能正常运行了,无法找到邻居节点。。你的内核是编译了哪些模块?
#28
请问下:现在有没有人做出来呀,遇到什么问题了?大家都交流交流呗....
#29
我现在边编译都通不过了!!!!!!
楼主可否把AODV的两层目录下的Makefile分享一下!
楼主可否把AODV的两层目录下的Makefile分享一下!
#30
大家有没有在linux内核3.5以上编译过这个路由协议啊,
今天试了下出现了好多的错误,没有头绪了,网上基本都是在2.6内核版本上进行的
今天试了下出现了好多的错误,没有头绪了,网上基本都是在2.6内核版本上进行的