
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 도구를 위한 셀프 호스팅 AI 스택
- 📚 도서: The Self-Hosted AI Builder’s Guide, AI 시대의 개인정보 보호 도구
빠른 시작
다음 명령을 사용하여 Docker에서 IPsec VPN 서버를 설정하세요:```bash
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 로그인 정보 확인](#retrieve-vpn-login-details)을 참조하세요.
또는 [Docker 없이 IPsec VPN 설정](https://github.com/hwdsl2/setup-ipsec-vpn)을 할 수도 있습니다. 이 이미지 사용 방법에 대해 자세히 알아보려면 아래 섹션을 읽어보세요.
## 커뮤니티
- 📬 [프로젝트 업데이트 구독](https://selfhostedstack.beehiiv.com/subscribe?utm_campaign=vpn) (월 1–2회 이메일) — 무료 VPN 및 AI 배포 가이드(PDF) 받기
- 💬 [r/selfhostedstack](https://www.reddit.com/r/selfhostedstack/) 커뮤니티에 참여하여 토론하세요
- ⭐ 유용하다고 생각되면 저장소에 별표를 눌러주세요 — 다른 사람들이 발견하는 데 도움이 됩니다
## 요구 사항
- 공용 IP 주소 또는 DNS 이름이 있는 Linux 서버
- Docker 설치
- 방화벽에서 VPN 포트 개방 (UDP 500 및 4500)
- [Podman](https://docs.podman.io)을 사용하여 `docker`에 대한 별칭을 만든 후 이 이미지를 실행할 수도 있습니다
**참고:** 고급 사용자는 [Docker for Mac](https://docs.docker.com/desktop/setup/install/mac-install/)과 함께 macOS에서 이 이미지를 사용할 수 있습니다. IPsec/L2TP 모드를 사용하기 전에 `docker restart ipsec-vpn-server` 명령으로 컨테이너를 한 번 재시작해야 할 수 있습니다. 이 이미지는 Docker for Windows를 지원하지 않습니다.
## 다운로드
[Docker Hub 레지스트리](https://hub.docker.com/r/hwdsl2/ipsec-vpn-server/)에서 신뢰할 수 있는 빌드를 받으세요:```bash
docker pull hwdsl2/ipsec-vpn-server
또는 Quay.io에서 다운로드할 수 있습니다:```bash 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에서 [소스 코드로 빌드](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#build-from-source-code)할 수 있습니다.
### 이미지 비교
사전 빌드된 두 가지 이미지를 사용할 수 있습니다. 기본 Alpine 기반 이미지는 약 19MB에 불과합니다.
| | 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 | 5.4 |
| IPsec/L2TP | ✅ | ✅ |
| Cisco IPsec | ✅ | ✅ |
| IKEv2 | ✅ | ✅ |
**참고:** Debian 기반 이미지를 사용하려면 이 README의 모든 `hwdsl2/ipsec-vpn-server`를 `hwdsl2/ipsec-vpn-server:debian`으로 바꾸세요. 이 이미지는 현재 Synology NAS 시스템과 호환되지 않습니다.
<details>
<summary>
이전 Libreswan 버전 4를 사용하고 싶습니다.
</summary>
일반적으로 이 프로젝트의 기본 버전인 최신 [Libreswan](https://libreswan.org/) 버전 5를 사용하는 것이 좋습니다. 그러나 이전 Libreswan 버전 4를 사용하려면 소스 코드에서 Docker 이미지를 빌드할 수 있습니다:```bash
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 로그인용 사용자 계정이 생성되며, 여러 기기에서 사용할 수 있습니다[\*](#important-notes). 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 구성 및 사용을 참조하세요.
참고: 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 서버 사용](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md)을 참조하세요.