집에 많은 네트워크 장치가 있는데 인간 친화적인 방식으로 네트워크에서 액세스할 수 있게 하고 싶습니다. 인터넷에서 직접 장치에 액세스하는 것을 원하지 않습니다.
내 요구사항:
- 장치에는 여러 "별칭"이 있을 수 있습니다.- 예. 또는 이름 으로 액세스할 수 있어야 합니다
backup
.docker
nas
- 단일 장치에서 여러 서비스를 실행하고 있으며 서비스를 구별하고 다른 장치로 이동할 수 있는 옵션을 선호하기 때문에
- 홈 호스팅 VPN을 사용하여 원격에서 장치에 액세스할 수 있어야 합니다.
- NAS에 액세스하여 원격 위치에서 백업을 실행하고 싶기 때문입니다.
- 회사 VPN에 연결된 홈 워크스테이션에서 장치에 액세스할 수 있어야 합니다.
- 가끔 집에서 일하면서 여전히 로컬 네트워크에 액세스하고 싶기 때문입니다.
수년에 걸쳐 나는 다음과 같은 해결책을 시도했습니다. 그러나 그 중 어느 것도 타협 없이 내 모든 요구를 충족시키지 못합니다.
사용mDNS
이것이 나의 초기 설정이었습니다. 장치는 다음에서 액세스할 수 있습니다.hostname.local
❓ 장치에는 여러 "별칭"이 있을 수 있습니다.
장치당 여러 개의 mDNS 이름을 가질 수 있지만 다음 문제로 인해 더 이상 조사한 적이 없습니다.
❌ 홈 호스팅 VPN을 사용하여 원격에서 장치에 액세스할 수 있어야 합니다.
VPN 연결을 통해 전달되지 않는 프로토콜 mDNS
을 사용하고 있습니다 . 장치의 broadcast
응답 mDNS
이 VPN 클라이언트에 도달할 수 없습니다.
✅ 직장 VPN에 연결된 가정용 워크스테이션에서 기기에 접근할 수 있어야 합니다.
이는 mDNS
VPN을 "우회"하고 로컬 네트워크에 액세스하기 때문에 정상적으로 작동합니다.
mDNS
홈 DNS
서버를 통해 사용
집에서 나만의 DNS
서버를 호스팅하고 있습니다. 아이디어는 이것이 나의 처음 두 가지 요구 사항을 해결해야 한다는 것입니다. 그러나 서버 *.local
에 기록을 두는 DNS
것은 권장되지 않습니다. 예를 들어 dig
경고를 출력합니다.
$ dig docker.local
...
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
...
✅ 장치는 여러 개의 "별명"을 가질 수 있습니다
권장되지는 않지만 이름이 올바르게 확인됩니다.
✅ 홈 호스팅 VPN을 사용하여 원격에서 장치에 액세스할 수 있어야 합니다.
간단한 요청-응답 방식으로 서버 DNS
에 액세스하므로 VPN과 완벽하게 호환됩니다.
❌ 직장 VPN에 연결된 가정용 워크스테이션에서 기기에 액세스할 수 있어야 합니다.
워크스테이션이 (분명히) 내 docker.local
.
DNS
사용자 정의 홈 전용 도메인으로 홈 서버 사용
이것이 "가야 할 길"이어야 합니다. 예를 들어 홈 도메인을 만들었습니다. myplace
(shady를 피하기 위해 *.home
) DHCP 서버가 이 도메인을 모든 장치에 설정하도록 합니다. 서버를 제대로 활용하자는 생각이었습니다 DNS
.
✅ 장치는 여러 개의 "별명"을 가질 수 있습니다
서버님 덕분입니다 DNS
.
✅ 홈 호스팅 VPN을 사용하여 원격에서 장치에 액세스할 수 있어야 합니다.
간단한 요청-응답 방식으로 서버 DNS
에 액세스하므로 VPN과 완벽하게 호환됩니다.
❌ 직장 VPN에 연결된 가정용 워크스테이션에서 기기에 액세스할 수 있어야 합니다.
워크스테이션이 (분명히) 내 docker.myplace
.
공개 도메인과 함께 공개 서버 사용 DNS
(지금까지는 이론적인 것임)
나는 또한 공개 도메인에 대한 비용을 지불합니다 example.com
. 아이디어는 예를 들어 이전 솔루션의 세 번째 요구 사항을 해결하는 것입니다. docker.example.com = 192.168.0.17
공개적으로 기록합니다 DNS
.
✅ 장치는 여러 개의 "별명"을 가질 수 있습니다
서버님 덕분입니다 DNS
.
✅ 홈 호스팅 VPN을 사용하여 원격에서 장치에 액세스할 수 있어야 합니다.
간단한 요청-응답 방식으로 서버 DNS
에 액세스하므로 VPN과 완벽하게 호환됩니다.
✅ 직장 VPN에 연결된 가정용 워크스테이션에서 기기에 접근할 수 있어야 합니다.
공개 도메인은 공개 DNS
서버 에서 호스팅되므로 docker.example.com
어디에서나(예: 도메인 superuser.com
) 확인할 수 있어야 합니다.
⚠️ 그러나. 이것은 안전하지 않습니다:
- 내 모든 장치 이름과 (집) IP 주소를 인터넷에 노출하겠습니다.
docker.example.com
홈 네트워크 외부(직장, 카페 등)에서192.168.0.17
접속할 때그들의지역 네트워크. 이는 다른 방식으로 끝날 수 있습니다.- 주소가 존재하지 않습니다 - 단순히 연결이 실패합니다
- 주소가 존재합니다 - 누군가의 장치에 연결하려고 하는데 이는 매우 위험할 수 있습니다(예: 안전하지 않은 연결의 경우)
누구든지 이 작업을 수행하는 방법에 대해 더 잘 알고 있습니까?
답변1
워크스테이션이 내 docker.myplace에 대한 기록이 없는 VPN 내부에서 작업 DNS를 사용하고 있기 때문에 이는 작동하지 않습니다.
OS가 분할 DNS를 지원하는 경우 내부 홈 DNS가 작동합니다. 예를 들어, Linux에서 systemd-resolved를 사용하면 여러 세트의 <도메인, DNS 서버>(네트워크 인터페이스당 하나)가 있으므로 작업 도메인에는 VPN DNS 서버를 사용하고 다른 모든 도메인에는 홈 DNS를 사용할 수 있습니다. 또는 그 반대의 경우도 마찬가지입니다. ".home.arpa"에 대해서는 홈 DNS를 사용하고 그 외 모든 경우에는 VPN DNS를 사용합니다. systemd 이전에는 dnsmasq 또는 Unbound를 설정하여 동일한 결과를 얻을 수도 있었습니다.
(서버 측의 "분할 브레인" 또는 "분할 뷰" DNS와 혼동하지 마십시오.)
Windows는 DNS 서버 소프트웨어에서 이를 "조건부 전달"이라고 부르는 것으로 보입니다.~할 것 같다내장 VPN 클라이언트(IKEv2)에 대해 이를 지원하지만 기업 VPN에서는 이를 허용하지 않을 가능성이 높습니다.
내 모든 장치 이름과 (집) IP 주소를 인터넷에 노출하겠습니다.
그거요?실제로그런데 문제가 있나요? 장치 이름은 이름입니다. 본질적으로 사적인 것으로 생각되지는 않습니다. (아마도 홈 네트워크에서 꽤 흔한 일이었기 때문에 저는 이에 대해 다소 구식적인 견해를 갖고 있을 수도 있습니다.) ; 어쨌든 IP 주소는 홈 LAN 외부에서는 의미가 없습니다.
하지만 항상 두 가지를 혼합하여 사용할 수 있습니다. docker
Work Workstation에서 액세스해야 하는 일부 장치에 대해서는 공개 DNS 이름(예: 과 같은 일반 이름)을 사용하고 그 밖의 모든 것에 대해서는 내부 DNS를 사용하십시오. 대부분의 PC에서는 둘 이상의 도메인 접미사를 구성할 수 있습니다(DHCP를 통해 목록을 배포할 수도 있음).
홈 네트워크 외부(직장, 카페 등)에서 docker.example.com에 액세스할 때 로컬 네트워크의 192.168.0.17에 연결됩니다. 이는 다른 방식으로 끝날 수 있습니다.
이에 대한 일반적인 "솔루션"은 IPv6입니다. 무작위로 생성된 개인 IPv6 접두사는 ~56개의 고유 비트를 가지며 이는 일반적으로 충돌을 피하기에 충분합니다.