ipv6访问samba服务器失败
问题来源:
接触samba已经有一段时间了,前段时间遇到了ipv6访问samba服务器失败的问题,这个问题花费了时间挺长,现在将它记录下来。
众所周知,samba源码编译后可以同时支持ipv4和ipv6访问,对于samba在ubuntu的下载与安装,可以参考我的博文(https://mp.****.net/postedit/102581475),之所以会遇到上述问题,本人需要对官网的samba源码进行剪裁,使之可以运行在特定的嵌入式板子上。
错误原因:
在samba-4.0.24\lib\replace路径下,存在名为getaddrinfo.c的文件,该文件说明如下图所示,主要定义了一些函数,如getaddrinfo等,在当前平台没有这些函数时可以使用。但都只支持ipv4,不支持ipv6。我当前使用的嵌入式板子集成了linux kernel,具有getaddrinfo等库函数。而我错误在makefile中编译了此文件,导致samba ipv6 server一直建立失败。
解决方案:
在makefile中去掉对getaddrinfo.c文件的编译,并且在samba的config.h文件中声明本平台支持getaddrinfo函数功能即#define HAVE_GETADDRINFO 1
对于getaddrinfo函数,大家可以参考博文:
https://www.cnblogs.com/fnlingnzb-learner/p/7542770.html
https://linux.die.net/man/3/getaddrinfo
https://www.cnblogs.com/battzion/p/4235562.html