전자책 리더는 우리가 가진 컴퓨터 중 성능이 가장 약한 축에 속한다. 그런데 오픈소스 개발자들이 탈옥한 킨들에 테일스케일(Tailscale)을 올리는 작업을 꾸준히 다듬으면서, 이 '가장 그럴듯하지 않은 씬 클라이언트'가 실제로 쓸 만한 물건이 되어가고 있다. 이번 업데이트의 핵심은 세 가지다. 테일스케일 SSH, KOReader를 위한 프록시 모드, 그리고 일부 기기에서 동작하는 완전한 TUN 모드다. 여기에 코보(Kobo)와 포켓북(PocketBook) 같은 다른 e-잉크 기기까지 지원 범위가 넓어졌다.
짚고 넘어갈 전제가 있다. 이 모든 것은 공식 지원이 아니라 커뮤니티 코드이며, 제조사가 의도하지 않은 상태(탈옥)의 기기 위에서 돌아간다. 기기 펌웨어가 너무 앞서 업데이트되기 전에 탈옥에 성공한 사람만 대상이고, 설치 과정에서 인내심이 필요하다는 점을 감안해야 한다.
'연결됨'과 '라우팅됨'은 다르다
이전까지 킨들의 테일스케일 클라이언트는 기본적인 수준이었다. 킨들이 테일넷(tailnet)에 등장하고, 웹 관리 콘솔에 초록 점으로 표시되며, 테일스케일 IP로 킨들에 접근하거나 SSH로 들어가 이것저것 만질 수 있었다. 여기까지도 충분히 인상적이었지만, '테일스케일로 도달 가능하다'는 것과 '들어오고 나가는 모든 트래픽을 테일넷 위로 라우팅한다'는 것은 전혀 다른 이야기다.
문제의 뿌리는 동작 방식에 있다. 탈옥한 킨들에서 테일스케일은 대개 유저스페이스(userspace) 모드로 강제 실행된다. 이 모드에서는 기기의 네트워크 라우팅 계층, 즉 TUN 모드를 사용하지 못한다. 그래서 테일스케일을 켜고 KOReader 같은 앱을 실행한 뒤 100.x.y.z에 있는 캘리버(Calibre) 서버 같은 다른 테일스케일 기기에 접속하려 하면 연결이 되지 않는다. 킨들 자체는 테일넷에 보이지만, 킨들에서 밖으로 나가는 애플리케이션 트래픽은 테일넷을 타지 못하는 반쪽짜리 상태였던 셈이다.
프록시 모드가 메우는 빈틈
greywolf1499이 킨들의 KUAL 앱을 업데이트하면서 이 한계를 우회하는 여러 모드를 제공하기 시작했다. 이제 킨들에서 다른 테일스케일 IP로 접근할 때, 앱이 선호하는 방식에 따라 SOCKS5 또는 HTTP CONNECT 두 가지 프록시 모드를 골라 쓸 수 있다. 유저스페이스 모드에서 막혔던 아웃바운드 접속을 프록시 계층으로 뚫어주는 것이다. 여기에 기기에 따라서는 완전한 TUN 모드까지 동작한다. 이 조합 덕분에 '연결만 되던' 킨들이 콘텐츠 서버와 실제로 통신하는 기기로 바뀐다.
테일스케일 기능을 KOReader 밖에서까지 쓸 필요가 없다면, 더 가벼운 선택지도 있다. 별도의 테일스케일 KOReader 플러그인이다. 이 플러그인은 KUAL 기반 앱과 달리 킨들 자체를 테일넷에서 접근 가능하게 만들지는 않는다. 대신 KOReader가 콘텐츠 서버에 도달하는 데 필요한 프록시 인터페이스를 자동으로 만들어준다. 그리고 이 방식이 코보와 포켓북에서도 동작한다는 점이 주목할 만하다. Victoria Riley Barnett의 저장소는 이 플러그인이 KOReader용 SyncThing 플러그인과도 잘 맞물린다고 밝히고 있다. 원문 필자는 자신의 11세대 표준 킨들에서는 아직 제대로 붙지 않았다고 솔직히 적었는데, 공식 테스트 환경은 킨들 PW5/PW6, 코보, 포켓북이다.
설치 흐름 자체는 여기까지 탈옥을 진행한 사람에게 그리 어렵지 않다. 플러그인을 KOReader의 plugins 디렉터리에 복사하고, KOReader 메뉴에서 'Install/Update Tailscale'을 실행한 뒤, 테일스케일 키를 지정 디렉터리에 복사하고 메뉴에서 테일스케일을 켠다. 그다음 KOReader에 프록시 주소(SOCKS5는 127.0.0.1:1055, HTTP CONNECT는 :1056)를 설정하고, 도달해야 할 대상의 테일스케일 IP를 다른 플러그인에 넣어주면 된다.
실무자가 읽을 지점
이 프로젝트가 당장 업무 인프라에 들어갈 물건은 아니다. 그러나 설계의 관점에서 배울 대목이 있다. 유저스페이스 VPN 클라이언트가 커널 라우팅에 접근하지 못할 때, SOCKS5나 HTTP CONNECT 프록시를 로컬에 띄워 애플리케이션 트래픽만 오버레이 네트워크로 우회시키는 패턴은 컨테이너나 제약된 임베디드 환경에서도 그대로 통용되는 기법이다. 권한이 제한된 기기에서 테일넷 접속을 구현할 때, TUN 없이도 애플리케이션 레벨 프록시로 상당한 유용성을 회복할 수 있다는 점을 이 사례가 잘 보여준다.
한계도 분명히 인식해야 한다. 공식 지원이 아니므로 문제 발생 시 벤더 지원을 기대할 수 없고, 특정 기기 세대에서만 검증되어 있어 재현성이 보장되지 않는다. 프록시 방식은 트래픽을 명시적으로 프록시로 보내도록 설정된 앱에만 적용되므로, 임의의 애플리케이션 전체를 투명하게 감싸지도 못한다. 그럼에도 KOReader가 사실상 탈옥한 킨들 위의 독립된 운영체제처럼 자리 잡아가는 흐름 속에서, e-잉크 기기를 조용한 씬 클라이언트로 실험해보려는 사람에게는 충분히 흥미로운 출발점이 된다.