
Docker 기반 IPsec VPN 서버로 IPsec/L2TP, Cisco IPsec 및 IKEv2를 지원하며, 자동 자격 증명 생성 및 다중 플랫폼 클라이언트 구성을 제공합니다.
[English](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/README.md) | [简体中文](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/README-zh.md) | [繁體中文](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/README-zh-Hant.md) | [Русский](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/README-ru.md)
# Docker에서 IPsec VPN 서버
[](https://github.com/hwdsl2/docker-ipsec-vpn-server/actions/workflows/main-alpine.yml) [](https://github.com/hwdsl2/docker-ipsec-vpn-server/stargazers) [](https://hub.docker.com/r/hwdsl2/ipsec-vpn-server/) [](https://hub.docker.com/r/hwdsl2/ipsec-vpn-server/)
IPsec/L2TP, Cisco IPsec 및 IKEv2를 지원하는 IPsec VPN 서버를 실행하기 위한 Docker 이미지입니다.
[Libreswan](https://libreswan.org)(IPsec VPN 소프트웨어)과 [xl2tpd](https://github.com/xelerance/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](https://github.com/hwdsl2/docker-ipsec-vpn-server/actions)를 통해 자동으로 빌드 및 게시
- Docker 볼륨을 통한 영구 데이터 저장
- 멀티 아키텍처: `linux/amd64`, `linux/arm64`, `linux/arm/v7`
**함께 사용 가능:**
- VPN: [Docker 없이 IPsec](https://github.com/hwdsl2/setup-ipsec-vpn), [WireGuard](https://github.com/hwdsl2/docker-wireguard), [OpenVPN](https://github.com/hwdsl2/docker-openvpn), [Headscale](https://github.com/hwdsl2/docker-headscale)
- AI: 로컬 LLM, 채팅, RAG, 음성 및 AI 도구를 위한 [Self-Hosted AI Stack](https://github.com/hwdsl2/self-hosted-ai-stack)
> 📘 셀프 호스팅 AI에 관심이 있으신가요? [The Self-Hosted AI Builder’s Guide](https://books2read.com/aiguide?store=amazon)는 나만의 프라이빗 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회 이메일)
- 💬 토론을 위해 [r/selfhostedstack](https://www.reddit.com/r/selfhostedstack/) 커뮤니티에 참여하세요
- ⭐ 유용하다고 생각되면 저장소에 Star를 눌러주세요 — 다른 사람들이 발견하는 데 도움이 됩니다
## 요구 사항
- 공인 IP 주소 또는 DNS 이름이 있는 Linux 서버
- Docker 설치됨
- 방화벽에서 VPN 포트 개방 (UDP 500 및 4500)
- `docker`에 대한 별칭을 생성한 후 [Podman](https://docs.podman.io)을 사용하여 이 이미지를 실행할 수도 있습니다
**참고:** 고급 사용자는 macOS에서 [Docker for Mac](https://docs.docker.com/desktop/setup/install/mac-install/)과 함께 이 이미지를 사용할 수 있습니다. 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](https://quay.io/repository/hwdsl2/ipsec-vpn-server)에서 다운로드할 수도 있습니다:
```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 기반 이미지는 약 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 시스템과 호환되지 않습니다.
<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 .
```
</details>
## 이 이미지를 사용하는 방법
### 환경 변수
**참고:** 이 이미지의 모든 변수는 선택 사항이므로, 어떤 변수도 입력할 필요 없이 바로 IPsec VPN 서버를 사용할 수 있습니다! 그러려면 `touch vpn.env`를 사용하여 빈 `env` 파일을 만들고 다음 섹션으로 넘어가세요.
이 Docker 이미지는 `env` 파일에 선언할 수 있는 다음 변수들을 사용합니다 ([예제](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/vpn.env.example) 참조):
```
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 구성 및 사용](#configure-and-use-ikev2-vpn)을 참조하세요.
> [!IMPORTANT]
> `env` 파일에서 값을 작성할 때 `=` 주위에 따옴표나 공백을 넣지 마세요. 값에는 `\`, `"`, `'`가 포함되어서는 안 됩니다. 안전한 IPsec PSK는 최소 20자의 무작위 문자로 구성되어야 합니다.
**참고:** Docker 컨테이너가 이미 생성된 후 `env` 파일을 수정하는 경우, 변경 사항을 적용하려면 컨테이너를 제거하고 다시 생성해야 합니다. [Docker 이미지 업데이트](#update-docker-image)를 참조하세요.
### 추가 환경 변수
고급 사용자는 선택적으로 DNS 이름, 클라이언트 이름 및/또는 사용자 지정 DNS 서버를 지정할 수 있습니다.
<details>
<summary>
DNS 이름, 클라이언트 이름 및/또는 사용자 지정 DNS 서버를 지정하는 방법을 알아보세요.
</summary>
고급 사용자는 선택적으로 IKEv2 서버 주소에 대한 DNS 이름을 지정할 수 있습니다. DNS 이름은 정규화된 도메인 이름(FQDN)이어야 합니다. 예:
```
VPN_DNS_NAME=vpn.example.com
```
첫 번째 IKEv2 클라이언트의 이름을 지정할 수 있습니다. 한 단어만 사용하고, `-`와 `_`를 제외한 특수 문자는 사용하지 마십시오. 지정하지 않으면 기본값은 `vpnclient`입니다.
```
VPN_CLIENT_NAME=your_client_name
```
기본적으로 클라이언트는 VPN이 활성화된 상태에서 [Google Public DNS](https://developers.google.com/speed/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)을 참조하세요.
기본적으로 IKEv2 클라이언트 구성을 가져올 때 비밀번호가 필요하지 않습니다. 무작위 비밀번호를 사용하여 클라이언트 구성 파일을 보호하도록 선택할 수 있습니다.
```
VPN_PROTECT_CONFIG=yes
```
**참고:** 위 변수들은 Docker 컨테이너에 IKEv2가 이미 설정되어 있는 경우 IKEv2 모드에 아무런 영향을 미치지 않습니다. 이 경우 IKEv2를 제거하고 사용자 지정 옵션을 사용하여 다시 설정할 수 있습니다. [IKEv2 VPN 구성 및 사용](#configure-and-use-ikev2-vpn)을 참조하세요.
</details>
### IPsec VPN 서버 시작
이 이미지로 새 Docker 컨테이너를 생성합니다 (`./vpn.env`를 자신의 `env` 파일로 교체):
```bash
docker run \
--name ipsec-vpn-server \
--env-file ./vpn.env \
--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
```
이 명령에서는 `docker run`의 `-v` 옵션을 사용하여 `ikev2-vpn-data`라는 새 [Docker 볼륨](https://docs.docker.com/storage/volumes/)을 생성하고, 이를 컨테이너의 `/etc/ipsec.d`에 마운트합니다. 인증서와 키 같은 IKEv2 관련 데이터는 볼륨에 유지되며, 나중에 Docker 컨테이너를 다시 생성해야 할 때 동일한 볼륨을 다시 지정하기만 하면 됩니다.
이 이미지를 사용할 때는 IKEv2를 활성화하는 것이 권장됩니다. 그러나 IKEv2를 활성화하지 않고 IPsec/L2TP 및 IPsec/XAuth("Cisco IPsec") 모드만 사용하여 VPN에 연결하려는 경우, 위의 `docker run` 명령에서 첫 번째 `-v` 옵션을 제거하십시오.
**참고:** 고급 사용자는 [privileged 모드 없이 실행](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#run-without-privileged-mode)할 수도 있습니다.
### VPN 로그인 세부 정보 검색
위의 `docker run` 명령에서 `env` 파일을 지정하지 않은 경우, `VPN_USER`는 기본적으로 `vpnuser`가 되고 `VPN_IPSEC_PSK`와 `VPN_PASSWORD`는 모두 무작위로 생성됩니다. 이를 확인하려면 컨테이너 로그를 확인하십시오:
```bash
docker logs ipsec-vpn-server
```
출력에서 다음 줄들을 검색하십시오:
```
Connect to your new VPN with these details:
Server IP: your_vpn_server_ip
IPsec PSK: your_ipsec_pre_shared_key
Username: your_vpn_username
Password: your_vpn_password
```
IKEv2 모드가 활성화된 경우 출력에 해당 모드에 대한 세부 정보도 포함됩니다.
(선택 사항) 생성된 VPN 로그인 세부 정보(있는 경우)를 현재 디렉터리에 백업합니다:
```bash
docker cp ipsec-vpn-server:/etc/ipsec.d/vpn-gen.env ./
```
## docker-compose 사용하기
```bash
cp vpn.env.example vpn.env
# Edit vpn.env if needed, then:
docker compose up -d
docker logs ipsec-vpn-server
```
`docker-compose.yml` 예시 (이미 포함됨):
```yaml
volumes:
ikev2-vpn-data:
services:
vpn:
image: hwdsl2/ipsec-vpn-server
restart: always
env_file:
- ./vpn.env
ports:
- "500:500/udp"
- "4500:4500/udp"
privileged: true
hostname: ipsec-vpn-server
container_name: ipsec-vpn-server
volumes:
- ikev2-vpn-data:/etc/ipsec.d
- /lib/modules:/lib/modules:ro
```
## 다음 단계
*다른 언어로 읽기: [English](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/README.md#next-steps), [简体中文](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/README-zh.md#下一步), [繁體中文](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/README-zh-Hant.md#下一步), [Русский](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/README-ru.md#следующие-шаги).*
컴퓨터나 기기가 VPN을 사용하도록 설정하세요. 다음을 참조하세요:
**[IKEv2 VPN 구성 및 사용(권장)](#configure-and-use-ikev2-vpn)**
**[IPsec/L2TP VPN 클라이언트 구성](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md)**
**[IPsec/XAuth("Cisco IPsec") VPN 클라이언트 구성](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-xauth.md)**
**[📘 VPN book](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/vpn-book.md)을 읽고 [추가 콘텐츠](https://ko-fi.com/post/Support-this-project-and-get-access-to-supporter-o-O5O7FVF8J)에 액세스하세요.**
여러분만의 VPN을 즐기세요! :sparkles::tada::rocket::sparkles:
## 중요 사항
**Windows 사용자**: IPsec/L2TP 모드의 경우, VPN 서버나 클라이언트가 NAT(예: 가정용 라우터) 뒤에 있다면 [일회성 레지스트리 변경](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md#windows-error-809)이 필요합니다.
동일한 VPN 계정을 여러 기기에서 사용할 수 있습니다. 그러나 IPsec/L2TP 제한으로 인해 동일한 NAT(예: 가정용 라우터) 뒤에서 여러 기기를 연결하려면 [IKEv2](#configure-and-use-ikev2-vpn) 또는 [IPsec/XAuth](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-xauth.md) 모드를 사용해야 합니다.
VPN 사용자 계정을 추가, 편집 또는 제거하려면 먼저 `env` 파일을 업데이트한 다음, [다음 섹션](#update-docker-image)의 지침에 따라 Docker 컨테이너를 제거하고 다시 생성해야 합니다. 고급 사용자는 `env` 파일을 [바인드 마운트](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#bind-mount-the-env-file)할 수 있습니다.
외부 방화벽이 있는 서버(예: [EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)/[GCE](https://cloud.google.com/vpc/docs/firewalls))의 경우, VPN용 UDP 포트 500 및 4500을 여세요. Aliyun 사용자는 [#433](https://github.com/hwdsl2/setup-ipsec-vpn/issues/433)을 참조하세요.
클라이언트는 VPN이 활성화된 동안 [Google Public DNS](https://developers.google.com/speed/public-dns/)를 사용하도록 설정됩니다. 다른 DNS 제공자를 선호하는 경우 [이 섹션](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#use-alternative-dns-servers)을 읽어보세요.
## Docker 이미지 업데이트
Docker 이미지와 컨테이너를 업데이트하려면 먼저 최신 버전을 [다운로드](#download)하세요:
```bash
docker pull hwdsl2/ipsec-vpn-server
```
Docker 이미지가 이미 최신 상태라면, 다음과 같이 표시되어야 합니다:
```
Status: Image is up to date for hwdsl2/ipsec-vpn-server:latest
```
그렇지 않으면 최신 버전을 다운로드합니다. Docker 컨테이너를 업데이트하려면 먼저 [VPN 로그인 정보](#retrieve-vpn-login-details)를 확인하세요. 그런 다음 `docker rm -f ipsec-vpn-server`로 Docker 컨테이너를 제거합니다. 마지막으로 [이 이미지 사용 방법](#how-to-use-this-image)의 지침에 따라 다시 생성합니다.
## IKEv2 VPN 구성 및 사용
IKEv2 모드는 IPsec/L2TP 및 IPsec/XAuth("Cisco IPsec")보다 개선된 기능을 제공하며, IPsec PSK, 사용자 이름 또는 비밀번호가 필요하지 않습니다. 자세한 내용은 [여기](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/ikev2-howto.md)를 참조하세요.
먼저 IKEv2에 대한 세부 정보를 보려면 컨테이너 로그를 확인하세요:
```bash
docker logs ipsec-vpn-server
```
**참고:** IKEv2 세부 정보를 찾을 수 없다면 컨테이너에서 IKEv2가 활성화되지 않았을 수 있습니다. [Docker 이미지 업데이트](#update-docker-image) 섹션의 지침을 사용하여 Docker 이미지와 컨테이너를 업데이트해 보세요.
IKEv2 설정 중에 IKEv2 클라이언트(기본 이름 `vpnclient`)가 생성되며, 해당 구성은 **컨테이너 내부**의 `/etc/ipsec.d`로 내보내집니다. 구성 파일을 Docker 호스트로 복사하려면:
```bash
# Check contents of /etc/ipsec.d in the container
docker exec -it ipsec-vpn-server ls -l /etc/ipsec.d
# Example: Copy a client config file from the container
# to the current directory on the Docker host
docker cp ipsec-vpn-server:/etc/ipsec.d/vpnclient.p12 ./
```
**다음 단계:** IKEv2 VPN을 사용하도록 [기기를 구성](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/ikev2-howto.md)하세요.
<details>
<summary>
IKEv2 클라이언트를 관리하는 방법을 알아보세요.
</summary>
헬퍼 스크립트를 사용하여 IKEv2 클라이언트를 관리할 수 있습니다. 아래 예시를 참조하세요. 클라이언트 옵션을 사용자 지정하려면 인수 없이 스크립트를 실행하세요.
```bash
# Add a new client (using default options)
docker exec -it ipsec-vpn-server ikev2.sh --addclient [client name]
# Export configuration for an existing client
docker exec -it ipsec-vpn-server ikev2.sh --exportclient [client name]
# List existing clients
docker exec -it ipsec-vpn-server ikev2.sh --listclients
# Show usage
docker exec -it ipsec-vpn-server ikev2.sh -h
```
**참고:** "executable file not found" 오류가 발생하면 위의 `ikev2.sh`를 `/opt/src/ikev2.sh`로 바꾸세요.
</details>
<details>
<summary>
IKEv2 서버 주소를 변경하는 방법을 알아보세요.
</summary>
특정 상황에서는 IKEv2 서버 주소를 변경해야 할 수 있습니다. 예를 들어 DNS 이름을 사용하도록 전환하거나 서버 IP가 변경된 경우입니다. IKEv2 서버 주소를 변경하려면 먼저 [컨테이너 내부에서 bash 셸을 열고](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#bash-shell-inside-container), 그다음 [이 지침을 따르세요](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/ikev2-howto.md#change-ikev2-server-address). Docker 컨테이너를 재시작할 때까지 컨테이너 로그에 새로운 IKEv2 서버 주소가 표시되지 않는다는 점에 유의하세요.
</details>
<details>
<summary>
IKEv2를 제거하고 사용자 지정 옵션을 사용하여 다시 설정합니다.
</summary>
특정 상황에서는 IKEv2를 제거하고 사용자 지정 옵션을 사용하여 다시 설정해야 할 수 있습니다.
**경고:** 인증서와 키를 포함한 모든 IKEv2 구성이 **영구적으로 삭제됩니다**. 이는 **되돌릴 수 없습니다**!
**옵션 1:** 헬퍼 스크립트를 사용하여 IKEv2를 제거하고 다시 설정합니다.
이렇게 하면 `env` 파일에 지정한 변수(예: `VPN_DNS_NAME` 및 `VPN_CLIENT_NAME`)를 덮어쓰게 되며, 컨테이너 로그에 더 이상 IKEv2에 대한 최신 정보가 표시되지 않는다는 점에 유의하세요.
```bash
# Remove IKEv2 and delete all IKEv2 configuration
docker exec -it ipsec-vpn-server ikev2.sh --removeikev2
# Set up IKEv2 again using custom options
docker exec -it ipsec-vpn-server ikev2.sh
```
**옵션 2:** `ikev2-vpn-data`를 제거하고 컨테이너를 다시 생성합니다.
1. 모든 [VPN 로그인 정보](#retrieve-vpn-login-details)를 기록해 둡니다.
1. Docker 컨테이너를 제거합니다: `docker rm -f ipsec-vpn-server`.
1. `ikev2-vpn-data` 볼륨을 제거합니다: `docker volume rm ikev2-vpn-data`.
1. `env` 파일을 업데이트하고 `VPN_DNS_NAME` 및 `VPN_CLIENT_NAME`과 같은 사용자 지정 IKEv2 옵션을 추가한 다음 컨테이너를 다시 생성합니다. [이 이미지 사용 방법](#how-to-use-this-image)을 참조하세요.
</details>
## 고급 사용법
[고급 사용법](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md)을 참조하세요.
- [대체 DNS 서버 사용](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#use-alternative-dns-servers)
- [권한 모드 없이 실행](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#run-without-privileged-mode)
- [VPN 모드 선택](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#select-vpn-modes)
- [IKEv2 완전 순방향 비밀성 활성화](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#enable-ikev2-perfect-forward-secrecy)
- [Docker 호스트의 다른 컨테이너에 접근](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#access-other-containers-on-the-docker-host)
- [VPN 서버의 공인 IP 지정](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#specify-vpn-servers-public-ip)
- [VPN 클라이언트에 고정 IP 할당](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#assign-static-ips-to-vpn-clients)
- [VPN 서브넷 사용자 지정](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#customize-vpn-subnets)
- [IPv6 지원](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#ipv6-support)
- [분할 터널링](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#split-tunneling)
- [호스트 네트워크 모드 정보](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#about-host-network-mode)
- [Libreswan 로그 활성화](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#enable-libreswan-logs)
- [서버 상태 확인](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#check-server-status)
- [소스 코드에서 빌드](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#build-from-source-code)
- [컨테이너 내부의 Bash 셸](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#bash-shell-inside-container)
- [env 파일 바인드 마운트](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#bind-mount-the-env-file)
- [Google BBR 혼잡 제어 배포](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#deploy-google-bbr-congestion-control)
## 기술 세부 사항
두 가지 서비스가 실행됩니다: IPsec VPN용 `Libreswan (pluto)`와 L2TP 지원용 `xl2tpd`입니다.
기본 IPsec 구성은 다음을 지원합니다:
* PSK를 사용하는 IPsec/L2TP
* PSK 및 XAuth를 사용하는 IKEv1 ("Cisco IPsec")
* IKEv2
필요한 포트: `500/udp` 및 `4500/udp` (IPsec)
## 라이선스
**참고:** 사전 빌드된 이미지 내부의 소프트웨어 구성 요소(예: Libreswan 및 xl2tpd)는 각각의 저작권자가 선택한 해당 라이선스의 적용을 받습니다. 모든 사전 빌드된 이미지 사용과 마찬가지로, 이 이미지의 사용이 이미지 내에 포함된 모든 소프트웨어의 관련 라이선스를 준수하는지 확인하는 것은 이미지 사용자의 책임입니다.
Copyright (C) 2016-2026 [Lin Song](https://github.com/hwdsl2) [](https://www.linkedin.com/in/linsongui)
[Thomas Sarlandie의 작업](https://github.com/sarfata/voodooprivacy)을 기반으로 함 (Copyright 2012)
[](http://creativecommons.org/licenses/by-sa/3.0/)
이 저작물은 [Creative Commons Attribution-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/)에 따라 라이선스가 부여됩니다.
저작자 표시 필요: 모든 파생물에 제 이름을 포함해 주시고, 어떻게 개선했는지 알려주세요!