Create TOC

2020년 1월 3일

Raspbian/docker + GreenTunnel

raspbian에서 GreenTunnel을 docker로 올리는 방법을 기술한다.

docker image 만들기

GreenTunnel 소스를 받는다

$ git clone https://github.com/SadeghHayeri/GreenTunnel GreenTunnel

GreenTunnel/Dockerfile 파일에서 FROM 부분을 아래와 같이 수정한다.

FROM node:lts-buster-slim

이미지를 빌드한다.

$ cd GreenTunnel
$ sudo docker build --tag green-tunnel ./

이미지가 생성되었는지 확인한다.

$ sudo docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
green-tunnel                  latest              e0f67216c1d5        19 hours ago        158MB
node                          lts-buster-slim     b490682c0125        5 days ago          134MB

docker-compose.yml

version: "3"

services:
    green-tunnel:
        container_name: green-tunnel
        image: green-tunnel
        ports:
            - "8000:8000/tcp"
        restart: unless-stopped

docker-compose 명령으로 container를 만든다.

$ sudo docker-compose up -d

테스트

GreenTunnel을 실행시킨 raspberry pi의 ip와 port 8000 으로Firefox 등의 웹 브라우저의 proxy 설정에서 https proxy를 설정한다.

GreenTunnel 로그는 아래 명령으로 확인할 수 있다.

$ sudo docker logs -f green-tunnel

proxy.pac

이제 원하는 사이트에 접속할 때만 GreenTunnel 을 사용하도록 자동 프록시 설정 파일(proxy.pac)을 만든다.

예제는 https://abc*.net, https://def.net, 접속에서만 GreenTunnel을 사용하도록 설정했다.

function FindProxyForURL(url, host) {
    url = url.toLowerCase();
    host = host.toLowerCase();

    isHttp=(url.substring(0, 5) == "http:");

    if (isHttp) {
        return "DIRECT";
    }

    if (0
        || isPlainHostName(host)
        || shExpMatch(host, "*.local")
        || isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0")
        || isInNet(dnsResolve(host), "172.16.0.0",  "255.240.0.0")
        || isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")
        || isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")
        ) {
        return "DIRECT";
    }

    if (0
        || shExpMatch(url, "https://abc*.net/*")
        || shExpMatch(url, "https://def.net/*")
        ) {
        return "PROXY GreenTunnel주소:8000";
    }
    return "DIRECT";
}

proxy.pac을 http 로 접속 가능한 위치에 올리고 원하는 브라우저나 시스템 설정에서 http://어딘가/proxy.pac 형식으로 자동 프록시를 등록하면 된다.