2

私はs3エンドポイントの悲しみを抱えています。インスタンスが初期化されると、docker をインストールできません。詳細:

pub サブネットと private サブネットを持つ VPC に ASG インスタンスを配置しています。適切なルーティングと EIP/NAT がすべて統合されています。プライベート サブネットのインスタンスは、それぞれのパブリック サブネットの NAT にルーティングされたアウトバウンド 0.0.0.0/0 を持っています。パブリック サブネットの NACL は、インターネット トラフィックの入出力を許可し、プライベート サブネットの周りの NACL は、パブリック サブネットからのトラフィックの入出力、インターネットへのトラフィック (および s3 cidr からのトラフィックの入出力) を許可します。かなりロックダウンしたい。

  • VPC で DNS とホスト名を有効にしています
  • NACL はステートレスであり、エフェメラル ポート範囲で s3 amazon IP cidr ブロックの IN および OUTBOUND ルールを有効にしていることを理解しています (はい、パブとプライベート サブネット間のトラフィックも有効にしています)
  • はい、プライベート ルート テーブルで s3 エンドポイントにルートがプロビジョニングされていることを確認しました
  • はい、私は確かにそれがs3エンドポイントであり、別の失敗ではなく、悲しみを引き起こしていることを知っています->それを削除してNACLを開くと、yum更新してdockerをインストールできます(予想どおり)私を開く必要がある提案を探していませんNACL、私は VPC ゲートウェイ エンドポイントを使用しています。これは、プライベート サブネットで物事をロックダウンしたままにしたいからです。同様の議論で「すべてのポートで 0.0.0.0/0 を開いたところ、x が機能するようになった」と書かれているように見えるので、これについて言及します。
  • docker をインストールして AMI をベイクするだけでよいですか? これで解決できなかったらそうします。私は本当にネットワークをセットアップして、すべてが適切にロックダウンされ、エンドポイントを利用するのが非常に簡単であるように感じたいと思っていました. これは主にネットワーキングの演習であるため、問題の解決と理解を回避するため、これを実行したくありません。
  • 他の VPC エンドポイントが完全に機能していることはわかっています -> 自動スケーリング サービス インターフェイス エンドポイントが実行されており (ポリシーに従ってインスタンスが縮小されていることがわかります)、SSM インターフェイス エンドポイントでセッション マネージャーを使用できるようになり、ECR エンドポイントが動作しています。 s3 ゲートウェイ エンドポイントと組み合わせて (イメージ レイヤーが s3 にあるため、s3 ゲートウェイ エンドポイントが必要です) -> NACLS を開いて s3 エンドポイントを削除し、docker をインストールすると、すべてを再びロックして、s3 を戻すため、これが機能することがわかっています。 gatewayendpoint ECR イメージを正常にプルできます。SO s3 ゲートウェイ エンドポイントは、ecr イメージ レイヤーにアクセスするには問題ありませんが、amazon-linux-extra リポジトリにはアクセスできません。
  • インスタンスに接続された SG は問題ではありません (インスタンスにはデフォルトのアウトバウンド ルールがあります)
  • この 7 年前のスレッドで見たように、ますます寛大なポリシーを s3 エンドポイントに追加しようとしましたが、これでうまくいくはずだと思いました (はい、地域を正しく下塗りしました)。
  • このスレッドで説明されているように、解決策は s3 ゲートウェイ ポリシーにあると強く感じていますが、ますます自暴自棄になっているポリシーにはほとんど運がありません。

Amazon EC2 インスタンスが yum を更新または使用できない

別のs3が解決に苦労しています:

https://blog.saieva.com/2020/08/17/aws-s3-endpoint-gateway-access-for-linux-2-amis-resolving-http-403-forbidden-error/

私が試してみました:

  S3Endpoint:
Type: 'AWS::EC2::VPCEndpoint'
Properties:
  PolicyDocument:
    Version: 2012-10-17
    Statement:
      - Effect: Allow
        Principal: '*'
        Action:
          - 's3:GetObject'
        Resource: 
          - 'arn:aws:s3:::prod-ap-southeast-2-starport-layer-bucket/*'
          - 'arn:aws:s3:::packages.*.amazonaws.com/*'
          - 'arn:aws:s3:::repo.*.amazonaws.com/*'
          - 'arn:aws:s3:::amazonlinux-2-repos-ap-southeast-2.s3.ap-southeast-2.amazonaws.com/*'
          - 'arn:aws:s3:::amazonlinux.*.amazonaws.com/*'
          - 'arn:aws:s3:::*.amazonaws.com'
          - 'arn:aws:s3:::*.amazonaws.com/*'
          - 'arn:aws:s3:::*.ap-southeast-2.amazonaws.com/*'
          - 'arn:aws:s3:::*.ap-southeast-2.amazonaws.com/'
          - 'arn:aws:s3:::*repos.ap-southeast-2-.amazonaws.com'
          - 'arn:aws:s3:::*repos.ap-southeast-2.amazonaws.com/*'
          - 'arn:aws:s3:::repo.ap-southeast-2-.amazonaws.com'
          - 'arn:aws:s3:::repo.ap-southeast-2.amazonaws.com/*'
  RouteTableIds:
    - !Ref PrivateRouteTableA
    - !Ref PrivateRouteTableB   
  ServiceName: !Sub 'com.amazonaws.${AWS::Region}.s3'
  VpcId: !Ref BasicVpc
  VpcEndpointType: Gateway

