튜토리얼 · 약 16분

Chromebook Crostini에 Mihomo 설치:
구독 가져오기·LAN 프록시까지 한 번에

ChromebookChrome OS 위에 Linux 컨테이너(Crostini, 기본 사용자명은 보통 penguin)를 올려 Debian 계열 환경을 씁니다. 여기서 Mihomo(Clash.Meta 계열·Clash 호환 구성)를 돌리면 GUI 없이도 터미널·Linux 앱 트래픽을 규칙 엔진으로 묶을 수 있고, 구독proxy-providers로 불러와 자동 갱신할 수 있습니다. 같은 Wi-Fi의 스마트폰·PC가 크롬북을 프록시로 쓰려면 allow-lanChrome OS포트 포워딩을 함께 맞춰야 합니다. 이 글은 그 순서를 처음부터 끝까지 정리합니다.

Chromebook · Crostini · Mihomo · 구독 · LAN 프록시

1 Crostini에서 Mihomo(Clash 호환)를 쓰는 이유

많은 사용자가 Chromebook에서도 Clash와 같은 규칙 기반 프록시를 쓰고 싶어 하지만, 공식 스토어 형태의 단일 «Clash 앱»이 모든 모델·정책에서 일관되게 제공되는 것은 아닙니다. 반면 Linux 개발 환경은 비교적 표준적인 Debian 셸을 주므로, 다른 배포판용으로 널리 알려진 Mihomo 단일 바이너리를 그대로 내려받아 구성할 수 있습니다. 문법은 대부분의 Clash 튜토리얼과 통하고, 구독 가져오기·Rule Provider·최신 전송 프로토콜까지 한 코어에서 다루기 좋습니다.

일반 Linux 데스크톱에서 systemd로 상시 실행하는 흐름은 Linux Mihomo·systemd 가이드와 거의 같습니다. 다만 Crostini는 가상화·네트워크 스택이 Chrome OS와 분리되어 있어, «컨테이너 안에서 포트를 열었다»고 해서 곧바로 같은 공유기 망의 다른 기기에서 보이지는 않습니다. LAN 프록시를 열려면 allow-lan 설정과 더불어 OS 측 포트 포워딩 UI까지 확인해야 한다는 점이 가장 큰 차이입니다.

또한 크롬북에서 Chrome 탭으로 보는 웹과 Linux 터미널의 트래픽은 기본적으로 같은 프록시 설정을 공유하지 않습니다. 터미널·curl·일부 Linux GUI 앱은 환경 변수나 앱 자체 설정으로 Mihomo의 mixed 포트를 쓰게 만들 수 있지만, Chrome OS의 Chrome은 별도 확장 프로그램·정책·또는 시스템 수준 설정을 검토해야 합니다. 아래에서 이 구분을 명확히 짚고, 독자가 기대하는 «무엇이 자동으로 프록시되는지»를 맞추도록 하겠습니다.

2 전제 조건: Linux(Beta) 켜기와 디스크 여유

설정 앱에서 개발자 또는 고급 메뉴로 들어가 Linux 개발 환경(표기는 기기·OS 버전에 따라 «Linux(Beta)», «개발용 Linux» 등)을 켭니다. 처음 켤 때 사용자 이름과 디스크 크기를 정하게 되는데, GeoIP·규칙 세트·로그를 둘 공간을 고려해 너무 작게 잡지 마세요. 이미 만든 뒤라도 설정에서 디스크를 늘릴 수 있는 경우가 많습니다.

학교·회사 관리 디바이스는 Linux 기능 자체가 막혀 있을 수 있습니다. 정책으로 셸 접근이 제한되면 이 문서의 절차대로 진행되지 않으므로, 관리자 가이드를 먼저 확인해야 합니다. 개인 기기라도 게스트 모드에서는 저장이 유지되지 않으니, 일반 프로필에서 작업하세요.

백업 ~/.config/mihomo 아래의 config.yaml과 구독 캐시는 정기적으로 크롬북 외부(클라우드·USB)에 복사해 두세요. Linux 컨테이너를 재설정하면 이 디렉터리가 통째로 사라질 수 있습니다.

