
자신만의 OpenVPN 서버를 Debian, Ubuntu, Fedora, CentOS, Arch Linux 등에서 설정하세요
Debian, Ubuntu, Fedora, openSUSE, CentOS, Amazon Linux, Arch Linux, Oracle Linux, Rocky Linux 및 AlmaLinux용 OpenVPN 설치 프로그램입니다.
이 스크립트를 사용하면 몇 초 만에 자신만의 안전한 VPN 서버를 설정하고 관리할 수 있습니다.
이 스크립트는 VPS, 전용 서버, 또는 집에 있는 컴퓨터 등 자신의 서버에서 실행하도록 설계되었습니다.
설정이 완료되면 연결하려는 모든 기기에 대한 클라이언트 구성 파일을 생성할 수 있습니다.
각 클라이언트는 완전히 암호화된 상태로 서버를 통해 인터넷 트래픽을 라우팅할 수 있습니다.```mermaid graph LR A[Phone] -->|Encrypted| VPN B[Laptop] -->|Encrypted| VPN C[Computer] -->|Encrypted| VPN
VPN[OpenVPN Server]
VPN --> I[Internet]
## OpenVPN을 사용하는 이유?
이 스크립트가 생성될 당시 OpenVPN은 오픈소스 VPN의 사실상 표준이었습니다. WireGuard는 나중에 나왔으며 대부분의 사용 사례에서 더 간단하고 빠릅니다. [wireguard-install](https://github.com/angristan/wireguard-install)을 확인하세요.
그러나 OpenVPN은 다음과 같은 경우에 여전히 유효합니다:
- **TCP 지원**: UDP가 차단된 제한적인 환경(회사 네트워크, 공항, 호텔 등)에서 작동
- **비밀번호로 보호된 개인 키**: WireGuard 구성은 개인 키를 평문으로 저장
- **레거시 호환성**: 구형 시스템을 포함한 거의 모든 플랫폼에 클라이언트 존재
## Features
- 사용 가능한 OpenVPN 서버를 설치하고 구성합니다
- 자동화 및 스크립팅을 위한 CLI 인터페이스 (JSON 출력을 지원하는 비대화형 모드)
- 클라이언트 및 서버 인증서 갱신
- 연결된 클라이언트 목록 및 모니터링
- 인증서 폐기 시 즉시 클라이언트 연결 해제 (관리 인터페이스를 통해)
- 가능하면 최신 안정 릴리스를 위해 [공식 OpenVPN 저장소](https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos) 사용
- 방화벽 규칙 및 포워딩을 원활하게 관리 (네이티브 firewalld 및 nftables 지원, iptables 폴백)
- VPN 서브넷 구성 가능 (IPv4: 기본 `10.8.0.0/24`, IPv6: 기본 `fd42:42:42:42::/112`)
- 터널 MTU 구성 가능 (기본값: `1500`)
- 필요한 경우 스크립트가 구성 및 방화벽 규칙을 포함한 OpenVPN을 깔끔하게 제거
- 암호화 설정 사용자 정의 가능, 향상된 기본 설정 (아래 [보안 및 암호화](#security-and-encryption) 참조)
- 가능한 경우 최신 OpenVPN 기능 사용 (아래 [보안 및 암호화](#security-and-encryption) 참조)
- 클라이언트에 푸시할 다양한 DNS 리졸버
- Unbound를 사용한 자체 호스팅 리졸버 선택 가능 (기존 Unbound 설치 지원)
- TCP와 UDP 중 선택
- 유연한 IPv4/IPv6 지원:
- IPv4 또는 IPv6 서버 엔드포인트 (클라이언트 연결 방식)
- IPv4 전용, IPv6 전용 또는 듀얼 스택 클라이언트 (VPN 주소 지정 및 인터넷 액세스)
- 모든 조합 지원: 4→4, 4→4/6, 4→6, 6→4, 6→6, 6→4/6
- 자동 누출 방지: 단일 스택 모드에서 원하지 않는 프로토콜 차단
- 권한 없는 모드: `nobody`/`nogroup`으로 실행
- Windows 10에서 DNS 누출 차단
- 무작위 서버 인증서 이름
- 비밀번호로 클라이언트 보호 선택 가능 (개인 키 암호화)
- 여러 장치가 동시에 동일한 클라이언트 프로필을 사용할 수 있는 옵션 (고정 IP 주소 비활성화)
- **피어 지문 인증** (OpenVPN 2.6+): CA 없이 간소화된 WireGuard 스타일 인증
- 기타 여러 작은 기능들!
## Compatibility
이 스크립트는 다음 Linux 배포판을 지원합니다:
| | 지원 |
| ------------------- | ------- |
| AlmaLinux >= 8 | ✅ 🤖 |
| Amazon Linux 2023 | ✅ 🤖 |
| Arch Linux | ✅ 🤖 |
| CentOS Stream >= 8 | ✅ 🤖 |
| Debian >= 11 | ✅ 🤖 |
| Fedora >= 40 | ✅ 🤖 |
| openSUSE Leap >= 16 | ✅ 🤖 |
| openSUSE Tumbleweed | ✅ 🤖 |
| Oracle Linux >= 8 | ✅ 🤖 |
| Rocky Linux >= 8 | ✅ 🤖 |
| Ubuntu >= 18.04 | ✅ 🤖 |
참고 사항:
- 스크립트는 🤖로 표시된 배포판에서만 정기적으로 테스트됩니다.
- `amd64` 아키텍처에서만 테스트되었습니다.
- 스크립트는 `systemd`를 필요로 합니다.
### Recommended providers
- [Vultr](https://umami.stanislas.cloud/q/1HH9Thp8i): 전 세계 위치, IPv6 지원, 월 \$2.5부터
- [Hetzner](https://umami.stanislas.cloud/q/HdzaOJWq7): 전 세계 위치, IPv6, 20TB 트래픽, 월 €3.59부터
- [Digital Ocean](https://umami.stanislas.cloud/q/sEVh1l79B): 전 세계 위치, IPv6 지원, 월 \$4부터
## Usage
먼저 서버에서 스크립트를 다운로드하고 실행 가능하게 만드세요:```bash
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
스크립트를 루트로 실행하고 TUN 모듈이 활성화되어 있어야 합니다.
시작하는 가장 쉬운 방법은 대화형 메뉴입니다:```bash ./openvpn-install.sh interactive
이 가이드는 설치 및 클라이언트 관리를 안내합니다.
홈 디렉토리에는 `.ovpn` 파일이 있습니다. 이 파일들은 클라이언트 구성 파일입니다. 서버에서 (예: `scp`를 사용하여) 다운로드한 후 선호하는 OpenVPN 클라이언트를 사용하여 연결하세요.
질문이 있으시면 먼저 [FAQ](#faq)를 확인하세요. 도움이 필요하면 [토론](https://github.com/angristan/openvpn-install/discussions)을 열 수 있습니다. 기존 이슈 및 토론을 먼저 검색해 주세요.
### CLI 모드
> [!WARNING]
> API 호환성은 보장되지 않습니다. 버전 간에 호환되지 않는 변경이 발생할 수 있습니다. 이 스크립트를 프로그래밍 방식(예: 자동화 또는 CI/CD)으로 사용하는 경우 master 브랜치 대신 특정 커밋에 고정하세요.
자동화 및 스크립팅을 위해 CLI 인터페이스를 사용하세요:```bash
# Install with defaults
./openvpn-install.sh install
# Add a client
./openvpn-install.sh client add alice
# List clients
./openvpn-install.sh client list
# Revoke a client (immediately disconnects if connected)
./openvpn-install.sh client revoke alice
openvpn-install [options]
Commands: install Install and configure OpenVPN server uninstall Remove OpenVPN server client Manage client certificates server Server management interactive Launch interactive menu
Global Options: --verbose Show detailed output --log Log file path (default: openvpn-install.log) --no-log Disable file logging --no-color Disable colored output -h, --help Show help
Run `./openvpn-install.sh <command> --help`를 실행하여 명령별 옵션을 확인하세요.
#### 클라이언트 관리```bash
# Add a new client
./openvpn-install.sh client add alice
# Add a password-protected client
./openvpn-install.sh client add bob --password
# Revoke a client
./openvpn-install.sh client revoke alice
# Renew a client certificate
./openvpn-install.sh client renew bob --cert-days 365
모든 클라이언트 나열:```text $ ./openvpn-install.sh client list ══ Client Certificates ══ [INFO] Found 3 client certificate(s)
Name Status Expiry Remaining
alice Valid 2035-01-15 3650 days bob Valid 2035-01-15 3650 days charlie Revoked 2035-01-15 unknown
스크립팅을 위한 JSON 출력:```text
$ ./openvpn-install.sh client list --format json | jq
{
"clients": [
{
"name": "alice",
"status": "valid",
"expiry": "2035-01-15",
"days_remaining": 3650
},
{
"name": "bob",
"status": "valid",
"expiry": "2035-01-15",
"days_remaining": 3650
},
{
"name": "charlie",
"status": "revoked",
"expiry": "2035-01-15",
"days_remaining": null
}
]
}
./openvpn-install.sh server renew
./openvpn-install.sh uninstall
연결된 클라이언트 표시 (데이터는 60초마다 새로고침됩니다):```text
$ ./openvpn-install.sh server status
══ Connected Clients ══
[INFO] Found 2 connected client(s)
Name Real Address VPN IP Connected Since Transfer
---- ------------ ------ --------------- --------
alice 203.0.113.45:52341 10.8.0.2 2025-01-15 14:32 ↓1.2M ↑500K
bob 198.51.100.22:41892 10.8.0.3 2025-01-15 09:15 ↓800K ↑200K
[INFO] Note: Data refreshes every 60 seconds.
install 명령어는 다양한 사용자 지정 옵션을 지원합니다:```bash
./openvpn-install.sh install --port 443 --protocol tcp
./openvpn-install.sh install --dns quad9
./openvpn-install.sh install --cipher AES-256-GCM --cert-type rsa --rsa-bits 4096
./openvpn-install.sh install --subnet-ipv4 10.9.0.0
./openvpn-install.sh install --client-ipv4 --client-ipv6
./openvpn-install.sh install --no-client-ipv4 --client-ipv6
./openvpn-install.sh install --endpoint-type 6 --endpoint 2001:db8::1
./openvpn-install.sh install --client-ipv6 --subnet-ipv6 fd00🔢5678::
./openvpn-install.sh install --no-client
./openvpn-install.sh install
--port 443
--protocol tcp
--dns cloudflare
--cipher AES-256-GCM
--client mydevice
--client-cert-days 365
**네트워크 옵션:**