안녕하세요.
트랜스미션을 이용하고 싶은데 IP 노출이 찜찜하던 차에 예전에 가입해 둔 VPN Unlimited를 이용하면 어떨까하고 구글링해보니 사례가 별로 없더군요.
사용자 층이 없어서 그런가, VPN Unlimited가 고객정보 제공 전력이 있어서 그런가 잘 모르겠습니다.
이 VPN Unlimited는 많이 느리고, 예전에 고객정보를 사법기관에 유출한 전례가 있기 때문에 별로 권장받지는 않으나, 예전부터 아주 싸게 평생이용권을 팔아제낀 덕분에 아직까지 살아남지 않았나 싶습니다.
여튼 그냥 시놀로지 download station을 이용하는 것보다는 그래도 IP 가려주는 척이라도 할테니 일단 이거라도 이용하자라는 심정으로 설치를 하게 되었습니다.
일단 시놀로지에 필수 프로그램들을 설치하고 도커 이미지를 받은 후 컨테이너 설정을 한 다음에 실제 구동까지 하도록 하겠습니다.
본 매뉴얼은 아래 레퍼런스를 참고하여 작성하였습니다. (사실 거의 모든 내용을 참고하였습니다. 이 매뉴얼은 그저 그림동화일 뿐입니다. :)
https://www.clien.net/service/board/cm_nas/13925654CLIEN
https://haugene.github.io/docker-transmission-openvpn/
-
트랜스미션 전용 폴더 생성하기
공용폴더 생성하는 방법 → https://www.synology.com/ko-kr/knowledgebase/DSM/help/DSM/AdminCenter/file_share_create
https://mybox.halmeona.com/43 참고
트랜스미션이 이용하는 폴더를 아래와 같이 생성합니다. 도커 이미지가 위치하게 되므로 docker, 트랜스미션 파일조각을 받게 될 temp, 완료된 파일이 저장될 download 디렉토리를 원하는 곳에 생성합니다.
폴더 |
목적 |
매칭되는 도커 디렉토리 |
download |
완료된 파일이 저장될 위치 |
/data/completed |
temp |
미완료된 파일이 저장될 위치 |
/data/incomplete, /data/watch |
docker/openvpn/config |
.ovpn 파일이 저장될 위치 |
/etc/openvpn/custom |
docker/openvpn/script |
openvpn 홈 디렉토리(?) |
/data |
-
VPN unlimited의 ovpn 파일 얻기
-
Manual configurations → 하기 정보 입력 → Generate 클릭 → .ovpn파일 저장
(https://www.vpnunlimitedapp.com/help/manuals/how-to-manually-create-vpn-conf 참고)-
Device : 도커를 구동할 기기명 (synology NAS 등)
-
Server : 토렌트 서버 중 하나 선택
-
-
Protocol : openVPN 선택
-
아래 General Info의 내용 중 Device Config 아래 Login과 Password 정보기록
-
파일 저장
-
.ovpn 파일을 docker/openvpn/config로 복사
DSM은 drag&drop이 지원됩니다. 탐색기나 파인더에서 .ovpn 파일을 선택해서 DSM의 file station의 docker/openvpn/config로 드래그&드롭하여 복사해보세요.
-
VPN server 설치 및 설정
VPN 서버 설정 방법 → https://www.synology.com/ko-kr/knowledgebase/DSM/help/VPNCenter/vpn_setup
스크립트를 써서 TUN을 활성화해야 하는데 VPN server를 설치하고 openVPN 활성화하면 그럴 필요가 없습니다.
-
패키지센터 → VPN server 설치
-
VPN server 구동 → VPN server 설정 → openVPN 활성화 → 적용
-
트랜스미션 전용 계정 만들기
사용자 계정 생성 방법 → https://www.synology.com/ko-kr/knowledgebase/DSM/help/DSM/AdminCenter/file_user_create
트랜스미션을 구동하는 도커 컨테이너는 높은 권한을 사용하여 실행되다보니 트랜스미션을 루트 계정으로 실행시키는 도커 컨테이너는 시놀로지의 루트권한을 갖게 됩니다. 따라서 트랜스미션 전용 계정을 만드는 것이 보안에 유리합니다. 그룹은 이미 있는 사용자 그룹을 사용하면 충분할 것 같습니다.
항목 |
값 (예시) |
설명 |
이름 |
transmission |
id |
패스워드 |
******* |
패스워드 |
그룹 |
users |
신규사용자가 속한 그룹 |
공유폴더 권한 할당 |
4번 과정에서 생성한 디렉토리가 속한 모든 공유폴더에 쓰기/읽기 권한 부여 및 나머지 공유폴더는 접근금지 |
보안성을 높이기 위해 트랜스미션 컨테이너가 접근할 수 있는 디렉토리를 명확히 정의 |
응용프로그램 권한 할당 |
모두 거부해도 무방 |
보안성을 높이기 위해 신규사용자가 구동할 수 있는 응용프로그램을 명확히 제한 |
-
신규생성 사용자 계정의 uid/gid 확인
-
ssh로 synology NAS에 로그인
-
ssh 활성화 및 로그인 방법 → https://www.synology.com/ko-kr/knowledgebase/DSM/tutorial/General_Setup/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet
-
id 명령으로 uid/gid 확인
$ id transmission uid=1043(transmission) gid=100(users) groups=100(users) |
-
Synology NAS의 로컬 네트워크 서브넷 확인
-
제어판 → 네트워크 → 네트워크 인터페이스 → LAN포트 정보확인
-
-
LAN 포트 IP와 서브넷마스크로 서브넷 계산
-
IP Address에 상기 IP주소 입력 (192.168.1.134)
-
Subnet Mask에 상기 서브넷 마스크 선택 (255.255.255.0)
-
Subnet ID와 Mask Bits 확인하여 <Subnet ID>/<Mask Bits> 형식으로 서브넷 도출
-
상기 예에서는 192.168.1.0/24가 서브넷
-
도커 스테이션 설치
도커 스테이션 설치 방법 및 도커 개념 → https://ux.stories.pe.kr/142
상기 웹페이지에서 도커의 기본 개념과 설치방법을 알아보시고 설치하세요.
-
도커 스테이션 구동 및 haugene transmission-openvpn:latest 다운로드
-
도커 스테이션 구동
-
-
레지스트리 → Haugene transmission-openvpn 검색 후 다운로드
-
Latest 선택 후 다운로드
-
haugene/transmission-openvpn:latest 파라미터 설정 및 컨테이너 구동
-
이미지 → haugene/transmission-openvpn:latest 선택 후 실행 클릭
-
일반설정
-
높은 권한을 사용하여 컨테이너 설정 체크
리소스 제한 활성화 체크 후 해당 컨테이너에 줄 수 있는 CPU/메모리 할당
-
고급설정 (볼륨)
1번 과정 표대로 입력
-
고급설정 (포트설정)
로컬 포트는 원하는 값을 입력. 자동입력의 경우 추후 transmission 웹페이지에 접속할 때 포트번호를 알 수 없기 때문에 고정값으로 지정하는 것이 바람직.
-
고급설정 (환경변수)
아래의 값을 입력 및 변경
환경변수 |
값 |
비고 |
LOCAL_NETWORK |
6.2.의 서브넷 입력 |
시놀로지 NAS의 IP가 속한 서브넷 |
CAP_ADD |
NET_ADMIN |
도커 컨테이너에 네트워크 권한 부여 |
DEVICE |
/dev/net/tun |
TUN 정보 입력 |
OPENVPN_USERNAME |
2.2.의 Device Config의 Login값 입력 |
|
OPENVPN_PASSWORD |
2.2.의 Device Config의 Password값 입력 |
|
OPENVPN_PROVIDER |
CUSTOM |
CUSTOM 외 입력금지 |
OPENVPN_CONFIG |
2.2.의 확장자 제외 파일명 입력 |
2.3. 과정에서 복사한 파일이름만 입력 (경로생략) |
PUID |
5.2.에서 얻은 uid 입력 |
transmission이 구동될 계정의 uid |
PGID |
5.2.에서 얻은 gid 입력 |
transmission이 구동될 계정의 gid |
TRANSMISSION_RPC_AUTHENTICATION_REQUIRED |
true |
트랜스미션 id/pw 설정 여부. 설정하는게 바람직. |
TRANSMISSION_RPC_USERNAME |
id값 설정 | 트랜스미션 로그인 아이디 |
TRANSMISSION_RPC_PASSWORD |
passwd 설정 | 트랜스미션 로그인 비번 |
나머지 transmission의 파라미터 설정(ex. 업로드 속도제한, ratio 제한 등)은 원하는대로 설정
(https://admion.net/media-server-3-torrent-transmission/ , https://github.com/transmission/transmission/wiki/Editing-Configuration-Files 참고)
-
적용 버튼을 클릭하여 컨테이너 실행
-
로그파일 확인
VPN unlimited의 토렌트 서버와 VPN을 연결하여 transmission이 제대로 작동하는지는 로그를 보고 알 수 있습니다. 아래와 유사한 로그가 출력되면 성공한 것입니다.
Using OpenVPN provider: CUSTOM Starting OpenVPN using config ****.ovpn Setting OPENVPN credentials... adding route to local network 192.168.1.0/24 via *.*.*.* dev eth0 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on May 14 2019 library versions: OpenSSL 1.1.1 11 Sep 2018, LZO 2.08 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts TCP/UDP: Preserving recently used remote address: [AF_INET]*.*.*.*:1194 UDP link local: (not bound) UDP link remote: [AF_INET]*.*.*.*:1194 [openvpn2.vpnunlimitedapp.com] Peer Connection Initiated with [AF_INET]*.*.*.*:1194 TUN/TAP device tun0 opened do_ifconfig, tt->did_ifconfig_ipv6_setup=0 /sbin/ip link set dev tun0 up mtu 1500 /sbin/ip addr add dev tun0 local *.*.*.* peer *.*.*.* /etc/openvpn/tunnelUp.sh tun0 1500 1553 *.*.*.* *.*.*.* init Up script executed with tun0 1500 1553 *.*.*.* *.*.*.* init Updating TRANSMISSION_BIND_ADDRESS_IPV4 to the ip of tun0 : *.*.*.* Generating transmission settings.json from env variables sed'ing True to true Enforcing ownership on transmission config directories Applying permissions to transmission config directories Setting owner for transmission paths to 1043:100 Setting permission for files (644) and directories (755) Setting permission for watch directory (775) and its files (664) ------------------------------------- Transmission will run as ------------------------------------- User name: abc User uid: 1043 User gid: 100 ------------------------------------- STARTING TRANSMISSION NO PORT UPDATER FOR THIS PROVIDER Transmission startup script complete |
혹시 에러메시지가 나온다면 해당 에러메시지를 가지고 구글링해보시면 보다 수월하게 해결될 수도 있습니다.
-
Transmission 접속
http://<NAS IP>:<9.4.에서 설정한 9091에 대응하는 local port> |
-
토렌트 파일 혹은 마그넷 파일 업로드 시험
만만한 파일 업로드해서 시험해보세요.
-
기타 참고사항
-
트래픽이 없으면 아래와 같은 로그와 함께 VPN이 끊기게 됩니다.
-
[openvpn2.vpnunlimitedapp.com] Inactivity timeout (--ping-exit), exiting /sbin/ip addr del dev tun0 local *.*.*.* peer *.*.*.* /etc/openvpn/tunnelDown.sh tun0 1500 1553 *.*.*.* *.*.*.* init SIGTERM[soft,ping-exit] received, proc |
저는 트래픽이 없으면 트랜스미션이 꺼지게 되어 좋던데, 혹시 이게 싫다면 9.5. 과정에서 아래와 같은 환경변수를 추가해보세요. (시험해보지는 않았습니다.)
환경변수 |
값 |
비고 |
OPENVPN_OPTS |
--inactive 3600 --ping 10 --ping-exit 60 |
비활성일 경우 핑 10개 때림 |
-
VPN 정상작동 시험방법
아래 사이트 중 하나에 접속해서 마그넷 링크를 카피해서 트랜스미션에 업로드 후 해당 사이트에서 자신의 IP가 표시되는지 확인해보세요. 저는 바뀐 거 확인했습니다.
라우터 단에서 사이트 IP 블락 시키면 안되나요? 우회해서 다운하면 속도가 많이 느려질거 같기도 해서요.
시딩하는 중에 IP 수집이 문제긴 하겠군요.
그리고 흘러가는 토렌트 패킷을 다 스누핑해서 저장할 것 같은데, 그럴 경우 해당 사이트를 막아도 소용없을 겁니다...
막는다고 하더라도 웹서버만 막을 수 있지, 실제로 크롤링하는 백엔드 서버의 IP는 알기 힘들 것 같네요.
그런데 다운로드가 완료되고 temp폴더에서 download폴더로 다운로드 받은 파일이 이동이 안됩니다.
그냥 temp폴더에 저장이 되어버리네요.
다운로드 중일때는 확장자가 .part로 되어있다가 완료되면 .part는 없어지고 그냥 temp폴더에 저장 됩니다.
이런 경우 어떤부분을 점검해야 하는지 도움을 받았으면 합니다.
저도 설치중 같은 증상있어서 구글링하다 해결했습니다. 방화벽 문제였고 도커IP만 허용해서 해결했어요. 참고하세요 https://www.clien.net/service/board/cm_nas/18040180CLIEN
혹시, 오류뜨시면, 리소스 제한 활성화 하지말고 해보세요.
error:0A00018E:SSL routines::ca md too weak
그래서 이미지 v3.7.1로 적용했습니다.