security - Digital Ocean VPC Droplets 无法相互连接
问题描述
我创建了一个包含 4 个 Droplet 的 VPC:一个仅允许来自单个 IP 的 ssh 的堡垒、一个公共 Web 服务器、一个为公共 Web 服务器提供数据的私有 CMS,以及一个静态加密的安全数据存储。我一直在研究防火墙规则,以允许 VPC 内的所有 Droplet 相互通信(ssh,443),但完全没有成功。
我有一个防火墙,允许从我们的 VPN IP SSH 进入堡垒 - 这非常有效。这个想法是先通过 ssh 进入堡垒,然后再进入其他液滴。
有一个 ssh 密钥,为每个 droplet 添加到 authorized_keys 中。
这是我的防火墙地形:
resource "digitalocean_firewall" "secure_network" {
name = "secure-network"
droplet_ids = [digitalocean_droplet.www-sds.id, digitalocean_droplet.www-fe.id, digitalocean_droplet.www-cms.id]
inbound_rule {
protocol = "tcp"
port_range = "22"
source_addresses = [digitalocean_droplet.bastion.ipv4_address_private]
}
outbound_rule {
protocol = "icmp"
destination_addresses = ["0.0.0.0/0", "::/0"]
}
outbound_rule {
protocol = "tcp"
port_range = "1-65535"
destination_addresses = ["0.0.0.0/0", "::/0"]
}
outbound_rule {
protocol = "udp"
port_range = "1-65535"
destination_addresses = ["0.0.0.0/0", "::/0"]
}
}
resource "digitalocean_firewall" "vpn-only-access" {
name = "vpn-only-access"
droplet_ids = [digitalocean_droplet.bastion.id]
inbound_rule {
protocol = "tcp"
port_range = "22"
source_addresses = ["159.89.140.157"]
}
}
resource "digitalocean_firewall" "public-access" {
name = "public-access"
droplet_ids = [digitalocean_droplet.www-fe.id]
inbound_rule {
protocol = "tcp"
port_range = "443"
source_addresses = [digitalocean_droplet.www-fe.ipv4_address]
}
inbound_rule {
protocol = "tcp"
port_range = "80"
source_addresses = [digitalocean_droplet.www-fe.ipv4_address]
}
}
解决方案
推荐阅读
- reactjs - 带去抖动输入的赛普拉斯测试
- google-kubernetes-engine - 实际数据加密密钥用于在 GKE 中加密 PV
- swiftui - SwiftUI:删除列表中的动画?
- mysql - LOAD XML 命令导致缺少字段/节点
- python - 附加两个带有多索引行的数据框?
- docker - Github WSL & VS Code - 从 VSCode 推送到 github 时权限被拒绝,但 Ubuntu 没有问题
- mongodb - mongo中的酸性交易
- security - 使用基于所有者的 LDAP 进行气流身份验证
- java - 多个 jar 的本地 Maven 存储库问题
- c# - WCF - HTTP 请求被中止