Sambaは指定されたwireguard / vpnインターフェースを受信しません。

Sambaは指定されたwireguard / vpnインターフェースを受信しません。

3台のコンピュータ間にWireguard VPNネットワークが設定されています。

  • A)私の家のPCはw​​ireguardクライアントを実行しており、私のオフィスサーバーのsambashareに接続しようとしています。 C)。
  • B)マイホームサーバーはマイワイヤーガードサーバー/エンドポイントとして機能します。 A)とC)がこれに接続されています。
  • C)私のオフィスサーバーにwireguardを介してアクセスしたいSamba共有があります。

  • 次の理由で配信が正しく機能しているようです。

    • A)からC)へ、C)からA)へのpingを送ることができます。 C)のwireguardインターフェイスIPを使用している場合。
    • A)からC)までSSH経由で接続することもできます。 C)のwireguardインターフェイスIPを使用している場合。

問題は、smb.confまたはsmbd.serviceがsmb.confで指定されたインターフェイスにバインドされる方法にあると思います。その理由は次のとおりです。

  • できないWireguard IPアドレスを使用してC)からSamba共有にアクセスできます。
  • できるeth0 IPアドレスを指定すると、C)から私のSamba共有にアクセスします。

私のsmb.confファイルは次のとおりです。

####ネットワーキング####

#バインドする特定のインターフェイス/ネットワークセット
#これはインターフェイス名またはIPアドレス/ネットマスクです。
# 通常、インターフェイス名が優先されます。
;インターフェース=127.0.0.0/8 eth0
   インターフェイス=lo eth0 wg-buero-tunnel

#指定されたインターフェイスおよび/またはネットワークにのみバインドする必要があります。
#上記の「インターフェース」オプションを使用してください。
#Sambaシステムが次の場合は、この機能を有効にすることをお勧めします。
#ファイアウォールまたはファイアウォール自体で保護されていません。しかし、
#オプションは動的または非ブロードキャストインターフェイスを正しく処理しません。
;インターフェイスのみバインド=はい
   バインドインターフェイスのみ=はい

これはの出力ですnetstat -tulpen | grep smbd

tcp 0 0 127.0.0.1:139 0.0.0.0:* リスニング中 0 17353 1023/smbd
tcp 0 0 192.168.124.177:139 0.0.0.0:* リスニング中 0 17349 1023/smbd
tcp 0 0 127.0.0.1:445 0.0.0.0:* リスニング中 0 17352 1023/smbd
tcp 0 0 192.168.124.177:445 0.0.0.0:* リスニング中 0 17348 1023/smbd

ここのIPはsmb.confで指定したデバイスと一致する必要がありますが、まだIP /デバイスがありません。

ルオ127.0.0.1

イーサネット0192.168.124.177

WG-ブエロトンネルWireguard IPが完全に失われました。

本当にアイデアが足りません。

答え1

インターフェイスアドレス/マスクが明示的に指定されていない場合、インターフェイスがによって制限されるinterfaces = ...と、bind interfaces only = yesSambaはWireguardインターフェイスを受信しません。

解決策はWireguardインターフェイスのIPアドレス/マスクの指定。例えば

interfaces = lo eth0 10.8.0.0/24

Sambaのドキュメントでもこれを明確に説明します。 smb構成ファイル:相互作用

...デフォルトでは、Sambaはカーネルにすべてのアクティブインターフェイスのリストを照会し、127.0.0.1以外のブロードキャスト機能を持つすべてのインターフェイスを使用します。 ...
...「マスク」パラメータは、ビット長(クラスCネットワークの場合は24)、またはドットで区切られた10進形式のフルネットワークマスクです。

私たち全員が知っているように、Wireguardはブロードキャストをサポートしていません。これはSambaの結果です。 Wireguardはブロードキャストをサポートしていないため、2)インターフェース名、3)IPアドレスのみ、または4)ブロードキャストアドレス/マスクなど、そこに説明されているインターフェースを指定するために他の3つの選択肢を使用することは不可能です。

ip link次のコマンドで確認することもできます。

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> ... 
    link/ether ...
wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> ...      # without "BROADCAST"
    link/none

答え2

ここで提案された解決策は私には効果がありませんでした。私の場合は、ソリューションを設定することでした。

bind interfaces only = no

/etc/samba/smb.conf.templateファイルから。これにより、Sambaはブロードキャストであるかどうかにかかわらず、すべてのインターフェイスで受信されます。

これにはいくつかの欠点があるかもしれません。 Samba共有は名前ではなくIPでアクセスする必要があります。

\\192.168.1.1    - works
\\SAMBA_SHARE    - does not work

しかし、大きな問題ではありません。

答え3

Samba(またはブロードキャストを必要とする同様のもの)などがWireguardトンネルを介して実行されるようにするには、Wireguardの上にvxlanトンネルを使用できます。

このカプセル化(vxlan)は、「実際の」ネットワークインターフェースと多少似ており、少なくとも私のシナリオでは、ブロードキャスト/マルチキャストなどが完全に機能します。

私はこれらのトンネルのいくつかを設定し、両方のカプセル化のパフォーマンスの低下にもかかわらず非常にうまく動作します。 「ip link add」コマンドで設定するのも非常に簡単です。オンラインで多くの例を見つけることができます。私はこの(非常に興味深い)記事からインスピレーションを得ました(削除され、IAへのリンクを残しました)。

https://web.archive.org/web/20200708181943/https://insom.github.io/journal/2017/04/02/

https://gist.github.com/pamolloy/f464c2b54af03c436491f42abf0bbff9

答え4

私の考えでは、サンバだけができるからだと思います。放送をサポートするインターフェースで聞く

  • パラメータ:インターフェース
  • タイプ:文字列
  • 説明: Samba が応答するネットワーク・インターフェースです。デフォルト値を変更できます。
  • デフォルト:ブロードキャスト可能なすべての利用可能なインターフェイス

デフォルトではない場合、何が起こるのかはわかりませんが、そうなると思います。

関連情報