samba爲啥不監聽ipv4地址?

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章