2

概要:

これは 2 部構成の質問です。ある ISP でルーターを使用した単純な Samba 共有は機能しませんが、別の ISP で同じルーターをセットアップし、同じ Samba 構成の同様のサーバーを使用すると機能します。

ルーターが SSH などを正常に転送しているにもかかわらず、ポートを転送していないか、または ISP が標準の Samba ポートをブロックしているようです。なぜうまくいかないのか分からず、まだ原因を絞り込もうとしています。

2 番目の質問は、Windows 7、XP、エンド ユーザー向けのシンプルなクライアントを備えた Mac および Linux サーバー。

stackoverflow 以外の新しい友人が、解決策として sshfs を手伝ってくれました。CentOS では、ssh はすでに sshfs をサポートしています。Windows クライアントのwin-sshfsはうまく機能しており、 UOで説明されている MACFusion で OSXFUSE を試してみます。

さらに、各人に Linux ユーザーをセットアップします。Linux グループの全員が書き込みできるようにするには、 serverfaultのこの質問で説明されている /etc/ssh/sshd_config の umask を変更します。人々はまず自分のホーム ディレクトリにアクセスします。そこには、スティッキー ビットが設定された共有フォルダへのリンクを配置して、フォルダを削除できないようにしています。リンクを削除することはできますが、元に戻すのは簡単です。私が見ることができる唯一の問題は、ファイルのロックの欠如と自動更新の欠如です。


元の質問:

インターネット経由で Centos 6.3 サーバー上で Samba を動作させることができないようです。別のインターネット接続に同様のテストサーバーがあり、まったく同じセットアップで正常に動作しています。http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/diagnosis.htmlを調べました2回、ポートがインターネットに転送されていることを確認し(実際に開いていることをテストする方法はわかりませんが)、samba構成を再確認し、/tmpを共有しているのは今だけです。ユーザー アカウントがセットアップされ、ssh で /tmp にアクセスでき、samba パスワードが同じに設定されます。サーバーにpingを実行できませんが、これはルーターまたはIPが所有者/仕事によってping可能に設定されていないためです. SSH および HTTPS Apache は、ポートが同じ方法で転送されるサーバー上で適切に機能します。私はそこにいないので、まだローカルネットワーク内で共有をテストできていませんが、内部的には機能するはずです。Windows 7 から接続しようとすると、タイムアウトになり、プロンプトが表示されず、接続されませんでしたが、自分のインターネット接続上のテスト サーバーは常に内部および外部で動作しています。

どんな助けでも大歓迎です。

要件は、外部インターネット接続を介して動作する Windows 7、XP、Mac、および Linux サーバー間で使用するための「ドロップボックス」を使用する代わりに、内部でホストされた共有フォルダーを簡単に使用できることです。頻繁に使用されることはありませんが、迅速で、クライアント側でのアクセス/セットアップが簡単で、ビジネス用に安全である必要があります。CentOS にインストールする代替手段があれば、それも素晴らしいでしょう。

ありがとうございました!アンドリュー

詳細を編集する:

ポートは転送されます:

(画像はありましたが、新しいユーザーとして投稿できません) 137、138、139、445 はすべて、テスト用に TCP と UDP の両方で転送されます。

smb.conf は、動作中のテスト サーバーとまったく同じように簡単にセットアップされます。

# cat /etc/samba/smb.conf
[global]
workgroup=WORKGROUP
log level = 3
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam

[tmp]
comment = temporary files
path = /tmp
read only = yes

適切な措置のために Samba を再起動しました。

# service smb restart
Shutting down SMB services:                                [  OK  ]
Starting SMB services:                                     [  OK  ]

テスト サーバーで正常に動作する \ として共有にアクセスしようとすると、Windows 7 がタイムアウトします。

(スクリーンショットはありましたが、新しいユーザーは投稿できません)

エラー 0x80004005 を検索すると、http: //answers.microsoft.com/en-us/windows/forum/windows_vista-networking/cannot-access-network-share-get-unspecified-error/9f840844-9d5b-e011- が表示されます。 8dfc-68b599b31bf5

ワークグループを確認し、設定を共有し、Windows を再起動しました。テスト共有が機能するので、Windows マシンは機能していると思います。詳細を続けます。

もう一度編集します。

トラブルシューティング ガイドにもう一度従います。

smb.conf を次のように単純化します。

# cat /etc/samba/smb.conf
[tmp]
comment = temporary files
path = /tmp
read only = yes

