您的位置:首页 > 其它

samba为啥不监听ipv4地址?

2012-11-25 01:30 204 查看
warning:samba address already in use

这是我在帮助RHCSA的一名同学排除samba共享错误时的一点小的收获,在排错的过程中我也学会了怎样去查询帮助。遇到类似的错误怎么样去获取关键信息,抽丝拨茧,懂得其原理。

-----------------------------------

作者:mosquito

日期:2012.11.22 22:45

-----------------------------------


问题描述:

在搭建samba服务器的时候,遇到一个奇怪的问题。具体如下:

1.安装:yum install samba*

2.smb.conf:

[global]

workgroup = WORKGROUP

server string = Samba Server Version %v

interfaces = lo eth0 192.168.0.0/24 192.168.13.2/24

security = user

passdb backend = tdbsam

[homes]

comment = Home Directories

browseable = yes

writable = yes

path = /home/smbuser

valid users = smbuser

3.smbpasswd -a smbuser

4.service smb start

5.访问samba服务器

# smbclient -L 192.168.0.250

Enter root's password:

Anonymous login successful

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]

Sharename Type Comment

--------- ---- -------

homes Disk Home Directories

IPC$ IPC IPC Service (Samba Server Version 3.5.10-125.el6)

Fax:2 Printer Fax

Microsoft_XPS_Document_Writer:1 Printer Microsoft XPS Document Writer

Anonymous login successful

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]

Server Comment

--------- -------

Workgroup Master

--------- -------

#smbclient //192.168.0.250/homes -U smbuser%redhat

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]

smb: \> ls

. D 0 Thu Nov 22 21:43:42 2012

.. D 0 Thu Nov 22 21:41:04 2012

.bashrc H 124 Fri May 11 02:45:52 2012

.gnome2 DH 0 Fri Nov 12 09:04:19 2010

.bash_logout H 18 Fri May 11 02:45:52 2012

.bash_history H 289 Thu Nov 22 22:00:07 2012

.mozilla DH 0 Thu Oct 25 02:55:23 2012

.bash_profile H 176 Fri May 11 02:45:52 2012

可以登录~!但问题不在这。

检查端口发现smbd仅监听了ipv6端口,查看日志发现点问题。

# netstat -natulp | grep smb

tcp 0 0 :::139 :::* LISTEN 17364/smbd

tcp 0 0 :::445 :::* LISTEN 17364/smbd

#tailf /var/log/message

Nov 22 21:56:41 rhevm smbd[17326]: [2012/11/22 21:56:41.688944, 0] smbd/server.c:501(smbd_open_one_socket)

Nov 22 21:56:41 rhevm smbd[17326]: smbd_open_once_socket: open_socket_in: Address already in use

日志显示smbd端口地址已在使用,不会有什么问题吧?

解决方法1:

# echo 1 > /proc/sys/net/ipv6/bindv6only

# echo "net.ipv6.bindv6only = 1" >> /etc/sysctl.conf

or

#sysctl -w net.ipv6.bindv6only=1 //–w 改变配置

#lsof -i:445 //查看端口

将/proc/sys/net/ipv6/bindv6only设置为0时,smbd将只监听ipv6上的端口。

将/proc/sys/net/ipv6/bindv6only设置为1时,smbd将同时监听ipv6和ipv4上的端口。

解决方法2:

编辑smb.conf文件,添加全局配置bind interfaces only = yes

通过搜索一些文档,目标似乎都集中在了bindv6only这个内核参数。

继续查看内核文档

#cat /usr/share/doc/kernel-doc-2.6.32/Documentation/networking/ip-sysctl.txt | grep bindv6only -n5

----

bindv6only - BOOLEAN

Default value for IPV6_V6ONLY socket option,

which restricts use of the IPv6 socket to IPv6 communication

only.

TRUE: disable IPv4-mapped address feature

FALSE: enable IPv4-mapped address feature

Default: FALSE (as specified in RFC2553bis)

内核文档里面对这个参数进行了说明,它是一个bool值开关。

设置为1时,关闭ipv4映射地址的特性

设置为0时,开启ipv4映射地址的特性

默认设置为0。详情需要参考RFC2553。

通过查看RFC2553获得了一些信息:

RFC2553描述了IPv4映射地址和IPv6通配绑定套字的特殊行为。规格允许:

通过AF_INET6通配绑定套接字接受IPv4连接。

使用特殊形式的地址 (如 ::ffff:10.1.1.1 ) 通过AF_INET6套接字传输IPv4数据包。

通过RFC2553规定的规则,将linux默认所有来自IPv4地址的访问转换为IPv6地址的格式从而处理来自于IPv4的连接。

当bindv6only这个内核参数设置为0时,对所有来自于ipv4的请求都绑定到ipv6地址。简单说就是端口可以接收ipv4的包,也可以接收ipv6的包。

当bindv6only这个内核参数设置为1时,对于来自ipv4的请求就打开多个端口进行监听和处理。Ipv4与ipv6所监听的端口是分开的。

结论:bindv6only参数是linux内核默认开启的参数,并且不会对系统运行产生什么不良影响。应当是ipv4向ipv6过渡时,为了向下兼容所开发的两种端口的运行模式。

附:我在samba成功登陆时,确实看到了rfc2553规定的这种特殊格式的地址。

# netstat -natulp | grep smbd

tcp 0 0 :::139 :::* LISTEN 17364/smbd

tcp 0 0 :::445 :::* LISTEN 17364/smbd

tcp 0 0 ::ffff:192.168.0.250:445 ::ffff:192.168.0.249:53679 ESTABLISHED 17474/smbd

# smbstatus

Samba version 3.5.10-125.el6

PID Username Group Machine

-------------------------------------------------------------------

17474 smbuser smbuser mosquito (::ffff:192.168.0.249)

Service pid machine Connected at

-------------------------------------------------------

smbuser 17474 mosquito Thu Nov 22 22:00:55 2012

Locked files:

Pid Uid DenyMode Access R/W Oplock SharePath Name Time

--------------------------------------------------------------------------------------------------

17474 501 DENY_NONE 0x100081 RDONLY NONE /home/smbuser . Thu Nov 22 22:00:55 2012
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: