커뮤니티 솔루션

ZimaOS의 Tailscale 서브넷 라우터: TUN은 기본 제공되었지만 1.5.0에서 tun.ko가 되었습니다

A September 2025 feature request from a user trying to run a Tailscale Docker subnet router between Mexico and Uruguay. Zima-Jerry explained that TUN was compiled into the kernel rather than present as tun.ko, then changed it to a loadable module in ZimaOS 1.5.0. The original poster retested and confirmed it worked.

이 2025년 9월 스레드에서의 핵심 실수는 다음을 해석한 것이었습니다: modprobe tun ZimaOS에 TUN 지원이 전혀 없다는 증거로 간주했습니다. Zima-Jerry는 이러한 가정을 바로잡았습니다. 소스 빌드에서는 TUN이 커널에 직접 컴파일되어 있었으므로 별도의 파일이 없었습니다: tun.ko 다음 아래의 파일 /lib/modulesmodprobe 로드하기 위해

그러나 사용자의 구체적인 Docker 서브넷 라우터 워크플로에는 여전히 Tailscale에서 요구하는 장치/모듈 동작이 필요했습니다. 따라서 IceWhale은 ZimaOS 1.5.0에서 TUN이 로드 가능한 커널 모듈이 되도록 패키징을 변경했습니다. 원 게시자는 9월 29일에 다시 테스트한 뒤 이제 작동한다고 답했습니다.

사용자는 사이트 간 Tailscale 서브넷 라우터를 원했습니다

출처의 설계는 멕시코와 우루과이의 두 물리적 위치를 연결하고, 각 사이트의 로컬 장치에 모든 엔드포인트에 Tailscale을 설치하지 않고도 Tailscale을 통해 서로 통신할 수 있도록 하는 것이었습니다.

이는 단순히 “ZimaOS 대시보드에 원격으로 액세스”하는 경우가 아니라 서브넷 라우터 사용 사례입니다. 서브넷 라우터는 tailnet과 다른 IP 서브넷 사이에서 패킷을 전달해야 합니다.

modprobe에서 tun 모듈 파일을 찾지 못함

사용자는 권한이 상승된 Tailscale 컨테이너를 실행했고 다음을 확인했습니다:

modprobe: FATAL: Module tun not found in directory /lib/modules/6.12.25

또한 다음 항목도 찾지 못했습니다: tun.ko 파일을 확인했지만 모듈 목록 확인 명령의 출력에 TUN 항목이 없었습니다.

IceWhale은 TUN이 커널에 직접 컴파일되었다고 밝혔습니다

Zima-Jerry의 첫 공식 답변은 명확했습니다. TUN 기능이 커널에 직접 내장되어 있으므로 일반 모듈 파일로 표시되지 않는다는 것이었습니다. /lib/modules/6.12.25.

이는 Linux 커널의 차이입니다. 기본 제공으로 구성된 기능은 다음에 표시되지 않고도 사용할 수 있습니다: lsmod 또는 로드 가능한 상태 modprobe.

내장 지원만으로는 소스 컨테이너 워크플로를 완전히 해결하지 못함

원 게시자는 컨테이너가 여전히 사용자 공간 모드로 전환되며, 자신이 원했던 완전한 호스트 방식의 서브넷 라우터 동작을 제공할 수 없다고 답했습니다. 또한 TUN을 모듈 방식으로 노출할 수 있는지 구체적으로 물었습니다.

Zima-Jerry는 다음 버전에서 이를 조정할 수 있다고 말했습니다.

ZimaOS 1.5.0에서 TUN이 로드 가능한 모듈로 변경됨

9월 28일, Zima-Jerry는 새로운 1.5.0 릴리스에서 tun.ko 커널 모듈이 되었으며 사용자에게 다시 테스트해 달라고 요청했습니다.

원 게시자는 다음 날 다음과 같이 답했습니다. “감사합니다. 이제 작동합니다.”

이는 출처에서 확인된 해결 방법이며, 이 스레드의 가장 중요한 결론입니다.

Tailscale 사용자 공간 네트워킹은 다른 작동 모드입니다

현재 Tailscale 문서에서는 사용자 공간 네트워킹을 사용하면 컨테이너가 TUN 장치 없이도 실행될 수 있다고 설명합니다. 이 모드에서는 tailscaled 일반적인 Linux 터널 인터페이스처럼 동작하는 대신 사용자 공간 네트워크 스택/프록시를 통해 작동합니다.

커널 TUN이 실제로 필요한지 결정할 때는 Tailscale의 현재 사용자 공간 네트워킹 모델을 사용하세요.

현재 Tailscale은 커널 모드와 사용자 공간 모드 모두에서 서브넷을 라우팅할 수 있습니다

현재 Tailscale 문서에는 커널 모드와 사용자 공간/netstack 서브넷 라우팅이 모두 설명되어 있습니다. Linux의 커널 모드는 일반적인 패킷 포워딩 동작을 유지하며 일반적으로 더 나은 성능을 제공하고, 사용자 공간 모드도 자체 네트워크 스택에서 지원되는 트래픽을 종료한 후 다시 생성하여 라우팅할 수 있습니다.

Docker의 경우 현재 Tailscale 문서에서도 다음을 설명합니다. TS_USERSPACE 기본적으로 활성화되어 있으며, 커널 모드에는 /dev/net/tun 필요한 권한도 필요합니다.

작동하는 TUN 장치만으로는 전체 서브넷 라우터 구성이 완료되지 않습니다

Linux 서브넷 라우터에는 IP 포워딩, 광고된 경로, Tailscale 관리자 콘솔의 경로 승인, 적절한 tailnet 액세스 규칙도 필요합니다. 컨테이너가 성공적으로 생성했다고 해서 tailscale0 그 자체만으로는 원격 LAN 장치가 이를 통해 라우팅될 수 있다는 의미가 아닙니다.

ZimaOS의 커널/장치 계층이 작동한 후에는 현재 Tailscale 서브넷 라우터 워크플로를 따르세요.

현재 ZimaOS에 1.4.x의 “tun.ko 누락” 진단을 적용하지 마세요

소스 자체가 버전 경계를 설명합니다. 1.4.x 커널의 빌드 방식 때문에 해당 파일이 없었고, ZimaOS 1.5.0에서 TUN 기능이 모듈로 변경되었습니다. 현재 ZimaOS는 해당 릴리스보다 훨씬 발전했습니다.

최근에 발생한 오류라면 2025년의 커널 패키징 문제가 다시 발생했다고 단정하기보다 현재 컨테이너 설정, TUN 장치 사용 가능 여부, 사용자 공간/커널 모드, IP 포워딩, 경로 승인 상태를 점검하세요.

Tailscale TUN FAQ

modprobe tun이 실패한 것이 ZimaOS에 TUN 지원이 없다는 증거였나요?

아니요. IceWhale은 TUN이 별도의 모듈로 제공된 것이 아니라 소스 커널에 직접 컴파일되었다고 말했습니다.

ZimaOS 1.5.0에서 무엇이 변경되었나요?

Zima-Jerry가 말했습니다 tun.ko 로드 가능한 커널 모듈이 되었습니다.

원 게시자가 새 버전이 작동한다고 확인했나요?

예. 1.5.0 변경 후 다시 테스트했고 작동한다고 했습니다.