2019/01/29 22:06

ShadowSocks + VNC 강좌&팁

통상적으로 VNC의 암호화 안 되는 보안상 문제를 해결하기 위해서 VPN이나 SSH로 터널링을 하는 경우가 많습니다

하지만 프록시를 통해 터널링하는경우는 본적이 없는듯합니다

같은 TCP/IP를 route해주는 수단이라면 안 될리 만무하기때문에 실험해서 성공후 결과물 올립니다



일단 이 방식의 장점은

1, 방화벽 투과성이 매우 뛰어납니다 (심지어는 중국의 그레이트월도 관통 가능합니다) (특히 obfs등과 조합하는 경우 매우 강력함)

2. SSH랑 달리 터널링 가능한 대역폭의 상한이 존재 안 합니다 (이점은 VPN이랑 동일)

3. 클라이언트쪽에서 쓰이는 모든 프로그램이 포터블로 가능하고, 관리자 권한이 필요없으므로 표준 계정과 같은 낮은 계정의 권한으로도 가능합니다 (단 일부 환경에서는 관리자 권한으로 실행 안 하면 제대로 작동하지 않았습니다) (또한 실행에 필요한 라이브러리가 없는 경우 설치가 필요합니다)

4. 모바일이나 전화선같이 통신이 불안정한 환경에서도 작동이 가능합니다 (다만 자주 끈키는건 피할 수 없습니다) (다만 별도의 접속 과정이 없으므로 재접속하는데 걸리는 시간이 없이 즉각 재접 가능)

5. System Proxy를 끄고 돌리는 경우 VPN과는 달리 시스템의 다른 프로세서에는 영향을 주지 않고 특정 프로그램의 패킷만 우회시킬 수 있습니다

6. VPN이랑 달리 IP를 할당해서 네트워크를 생성하는 방식이 아니므로 클라-클라간 통신으로 인한 보안적 문제를 원천적으로 방지가능합니다 (다만 이런걸 이용할려는경우 단점이 될 수 있음)

7. VPN TUN방식과는 달리 TAP방식과 동일하게 호스트 네트워크에 직접 엑서스하므로 NAT랑 상성이 나쁜 소프트를 이용할때 문제를 안 일으킵니다 (특히 android같은경우 아직까지 tap방식 vpn을 이용할 수 없으므로 이걸 이용하면 어느정도 호환성 있게 작동시킬 수 있습니다 (다만 route로 테더링 패킷을 우회하는등의 시도를 할때 vpn과는 달리 호환이 되지 않은걸 보면 완벽하게 대체하진 못합니다) ) (물른 vpn tun방식등에서도 호스트쪽 네트워크 접근은 가능하지만, iptables등과 한바탕 삽질을 동반하며, 결국 다른 서브넷이 되므로 일부 소프트(대표적으로 윈도에서 smb로 공유해둔 경우)에서는 거부당합니다)

