VPN 서버 작성
클라이언트가 보안 연결을 유지하면서 인터넷에서 VPC 네트워크에 연결할 수 있도록 VPN 서버를 작성하십시오.
콘솔, CLI 또는 API를 사용하여 VPN 서버를 만들 수 있습니다.
시작하기 전에
VPN 서버를 프로비저닝하기 전에 다음 전제조건을 아래 순서로 완료하십시오.
-
VPN 서버에 대한 계획 고려사항을 검토하십시오.
-
사용할 VPN 클라이언트 인증 모드를 인증서 기반, 사용자 ID 및 암호 또는 둘 다로 결정합니다. 자세한 정보는 클라이언트 대 사이트 인증 설정을 참조하십시오.
-
Secrets Manager 서비스 인스턴스를 작성 하고 인증서를 관리 하십시오.
이러한 고려사항 을 염두에 두고 개인용 인증서를 작성 하는 것이 좋습니다.
-
VPN 서버에 대한 IAM 서비스 간 인증 및 IBM Cloud Secrets Manager를 생성합니다.
-
선택한 VPC에서 VPC및 하나 이상의 서브넷을 작성 하십시오.
고가용성을 위해 두 개의 서로 다른 구역에서 하나의 VPC 및 두 개의 서브넷을 작성하십시오. VPN 서버는 두 개의 서브넷에 상주합니다.
콘솔에서 VPN 서버 생성하기
콘솔에서 클라이언트-사이트 간 VPN 서버를 만들려면 다음과 같이 하세요:
-
"시작하기 전에" 절의 모든 전제조건을 완료하십시오.
-
브라우저에서 IBM Cloud 콘솔을 열고 계정에 로그인합니다.
-
탐색 메뉴
선택한 다음 인프라 > 네트워크 > VPN을 클릭합니다.
-
페이지의 오른쪽 상단에 있는 작성을 클릭하십시오.
-
VPN 유형 섹션에서 클라이언트-사이트 서버를 클릭합니다.
VPN 유형 섹션 위치 섹션에는 VPC가 위치한 지역과 VPN 서버가 프로비저닝될 위치가 표시됩니다.
-
세부사항 섹션에서 다음 정보를 지정하십시오.
-
VPN 서버 이름 - VPN 서버의 이름(예:
my-vpn-server
)을 입력합니다. -
리소스 그룹 - VPN 서버의 리소스 그룹을 선택합니다.
-
태그- 선택 사항으로 태그를 추가하여 리소스를 정리하고, 사용 비용을 추적하거나, 리소스에 대한 액세스를 관리할 수 있습니다.
-
액세스 관리 태그-선택적으로 액세스 제어 관계를 구성하는 데 도움이 되도록 자원에 액세스 관리 태그를 추가하십시오. 액세스 관리 태그의 유일한 지원 형식은
key:value
입니다. 자세한 정보는 태그를 사용하여 리소스에 대한 액세스 제어를 참조하십시오. -
Virtual Private Cloud -VPN 서버에 대한 VPC를 선택합니다.
-
클라이언트 IPv4 주소 풀 - CIDR 범위를 입력합니다. 클라이언트에는 이 주소 풀에서 세션에 대한 IP 주소가 지정됩니다.
VPN 세부사항 섹션
-
-
서브넷 섹션에서 다음 정보를 지정하십시오.
-
VPN 서버 모드 선택:
- 고가용성 모드 - 다른 지역에 있는 두 서브넷에 VPN 서버를 배치합니다. 클라이언트 VPN 액세스가 중요한 다중 구역 배치 및 솔루션에 가장 적합합니다.
- 독립형 모드 - 단일 서브넷 및 구역에 VPN 서버를 배치합니다. 다중 구역 복원이 필요하지 않은 단일 구역 배치에 대해 가장 적합합니다.
-
단일 서브넷(독립형 모드) 또는 다중 서브넷(HA 모드)을 지정하십시오.
VPN 서브넷 섹션
-
-
인증 섹션에서 다음 정보를 지정하십시오.
-
VPN 서버 인증- Secrets Manager에서 서버 SSL 인증서를 선택하십시오. 모든 필수 필드를 완성하십시오.
VPN 서버 인증 섹션 -
클라이언트 인증 모드 - 클라이언트 인증서, 사용자 ID 및 패스코드 또는 둘 다를 사용하여 사용자 인증을 구성할 경우 선택합니다.
-
클라이언트 인증서 - 클라이언트 인증서를 선택하고 최적의 보안을 위해 사용자 ID 및 패스코드를 구성할 수 있습니다. 사용자 ID와 비밀번호는 계정 액세스를 위해 추가 로그인 자격 증명이 필요한 추가 보안 계층을 제공합니다.
선택적으로, PEM 형식으로 된 CRL(Certificate Revocation List)을 업로드할 수 있습니다. CRL을 업로드하면 PEM 파일은 VPN 서버의 이름으로 표시됩니다.
-
사용자 ID및 패스코드-VPN 클라이언트 사용자에 대해 추가된 인증을 구성합니다. 이 인증 방법은 IBM Cloud IAM과 통합되어 클라이언트 인증을 완료하는 추가 보안 계층을 제공합니다. 인증이 완료되면 시스템은 인증을 위해 openVPN 클라이언트로 코드를 전달합니다.
VPN 클라이언트 인증 섹션 -
-
-
보안 그룹 섹션에서 하나 이상의 보안 그룹을 선택하십시오.
하나 이상의 보안 그룹 및 해당 규칙을 구성하거나, VPN 서버를 배포할 서브넷 및 VPN 터널을 통해 통신하는 다른 VPC 서브넷에서 선택적으로 ACL(액세스 제어 목록)을 구성하려면 VPN 서버에 사용할 ACL 구성하기를 참조하세요.
VPN 보안 그룹 섹션 VPN 서버의 세부사항 페이지 (보안 그룹 탭) 에서 프로비저닝한 후 보안 그룹을 첨부할 수 있습니다.
-
추가 구성 섹션에서 다음 정보를 지정하십시오.
-
DNS 서버 IP 주소 - 선택적으로 도메인 이름 분석을 위해 하나 또는 두 개의 DNS 서버 IP 주소를 지정합니다.
-
유휴 제한시간 세션(초) - 이 간격이 경과하기 전에 VPN 서버에 트래픽이 없으면 자동으로 연결이 끊어집니다. 이 값의 범위는
0
-28800
초입니다. 기본값은600
초입니다. -
전송 프로토콜 - 다음 프로토콜 중 하나를 선택하고 올바른 VPN 포트를 입력하십시오(
1 - 65535
).- UDP는 오류 검사를 수행하지만 잘못된 패킷을 삭제하는 비연결 프로토콜입니다. TCP 보다 빠릅니다.
- TCP는 오류 검사 및 오류 복구가 포함된 연결 지향 프로토콜입니다. UDP보다 신뢰할 수 있습니다.
-
터널 모드 - 다음 중 하나를 지정하십시오.
-
전체 터널 - 모든 트래픽은 VPN 인터페이스를 통해 VPN 터널로 플로우됩니다.
-
분할 터널 - 개인용 트래픽은 VPN 인터페이스를 통해 VPN 터널로 플로우되고, 공용 트래픽은 기존의 LAN 인터페이스를 통해 플로우됩니다.
VPN 추가 구성 섹션
-
-
CLI에서 VPN 서버 생성하기
시작하기 전에 CLI 환경을 설정 하십시오.
CLI에서 VPN 서버를 생성하려면 다음 명령을 입력하세요:
ibmcloud is vpn-server-create --subnets SUBNETS --client-ip-pool CLIENT_IP_POOL --cert CERT (--client-auth-methods certificate | username | certificate,username | username,certificate) [--client-ca CLIENT_CA] [--client-crl CLIENT_CRL] [--client-dns CLIENT_DNS] [--client-idle-timeout CLIENT_IDLE_TIMEOUT] [--enable-split-tunnel false | true] [--port PORT] [--protocol udp | tcp] [--security-group SECURITY_GROUP1 --security-group SECURITY_GROUP2 ...] [--name NAME] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--output JSON] [-q, --quiet]
명령 옵션
- --subnets: 이 VPN 서버를 프로비저닝하기 위해 쉼표로 구분된 서브넷의 ID입니다. 고가용성을 위해 다른 구역의 서브넷을 사용하십시오. 두 개의 서브넷을 최대로 설정할 수 있습니다.
- - - client-ip-pool: CIDR 형식으로 표시된 VPN 클라이언트 IPv4 주소 풀입니다. 요청은 VPC의 기존 주소 접두부 또는 예약된 주소 범위 즉, 127.0.0.0/8(IPv4 루프백 주소), 161.26.0.0/16((IBM 서비스), 166.8.0.0/14(클라우드 서비스 엔드포인트), 169.254.0.0/16(IPv4 링크 로컬 주소), 224.0.0.0/4(IPv4 멀티캐스트 주소)와 겹치지 않아야 합니다. 클라이언트 IP 주소 풀 CIDR의 접두부 길이의 범위는 /9(8,388,608주소) - /22(1024주소)여야 합니다. 최대 동시 연결 수를 사용하는 데 필요한 IP 주소보다 두 배 많이 포함된 CIDR 블록이 권장됩니다.
- --cert: 이 VPN 서버의 인증서 인스턴스 CRN입니다.
- --client-auth-methods: 클라이언트 인증 메소드의 목록이며, 쉼표로 구분됩니다. 인증서, 사용자 이름, 인증서, 사용자 이름, 사용자 이름, 인증서 중 하나입니다.
- --client-ca: VPN 클라이언트 인증 기관(CA)에 사용할 인증서 인스턴스의 CRN입니다.
- --client-crl: CRL | @CRL-file. PEM 형식으로 인코딩된 인증서 폐기 목록 컨텐츠입니다.
- --client-dns: 이 VPN 서버에 연결된 VPN 클라이언트에 제공될 DNS 서버 주소이며, 쉼표로 구분됩니다. 최대 두 개의 DNS 서버를 설정할 수 있습니다.
- -client-idle-timeout: 이 VPN 서버가 연결을 끊기 전에 VPN 클라이언트가 유휴 상태가 될 수 있는 시간(초)입니다. 서버가 유휴 클라이언트의 연결을 끊지 않도록 하려면 0을 지정하십시오(기본값: 600).
- -enable-split-tunnel: 분할 터널링이 이 VPN 서버에서 사용으로 설정되는지 여부를 표시합니다. false 또는 true 중 하나입니다(기본값: false).
- -- port: 이 VPN 서버에 사용할 포트 번호입니다(기본값: 443).
- -- protocol: 이 VPN 서버에 사용할 전송 프로토콜입니다. udp 또는 tcp 중 하나입니다(기본값: udp).
- --security-group: 보안 그룹의 ID입니다.
- --name: VPN 서버의 새 이름입니다.
- --resource-group-id: 리소스 그룹의 ID입니다. 이 옵션은 --resource-group-name과 상호 배타적입니다.
- --resource-group-name: 리소스 그룹의 이름입니다. 이 옵션은 --resource-group-id와 상호 배타적입니다.
- --output: 출력 형식을 지정합니다. JSON만 지원됩니다. 다음 중 하나입니다: JSON.
- -q, --quiet: 상세 출력을 억제합니다.
명령 예제
ibmcloud is vpn-server-create --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.165.7.0/20 --client-auth-methods certificate --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc
ibmcloud is vpn-server-create --name myvpnserver --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.166.7.0/20 --client-auth-methods username
ibmcloud is vpn-server-create --name myvpnserver2 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.167.7.0/20 --client-auth-methods username --client-dns 9.9.9.9,8.8.8.8 --protocol tcp --port 8888 --enable-split-tunnel true --client-idle-timeout 1200
ibmcloud is vpn-server-create --name myvpnserver3 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.168.7.0/20 --client-auth-methods username --security-group r006-e32f671c-463d-4f93-88e3-2dd0413476b4 --security-group r006-3af7a9db-d9bc-43d4-bced-93e0a33fee25
ibmcloud is vpn-server-create --subnets 0736-4b871e22-e819-4f87-bb17-e457a88246a2 --client-ip-pool 192.170.0.0/22 --client-dns 172.34.1.100 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-auth-methods certificate,username --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-crl @./openvpn/crl.pem --name vpnswithcrl --security-group r006-5744b689-e5c4-461d-9f9b-ce5e7e8dbed6
API로 VPN 서버 생성하기
API를 사용하여 클라이언트-사이트 간 VPN 서버를 만들려면 다음 단계를 따르세요:
-
올바른 변수를 사용하여 API 환경을 설정하십시오.
-
다음과 같이 API 명령에 사용할 추가 변수를 저장하십시오.
-
ResourceGroupId
-get resource groups
명령을 사용하여 리소스 그룹 ID를 찾은 후 변수를 채우십시오.export ResourceGroupId=<your_resourcegroup_id>
-
SubnetId
-get subnet
명령을 사용하여 서브넷 ID를 찾은 후 변수를 채우십시오.export SubnetId=<your_subnet_id>
-
-
모든 변수가 시작되면 VPN 서버를 작성합니다.
curl -X POST "$vpc_api_endpoint/v1/vpn_servers?version=$api_version&generation=2" \ -H "Authorization: $iam_token" \ -d '{ "certificate": { "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc" }, "client_ip_pool": "192.168.50.0/22", "name": "my-new-vpn-server", "subnets": [ { "id": "0716-046c3fd3-1cc5-40f6-b0ad-bbc305308f6d" }, { "id": "0717-30ff71ff-3e90-42a9-aa93-96a062081f18" } ], "client_authentication": [ { "method": "certificate", "client_ca": { "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc" } }, { "method": "username", "identity_provider": { "provider_type": "iam" } } ] "resource_group": { "id": "'$ResourceGroupId'" } }'
다음 단계
- VPN 서버가 성공적으로 생성되었는지 확인하려면 몇 분간 기다린 다음 클라이언트-사이트 서버 테이블로 이동하여 VPN 서버 상태가
Stable
이고 상태 상태가Healthy
인지 확인하세요. - VPN 라우트를 작성하십시오.
- VPN 클라이언트 환경을 설정하고 VPN 서버에 연결하십시오.