3台のコンピュータ間にWireguard VPNネットワークが設定されています。
- A)私の家のPCはwireguardクライアントを実行しており、私のオフィスサーバーの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 = yes
Sambaは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 が応答するネットワーク・インターフェースです。デフォルト値を変更できます。
- デフォルト:ブロードキャスト可能なすべての利用可能なインターフェイス
デフォルトではない場合、何が起こるのかはわかりませんが、そうなると思います。