systemdサービス - UDPブロードキャストは他のシステムに到達できません。

systemdサービス - UDPブロードキャストは他のシステムに到達できません。

/usr/lib/systemd/system の下にサービスがあります。このサービスは、私が開発しているアプリケーション(.net core 2.0)を実行します。同じアプリケーションが異なるシステム(両方ともcentos7)で実行されています。彼らはお互いを見つけるためにUDPソケットを使用します。

このアプリを準備する前に、長い間テストをしてきました。。提供するファイルを送信すると、すべてが順調に進みます。彼らはお互いにメッセージを放送することができます。

サービスがアプリケーションを実行したときにインスタンスが取得できる唯一のメッセージは、同じインスタンスが最初にブロードキャストしたメッセージです。他のコンピュータでも同じことが起こります。自分の放送は受けられますが、他人の放送は見ることができません。

私はLinuxに初めてアクセスし、どこで何を検索するのかわからないので、役に立たない情報を見つけました。これがここで助けが必要な理由です。

ありがとう


.service ファイルの内容

[Unit]
Description=Apix

[Service]
WorkingDirectory=/apix
ExecStart=/usr/bin/dotnet /APIX/Apix.dll

[Install]
WantedBy=multi-user.target

直接アプリケーションを実行すると、udpポートがdotnetで使用されていることがわかります。ただし、サービスがアプリケーションを実行すると、この行は消えます。

netstat -lntup
udp    0   0 0.0.0.0:14235    0.0.0.0:*     11319/dotnet

答え1

ダンウォルシュライブジャーナル2014説明にunconfined_service_tSELinux 用語が多く含まれていますが、現在 SELinux の知識レベルによっては多くの情報を取得できない場合があります。

あなたのコメントによると、プロセスのSELinuxラベルは次のとおりです。

  • .serviceファイルを使用して起動した場合:system_u:system_r:unconfined_service_t:s0
  • 手動で起動する場合:unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

SELinuxラベルは4つの部分で構成されています。

  • SELinuxユーザー(_uサフィックスを含む)
  • SELinuxの役割(_rサフィックスを含む)
  • SELinuxタイプ(_tサフィックスを含む)
  • およびSELinuxレベルの定義(完全な場合のみ)マルチレベルセキュリティSELinuxポリシー(軍事セキュリティなど)、デフォルトなしターゲットになったポリシー。

SELinux 基本ポリシーでは、SELinux ユーザー識別子は一般ユーザー名とは異なります。実際、SELinuxは、ファイルまたはプロセスが誰に属しているかにかかわらず、デフォルトのシステムプロセスであるかどうかsystem_u()、管理者(sysadm_u)、一般ユーザー(user_u)、またはSELinuxポリシー免除の対象として指定されたユーザー(unconfined_u)です。

「役割」セクションを使用して、dbadm_rデータベース管理やlogadm_rシステムログアクセスなど、複数の「部分管理者」役割を指定できます。

について最も重要な部分はターゲットになったSELinuxポリシーは、タイプ仕様または接尾辞付きの部分です_t

unconfined_service_t無制限の型でなければならないので、そこに何が問題なのかよくわかりません。ディレクトリツリーの下のファイルに/APIX/タグが付けられていないため、問題が発生する可能性がありますか?

プロセスと同様に、ファイルにも使用できるSELinuxラベルが必要ですls -Z。通常、SELinuxはdefault_t指定されたラベルがないすべてのファイルにラベルを提供します。 SELinuxは「これが何であるかわかりませんdefault_t。おそらくラベルが欠落しているUltra Top Secretなので、一部の管理者が正しいラベルを知らせるまで追加のセキュリティを保ちましょう」と「考えます」と言いますdefault_t。あなたが解決しなければならない問題。

SELinuxルールが別途指定されていない限り、ファイルは通常、ファイルが生成されたディレクトリのラベルを継承します。ただし、たとえば、新しいトップレベルディレクトリを作成する場合は、/APIXラベルを付ける方法を決定する必要があります。それ以外の場合は終了しますdefault_t

設定を試すことができます。 SELinuxが完全に有効になっているように、SELinuxポリシー違反を記録し続けると、semanage permissive -a unconfined_service_tすべてのサービスで無料アクセスを使用できます。その後、監査ログの関連部分を実行すると、SELinuxがプログラムが目的の操作を実行できない理由をより明確に把握できます。unconfined_service_t/var/log/auth/audit2why

正しい修正方法は、/APIX/適切なファイルシステムラベルでディレクトリにラベルを付けることです。

関連情報