DSM 7.2 에 haugene/openvpn-transmission 도커로 NordVPN 세팅했습니다.
전체 docker-compose.yml 파일은 맨 아래 달았습니다.
docker-compose up -d 로 띄우고 docker ps 로 상태를 보면
status가 (healthy : starting) 상태에서 몇 분 있다가 (3~5분?) (unhealtyh) 로 바뀌고
DSM의 container manger 에서 보면 상태가 아래와 같습니다.
상태는 unhealthy 이지만 torrent up/down 다 문제 없고 ipleak.net 로 확인해보면 ip 주소도 VPN 주소로 제대로 보입니다.
로그파일을 봐도 아무런 에러메시지가 없습니다.
혹시 비슷한 문제 생기고 해결하신분 계실까요 ?
============== docker-compose.yml ====================
version: '3'
services:
transmission-openvpn:
image: haugene/transmission-openvpn:latest
container_name: transmission-openvpn
environment:
- OPENVPN_USERNAME=User_name_nord_vpn
- OPENVPN_PASSWORD=Nord_VPN_Password
- OPENVPN_PROVIDER=NORDVPN
- OPENVPN_OPTS=--pull-filter ignore "auth-token" --ping-exit 180
- DROP_DEFAULT_ROUTE=false
- LOCAL_NETWORK=192.168.1.0/24
- PUID=1026
- PGID=100
- TZ=Asia/Seoul
- GLOBAL_APPLY_PERMISSIONS=true
#
- TRANSMISSION_RPC_PASSWORD=PasswordForTransmission
- TRANSMISSION_RPC_USERNAME=admin
- TRANSMISSION_RPC_AUTHENTICATION_REQUIRED=true
- TRANSMISSION_HOME=/config/transmission-home
- TRANSMISSION_RPC_PORT=9091
- TRANSMISSION_DOWNLOAD_DIR=/local/torrent/completed
- TRANSMISSION_INCOMPLETE_DIR=/local/torrent/incomplete
- TRANSMISSION_WATCH_DIR=/local/torrent/watch
- TRANSMISSION_WEB_UI=transmission-web-control
- TRANSMISSION_UMASK=7
#
- NORDVPN_COUNTRY=JP
- NORDVPN_CATEGORY=P2P
- NORDVPN_PROTOCOL=udp
#
- CREATE_TUN_DEVICE=true
- ENABLE_UFW=false
- UFW_ALLOW_GW_NET=false
- UFW_EXTRA_PORTS
- UFW_DISABLE_IPTABLES_REJECT=false
- PEER_DNS=true
- PEER_DNS_PIN_ROUTES=true
- DROP_DEFAULT_ROUTE
- WEBPROXY_ENABLED=true
- WEBPROXY_PORT=8118
- WEBPROXY_USERNAME
- WEBPROXY_PASSWORD
- LOG_TO_STDOUT=false
- HEALTH_CHECK_HOST=google.com
- SELFHEAL=false
- CAP_ADD=NET_ADMIN
#
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
sysctls:
- net.ipv4.ip_forward=1
- net.ipv6.conf.all.disable_ipv6=0
volumes:
- /dev/net:/dev/net:z
- /volume1/media/local:/local
- /volume1/docker/torrent/config:/config
ports:
- 8118:8118
- 9091:9091
dns:
- 8.8.8.8
- 8.8.4.4
deploy:
resources:
limits:
이게 7.2에서 생긴건지, 원래 그런건지는 모르겠어요.
HEALTH_CHECK_HOST=google.com
해당 도메인에 주기적으로 접근해서 health 상태를 체크하는데,
DNS설정을 vpn 연결되면서 무조건 덮어써서 dns resolve를 못합니다.
덮어쓰다 보니 docker의 dns 옵션도 의미가 없고요.
동작에 이상은 없어보이지만 보기 싫어서
네트워크쪽은 잘 몰라서 그냥 에러만 안날수 있게 임시로 처리 했습니다.
/etc/openvpn/tunnelUp.sh 50라인에
NS="${NS}nameserver 1.1.1.1\n"
한줄 추가했습니다.
더 깔끔한 방법 찾으면 공유해주세요.
혹시 HEALTH_CHECK_HOST=142.250.76.142 로 구글의 물리주소를 넣으면 안되는 것이겠지요 ? (에러는 없더라도 vpn의 익명성이 보장안된다는지 하는....)
하여간 좀 더 보겠습니다. 최소한 문제의 원인이라도 알게되어 속이 시원합니다.
차라리 health 체크를 우회해서 127.0.0.1 을 넣어서 외부로 안나가게 해버리면
의미있는 작동도 안하지만 에러도 없긴 합니다.
그렇게 해도 dns이외의 체크는 이루어지니 요것도 괜찮을거 같습니다.
말씀은 "네트워크쪽 잘 모른다" 고 하시지만, 저는 더 몰라서, 다른 방법을 스스로 찾아내지는 못할 것 같네요.
컨테이너가 삭제 되도 다시 띄울때 잘 되겠네요.
업데이트될때 (이파일에 변경이 있다면 ^^) 또 수정이 필요하겠지만, 일단은 이대로 써도 될것 같습니다.
사실 컨테이너 삭제할 일도 거의 없기는 하지만요.
혹시 이 이미지는 크론으로 정기적으로 VPN 재접속 하도록 하는 기능은 없을까요 ?
지금은 노파심에 시놀 예약작업으로 리스타트 하고 있네요.
꼭 재접속같은 관리가 필요하시면 도커 리스타트면 충분해보입니다~
당연히 정상동작하는 경우는 컨테이너 삭제하지 않고 예약 작업으로 리스타트만 합니다.
이런 저런 사전으로 yml 파일을 변경하거나 하는 경우는 컨테이너 삭제/재기동 햐야 하는데 이경우 변경된 내부파일을 호스트에서 패스해주도록 하면 편리할 것 같네요.