(ご覧のとおり、非常に絶望的です) 最初のルールは、ECR インターフェイス エンドポイントが s3 からイメージ レイヤーをプルするために必要です。他のすべてのルールは、amazon-linux-extras リポジトリに到達するための試行です。

以下は、SSM エンドポイントを使用してセッション マネージャーに接続して再作成した初期化時に発生する動作です。

https://aws.amazon.com/premiumsupport/knowledge-center/connect-s3-vpc-endpoint/

yum のインストールまたは更新ができません

root@ip-10-0-3-120 bin]# yum install docker -y

読み込まれたプラグイン: extras_suggestions、langpacks、priorities、update-motd ミラーリストを取得できませんでしたhttps://amazonlinux-2-repos-ap-southeast-2.s3.ap-southeast-2.amazonaws.com/2/core/latest/ x86_64/mirror.listエラーは 14 でした: HTTPS エラー 403 - 禁止されています

構成されたリポジトリの 1 つが失敗し (不明)、yum には続行するのに十分なキャッシュ データがありません。この時点で yum ができる唯一の安全なことは、失敗することです。これを「修正」するには、いくつかの方法があります。

 1. Contact the upstream for the repository and get them to fix the problem.

 2. Reconfigure the baseurl/etc. for the repository, to point to a working
    upstream. This is most often useful if you are using a newer
    distribution release than is supported by the repository (and the
    packages for the previous distribution release still work).

 3. Run the command with the repository temporarily disabled
        yum --disablerepo=<repoid> ...

 4. Disable the repository permanently, so yum won't use it by default. Yum
    will then just ignore the repository until you permanently enable it
    again or use --enablerepo for temporary usage:

        yum-config-manager --disable <repoid>
    or
        subscription-manager repos --disable=<repoid>

 5. Configure the failing repository to be skipped, if it is unavailable.
    Note that yum will try to contact the repo. when it runs most commands,
    so will have to try and fail each time (and thus. yum will be be much
    slower). If it is a very temporary problem though, this is often a nice
    compromise:

        yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

リポジトリの有効な baseurl が見つかりません: amzn2-core/2/x86_64

そしてできません:

amazon-linux-extras install docker

Catalog is not reachable. Try again later.

https://amazonlinux-2-repos-ap-southeast-2.s3.ap-southeast-2.amazonaws.com/2/extras-catalog-x86_64-v2.jsonのカタログ、https://amazonlinux-2- repos-ap-southeast-2.s3.ap-southeast-2.amazonaws.com/2/extras-catalog-x86_64.json トレースバック (最後の最後の呼び出し): ファイル "/usr/lib/python2.7/site-packages/amazon_linux_extras/software_catalog.py"、131 行目、fetch_new_catalog リクエスト = urlopen(url) ファイル "/usr/lib64/python2. 7/urllib2.py"、154 行目、urlopen return opener.open(url, data, timeout) ファイル "/usr/lib64/python2.7/urllib2.py"、435 行目、open response = meth(req, response) ファイル "/usr/lib64/python2.7/urllib2.py", 行 548, in http_response 'http', request, response, code, msg, hdrs) ファイル "/usr/lib64/python2.7/urllib2. py"、473 行目、エラー return self._call_chain(*args) ファイル "/usr/lib64/python2.7/urllib2.py"、407 行目、_call_chain 結果 = func(*args) ファイル "/usr/lib64 /python2.7/urllib2.py"、556 行目、http_error_default で HTTPError(req.get_full_url(), code, msg, hdrs,fp) HTTPError: HTTP エラー 403: 禁止されています

私が見逃した落とし穴はありますか?私はここで非常に立ち往生しています。基本的な VPC ネットワーキング、NACL、および VPC エンドポイント (少なくとも使用したもの) に精通しており、トラブルシューティングに従いました (ただし、概説どおりにすべてをセットアップしました)。

ここまたはミラーリストの問題はs3ポリシーだと思います。わざわざ読んでくれてありがとう!考え?

4

2 に答える 2

2

