短縮版:
proftpd 構成ファイルのサーバー コンテキストと仮想ホスト セクションの違いは何ですか? 前者ではできることが後者ではできないという意味で。
たとえば、UseIPv6 や MaxInstances などのディレクティブを仮想ホストまたはグローバル セクションに配置することはできませんが、サーバー コンテキストに配置すると問題なく機能します。では、以下に示す設定に対してこれらのセクションを正しく使用するにはどうすればよいでしょうか?
全体的なプロセスは次のようになると考えていました。クライアントがサーバーに接続するたびに、サーバーはクライアントが接続したアドレスに対応する仮想ホストがあるかどうかを確認します。ない場合は、サーバー コンテキスト セクションが選択されます (ただし、これを防ぐために DefaultServer ディレクティブが使用されます)。そのため、サーバー コンテキスト セクションと仮想ホスト セクションは同等に「強力」であると考えていました。しかし、どちらかのセクションでのみ機能するディレクティブがあるため、そうではありません。
ロングバージョン(追加情報):
基本的に、私がやりたいのは、自宅のローカル マシンで proftp サーバーを実行し、このサーバーをインターネットと LAN の両方からアクセス可能にすることです。そして、それは機能しています。proftpd をソースからコンパイルし (理由は下記)、インストールして構成しましたが、期待どおりに機能しているようです。proftpd を適切に実行するための支援は必要ありません。
しかし、proftpd のドキュメントを読んだだけではサーバーを実行することができず、すべてがうまくいくまで構成ファイルをいじり続けなければなりませんでした。そのため、仮想ホスト、グローバル、およびサーバー コンテキスト セクションの使用法についてまだよく理解していない点があり、上記の質問を思いつきました。
ルーターの背後で proftpd を構成する方法と、仮想ホスト、グローバル、およびサーバー コンテキスト セクションの意味について読みました。
http://www.proftpd.org/docs/howto/NAT.html
http://www.proftpd.org/docs/howto/Vhost.html
複数のガイドに従い、フォーラムで同様の質問を検索しました。サーバーは動作していますが、なぜ今動作しているのか、なぜ以前は動作しなかったのか、よくわかりません。
これは私の現在の(動作中の)proftpd.conf の構造です:
<Global> User ... Group ... RequireValidShell ... DefaultRoot ... ... <IfModule mod_tls.c> TLSEngine ... TLSProtocol TLSv1.2 ... </IfModule> </Global>
#server context managing the config for access over the internet ServerName "external" Port 21 #can't be used inside a virtualhost section UseIPv6 off ... #need to masquerade ip for external address MasqueradeAddress myurl.com #needed for passive ftp mode PassivePorts 60000 65535
#virtualhost managing the config for lan access <VirtualHost 192.168.178.54> ServerName "internal" Port 21 PassivePorts 60000 65535 </VirtualHost>
最初は、LAN 用と外部アクセス用の 2 つの仮想ホスト セクションを作成し、ポート 0 を設定してサーバー コンテキスト セクションを無効にする必要があると考えました。しかし、仮想ホスト セクション内では使用できないディレクティブがあります。そのため、3 つのセクションを正しく使用しているかどうかはよくわかりません。何らかのデフォルト構成を設定するには、サーバー コンテキスト セクションを使用する必要がありますか? ドキュメントによると、これは DefaultServer ディレクティブを使用して実行できます。
uname -a: Linux ホスト名 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
proftpd -v: ProFTPD バージョン 1.3.5 Debian リポジトリに含まれる proftpd バイナリ パッケージは TLS 1.2 をサポートしていません。また、それより低い TLS バージョンや SSL で FTP を使用したくありません。そのため、自分でコンパイルしました。
これはかなり長いテキストです。短く、正確で、不必要なことは避けつつ、十分な情報を提供するよう努めました。改善できる点がある場合、または私の質問が Unix および Linux StackExchange に属するものである場合は、お知らせください。これは自宅のサーバー環境に関する質問であるため、この質問を行うために、serverfault ではなく superuser を選択しました。
お時間を割いてご協力いただきありがとうございました。
ヤン
答え1
全体に影響を及ぼす設定ディレクティブがいくつかあります。デーモンまたは などのUseIPv6
ディレクティブMaxInstances
。これらのディレクティブできないこのため、vhost ごとに設定する必要があります。
ただし、ProFTPD の設定ファイル構文には、「これらのディレクティブはデーモン全体にのみ適用されます」というコンテキスト/セクションがありません。したがって、デフォルトでは (もちろん、これは理想的ではありませんが)、これらのデーモン全体のディレクティブは、、、<Global>
または<VirtualHost>
その他のコンテキストの外側にある「サーバー設定」セクションでのみ許可されます。
お役に立てれば!
答え2
結局、私が提供した情報の一部は正しくありませんでした。人々が回答に時間を費やさないように、この質問に回答済みとしてマークします。proftpd の設定を再確認する時間がいつあるかわからないので、簡単な編集では役に立ちません。ただし、私が提供した誤った説明の原因を解明し、質問を修正して、しばらくしてから再度投稿します。