更新: とりわけこれに取り組んでいます。2 つのサブネットと 1 つの SSH 踏み台を使用して、機能する構成を取得できないようです。* 2 つのプライベート サブネットを作成する * 要塞を作成する * 要塞経由で構成された各サブネットで ec2 インスタンスをスピンする (要塞経由で任意のシェル コマンドを実行する) * インターネット ゲートウェイを構成する * 持っているプライベート サブネット上のホストの nat ゲートウェイ * ルートとセキュリティ グループが適切に構成されている
元の投稿: Terraform を学習してプロトタイプを作成しようとしています。Terraform を介して構成された AWS VPC があります。DMZ サブネットに加えて、インターネットからのトラフィックを受信するパブリック サブネット「web」があります。インターネットからアクセスできないプライベートサブネット「アプリ」があります。テラフォームがプライベート「アプリ」サブネットにインスタンスをプロビジョニングできるように、要塞ホストを構成しようとしています。私はまだこれを機能させることができませんでした。
踏み台に ssh 接続すると、踏み台ホストからプライベート サブネット内のどのインスタンスにも SSH 接続できません。ルーティングに問題があると思われます。私は、いくつかの利用可能な例とドキュメントを使用して、このプロトタイプを構築してきました。多くの例では、aws プロバイダーを介して、わずかに異なる手法と Terraform ルーティング定義を使用しています。
「web」サブネット上のインスタンスが「app」にアクセスできるように、これら 3 つのサブネット (パブリック「web」、パブリック「dmz」と要塞、およびプライベート「app」) を定義するための理想的または適切な方法を誰かが提供してください。 DMZ の踏み台ホストがプライベート「アプリ」サブネットにインスタンスをプロビジョニングできることを確認しますか?
私の設定の一部を以下に示します。
resource "aws_subnet" "dmz" {
vpc_id = "${aws_vpc.vpc-poc.id}"
cidr_block = "${var.cidr_block_dmz}"
}
resource "aws_route_table" "dmz" {
vpc_id = "${aws_vpc.vpc-poc.id}"
route {
cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.gateway.id}"
}
}
resource "aws_route_table_association" "dmz" {
subnet_id = "${aws_subnet.dmz.id}"
route_table_id = "${aws_route_table.dmz.id}"
}
resource "aws_subnet" "web" {
vpc_id = "${aws_vpc.vpc-poc.id}"
cidr_block = "10.200.2.0/24"
}
resource "aws_route_table" "web" {
vpc_id = "${aws_vpc.vpc-poc.id}"
route {
cidr_block = "0.0.0.0/0"
instance_id = "${aws_instance.bastion.id}"
}
}
resource "aws_route_table_association" "web" {
subnet_id = "${aws_subnet.web.id}"
route_table_id = "${aws_route_table.web.id}"
}
resource "aws_subnet" "app" {
vpc_id = "${aws_vpc.vpc-poc.id}"
cidr_block = "10.200.3.0/24"
}
resource "aws_route_table" "app" {
vpc_id = "${aws_vpc.vpc-poc.id}"
route {
cidr_block = "0.0.0.0/0"
instance_id = "${aws_instance.bastion.id}"
}
}
resource "aws_route_table_association" "app" {
subnet_id = "${aws_subnet.app.id}"
route_table_id = "${aws_route_table.app.id}"
}