CentOS 7에서는 삼바 공유를 볼 수 있지만 Fedora 30에서는 볼 수 없는 이유는 무엇입니까?

CentOS 7에서는 삼바 공유를 볼 수 있지만 Fedora 30에서는 볼 수 없는 이유는 무엇입니까?

Fedora 시스템에서 Samba를 구성하는 데 문제가 있습니다. CentOS에서는 모든 것이 잘 실행되지만 동일한 구성으로 인해 Fedora에서는 문제가 발생합니다.

동일한 네트워크에 세 대의 컴퓨터가 있습니다. A, M, L이라고 부르겠습니다. 모든 시스템의 smb.conf에는 동일한 [global] 항목이 있습니다.

smbtree"A"는 아무런 문제 없이 CentOS 7을 실행하고 있으며 A, M, L 의 모든 호스트와 공유를 볼 수 있습니다.

"M"과 "L"은 둘 다 Fedora 30을 실행하고 있지만 NETBIOS 이름을 확인할 수 없으며(호스트 이름으로 다른 컴퓨터를 핑할 수 없음) 그 내용은 smbtree물론 자체 공유도 볼 수 없습니다.

흥미롭게도 네트워크에는 Windows 시스템도 있습니다. 우리는 이 기계를 "W"라고 부릅니다. 모든 Linux 시스템은 호스트 이름으로 시스템을 확인하고 ping할 수 있습니다. 문제는 Linux 시스템이 서로 통신하는 데 있습니다.

smb.conf(모든 시스템):

[global]
    workgroup = WORKGROUP
    security = user

    passdb backend = tdbsam

    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw

    hosts allow = 127. 10.0.1.
    ntlm auth = yes

방화벽 오픈 서비스(모든 시스템):

samba ntp dhcpv6-client ssh samba-client

Fedora 시스템은 방화벽을 통해서도 허용됩니다 mdns.

그게 다야. 간단해야 하는데 작동하지 않습니다. 어떻게 되어가나요?

답변1

마침내 이것을 알아낼 수 있었지만 이러한 변경 사항 중 일부가 왜 필요한지 여전히 이해하지 못합니다.

CentOS 7은 오래된 코드베이스로 인해 항상 "작동"합니다. 모든 문제는 CentOS가 원래 패키지를 출시한 이후 변경된 내용으로 인해 발생합니다. 이는 이러한 서버급 운영 체제의 개념과 오래되고 알려진 안정적인 패키지에 대한 고수에 대한 신뢰를 더욱 높여줍니다.


NetBIOS 이름 확인

NetBIOS 이름 확인 실패 문제는 firewalld자동 지원 기능으로 인해 발생합니다. 커널 4.9.13의 2017-02-26 패치는 방화벽 서비스의 기본 동작을 변경합니다. 의 결과는 firewall-cmd --get-automatic-helpers항상 이지만 system실제 값은 커널에 정의되어 있으며 이것이 변경됩니다.

이전 동작을 강제하려면 이 기능을 명시적으로 활성화해야 합니다.

firewall-cmd --set-automatic-helpers=yes

재부팅 smb하면 이제 NetBIOS 이름을 사용할 수 있습니다 ping. nmblookup이는 보안상의 취약점이므로 주의하시기 바랍니다. 관련 섹션을 참조하세요안전이에 대해 자세히 알아보세요. 이 설정을 사용하여 변경하기 전에 시스템의 기본 설정을 알고 있어야 합니다 firewall-cmd --get-automatic-helpers.

또는 방화벽 서비스를 일시적으로 비활성화하여 영향이 있는지 확인할 수 있습니다.


가시성 공유

엄청난! 이제 작품을 공유하는 거죠? 훌륭한,아마도.

공유 내용을 확인해 보세요.

smbtree -b -N

공유가 표시되면 완료된 것입니다. 그렇지 않은 경우 이는 Samba가 사용 가능한 모든 인터페이스에 바인딩하지 못한 것과 관련이 있습니다. 다음 명령을 사용하면 모든 인터페이스를 볼 수 있습니다.

ifconfig | grep -Po '^\w+'

/etc/samba/smb.conf내 경우에는 다음 인터페이스를 추가합니다 .

interfaces = lo virbr0 wlo1
bind interfaces only = yes

127.처음에는 IP 접두사 와 . 만 허용하도록 Samba를 설정했지만 로그를 10.0.1보는 동안 다음 메시지를 발견했습니다.smb

Denied connection from 192.168.122.1 (192.168.122.1)

192.168.이는 NAT( )를 통해 할당된 주소가 있는 로컬 가상 머신의 연결이 차단된 것입니다 virbr0. 이 접두사를 내 구성에 추가하면 이제 해당 컴퓨터의 공유는 볼 수 있지만 내 10.0.1네트워크는 볼 수 없습니다. 그러면 Samba이 인터페이스( )에 바인딩되지 않을 수도 있습니다 wlo1. 나는 그것을 내 것에 추가했고 smb.conf갑자기 모든 것이 작동했습니다. 공유를 탐색하고 네트워크 장치에 액세스할 수 있습니다.

인터페이스 wlo1는 무선 네트워크 카드인데 왜 바인딩되지 않는지 모르겠습니다. 이더넷을 통해 연결된 네트워크의 다른 컴퓨터에서도 동일한 NetBIOS 문제가 발생했으며 인터페이스를 지정할 필요가 없었습니다. 이것이 바로 제가 이렇게 변경하지 않고도 귀하의 공유가 이미 표시될 수 있다고 말한 이유입니다.


안전 예방 조치

~에 따르면리눅스 커널 메일링 리스트, NetBIOS 구문 분석 실패 문제는 방화벽의 "자동 도우미" 기능 변경으로 인한 직접적인 결과입니다.

커밋 3bb398d925("netfilter:nf_ct_helper: 자동 도우미 할당 비활성화")는 방화벽에서 동작 회귀를 유발합니다. 이전에는 CT 대상 누락으로 인해 필요하지 않았음에도 불구하고 conntrack 도우미가 처리하는 트래픽이 이제 기본적으로 통과하지 않기 때문입니다(이는 이전에는 불필요했습니다.) 이 커밋).

보안상의 이유로 변경:

보안상의 이유로 기본값을 꺼야 하므로 그대로 두어야 하지만 방화벽 관리자에게 조금 더 친절하게 대해 드리고 패킷이 이전 기본값을 통과할 수 있는 상황이 처음 발생하면 경고를 발행하도록 하겠습니다. 아마 지금은 놔둘 테니 바닥에 던져보세요.

바라보다:

이것아치 리눅스 문서좋은 요약도 제공됩니다.

로컬(학교, 대학, 호텔) 네트워크를 신뢰하지 않기 때문에 방화벽(iptables)을 사용하고 있습니다. 이는 다음과 같은 이유 때문일 수 있습니다. smbclient가 로컬 네트워크를 검색할 때 UDP 포트 137에서 브로드캐스트 요청을 합니다. 그러면 네트워크의 서버가 클라이언트에 응답하지만 이 응답의 소스 주소는 iptables가 목록 요청을 보낼 때 보는 대상 주소와 동일하지 않기 때문에 iptables는 응답을 "ESTABLISHED" 또는 "RELATED"로 인식하지 못합니다. , 따라서 데이터 패킷이 삭제됩니다.

iptables지나치게 광범위한 자동 도우미 대신 명시적 도우미를 추가하여 가능한 솔루션을 인용하자면 다음과 같습니다 .

iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns

추가 자료:

https://bugzilla.redhat.com/show_bug.cgi?id=1297235

관련 정보