Mar 23, 2007

SMB サーバ経由で外付け USB HDD にアクセス

後輩から Thinkpad T41 で USB 2.0 が使えないと聞き、自分の環境も そうなっているのに気づいた。いろいろ調べてみたり、別の後輩に BIOS ダウングレードなどもやってもらってみたが、ダメみたい。 同じ目にあっている人はたくさんいるようだ。ソフトウェア的問題なのか、 それともみんなハードウェア的に壊れたのか(壊れやすいという問題なのか) わからない。

LINUX デスクトップを samba サーバにして、それ経由で USB 外部ディスクにアクセスした。

USB-HDD <-USB-> LINUX Desktop <-Ether-> XP Laptop

<-Ether-> 部分が無線LAN 802.11a で 19Mbps、有線 100TX で 56Mbps から 72Mbps くらい出た。有線でやったときはスループットが 揺れてた(TCP Monitor 調べ)ので、ネックはネットワークの パフォーマンスじゃないかも。

まず、Linux Desktop で USB-HDD を認識する。 これはほとんどやることが無かった。 USBに刺したら、/media/usbdisk に mount された。 確認するときは:

% cat /proc/bus/usb/devices
      :
T:  Bus=01 Lev=01 Prnt=01 Port=06 Cnt=01 Dev#= 10 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=04bb ProdID=010b Rev= 1.00
S:  Manufacturer=I-O DATA DEVICE,INC.
S:  Product=HDH-UL series
S:  SerialNumber=019A0080
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

% cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: HDS725050KLA360 Rev: K2AO Type: Direct-Access ANSI SCSI revision: 05 Host: scsi8 Channel: 00 Id: 00 Lun: 00 Vendor: Maxtor 6 Model: B300R0 Rev: BAH4 Type: Direct-Access ANSI SCSI revision: 02 % cat /proc/scsi/usb-storage/8 Host scsi8: usb-storage Vendor: I-O DATA DEVICE,INC. Product: HDH-UL series Serial Number: 019A0080 Protocol: Transparent SCSI Transport: Bulk Quirks:

% dmesg | less usb 1-7: new high speed USB device using ehci_hcd and address 12 usb 1-7: configuration #1 chosen from 1 choice scsi10 : SCSI emulation for USB Mass Storage devices usb-storage: device found at 12 usb-storage: waiting for device to settle before scanning Vendor: Maxtor 6 Model: B300R0 Rev: BAH4 Type: Direct-Access ANSI SCSI revision: 02 SCSI device sdd: 586110608 512-byte hdwr sectors (300089 MB) sdd: Write Protect is off sdd: Mode Sense: 03 00 00 00 sdd: assuming drive cache: write through SCSI device sdd: 586110608 512-byte hdwr sectors (300089 MB) sdd: Write Protect is off sdd: Mode Sense: 03 00 00 00 sdd: assuming drive cache: write through sdd: sdd1 sd 10:0:0:0: Attached scsi disk sdd usb-storage: device scan complete

参考: Link

次に、LINUX Desktop で iptables と smb の設定。

/etc/sysconfig/iptables に netbios-ssn の行を追加して /etc/rc.d/init.d/iptables restart.

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p 89 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport netbios-ssn -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT

/etc/samba/smb.conf を設定。

[global]
   workgroup = MYGROUP
   server string = plant
   hosts allow = 127. A.B.C.D/25 E.F.G.H/24 I.J.K.L/24
   printcap name = /etc/printcap
   load printers = yes
   cups options = raw
   log file = /var/log/samba/%m.log
   max log size = 50
   security = user
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
   dns proxy = no
   idmap uid = 16777216-33554431
   idmap gid = 16777216-33554431
   template shell = /bin/false
   winbind use default domain = no

[home] path = /home/%S comment = Home Directory writable = yes guest ok = no browseable = no

[usbdisk] path = /media/usbdisk guest ok = yes writable = yes browseable = yes

[homes] path = /home comment = Home Directories writable = no read only = yes guest ok = yes browseable = yes

ある程度ログが出るように、/etc/sysconfig/samba を以下に。

# Options to smbd
SMBDOPTIONS="-D -d 1"
# Options to nmbd
NMBDOPTIONS="-D -d 1"
# Options for winbindd
WINBINDOPTIONS=""

nobody や guest などの UNIX account を設定して、 smbpasswd -a user する。

これで、Windows XP のエクスプローラのアドレスに

\\A.B.C.D\
などと入れると、共有できる。(A.B.C.D は Desktop のIPアドレス。)

Posted at 20:17 in howto | WriteBacks (0) | Edit
WriteBacks
TrackBack ping me at
http://www.sfc.wide.ad.jp/~yasu/nblog/howto/smb-access-to-usb-hd.trackback
Post a comment

writeback message: Ready to post a comment.