Tailscale의 Plan 9 포팅
-
소개
- Tailscale이 Plan 9에서 작동하게 되었음. 이는 4월 1일의 농담이 아닌 실제 사실임.
- Plan 9에 Tailscale을 포팅하는 과정에서 여러 기술적 도전과 해결책이 있었음.
-
Plan 9에 대한 이해
- Plan 9는 독특한 운영체제로, Tailscale을 포팅하는 과정에서 여러 가지 새로운 것을 배울 수 있었음.
- Go 컴파일러의 Plan 9 지원이 시간이 지나면서 문제가 생겼고, 이를 해결하기 위해 많은 노력이 필요했음.
-
기술적 도전
- Plan 9의 SSE 지원 문제를 해결하기 위해 커널 수정이 필요했음.
- IPC 문제로 인해 메모리 오류가 발생했으며, 이를 해결하기 위해 localhost TCP를 사용함.
- 개발 환경을 개선하기 위해 Russ Cox가 Plan 9 소스 코드와 사전 컴파일된 바이너리를 제공하는 GitHub 저장소를 생성함.
-
네트워킹 및 라우팅
- Tailscale의 "userspace networking" 모드로 Plan 9에서 작동하게 되었으나, 이는 이상적인 해결책은 아님.
- Plan 9의 네트워크 경로를 조작하여 라우팅 테이블을 구현함.
-
추가 기능 및 개선
- Tailscale SSH 지원을 추가하여 SSH 서버가 Tailscale의 ID를 사용해 인증하도록 함.
- MagicDNS 기능을 구현하여 Plan 9에서 Tailscale 네트워크의 피어를 쉽게 참조할 수 있도록 함.
- Plan 9의 시간 문제를 해결하여 gVisor의 netstack에서 발생하는 충돌을 방지함.
-
미래 방향
- Plan 9의 다른 포크(9legacy, 9front)에서도 Tailscale이 작동하도록 테스트가 필요함.
- 64비트 지원 및 추가 기능 구현이 필요함.
-
결론
- Tailscale의 Plan 9 포팅은 재미있고 교육적인 경험이었으며, Go의 Plan 9 지원을 개선하는 데 기여했음.
- 이 프로젝트는 Plan 9 커뮤니티가 이어받아 발전시킬 수 있기를 기대함.