3 Crostini 네트워크와 Chrome OS 포트 포워딩

터미널에서 hostname -I 또는 ip -br a로 보이는 주소는 대개 가상 브리지 쪽 사설 대역입니다. 같은 집 Wi-Fi에 있는 휴대폰이 이 주소로 직접 붙을 수 있는지는 환경마다 다르고, 최신 Chrome OS에서는 설정 > 개발자 > Linux 개발 환경 > 포트 포워딩(표기는 영문 UI 기준 «Port forwarding»)에서 컨테이너의 TCP 포트를 호스트로 노출하는 방식이 가장 확실합니다. 여기서 7890처럼 Mihomo mixed-port에 맞춘 항목을 추가하면, 외부 기기는 «크롬북의 Wi-Fi IP 주소 + 해당 포트»로 접속할 수 있습니다.

크롬북의 LAN IP는 Wi-Fi 상세 정보에서 확인합니다. 스마트폰 프록시 설정에 넣을 때는 «HTTP/HTTPS 프록시 호스트 = 그 IP», 포트 = 포워딩에 적은 번호를 사용합니다. SOCKS5를 쓰는 앱이라면 Mihomo가 mixed 포트에서 SOCKS도 함께 받는 구성인지 YAML을 확인하세요. 포트가 열렸는지 먼저 같은 크롬북의 Linux 셸에서 curl로 검증한 뒤, 다른 기기에서 시도하면 원인 분리가 쉽습니다.

보안 LAN 프록시를 열면 같은 카페·회사 망에 있는 다른 사람도 포트 스캔으로 접근할 수 있습니다. 공용 Wi-Fi에서는 allow-lan을 끄거나, 집에서만 포워딩을 켜는 식으로 운영하세요. external-controller는 반드시 127.0.0.1에만 두고 강한 secret을 설정하세요.

4 Mihomo 바이너리 설치(Crostini/Debian)

아키텍처는 uname -m으로 확인합니다. x86_64이면 릴리스 페이지의 linux-amd64, aarch64이면 linux-arm64 패키지를 고릅니다. 아래 명령의 URL과 파일 이름은 방문 시점의 최신 버전으로 바꿔 주세요.

Bash
sudo apt update
sudo apt install -y curl ca-certificates
mkdir -p ~/.config/mihomo
# Replace with latest release asset from Mihomo GitHub Releases
curl -fL -o /tmp/mihomo.gz "https://github.com/MetaCubeX/Mihomo/releases/download/v1.18.0/mihomo-linux-amd64-v1.18.0.gz"
gunzip -c /tmp/mihomo.gz > /tmp/mihomo
chmod +x /tmp/mihomo
sudo mv /tmp/mihomo /usr/local/bin/mihomo
mihomo -v

/usr/local/bin에 쓰기 권한이 번거로우면 홈 디렉터리 아래 ~/bin/mihomo에 두고 PATH에 추가해도 됩니다. 기업 정책으로 sudo가 막혀 있다면 사용자 영역만으로 구성해야 하므로, 이 경우에도 설정 디렉터리는 ~/.config/mihomo로 통일하는 편이 관리가 쉽습니다.

5 구독 가져오기: proxy-providers와 프로필 합치기

상용 서비스가 주는 링크가 곧바로 완전한 config.yaml이 아닐 수 있습니다. 원격이 Clash/Mihomo용 단일 파일이라면 proxy-providersurl로 직접 가리키거나, 로컬에 내려받은 뒤 file:// 경로를 쓸 수 있습니다. 반면 범용 구독 형식만 준다면 구독 변환 가이드에서 안내하는 대로 중간 변환을 거쳐 Mihomo가 읽을 수 있는 조각을 만든 다음, 아래처럼 use프록시 그룹에 합칩니다.

YAML (발췌)
mixed-port: 7890
allow-lan: true
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
secret: "replace-with-strong-secret"

