작업자 컨테이너(Fargate Worker:https://docs.gitlab.com/runner/configuration/runner_autoscale_aws_fargate/).
내 질문문제는 컨테이너(Gitlab-runner)가 Fargate("awsvpc" 네트워크 모드)에서 실행되고 있지만 "nslookup"이 VPN 사이트 간 사이트의 다른 부분에서 프라이빗 DNS 서버를 찾을 수 없다는 것입니다.
EC2에서도 같은 작업을 수행했습니다. EC2에서 Resolve.conf를 다음과 같이 업데이트하면:
sudo sed -i 's/#DNS=/DNS=192.168.x.x/g' /etc/systemd/resolved.conf
sudo sed -i 's/#Domains=/Domains=privateurl.net/g' /etc/systemd/resolved.conf
sudo systemctl restart systemd-resolved
EC2에서 'nslookup 하위 도메인.privateurl.net' 긍정적인 반환으로 이름, 주소 및 IP를 찾았습니다.
하지만 Fargate에서 실행되는 컨테이너로 동일한 작업을 수행하면 'nslookup 하위 도메인.privateurl.net' 이름, 주소, IP를 찾을 수 없습니다.
컨테이너에서 "ping"이 완료됩니다. 이는 Fargate의 컨테이너와 VPN 반대편의 서버(subdomain.privateurl.net) 사이에 연결이 있음을 보여줍니다. 하지만'핑 <subdomain.privateurl.net>' 그리고'nslookup <하위 도메인.privateurl.net>'정상적으로 작동할 수 없습니다. 그런데, DNS 요청(nslookup)을 위해 컨테이너 포트 53을 호스트 53으로 포트 매핑했습니다.
Fargate("awsvpc" 네트워크 모드)의 컨테이너가 EC2와 다르게 동작하는 것 같습니다.
클라우드 관찰 로그:
nslookup subdomain.privateurl.net # on ECS container
** server can't find subdomain.privateurl.net: NXDOMAIN
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=63 time=15.8 ms
답변1
Route 53 해석기를 사용하여 솔루션을 찾았습니다.
resource "aws_route53_resolver_endpoint" "dns" {
name = "resolver"
direction = "OUTBOUND"
security_group_ids = [data.aws_security_group.selected_sg.id]
ip_address {
subnet_id = data.aws_subnet.selected_subnet.id
ip = "172.x.x.x" # ip from vpc subnet
}
ip_address {
subnet_id = data.aws_subnet.selected_subnet.id
ip = "172.x.x.x" # ip from vpc subnet
}
}
resource "aws_route53_resolver_rule" "local" {
domain_name = "privateurl.net"
name = "local"
rule_type = "FORWARD"
resolver_endpoint_id = aws_route53_resolver_endpoint.dns.id
target_ip {
ip = "PrivateDNSIP"
port = 53
}
}
resource "aws_route53_resolver_rule_association" "local" {
resolver_rule_id = aws_route53_resolver_rule.local.id
vpc_id = data.aws_vpc.selected.id
}