세 대의 컴퓨터 사이에 Wireguard VPN 네트워크가 설정되어 있습니다.
- A) 내 집 PC는 wireguard 클라이언트를 실행하고 있으며 내 사무실 서버의 sambashare에 연결하려고 합니다. C).
- B) 내 홈 서버는 내 와이어가드 서버/엔드포인트 역할을 합니다. A)와 C)가 이에 연결됩니다.
- C) 내 사무실 서버에 wireguard를 통해 액세스하려는 삼바 공유가 있습니다.
다음과 같은 이유로 전달이 제대로 작동하는 것 같습니다.
- A)에서 C)로, C)에서 A)로 핑을 보낼 수 있습니다. 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)이거나 점으로 구분된 십진수 형식의 전체 네트워크 마스크일 수 있습니다.
우리 모두 알고 있듯이 Wireguard는 브로드캐스트를 지원하지 않습니다. 이는 Samba의 결과입니다. Wireguard는 브로드캐스트를 지원하지 않기 때문에 2) 인터페이스 이름, 3) IP 주소만 또는 4) 브로드캐스트 주소/마스크와 같이 거기에 설명된 인터페이스를 지정하기 위해 다른 세 가지 대안을 사용하는 것은 불가능합니다.
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는 브로드캐스트 여부에 관계없이 모든 인터페이스에서 수신됩니다.
여기에는 약간의 단점이 있을 수 있습니다. 삼바 공유는 이름이 아닌 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가 응답할 네트워크 인터페이스입니다. 기본값을 변경할 수 있습니다.
- 기본값: 브로드캐스팅이 가능한 모든 사용 가능한 인터페이스
기본값이 아닌 경우 어떤 일이 발생하는지 말하지는 않지만 그럴 것이라고 추측합니다.