proxy-providers:
  sub1:
    type: http
    url: "https://example.com/your-subscription-or-converted-endpoint"
    path: ./providers/sub1.yaml
    interval: 3600
    health-check:
      enable: true
      url: https://www.gstatic.com/generate_204
      interval: 600

proxy-groups:
  - name: PROXY
    type: select
    use:
      - sub1
    proxies:
      - DIRECT

rules:
  - MATCH,PROXY

path는 설정 디렉터리 기준 상대 경로로 두면 편합니다. 첫 실행 전 mihomo -t -d ~/.config/mihomo로 문법 검사를 하면 YAML 오류를 줄일 수 있습니다. DNS·FakeIP·유출 방지를 강하게 맞추려면 Meta DNS 가이드의 권장 패턴을 이식하세요. Crostini는 재부팅 시 커널·네트워크가 Chrome OS 쪽 정책에 묶이므로, DNS 리스너 포트가 다른 서비스와 충돌하지 않는지도 확인합니다.

6 allow-lan과 바인드 주소 맞추기

같은 컨테이너 안의 앱만 쓸 계획이라면 allow-lan: false127.0.0.1 접속으로 충분합니다. 그러나 LAN 프록시를 목표로 한다면 allow-lan: true가 필요합니다. 일부 환경에서는 bind-address를 명시해야 외부에서 들어오는 SYN을 받을 수 있습니다. 문서화된 키 이름은 Mihomo 버전에 따라 다를 수 있으니, 사용 중인 릴리스의 예제 config.yaml을 참고해 0.0.0.0 바인딩 여부를 결정하세요.

포트를 연 뒤에도 외부에서 막힌다면 (1) Crostini 방화벽이나 iptables 규칙, (2) Chrome OS 포트 포워딩 누락, (3) 상대 기기가 다른 VLAN/게스트 Wi-Fi에 붙어 있는지 순서대로 점검합니다. 특히 «게스트 격리»가 켜진 공유기에서는 게스트 단말이 LAN의 크롬북 IP로 접근하지 못하는 경우가 많습니다.

7 실행: 포그라운드 테스트와 systemd --user

먼저 포그라운드로 로그를 보며 띄워 보세요.

Bash
mihomo -d ~/.config/mihomo

정상이라면 다른 터미널 탭에서 export https_proxy=http://127.0.0.1:7890curl -I https://www.google.com 같은 검증을 할 수 있습니다. 백그라운드 상주를 원하면 사용자 systemd 유닛을 쓰는 방법이 일반적입니다. Chrome OS 업데이트마다 동작이 바뀔 수 있으니, 아래는 개념 예시이며 경로와 권한은 본인 환경에 맞게 조정하세요.

systemd user unit (예시)
# ~/.config/systemd/user/mihomo.service
[Unit]
Description=Mihomo (Clash compatible)
After=network-online.target

[Service]
ExecStart=/usr/local/bin/mihomo -d /home/%u/.config/mihomo
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target
Bash
loginctl enable-linger "$USER"
systemctl --user daemon-reload
systemctl --user enable --now mihomo.service
systemctl --user status mihomo.service

linger를 켜 두어야 사용자 세션이 없을 때도 유닛이 유지되는 경우가 있습니다. 로그는 journalctl --user -u mihomo.service -f로 따라갈 수 있습니다. 전통적인 sudo systemctl 루트 유닛은 학교 기기에서 막혀 있을 수 있어, 홈 디렉터리만 건드리는 user 유닛이 현실적인 타협인 경우가 많습니다.

8 Chrome 브라우저 트래픽과 Linux 프록시의 분리

앞서 강조했듯이, Linux 컨테이너의 Mihomo는 기본적으로 Chrome OS의 Chrome 탭 트래픽을 자동으로 가로채지 않습니다. 브라우저만 선택적으로 프록시하려면 Chrome 웹스토어의 신뢰할 수 있는 확장 프로그램을 쓰거나, 조직 정책으로 허용되는 경우 시스템 수준 프록시 설정을 검토해야 합니다. 반대로 apt로 깐 개발 도구·VS Code Linux 빌드·터미널 git 등은 http_proxy 환경 변수나 도구별 설정으로 Mihomo를 타기 쉽습니다.

