AWS Client VPN을 조심스럽게 세우고 떨어 뜨릴 수 있습니다.
5427 단어 VPNCloudFormationElasticIPAWS
경위
회사 네트워크의 공용 IP 기반 연결을 허용하는 것이 있지만,
빌딩 점검이나 사무실 이전 등에 의해 일시적으로 IP를 사용할 수 없는 상황이 발생해도 VPN을 통해 대응을 할 수 있도록 해두고 싶은 경우를 상정
그러나 대기 상태로 두면 연결되어 있지 않아도
0.15USD x 24h x 31day x 2 서브넷(접속처)에서 약 232USD (약 2만 5천엔) 월액 걸리므로,
사용하지 않을 때는 중지하고 싶습니다.
이번 전제
요구사항
서버 구성도(가동 시)
서버 구성도 (정지시)
절차
준비
고정 IP 획득
$ aws ec2 allocate-address --domain vpc
// 以下のように表示されるので、 IP と AllocationId をメモしておく
{
"PublicIp": "xx.xx.xx.xx",
"PublicIpv4Pool": "amazon",
"Domain": "vpc",
"AllocationId": "eipalloc-00000000000000"
}
루트 인증서, 서버 인증서 및 서버 비밀 키를 AWS Certificate Manager(ACM)에 등록
$ git clone https://github.com/OpenVPN/easy-rsa.git
$ cd easy-rsa/easyrsa3
$ echo 'set_var EASYRSA_KEY_SIZE 16384' > vars # 鍵長を 16384bit とする
$ echo 'set_var EASYRSA_CERT_EXPIRE 365' >> vars # 有効期限は 365日とする
$ ./easyrsa init-pki # 初期化
$ ls pki # pki フォルダ配下に必要なデータが生成される
$ ./easyrsa build-ca nopass # Common Name を入力 (ex. vpn.hapitas.jp)
$ ls -l pki/ca.crt # ルート証明書が生成される
$ ./easyrsa build-server-full server nopass # サーバ証明書・サーバ秘密鍵作成
$ ls -l pki/issued/server.crt # サーバ証明書が存在
$ ls -l pki/private/server.key # サーバ秘密鍵が存在
# pki フォルダに生成されたファイルは厳重に管理しておく
# ACM に鍵を登録
$ aws acm import-certificate \
--certificate file://pki/issued/server.crt \
--private-key file://pki/private/server.key \
--certificate-chain file://pki/ca.crt \
--region ap-northeast-1
# 以下のように表示されるのでメモしておく
{
"CertificateArn": "arn:aws:acm:ap-northeast-1:111111111:certificate/11111-1111-1111-1111-1111111111"
}
클라이언트 인증서, 비공개 키
# 先程のサーバ証明書を作ったあとの手順 (接続するメンバー分だけ作成)
$ USER=s-urabe
$ ./easyrsa build-client-full ${USER} nopass
$ mkdir -p keys/$USER
$ mv -v pki/issued/$USER.crt keys/$USER/client.crt
$ mv -v pki/private/$USER.key keys/$USER/private.key
Nat 인스턴스 접속용 SSH 키 작성 (평상시 접속하지 않는다고 생각합니다만)
다음 명령의 경우 키 이름은 vpn_nat
$ aws ec2 create-key-pair \
--key-name vpn_nat \
--query 'KeyMaterial' \
--output text > ~/.ssh/vpn_nat.pem
VPN 시작
서버측 구축
gist에있는 vpn-start-cloudformation.yml를 다운로드합니다.
yaml 파일 안에 EIPAllocationId
aws cloudformation deploy \
--template-file vpn-start-cloudformation.ym \
--stack-name my-vpn
15분~20분 정도로 기동합니다.
클라이언트측 설정
htps : // 아 p의 r ぇ아 st-1. 안녕하세요. 아 ws. 아마존. 이 m/vpc/칭찬? 레기온 = 아 p의 r ぇ 아 st-1 # C 엔 tVP 넨 d 포인 ts : 그 rt = c ぃ 엔 tVp 넨 d 포인치 d 에서 ACMArn
를 눌러 ovpn 파일을 다운로드합니다.
ovpn 파일의 끝에 다음을 추가합니다.
echo "cert client.crt" >> downloaded-client-config.ovpn
echo "key private.key" >> downloaded-client-config.ovpn
downloaded-client-config.ovpn 파일을 이전에 클라이언트 인증서가 있는 keys/$USER 와 동일한 디렉토리에 배치합니다. (복수 만든 경우는 복수분)
이 디렉토리 구성 그대로 접속하는 멤버에게 공유해 갑니다.
macOS의 경우 Tunnelblick Windows의 경우 OpenVPN GUI 설치 프로그램을 사용하여 설치합니다.
연결하고 htps : //이 f 곤푸 g. 메
VPN 중지
gist에있는 vpn-stop-cloudformation.yml를 다운로드합니다.
yaml 파일에서 SSHKeyName
의 Default 값은 적절한 값을 설정하므로 준비된 값을 설정하고 다음 명령을 실행합니다.
aws cloudformation deploy \
--template-file vpn-stop-cloudformation.yml \
--stack-name my-vpn
10분 정도에 끝납니다.
VPN 부팅이 필요한 경우 서버측 구축의 단계를 수행합니다. (2회째의 기동은 10분 정도 걸립니다)
절차
준비
고정 IP 획득
$ aws ec2 allocate-address --domain vpc
// 以下のように表示されるので、 IP と AllocationId をメモしておく
{
"PublicIp": "xx.xx.xx.xx",
"PublicIpv4Pool": "amazon",
"Domain": "vpc",
"AllocationId": "eipalloc-00000000000000"
}
루트 인증서, 서버 인증서 및 서버 비밀 키를 AWS Certificate Manager(ACM)에 등록
$ git clone https://github.com/OpenVPN/easy-rsa.git
$ cd easy-rsa/easyrsa3
$ echo 'set_var EASYRSA_KEY_SIZE 16384' > vars # 鍵長を 16384bit とする
$ echo 'set_var EASYRSA_CERT_EXPIRE 365' >> vars # 有効期限は 365日とする
$ ./easyrsa init-pki # 初期化
$ ls pki # pki フォルダ配下に必要なデータが生成される
$ ./easyrsa build-ca nopass # Common Name を入力 (ex. vpn.hapitas.jp)
$ ls -l pki/ca.crt # ルート証明書が生成される
$ ./easyrsa build-server-full server nopass # サーバ証明書・サーバ秘密鍵作成
$ ls -l pki/issued/server.crt # サーバ証明書が存在
$ ls -l pki/private/server.key # サーバ秘密鍵が存在
# pki フォルダに生成されたファイルは厳重に管理しておく
# ACM に鍵を登録
$ aws acm import-certificate \
--certificate file://pki/issued/server.crt \
--private-key file://pki/private/server.key \
--certificate-chain file://pki/ca.crt \
--region ap-northeast-1
# 以下のように表示されるのでメモしておく
{
"CertificateArn": "arn:aws:acm:ap-northeast-1:111111111:certificate/11111-1111-1111-1111-1111111111"
}
클라이언트 인증서, 비공개 키
# 先程のサーバ証明書を作ったあとの手順 (接続するメンバー分だけ作成)
$ USER=s-urabe
$ ./easyrsa build-client-full ${USER} nopass
$ mkdir -p keys/$USER
$ mv -v pki/issued/$USER.crt keys/$USER/client.crt
$ mv -v pki/private/$USER.key keys/$USER/private.key
Nat 인스턴스 접속용 SSH 키 작성 (평상시 접속하지 않는다고 생각합니다만)
다음 명령의 경우 키 이름은 vpn_nat
$ aws ec2 create-key-pair \
--key-name vpn_nat \
--query 'KeyMaterial' \
--output text > ~/.ssh/vpn_nat.pem
VPN 시작
서버측 구축
gist에있는 vpn-start-cloudformation.yml를 다운로드합니다.
yaml 파일 안에 EIPAllocationId
aws cloudformation deploy \
--template-file vpn-start-cloudformation.ym \
--stack-name my-vpn
15분~20분 정도로 기동합니다.
클라이언트측 설정
htps : // 아 p의 r ぇ아 st-1. 안녕하세요. 아 ws. 아마존. 이 m/vpc/칭찬? 레기온 = 아 p의 r ぇ 아 st-1 # C 엔 tVP 넨 d 포인 ts : 그 rt = c ぃ 엔 tVp 넨 d 포인치 d 에서 ACMArn
를 눌러 ovpn 파일을 다운로드합니다.
ovpn 파일의 끝에 다음을 추가합니다.
echo "cert client.crt" >> downloaded-client-config.ovpn
echo "key private.key" >> downloaded-client-config.ovpn
downloaded-client-config.ovpn 파일을 이전에 클라이언트 인증서가 있는 keys/$USER 와 동일한 디렉토리에 배치합니다. (복수 만든 경우는 복수분)
이 디렉토리 구성 그대로 접속하는 멤버에게 공유해 갑니다.
macOS의 경우 Tunnelblick Windows의 경우 OpenVPN GUI 설치 프로그램을 사용하여 설치합니다.
연결하고 htps : //이 f 곤푸 g. 메
VPN 중지
gist에있는 vpn-stop-cloudformation.yml를 다운로드합니다.
yaml 파일에서 SSHKeyName
의 Default 값은 적절한 값을 설정하므로 준비된 값을 설정하고 다음 명령을 실행합니다.
aws cloudformation deploy \
--template-file vpn-stop-cloudformation.yml \
--stack-name my-vpn
10분 정도에 끝납니다.
VPN 부팅이 필요한 경우 서버측 구축의 단계를 수행합니다. (2회째의 기동은 10분 정도 걸립니다)
$ aws ec2 allocate-address --domain vpc
// 以下のように表示されるので、 IP と AllocationId をメモしておく
{
"PublicIp": "xx.xx.xx.xx",
"PublicIpv4Pool": "amazon",
"Domain": "vpc",
"AllocationId": "eipalloc-00000000000000"
}
$ git clone https://github.com/OpenVPN/easy-rsa.git
$ cd easy-rsa/easyrsa3
$ echo 'set_var EASYRSA_KEY_SIZE 16384' > vars # 鍵長を 16384bit とする
$ echo 'set_var EASYRSA_CERT_EXPIRE 365' >> vars # 有効期限は 365日とする
$ ./easyrsa init-pki # 初期化
$ ls pki # pki フォルダ配下に必要なデータが生成される
$ ./easyrsa build-ca nopass # Common Name を入力 (ex. vpn.hapitas.jp)
$ ls -l pki/ca.crt # ルート証明書が生成される
$ ./easyrsa build-server-full server nopass # サーバ証明書・サーバ秘密鍵作成
$ ls -l pki/issued/server.crt # サーバ証明書が存在
$ ls -l pki/private/server.key # サーバ秘密鍵が存在
# pki フォルダに生成されたファイルは厳重に管理しておく
# ACM に鍵を登録
$ aws acm import-certificate \
--certificate file://pki/issued/server.crt \
--private-key file://pki/private/server.key \
--certificate-chain file://pki/ca.crt \
--region ap-northeast-1
# 以下のように表示されるのでメモしておく
{
"CertificateArn": "arn:aws:acm:ap-northeast-1:111111111:certificate/11111-1111-1111-1111-1111111111"
}
# 先程のサーバ証明書を作ったあとの手順 (接続するメンバー分だけ作成)
$ USER=s-urabe
$ ./easyrsa build-client-full ${USER} nopass
$ mkdir -p keys/$USER
$ mv -v pki/issued/$USER.crt keys/$USER/client.crt
$ mv -v pki/private/$USER.key keys/$USER/private.key
$ aws ec2 create-key-pair \
--key-name vpn_nat \
--query 'KeyMaterial' \
--output text > ~/.ssh/vpn_nat.pem
aws cloudformation deploy \
--template-file vpn-start-cloudformation.ym \
--stack-name my-vpn
echo "cert client.crt" >> downloaded-client-config.ovpn
echo "key private.key" >> downloaded-client-config.ovpn
aws cloudformation deploy \
--template-file vpn-stop-cloudformation.yml \
--stack-name my-vpn
Reference
이 문제에 관하여(AWS Client VPN을 조심스럽게 세우고 떨어 뜨릴 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/oz-urabe/items/2bd9a715e41a04c1da65텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)