こんにちは@nick https://stackoverflow.com/users/9405602/nick -->トラブルシューティングは他の人にとって価値があり、コメントの文字制限に加えて、これらは「回答」を書く優れた提案です。

問題は間違いなくポリシーです。


sh-4.2$ cat /etc/yum/vars/awsregion
ap-southeast-2sh-4.2$

掘る:


sh-4.2$ dig amazonlinux.ap-southeast-2.amazonaws.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> amazonlinux.ap-southeast-2.amazonaws.com ;; グローバル オプション: +cmd ;; 答えを得た: ;; ->>HEADER<<- オペコード: QUERY、ステータス: NOERROR、ID: 598 ;; フラグ: qr rd ra; クエリ: 1、回答: 2、権限: 0、追加: 1

;; OPT疑似セクション: ; EDNS: バージョン: 0、フラグ:; udp: 4096 ;; 質問セクション: ;amazonlinux.ap-southeast-2.amazonaws.com. で

;; 回答セクション: amazonlinux.ap-southeast-2.amazonaws.com。278 IN CNAME s3.dualstack.ap-southeast-2.amazonaws.com. s3.dualstack.ap-southeast-2.amazonaws.com. 2 インチ 52.95.134.91

;; クエリ時間: 4 ミリ秒 ;; サーバー: 10.0.0.2#53(10.0.0.2) ;; 日時: 2021 年 9 月 20 日月曜日 00:03:36 UTC ;; MSG サイズ rcvd: 112


NACL を確認してみましょう。

NACL OUTBOUND RULESの説明: 100 すべてのトラフィック すべて すべて 0.0.0.0/0
許可 101 すべてのトラフィック すべて すべて 52.95.128.0/21
許可 150 すべてのトラフィック すべて すべて 3.5.164.0/22
許可 200 すべてのトラフィック すべて すべて 3.5.168.0/23
許可 250すべてのトラフィック すべて すべて 3.26.88.0/28
許可 300 すべてのトラフィック すべて すべて 3.26.88.16/28すべてのトラフィックを
許可 すべて すべて 0.0.0.0/0
拒否

NACL INBOUND RULESインバウンド ルールの説明: 100 すべてのトラフィック すべて すべて 10.0.0.0/24 許可 150 すべてのトラフィック すべて すべて 10.0.1.0/24 許可 200 すべてのトラフィック すべて すべて 10.0.2.0/24 許可 250 すべてのトラフィック すべて すべて 10.0.3.0/24 400 を許可 すべてのトラフィック すべて すべて 52.95.128.0/21
450 を許可 すべてのトラフィック すべて すべて 3.5.164.0/22
500 を許可 すべてのトラフィック すべて すべて 3.5.168.0/23
550 を許可 すべてのトラフィック すべて すべて 3.26.88.0/28
600 を許可 すべてのトラフィック すべて すべて3.26.88.16/28
すべてのトラフィックを許可 すべて すべて 0.0.0.0/0
拒否

SO -----> '52.95.134.91' は、ルール 101 のアウトバウンドと 400 のインバウンドによってキャプチャされるため、NACL に関して適切に見えます。(将来のトラブルシューティング、これはあなたが探すべきものです)

これらの CIDR ブロックについても、デプロイ スクリプトは現在のリストからそれらを引き出し、jq を使用して ap-southeast-2 の s3 ブロックを取得し、それらをパラメーターとして CF デプロイに渡します。

他の人のためにそれを行う方法に関するドキュメント: https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html#aws-ip-download

もう 1 つの注意点として、out 0.0.0.0/0 に気付くかもしれません。(他の人が見ている場合は注意してください)これにより、他のルールが冗長になります。サブネット)。プライベート サブネット トラフィックのアウトバウンド 0.0.0.0/0 は、パブリック サブネット内のそれぞれの NAT にルーティングされます。パブリック サブネットのアウトバウンドを追加し、ある時点でこのルールを削除します。

サブネット化 ATM は単純に: 10.0.0.0/16 pub a: 10.0.0.0/24 pub b: 10.0.1.0/24 priv a: 10.0.2.0/24 priv b: 10.0.3.0/24

そのため、pub a および b ブロックのルールが再導入されるため、0.0.0.0/0 の許可を削除できます。


それがポリシーであると今では確信しています。

クリック操作でコンソールのポリシーを「フルアクセス」に修正して、それに亀裂を与え、成功しました。

私の推測では、ミラー リストが明示的に許可するものを特定するのを難しくしているため、ネットワークを広くキャストしても、必要なバケットをキャプチャしていませんでした。しかし、AWSミラーがどのように機能するかについてはあまり知らないので、それは推測です.

私はおそらく超大規模な寛容なポリシーを望んでいないので、これは実際には修正ではありませんが、問題がどこにあるかを確認します.

于 2021-09-20T01:34:27.550 に答える