«한 대의 크롬북에서 모든 앱이 동일 규칙을 따르게»가 목표라면, GUI 클라이언트가 있는 다른 OS 기기와 달리 Chromebook은 설계상 타협이 필요합니다. 그럼에도 Crostini + Mihomo 조합은 개발·연구·콘솔 작업 등 Linux 쪽 부담이 큰 시나리오에서 여전히 가치가 큽니다. 나머지 트래픽은 본문 앞부분의 LAN 프록시나 별도 확장으로 보완하는 식으로 설계하면 기대치와 결과가 일치합니다.

9 문제 해결 체크리스트

  • 구독은 받아지는데 노드가 비어 있음: proxy-providerspath 권한·다운로드 오류 로그를 확인하고, 원격 콘텐츠가 실제 proxies: 목록을 포함하는지 봅니다.
  • 로컬 curl만 되고 폰은 안 됨: Chrome OS 포트 포워딩과 크롬북 LAN IP, 공유기 게스트 격리 여부를 재확인합니다.
  • DNS만 이상함: dns.listen 포트 충돌, FakeIP와 앱의 DoH 중복, DNS 가이드의 권장값과 비교합니다.
  • user systemd가 시작되지 않음: loginctl show-user "$USER"에서 Linger 여부, 유닛 안의 ExecStart 절대 경로, SELinux/AppArmor 유사 제한(환경에 따라 다름)을 점검합니다.
  • HTTPS 오류: 중간 자격 증명을 가로채는 «디버그 프록시»와 혼동하지 않도록, 순수 포워딩 환경에서만 MITM 관련 설정을 켜세요.

10 정리

Chromebook에서 Clash 호환 워크플로를 갖추려면, Linux 컨테이너CrostiniMihomo를 올리고 구독 가져오기proxy-providers로 자동화한 뒤, mixed 포트LAN에 안전하게 노출하는 단계까지가 한 세트입니다. 일반 Linux 서버 가이드와 달리 Chrome OS포트 포워딩과 «브라우저 vs Linux» 트래픽 분리를 이해하는 것이 성공의 열쇠입니다. 이미 서버나 데스크톱에서 YAML을 다루어 봤다면, 같은 프로필을 이식해 실험하기도 좋습니다.

GUI로 구독·TUN·규칙 편집을 한 화면에서 다루고 싶다면 Windows·macOS·Linux용 클라이언트가 여전히 편합니다. 크롬북에서는 본문처럼 코어를 최소 구성으로 두고, 다른 기기에서 다운로드 페이지에 안내된 제품으로 시각적으로 조정하는 역할 분담도 현실적인 방법입니다. 생태계 전반이 Clash 문법을 공유하므로, 한 번 익힌 설정은 플랫폼을 옮겨도 크게 달라지지 않습니다.

순수 터미널 위주라면 이 구성만으로도 충분히 생산성을 낼 수 있고, LAN에 있는 태블릿까지 같은 노드 정책을 쓰게 만들 수 있다는 점이 Chromebook만의 매력입니다. 다만 공용망에서는 노출 범위를 최소화하고, API와 인증 정보를 항상 최신 상태로 유지하세요.

→ Clash를 무료로 내려받아 크롬북과 함께 쓸 크로스 플랫폼 클라이언트를 골라 보세요

태그: Chromebook Crostini Mihomo Clash 호환 구독 LAN 프록시 2026
Chromebook·Crostini 사용자를 위한 Clash 멀티플랫폼 클라이언트 로고

Clash Verge Rev

차세대 Clash 클라이언트 · Mihomo · 규칙 분할

크롬북에서는 Crostini로 코어를 돌리고, Windows·macOS·Linux에서는 GUI로 구독·TUN·DNS를 한 화면에서 다루는 식으로 역할을 나누기 좋습니다. 동일한 Clash 호환 프로필을 기기 간에 옮기기도 쉽습니다.

크로스 플랫폼 Mihomo 구독 DNS TUN

관련 읽을거리