Infra/Cloud

[iptime] VPN - wireguard 설정

jykim23 2023. 10. 25. 11:56

환경

집 : iptime + proxmox

iptime : pfsence 대신 이미 사용중인 iptime을 사용중

proxmox : docker host 등 학습용 가상환경 운영

 

VPN 필요성

1. 고정된 서비스 포트 설정 불필요

외부에서 컨테이너 접속을 위해 iptime 공유기에 포트포워딩 설정을 수작업으로 해야한다.

외부 서비스를 위한 포트(예: tcp 80,443)라면 고정된 포트를 사용하는게 맞다.

그러나 현재는 학습을 위한 상황이므로 나만 접속할 수 있으면 된다.

 

2. 잦은 포트 변경

컨테이너의 포트가 고정되어 있다면 괜찮겠지만 학습중인 현재 수시로 변경될 것이다.

컨테이너 포트 생성/삭제/변경 할때마다 방화벽 포트포워딩 설정을 안하기 

 

VPN 종류

L2LP : 통신사(KT, SKT, U+)에서 차단한거 같다. 아무리해도 안되서 패스.

OpenVPN : 이전에 사용 경험으론 관리 측면에서 귀찮았다. 패스.

Wireguard : 찾아보니 괜찮은거 같다. 클라이언트 에이전트(?)가 필요하지만 사용자별 관리가 아닌 peer 단위로 관리하여 비교적 관리 측면에서 손이 덜 간다.

 

VPN 운영 서버 선택 고민

iptime에서 공식 지원하여 컨테이너로 운영하지 않았다.

추후 상세 설정이 필요한 경우 VPN 서버 구축이 필요할 수 있겠다.

혹은 도커 내부에 VPN을 구축할 수도 있다. 물론 네트워크를 구분하여 컨테이너를 올릴텐데 의미가 있을까...

데브시스터즈 참고 : https://tech.devsisters.com/posts/wireguard-vpn-1/

 

iptime AX2004 : 서버 제공 - 선택

proxmox CT : debian-11-turnkey-wireguard_17.1-1_amd64.tar.gz.

 

VPN 설정 내용

피어 추가하면 설정 파일 다운로드. 클라이언트에 파일 전달.

 

하나의 피어로 복수의 클라이언트,게이트웨이가 접속 할 수 있다. 그것이 목적이니까.

피어 목적을 알 수 있도록 피어 이름 설정이 필요하다.(Peer_1은 너무 성의 없어서 반성중..)

테스트 설정

 

VPN client 설정

MAC App Store에서 WireGuard 다운로드.

피어 설정 파일로 등록 및 권한 추가. 

피어 추가 후 Activate!

 

테스트 연결 확인

 

VPN 연결 테스트

내부아이피로 접근 확인

10.0.0.100 : 도커 호스트 아이피

10.0.0.100:9090 -> 프로메테우스 컨테이너

내부 아이피로 접속 가능

 


Wireguard를 도커에 실행

결론: 도커호스트 IP로 도커에 접근하는 현재 환경에선 별로인듯 하다.

각 컨테이너의 IP로 서비스를 접근해야하는데 그럼 무슨 소용인가...

설정을 상세히 뜯어보면 할 수 있겠지만 현재는 iptime 으로 충분하다...

 

Wireguard 컨테이너 설치 테스트

https://github.com/linuxserver/docker-wireguard

docker compose -f wireguard-compose.yml up -d

wireguard-compose.yml

주요 환경변수 : TZ, SERVERPORT, SERVERPORT, PEER, PEERDNS

---
version: "2.1"
services:
  wireguard:
    image: lscr.io/linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE #optional
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - SERVERURL=[공인ip,url] #optional
      - SERVERPORT=51820 #optional
      - PEERS=1 #optional
      - PEERDNS=auto #optional
      - INTERNAL_SUBNET=10.13.13.0 #optional
      - ALLOWEDIPS=0.0.0.0/0 #optional
      - PERSISTENTKEEPALIVE_PEERS= #optional
      - LOG_CONFS=true #optional
    volumes:
      - /path/to/appdata/config:/config
      - /lib/modules:/lib/modules #optional
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

 

 

peer 설정 파일 조회

도커 호스트

    volumes:
      - /path/to/appdata/config:/config

config 위치

 

컨테이너 명령

docker exec -it wireguard cat /config/${PEER_ID}/${PEER_ID}.conf # PEER_ID = peer1, peer2, peer3, ...

docker exec -it wireguard /app/show-peer 1 # QR code

 

 

도커 중지 및 삭제

docker compose -f wireguard-compose.yml down

'Infra > Cloud' 카테고리의 다른 글

[Proxmox] GPU Passthrough  (0) 2023.12.09
[Proxmox] Wake on Lan(WOL)  (1) 2023.10.23
[Azure] NSG 정책 문서화 - powershell, python  (0) 2023.02.22
[Azure] Backup Center 자동 확인 스크립트  (0) 2023.01.11
[NCP] CLI - 서버이미지 조회  (0) 2021.05.17