main.tf 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. resource "aws_route53_resolver_endpoint" "private_resolver" {
  2. name = "xdr_forward_to_dns"
  3. direction = "OUTBOUND"
  4. security_group_ids = [ aws_security_group.resolver_security_group.id ]
  5. dynamic "ip_address" {
  6. for_each = var.subnets
  7. content {
  8. subnet_id = ip_address.value
  9. }
  10. }
  11. tags = merge(var.standard_tags, var.tags)
  12. }
  13. resource "aws_security_group" "resolver_security_group" {
  14. name = "route53_resolver_outbound"
  15. description = "Allow DNS inbound traffic"
  16. vpc_id = var.primary_vpc
  17. ingress {
  18. description = "DNS_UDP"
  19. from_port = 53
  20. to_port = 53
  21. protocol = "udp"
  22. cidr_blocks = [ "10.0.0.0/8" ]
  23. }
  24. ingress {
  25. description = "DNS_TCP"
  26. from_port = 53
  27. to_port = 53
  28. protocol = "tcp"
  29. cidr_blocks = [ "10.0.0.0/8" ]
  30. }
  31. egress {
  32. description = "DNS_UDP"
  33. from_port = 53
  34. to_port = 53
  35. protocol = "udp"
  36. cidr_blocks = [ "10.0.0.0/8" ]
  37. }
  38. egress {
  39. description = "DNS_TCP"
  40. from_port = 53
  41. to_port = 53
  42. protocol = "tcp"
  43. cidr_blocks = [ "10.0.0.0/8" ]
  44. }
  45. tags = merge(var.standard_tags, var.tags)
  46. }
  47. resource "aws_route53_resolver_rule" "private" {
  48. domain_name = var.dns_info["private"]["zone"]
  49. name = replace(var.dns_info["private"]["zone"], ".", "-")
  50. rule_type = "FORWARD"
  51. resolver_endpoint_id = aws_route53_resolver_endpoint.private_resolver.id
  52. dynamic "target_ip" {
  53. for_each = var.inbound_resolver_endpoints
  54. content {
  55. ip = target_ip.value
  56. }
  57. }
  58. tags = merge(var.standard_tags, var.tags)
  59. }
  60. resource "aws_route53_resolver_rule" "reverse" {
  61. domain_name = var.dns_info["reverse"]["zone"]
  62. name = replace(var.dns_info["reverse"]["zone"], ".", "-")
  63. rule_type = "FORWARD"
  64. resolver_endpoint_id = aws_route53_resolver_endpoint.private_resolver.id
  65. dynamic "target_ip" {
  66. for_each = var.inbound_resolver_endpoints
  67. content {
  68. ip = target_ip.value
  69. }
  70. }
  71. tags = merge(var.standard_tags, var.tags)
  72. }
  73. resource "aws_route53_resolver_rule_association" "private_association" {
  74. for_each = toset(var.additional_vpcs)
  75. resolver_rule_id = aws_route53_resolver_rule.private.id
  76. vpc_id = each.value
  77. }
  78. resource "aws_route53_resolver_rule_association" "reverse_association" {
  79. for_each = toset(var.additional_vpcs)
  80. resolver_rule_id = aws_route53_resolver_rule.reverse.id
  81. vpc_id = each.value
  82. }