
Docker IPsec VPN Server — Updated!
Docker 기반 IPsec VPN 서버로 IPsec/L2TP, Cisco IPsec 및 IKEv2를 지원하며, 자동 자격 증명 생성 및 다중 플랫폼 클라이언트 구성을 제공합니다.
English | 简体中文 | 繁體中文 | Русский
Docker에서 IPsec VPN 서버
IPsec/L2TP, Cisco IPsec 및 IKEv2를 지원하는 IPsec VPN 서버를 실행하기 위한 Docker 이미지입니다.
Libreswan(IPsec VPN 소프트웨어)과 xl2tpd(L2TP 데몬)이 포함된 Alpine 3.23 또는 Debian 12를 기반으로 합니다.
IPsec VPN은 네트워크 트래픽을 암호화하여, 인터넷을 통해 데이터가 전송되는 동안 사용자와 VPN 서버 사이의 누구도 데이터를 도청할 수 없도록 합니다. 이는 커피숍, 공항, 호텔 객실 등 보안되지 않은 네트워크를 사용할 때 특히 유용합니다.
기능:
- 첫 시작 시 VPN 자격 증명과 IKEv2 구성을 자동으로 생성
- 강력하고 빠른 암호화 알고리즘(예: AES-GCM)을 사용하는 IKEv2 지원
- iOS, macOS 및 Android 기기를 자동 구성하기 위한 VPN 프로필 생성
- Windows, macOS, iOS, Android, Chrome OS 및 Linux를 VPN 클라이언트로 지원
- IKEv2 사용자 및 인증서를 관리하기 위한 도우미 스크립트 포함
- GitHub Actions를 통해 자동으로 빌드 및 게시
- Docker 볼륨을 통한 영구 데이터 저장
- 멀티 아키텍처:
linux/amd64,linux/arm64,linux/arm/v7
함께 사용 가능:
- VPN: Docker 없이 IPsec, WireGuard, OpenVPN, Headscale
- AI: 로컬 LLM, 채팅, RAG, 음성 및 AI 도구를 위한 Self-Hosted AI Stack
📘 셀프 호스팅 AI에 관심이 있으신가요? The Self-Hosted AI Builder’s Guide는 나만의 프라이빗 AI 스택을 구축하고, 보호하고, 운영하기 위한 실용적인 가이드입니다.
빠른 시작
다음 명령을 사용하여 Docker에서 IPsec VPN 서버를 설정하세요:
docker run \
--name ipsec-vpn-server \
--restart=always \
-v ikev2-vpn-data:/etc/ipsec.d \
-v /lib/modules:/lib/modules:ro \
-p 500:500/udp \
-p 4500:4500/udp \
-d --privileged \
hwdsl2/ipsec-vpn-server
VPN 로그인 정보는 무작위로 생성됩니다. VPN 로그인 정보 검색을 참조하세요.
또는 Docker 없이 IPsec VPN을 설정할 수 있습니다. 이 이미지 사용 방법에 대해 자세히 알아보려면 아래 섹션을 읽어보세요.
커뮤니티
- 📬 프로젝트 업데이트 및 무료 배포 가이드 받기 (월 1–2회 이메일)
- 💬 토론을 위해 r/selfhostedstack 커뮤니티에 참여하세요
- ⭐ 유용하다고 생각되면 저장소에 Star를 눌러주세요 — 다른 사람들이 발견하는 데 도움이 됩니다
요구 사항
- 공인 IP 주소 또는 DNS 이름이 있는 Linux 서버
- Docker 설치됨
- 방화벽에서 VPN 포트 개방 (UDP 500 및 4500)
docker에 대한 별칭을 생성한 후 Podman을 사용하여 이 이미지를 실행할 수도 있습니다
참고: 고급 사용자는 macOS에서 Docker for Mac과 함께 이 이미지를 사용할 수 있습니다. IPsec/L2TP 모드를 사용하기 전에 docker restart ipsec-vpn-server로 컨테이너를 한 번 재시작해야 할 수 있습니다. 이 이미지는 Docker for Windows를 지원하지 않습니다.
다운로드
Docker Hub 레지스트리에서 신뢰할 수 있는 빌드를 받으세요:
docker pull hwdsl2/ipsec-vpn-server
또는 Quay.io에서 다운로드할 수도 있습니다:
docker pull quay.io/hwdsl2/ipsec-vpn-server
docker image tag quay.io/hwdsl2/ipsec-vpn-server hwdsl2/ipsec-vpn-server
지원 플랫폼: linux/amd64, linux/arm64 및 linux/arm/v7.
고급 사용자는 GitHub에서 소스 코드로부터 빌드할 수 있습니다.
이미지 비교
두 개의 사전 빌드된 이미지가 제공됩니다. 기본 Alpine 기반 이미지는 약 19 MB에 불과합니다.
| Alpine 기반 | Debian 기반 | |
|---|---|---|
| 이미지 이름 | hwdsl2/ipsec-vpn-server | hwdsl2/ipsec-vpn-server:debian |
| 압축 크기 | ~ 19 MB | ~ 62 MB |
| 베이스 이미지 | Alpine Linux 3.23 | Debian Linux 12 |
| 플랫폼 | amd64, arm64, arm/v7 | amd64, arm64, arm/v7 |
| Libreswan 버전 | 5.4.1 | 5.4.1 |
| IPsec/L2TP | ✅ | ✅ |
| Cisco IPsec | ✅ | ✅ |
| IKEv2 | ✅ | ✅ |
참고: Debian 기반 이미지를 사용하려면 이 README에서 모든 hwdsl2/ipsec-vpn-server를 hwdsl2/ipsec-vpn-server:debian으로 바꾸십시오. 이 이미지들은 현재 Synology NAS 시스템과 호환되지 않습니다.
구버전 Libreswan 4를 사용하고 싶습니다.
일반적으로 이 프로젝트의 기본 버전인 최신 Libreswan 5 버전을 사용하는 것이 권장됩니다. 그러나 구버전 Libreswan 4를 사용하려면 소스 코드로부터 Docker 이미지를 빌드할 수 있습니다:
git clone https://github.com/hwdsl2/docker-ipsec-vpn-server
cd docker-ipsec-vpn-server
# Specify Libreswan version 4
sed -i 's/SWAN_VER=5\..*/SWAN_VER=4.15/' Dockerfile Dockerfile.debian
# To build Alpine-based image
docker build -t hwdsl2/ipsec-vpn-server .
# To build Debian-based image
docker build -f Dockerfile.debian -t hwdsl2/ipsec-vpn-server:debian .
이 이미지를 사용하는 방법
환경 변수
참고: 이 이미지의 모든 변수는 선택 사항이므로, 어떤 변수도 입력할 필요 없이 바로 IPsec VPN 서버를 사용할 수 있습니다! 그러려면 touch vpn.env를 사용하여 빈 env 파일을 만들고 다음 섹션으로 넘어가세요.
이 Docker 이미지는 env 파일에 선언할 수 있는 다음 변수들을 사용합니다 (예제 참조):
VPN_IPSEC_PSK=your_ipsec_pre_shared_key
VPN_USER=your_vpn_username
VPN_PASSWORD=your_vpn_password
VPN 로그인용 사용자 계정이 생성되며, 여러 기기에서 사용할 수 있습니다*. IPsec PSK(사전 공유 키)는 VPN_IPSEC_PSK 환경 변수로 지정됩니다. VPN 사용자 이름은 VPN_USER에 정의되며, VPN 비밀번호는 VPN_PASSWORD로 지정됩니다.
추가 VPN 사용자가 지원되며, env 파일에서 다음과 같이 선택적으로 선언할 수 있습니다. 사용자 이름과 비밀번호는 공백으로 구분해야 하며, 사용자 이름은 중복될 수 없습니다. 모든 VPN 사용자는 동일한 IPsec PSK를 공유합니다.
VPN_ADDL_USERS=additional_username_1 additional_username_2
VPN_ADDL_PASSWORDS=additional_password_1 additional_password_2
위 변수들은 IPsec/L2TP 및 IPsec/XAuth("Cisco IPsec") 모드에만 해당합니다. IKEv2의 경우 IKEv2 VPN 구성 및 사용을 참조하세요.
[!IMPORTANT]
env파일에서 값을 작성할 때=주위에 따옴표나 공백을 넣지 마세요. 값에는\,",'가 포함되어서는 안 됩니다. 안전한 IPsec PSK는 최소 20자의 무작위 문자로 구성되어야 합니다.
참고: Docker 컨테이너가 이미 생성된 후 env 파일을 수정하는 경우, 변경 사항을 적용하려면 컨테이너를 제거하고 다시 생성해야 합니다. Docker 이미지 업데이트를 참조하세요.
추가 환경 변수
고급 사용자는 선택적으로 DNS 이름, 클라이언트 이름 및/또는 사용자 지정 DNS 서버를 지정할 수 있습니다.
DNS 이름, 클라이언트 이름 및/또는 사용자 지정 DNS 서버를 지정하는 방법을 알아보세요.
고급 사용자는 선택적으로 IKEv2 서버 주소에 대한 DNS 이름을 지정할 수 있습니다. DNS 이름은 정규화된 도메인 이름(FQDN)이어야 합니다. 예:
VPN_DNS_NAME=vpn.example.com
첫 번째 IKEv2 클라이언트의 이름을 지정할 수 있습니다. 한 단어만 사용하고, -와 _를 제외한 특수 문자는 사용하지 마십시오. 지정하지 않으면 기본값은 vpnclient입니다.
VPN_CLIENT_NAME=your_client_name
기본적으로 클라이언트는 VPN이 활성화된 상태에서 Google Public DNS를 사용하도록 설정됩니다. 모든 VPN 모드에 대해 사용자 지정 DNS 서버를 지정할 수 있습니다. 예:
VPN_DNS_SRV1=1.1.1.1
VPN_DNS_SRV2=1.0.0.1
자세한 내용과 인기 있는 공용 DNS 제공업체 목록은 대체 DNS 서버 사용을 참조하세요.
기본적으로 IKEv2 클라이언트 구성을 가져올 때 비밀번호가 필요하지 않습니다. 무작위 비밀번호를 사용하여 클라이언트 구성 파일을 보호하도록 선택할 수 있습니다.
VPN_PROTECT_CONFIG=yes