/etc/resolv.conf は ISP サーバーを使用しており、それらは機能します。それらは動作中のサーバーの DNS とは異なりますが、その DNS は別の ISP にあります。

# nslookup google.com
Server:         71.242.0.12
Address:        71.242.0.12#53

Non-authoritative answer:
Name:   google.com
Address: 74.125.228.2

私は IP アドレスですべてを行っているので、DNS が機能するかどうかはわかりません。

楽しみのために smb.conf に dns proxy = no を追加しましたが、それは役に立ちませんでした。

/var/log/samba/log.smbd は、稼働中のサーバーと異なるものを報告しません:

[2012/09/20 16:59:41,  0] smbd/server.c:1141(main)
  smbd version 3.5.10-125.el6 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2010
[2012/09/20 16:59:41.484699,  0] param/loadparm.c:7648(lp_do_parameter)
  Global parameter dns proxy found in service section!
[2012/09/20 16:59:41.486645,  0] printing/print_cups.c:109(cups_connect)
  Unable to connect to CUPS server localhost:631 - Connection refused
[2012/09/20 16:59:41.486809,  0] printing/print_cups.c:468(cups_async_callback)
  failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
[2012/09/20 16:59:41.507198,  0] smbd/server.c:501(smbd_open_one_socket)
  smbd_open_once_socket: open_socket_in: Address already in use
[2012/09/20 16:59:41.507407,  0] smbd/server.c:501(smbd_open_one_socket)
  smbd_open_once_socket: open_socket_in: Address already in use
[2012/09/20 17:00:39,  0] smbd/server.c:1141(main)
  smbd version 3.5.10-125.el6 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2010
[2012/09/20 17:00:39.513793,  0] printing/print_cups.c:109(cups_connect)
  Unable to connect to CUPS server localhost:631 - Connection refused
[2012/09/20 17:00:39.513955,  0] printing/print_cups.c:468(cups_async_callback)
  failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
[2012/09/20 17:00:39.535458,  0] smbd/server.c:501(smbd_open_one_socket)
  smbd_open_once_socket: open_socket_in: Address already in use
[2012/09/20 17:00:39.535689,  0] smbd/server.c:501(smbd_open_one_socket)
  smbd_open_once_socket: open_socket_in: Address already in use

ただし、稼働中のサーバーは、log という名前のディレクトリにログ ファイルを作成します。これは、稼働していないサーバーにはありません。

テストパラメーター:

# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[tmp]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]

[tmp]
        comment = temporary files
        path = /tmp

継続中...

続き:

nmb も実行されています。

# service nmb restart
Shutting down NMB services:                                [  OK  ]
Starting NMB services:                                     [  OK  ]

通常、ルーターでは「インターネット ポートの Ping に応答する」がオフになっています。Windows クライアントとサーバーの両方でオンにしました。それぞれがお互いに ping を実行できますが、共有はまだ機能しません。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\xxxx>ping xxxx

Pinging xxxx with 32 bytes of data:
Reply from xxxx: bytes=32 time=25ms TTL=51
Reply from xxxx: bytes=32 time=23ms TTL=51
Reply from xxxx: bytes=32 time=26ms TTL=51
Reply from xxxx: bytes=32 time=24ms TTL=51

Ping statistics for xxxx:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 23ms, Maximum = 26ms, Average = 24ms


# ping xxxx -c 5
PING xxxx (xxxx) 56(84) bytes of data.
64 bytes from xxxx: icmp_seq=1 ttl=251 time=20.7 ms
64 bytes from xxxx: icmp_seq=2 ttl=251 time=24.6 ms
64 bytes from xxxx: icmp_seq=3 ttl=251 time=21.4 ms
64 bytes from xxxx: icmp_seq=4 ttl=251 time=25.3 ms
64 bytes from xxxx: icmp_seq=5 ttl=251 time=22.9 ms

--- xxxx ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4029ms
rtt min/avg/max/mdev = 20.776/23.022/25.319/1.764 ms

継続中...

続き:

iptables はオフです:

# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

SELinux はオフです:

# sestatus
SELinux status:                 disabled

samba でユーザー設定を使用するsmbclientは、samba サーバーからそのローカル IP および外部 IP に対して機能します。Windows クライアントは以下を取得します。

Connection to <ip addr> failed (Error NT_STATUS_UNSUCCESSFUL)