다만 아직까지 UDP를 완벽하게 처리하지 못하므로 UDP를 쓰는 프로그램과는 완전 호환이 안 됩니다 (모드를 설정해도 완벽하지 않습니다 (이외에 PC 클라경우는 상관없지만, Mobile 클라경우 OS버전에 따라 ipv6가 제대로 안 될 수 있습니다)




다른 터널링 방식이랑 구조상 다른점은 ShadowSocks를 통해 Socks5포맷으로 통신해서 생성된 경로를 이용하여 통신을 행합니다 (당연한 애기지만 ShadowSocks서버는 VNC로 해당 서버에 접근이 가능한 상태야 합니다)

일단 ShadowSocks 서버를 구축할 필요가 있는데, 여러가지 서버가 존재하지만 뭘 써도 작동상 아무 차이가 없으므로 대부분의 리눅스에서 패키지로 설치 가능한 libev타입을 기준으로 해보겠습니다 (각 서버의 설치및 설정 방법은 구글링하면 자세하게 나오므로 다른걸 쓰실분들은 직접 찾아주세요)

먼저 패키지 메니저로 까시던지 https://github.com/shadowsocks/shadowsocks-libev/releases에서 소스를 받아서 컴파일해서 까시던지 Docker로 까시던지 원하는 방법으로 설치해주세요

{
    "server":["[::0]","0.0.0.0"],
    "server_port":8388,
    "local_port":1080,
    "password":"Password",
    "timeout":60,
    "method":"chacha20-ietf-poly1305",
    "mode":"tcp_and_udp",
    "fast_open":true,
    "dns":"1.1.1.1",
    "dns":"8.8.8.8",
    "plugin":"obfs-server",
    "plugin_opts":"obfs=tls;failover=127.0.0.1:8080"
}

예제용 셈플입니다 (색상 처리된 부분은 필요에 따라 설정해주세요)

인증에 비밀번호를 제외한 어떤것도 사용되지 않으므로 비밀번호는 반드시 강력한값을 써주세요

플러그인으로 obfs를 설정했지만, 필요없는 경우는 마지막의 2줄을 지워주세요

fast_open을 쓰실려면 서버에 별도의 설정을 해주셔야 합니다

https://www.robberphex.com/2018/08/806등 예제 많으므로 검색해서 참조해주세요

설정을 완료후 위에서 빨간색으로 된 부분의 포트를 방화벽에서 열어주셔야 합니다

다 되었다면 클라이언트로 넘어가야 합니다

먼저 클라이언트를 https://github.com/shadowsocks/shadowsocks-windows/releases에서 받아주세요

다음 obfs를 쓰는경우 https://github.com/shadowsocks/simple-obfs/releases 바이너리를 받아주세요

압축을 푸신후 shadowsocks.exe, libwinpthread-1.dll, obfs-local.exe 3개의 파일을 같은 경로에 넣은후 shadowsocks.exe를 실행해주세요 (obfs를 안 쓰시는경우 당연히 shadowsocks.exe 1개면 됩니다

Windows용 클라 실행에는 .Net Framework 4.6.2VCRedist 2015 x86을 요구합니다 (필요한 경우는 깔아주세요)

다음 트레이 아이콘에 우클릭후 Servers -> Edit Servers...순으로 클릭해서 설정창을 엽니다

다음 스샷과 같이 입력해주세요 (만일 obfs를 안 쓰시는경우 Plugin관련 2칸은 공백으로 두시면 됩니다)

설정은 gui-config.json에 저장되고, 나머지 생성되는 파일은 신경 안 쓰셔도 실행할때마다 자동으로 생성및 갱신됩니다)

여기까지 하셨다라면 작동 시험을 해주세요

트레이 아이콘에 우클릭해서 메뉴에서 Enable System Proxy가 체크된 상태 (아이콘이 파란색)라면 브라우저에서 프록시를 자동으로 해두면 접속됩니다 (수동으로 입력하실경우 Socks5 127.0.0.1:1080을 설정해주세요)

이제 제대로 되었는지 보기 위해 ip 체크를 위한 http://ip-check.info/?lang=en등의 사이트에 접속해서 뜨는 주소가 서버의 ip면 정상적으로 작동중인겁니다

만일 작동에 문제가 있는경우 종료후 수동으로 관리자 권한 줘서 실행해주세요 (시스템 환경에 따라 권한 없이 안 되기도 합니다)

이제 우회해볼 차례입니다

클라이언트는 2가지 선택지가 있습니다

첫번째 기본적으로 socks5입력이 가능한 RealVNC를 쓰는 방법입니다 (실행후 설정에서 네트워크 정보에 수동으로 127.0.0.1:1080을 입력해주세요)

다만 라이센스상 회사등에서 쓰는경우 해당 클라는 사용할 수 없습니다

두번째로 직접 VNC클라를 개조하는 방법입니다 (대부분의 VNC는 GPL을 준수하므로 소스 받아서 컴파일하기전에 수정해주세요)

세번째 Turbo Studio를 이용해서 포터블로 빌드하면서 네트워크 설정을 강제하는 방법입니다

체험판을 받아서 해당 라이센스로 빌드하시면 됩니다

아니면 미리 빌드해둔 https://www.mediafire.com/?8bpiu8feiz71p19를 쓰시면 됩니다 (네트워크 프록시 주소가 127.0.0.1:1080으로 고정되어져 있습니다)

원하는 방법으로 클라를 준비후 ShadowSocks가 실행된 상태에서 접속후 ShadowSocks 서버에서 접속할때와 동일한 주소 + 포트를 입력하시면 정상적으로 접속이 가능한것을 발견 가능합니다

이외에 다른 원격 소프트도 시험했을때 정상적으로 접속 가능한것을 확인 했습니다



추신 : VPN에서만 호환되고, Socks5로 안 되는 경우는 VPN over Socks5 (오버헤드는 심하게 증가합니다)라는 방법으로 대역폭을 희생해서 방화벽 투과성 (주로 중국등에서 접속할때 쓰임)을 확보할 수 있습니다




핑백

  • ShadowSocks + VNC - 백곡시스템 2019-04-17 23:02:53 #

    ... 5 (오버헤드는 심하게 증가합니다)라는 방법으로 대역폭을 희생해서 방화벽 투과성 (주로 중국등에서 접속할때 쓰임)을 확보할 수 있습니다 출처:ShadowSocks + VNC 이 글 공유하기:트위터로 공유하기 (새 창에서 열림)페이스북에 공유하려면 클릭하세요. (새 창에서 열림) 관련 태그: ShadowSo ... more

덧글

댓글 입력 영역