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 라벨은 네 부분으로 구성됩니다.

  • 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/적절한 파일 시스템 레이블로 디렉토리에 레이블을 지정하는 것일 수도 있습니다.

관련 정보