利用方法
前提条件
(オプション)AWS CLIのための準備
export PROFILE="default" #Specify a profile with AdministratorAccess privileges export REGION="ap-northeast-1" #Specify Region #動作テスト aws --profile ${PROFILE} --region ${REGION} sts get-caller-identity #以下のようにUserID/Account/Arnが表示されればOK { "UserId": "AROAZKIQKBDEIBOE2MGEJ:botocore-session-xxxxxxxxxx", "Account": "999999999999", "Arn": "arn:aws:sts::999999999999:assumed-role/OrganizationAccountAccessRole/botocore-session-xxxxxxxxxx" }
コードのダウンロード
git clone https://github.com/Noppy/CFn_ForwardProxy.git
cd CFn_ForwardProxy
設定情報の取得
CloudFormationのスタック作成時のパラメーターに設定する以下の情報を事前に控えておく
- VPC構成情報
- Amazon Linux2(x86_64)のAMI ID
- マネージメントコンソールの場合:
- Amazon EC2のコンソールhttps://console.aws.amazon.com/ec2/ を開く
- From the console dashboard, choose Launch Instance.
Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
のx86_64
アーキテクチャのAMIを確認する- 表示されているAMI(e.g. `ami-xxxxxxxxxxxxxxxxx`)を控える
- CUIの場合:
- マネージメントコンソールの場合:
AMZ2_AMIID=$(aws --profile ${PROFILE} --region ${REGION} --output text \ ec2 describe-images \ --owners amazon \ --filters 'Name=name,Values=amzn2-ami-kernel-5.10-hvm-2.0.????????.?-x86_64-gp2' \ 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' ) ; echo "AMZ2_AMIID = ${AMZ2_AMIID}"
CloudFormationによるデプロイ
- マネージメントコンソールの場合:
- 具体的な操作手順は、CloudFormationのユーザーガイドを参照下さい。
- テンプレートは、
./src/forward_proxy.yaml
- パラメータ: 上記の「設定情報の取得」で確認した情報を設定します。
- CUIの場合:
# 「設定情報の取得」で確認した情報を設定 VPCID="<VPC ID>" PubSubIds="<PubSub1Id>,<PubSub2Id>,<Pubsub3Id>" ElbSubIds="<ElbSub1Id>,<Elbsub2Id>,<ElbSub3Id>" SrcCidr="<CIDR of VPC>" # パラメータ用のJSON生成 CFN_STACK_PARAMETERS=' [ { "ParameterKey": "VpcId", "ParameterValue": "'"${VPCID}"'" }, { "ParameterKey": "PublicSubnets", "ParameterValue": "'"${PubSubIds}"'" }, { "ParameterKey": "ElbSubnets", "ParameterValue": "'"${ElbSubIds}"'" }, { "ParameterKey": "ProxyAmiId", "ParameterValue": "'"${AMZ2_AMIID}"'" }, { "ParameterKey": "AllowCidrBlockForProxy", "ParameterValue": "'"${SrcCidr}"'" } ]' # スタックの作成 aws --profile ${PROFILE} --region ${REGION} \ cloudformation create-stack \ --stack-name "ForwardProxy" \ --template-body "file://./src/forward_proxy.yaml" \ --parameters "${CFN_STACK_PARAMETERS}" \ --capabilities CAPABILITY_IAM ;
NLBのDNS取得
- マネージメントコンソールの場合:
- 作成したスタックの
Outputs
で確認する
- 作成したスタックの
- CUIの場合:
ProxyDns=$(aws --profile ${PROFILE} --region ${REGION} --output text \ cloudformation describe-stacks \ --stack-name "ForwardProxy" \ --query 'Stacks[].Outputs[?OutputKey==`LoadBalancerDns`].[OutputValue]') echo "ProxyDns = ${ProxyDns}"
テスト
Linuxサーバをクライアントとしてテストする場合の手順をいかに示します。
ProxyDns="<「NLBのDNS取得」で取得したDNS情報>" export http_proxy="http://${ProxyDns}:3128" export https_proxy="http://${ProxyDns}:3128" # Test # "https://www.google.co.jp" is allowed, "https://www.yahoo.co.jp" is denied. curl https://www.google.co.jp curl https://www.yahoo.co.jp