CentOS 7ではSamba共有を見ることができますが、Fedora 30では表示できないのはなぜですか?

CentOS 7ではSamba共有を見ることができますが、Fedora 30では表示できないのはなぜですか?

FedoraシステムでSambaを設定する際に問題があります。 CentOSではすべてがうまく動作しますが、同じ設定のためにFedoraで問題が発生します。

同じネットワークに3台のコンピュータがあります。 A、M、Lと呼びます。すべてのシステムの smb.conf には同じ [global] エントリがあります。

smbtree「A」は何の問題もなくCentOS 7を実行しており、A、M、Lのすべてのホストと共有を見ることができます。

「M」と「L」はどちらもFedora 30を実行していますが、NETBIOS名を解決することはできず(ホスト名で他のコンピュータをpingすることはできません)、その内容はsmbtreeもちろん自己共有も見ることができません。

興味深いことに、ネットワークにはWindowsシステムもあります。私たちはこの機械を「W」と呼びます。すべてのLinuxシステムは、ホスト名でシステムを解決してpingできます。問題は、Linuxシステムが互いに通信することです。

smb.conf(すべてのシステム):

[global]
    workgroup = WORKGROUP
    security = user

    passdb backend = tdbsam

    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw

    hosts allow = 127. 10.0.1.
    ntlm auth = yes

ファイアウォールオープンサービス(すべてのシステム):

samba ntp dhcpv6-client ssh samba-client

Fedoraシステムはファイアウォールを介しても許可されていますmdns

それはすべてです。簡単なはずですが、うまくいきません。どうなりますか?

答え1

ついにこれを見つけることができましたが、これらの変更のいくつかがなぜ必要なのかまだ理解していません。

CentOS 7は、古いコードベースのため常に「動作」します。すべての問題は、CentOSが元のパッケージをリリースしてから変更されたために発生します。これは、これらのサーバークラスのオペレーティングシステムの概念と、古くて知られている信頼性の高いパッケージに対する固守に対する信頼をさらに高めます。


NetBIOS名解決

NetBIOS 名前解決の失敗の問題は、firewalld自動サポート機能が原因で発生します。カーネル4.9.13の2017-02-26パッチは、ファイアウォールサービスのデフォルトの動作を変更します。の結果はfirewall-cmd --get-automatic-helpers常にですが、system実際の値はカーネルで定義されており、これが変更されます。

以前の動作を強制するには、この機能を明示的に有効にする必要があります。

firewall-cmd --set-automatic-helpers=yes

再起動smbすると、NetBIOS名を使用できるようになりますpingnmblookupこれはセキュリティ上の脆弱性ですのでご注意ください。関連セクションを参照してください安全これについて詳しく学んでください。この設定を使用して変更する前に、システムのデフォルト設定を知っておく必要がありますfirewall-cmd --get-automatic-helpers

あるいは、ファイアウォールサービスを一時的に無効にして影響があるかどうかを確認することもできます。


可視性の共有

すごい!今作品を共有していますか?素晴らしい、おそらく

共有内容を確認してください。

smbtree -b -N

共有が表示されたら完了です。そうでない場合、これはSambaが利用可能なすべてのインターフェイスにバインドできなかったことに関連しています。次のコマンドを使用すると、すべてのインターフェイスを表示できます。

ifconfig | grep -Po '^\w+'

/etc/samba/smb.conf私の場合は、次のインターフェースを追加します。

interfaces = lo virbr0 wlo1
bind interfaces only = yes

127.最初はIPプレフィックスと。のみ許可するようにSambaを設定しましたが、ログの10.0.1表示中に次のメッセージが見つかりました。smb

Denied connection from 192.168.122.1 (192.168.122.1)

192.168.これは、NAT()を介して割り当てられたアドレスを持つローカル仮想マシンの接続がブロックされていることですvirbr0。このプレフィックスを自分の設定に追加すると、そのコンピュータの共有は表示されますが、私の10.0.1ネットワークは表示されません。これにより、Sambaこのインターフェイス()にバインドされない可能性がありますwlo1。私はそれを私のものに追加し、smb.conf突然すべてがうまくいきました。共有に移動してネットワークデバイスにアクセスできます。

インターフェイスwlo1はワイヤレスネットワークカードですが、なぜバインドされていないのかわかりません。イーサネット経由で接続されたネットワーク上の他のコンピュータでも同じNetBIOS問題が発生し、インターフェイスを指定する必要はありませんでした。これが、私がこれを変更しなくても、あなたの共有がすでに表示されていると言った理由です。


安全予防措置

~によるとLinuxカーネルメーリングリスト、NetBIOS解析失敗の問題は、ファイアウォールの「自動ヘルパー」機能の変更による直接的な結果です。

コミット3bb398d925(「netfilter:nf_ct_helper:自動ヘルパー割り当てを無効にする」)は、ファイアウォールで動作回帰を引き起こします。以前は、CTターゲットの欠落のために必要ではなかったにもかかわらず、conntrackヘルパーによって処理されたトラフィックはデフォルトで通過しないためです(これは以前は不要でした)。

セキュリティ上の理由で変更:

セキュリティ上の理由からデフォルトをオフにする必要があるため、そのままにしておく必要がありますが、ファイアウォール管理者にもう少し親切にして、パケットが以前のデフォルトを通過できる状況が最初に発生した場合に警告を発行させます。おそらく今は置くから床に投げてみてください。

望むより:

これArch Linuxドキュメント良い要約も提供されます。

ローカル(学校、大学、ホテル)ネットワークを信頼しないため、ファイアウォール(iptables)を使用しています。これは、次の理由による可能性があります。 smbclientがローカルネットワークを検索すると、UDPポート137でブロードキャスト要求が行われます。これにより、ネットワーク上のサーバーがクライアントに応答しますが、この応答の送信元アドレスは、iptablesがリスト要求を送信したときに表示される宛先アドレスと同じではないため、iptablesは応答を「ESTABLISHED」または「RELATED」として認識しません。したがって、データパケットは廃棄されます。

iptables過度に広範な自動ヘルパーの代わりに明示的なヘルパーを追加して可能な解決策を引用すると、次のようになります。

iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns

追加資料:

https://bugzilla.redhat.com/show_bug.cgi?id=1297235

関連情報