Samba はデーモン/サービスとして実行されており、netbios-ssn はリッスン モードになっています。

# netstat -a|grep netbios-ssn
tcp        0      0 *:netbios-ssn               *:*                         LISTEN

続きます...

続き:

接続を制限したり、inetd を使用したりしていません。

log.nmbd は問題を報告しません。

nmblookup -B BIGSERVER SAMBAはサーバーの名前を使用して動作します

nmblookup -B ACLIENT * Windows クライアント名または外部 IP アドレスを使用するすべてのログ ファイルで失敗する

nmblookup -d 2 `*'. 失敗する

「PC とサーバーが同じサブネット上にない場合は、-B オプションを使用してブロードキャスト アドレスを PC のサブネットのアドレスに設定する必要があります。

サブネット マスクとブロードキャスト アドレスが正しくない場合、このテストは失敗する可能性があります。(上記のテスト 3 のメモを参照してください)。

私たちはインターネットを経由しているので、これらが一致して機能する必要がありますか?

smbclient //BIGSERVER/TMP が機能する

クライアントで:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\xxxx>net view \\xxxx (ip addr)
System error 53 has occurred.

The network path was not found.


C:\Users\xxxx>

user と passwd を提供しても、net use には同じ問題があります。

nmblookup -M WORKGROUP は、ネットワーク上のローカル Windows マシンを返しますが、私のテスト サーバーでは、テスト マシンに対してローカルなクライアントを返します。おそらく、ワークグループが別のマシン上にあるという問題がありますが、これが問題である場合、他のネットワークからどのように接続するのでしょうか?

Preferred master = yes も試しました。

次の samba ハウツーの 2 ページ目。

更新: 新しい友人は、nmap を試してポートを確認すると言いました:

# nmap -sS -P0 -sV -O xxxx

Starting Nmap 5.51 (  ) at 2012-09-21 11:09 EDT
Nmap scan report for xxxx (xxxx)
Host is up (0.024s latency).
Not shown: 995 filtered ports
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 5.3 (protocol 2.0)
25/tcp   open  smtp       Postfix smtpd
110/tcp  open  pop3       Dovecot pop3d
443/tcp  open  ssl/http   Apache httpd 2.2.15 ((CentOS))
9100/tcp open  jetdirect?
Warning: OSScan results may be unreliable because we could not find at
least 1 open and 1 closed port
OS fingerprint not ideal because: Missing a closed TCP port so results
incomplete
No OS matches for host
Service Info: Host:  xxxx

Samba ポートが表示されないので、この時点でルーターまたは ISP がポートを転送/ブロックしていないと考えられます。

共有の解決策として、Windows と Mac クライアントで sshfs を試しています。

4

2 に答える 2

3

元の質問に答えて、ISP がリストされたポートをブロックしていないかどうかをテストする良い方法は次のとおりです。

# yum -y install tcpdump
# tcpdump -i eth0 "port 137 or port 138 or port 139 or port 445"

(eth0 は、インターネットに接続されているインターフェイスの名前に置き換えます)。

次に、共有にアクセスしてみてください (net view / net use / Windows Shell)。ポートが正しく転送されている場合は、次のように表示されます。

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
01:25:48.631173 IP 192.168.0.10.54032 > 192.168.0.1.microsoft-ds: Flags [S], seq 4008761512, win 5840, options [mss 1460,sackOK,TS val 136010468 ecr 0,nop,wscale 7], length 0
01:25:48.631198 IP 192.168.0.1.microsoft-ds > 192.168.0.10.54032: Flags [S.], seq 2220435566, ack 4008761513, win 14480, options [mss 1460,sackOK,TS val 15507714 ecr 136010468,nop,wscale 7], length 0
01:25:48.631397 IP 192.168.0.10.54032 > 192.168.0.1.microsoft-ds: Flags [.], ack 1, win 46, options [nop,nop,TS val 136010468 ecr 15507714], length 0
01:25:48.642171 IP 192.168.0.10.54032 > 192.168.0.1.microsoft-ds: Flags [P.], seq 1:184, ack 1, win 46, options [nop,nop,TS val 136010479 ecr 15507714], length 183SMB PACKET: SMBnegprot (REQUEST)
...

何も表示されない場合は、ISP (または中間ルーター) がそれらのポートへのパケットをブロックしていることを意味し、SMB プロトコルはオープンなインターネット展開に対して非常に安全ではないことが証明されています.

于 2012-11-28T21:33:59.647 に答える