주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Cloud Infrastructure에서 BIND9 도메인 이름 시스템 구성
소개
OraStage 재생 에너지 솔루션과 혁신적인 전력 기술을 전문으로 하는 에너지 분야의 선도적인 기업인 이 회사는 성능, 확장성 및 보안을 강화하기 위해 워크로드를 Oracle Cloud Infrastructure(OCI)로 마이그레이션하는 전략적 결정을 발표했습니다.
OraStage에서 설명한 특정 요구 사항과 조건을 고려하면 클라우드에 하이브리드 DNS(Domain Name System) 솔루션이 필요하며, 하이브리드 방식에서는 자체 Berkeley Internet Name Domain 버전 9(BIND9) DNS 시스템을 OCI DNS 서비스와 함께 사용합니다. 여기서 빌드하려는 최종 아키텍처는 다음 이미지에 나와 있습니다.
OraStage DNS 요구 사항:
-
이 회사는 여러 내부 도메인과 하위 도메인을 보유하고 있으며, 이 모든 도메인은 OCI의 BIND9 DNS를 통해 해결되어야 하며, 여기서 OraStage는 모든 관련 영역과 레코드를 관리합니다. 이러한 도메인 중 하나는 이 자습서에서 사용할
orastage.com
입니다. 따라서orastage.com
에 대한 질의를 BIND9로 전달해야 합니다. -
경우에 따라 OCI 네이티브 도메인(
oraclevcn.com
,oraclecloud.com
등)을 계속 분석해야 하며, 이는 OCI 프라이빗 DNS 구성요소(프라이빗 뷰, 전달 끝점 및 규칙, 수신 끝점)를 사용하여 수행됩니다. -
모든 질의는 pfSense 방화벽 인스턴스에서 검사해야 합니다.
-
단일 장애 지점을 방지하기 위해 OraStage는 다른 DNS 서버를 사용하고 OCI 로드 밸런서를 활용하여 기본 DNS와 보조 DNS 간에 쿼리를 분산할 계획입니다.
이 자습서 시리즈는 위의 요약된 요구 사항을 충족하고 전체 솔루션을 처음부터 구축할 수 있도록 단계별로 안내합니다. 아래 목록에서 각 자습서로 쉽게 이동할 수 있습니다.
-
자습서 1: OCI에서 BIND9 DNS를 구성합니다. BIND9를 OCI의 두 테스트 환경용 로컬 DNS 서버로 만들어 컴퓨팅 인스턴스에 설치하고 구성하는 방법을 알아봅니다. 이러한 환경은 각각 별도의 스포크 네트워크에서 호스팅되는 "프론트엔드" 및 "백엔드" 서버로 구성됩니다. BIND9 서버는
orastage.com
로 지정된 모든 DNS 질의를 처리합니다. -
자습서 2: OCI의 BIND9 DNS 시나리오에서 고가용성 구현. 이 사용지침서에서는 보조 BIND9 서버를 추가하고 NLB(네트워크 로드 밸런서)를 구성하여 두 서버 간에 DNS 트래픽을 분산하는 방법을 중점적으로 설명합니다.
orastage.com
에 대한 DNS 질의는 기본 서버와 보조 BIND9 서버 간의 로드 균형을 조정하는 NLB IP로 지정됩니다. 한 서버를 사용할 수 없게 되면 서비스 중단 없이 DNS 확인이 계속됩니다. -
자습서 3: OCI DNS를 사용하여 네이티브 도메인 확인.
oraclevcn.com
및oraclecloud.com
와 같은 네이티브 도메인을 분석해야 하는 경우를 대비해 OCI에서 네이티브 DNS 구성요소를 활용하는 특정 사용 사례에만 집중할 수 있습니다. BIND9 DNS는 이 자습서에서 사용되지 않습니다. -
자습서 4: pfSense 방화벽을 사용하여 DNS 구조에 보안 추가. OCI의 허브 VCN에 pfSense 방화벽을 설치하는 데 중점을 두고, 검사할 방화벽을 통해 DNS 쿼리를 포함한 모든 동서 트래픽(이전 자습서에서 완료)을 라우팅하는 데 필요한 네트워크 구성을 수행합니다.
BIND9 개요
BIND9 (Berkeley Internet Name Domain version 9)는 세계에서 가장 널리 사용되고 성숙한 DNS (Domain Name System) 서버 소프트웨어 패키지 중 하나입니다. 그것은 인터넷 시스템 컨소시엄 (ISC)에 의해 개발 및 유지 관리됩니다. BIND9는 인터넷의 DNS 인프라 대부분을 위한 중추 역할을 하며, 소규모 및 대규모 배포 모두를 위한 강력하고 안정적인 DNS 서비스를 제공합니다.
BIND9 유연성, 견고성 및 광범위한 기능 세트를 통해 소규모 내부 네트워크에서 인터넷의 최대 공용 DNS 서비스에 이르기까지 광범위한 DNS 애플리케이션에 적합합니다.
BIND9의 주요 기능
-
DNS 프로토콜 지원: IPv4 및 IPv6, DNSSEC(DNS 보안 확장) 및 TSIG(트랜잭션 SIGnature)를 포함한 모든 주요 DNS 기능 및 프로토콜을 지원합니다.
-
DNSSEC(DNS Security Extensions): DNS 데이터 무결성 및 신뢰성을 보호하기 위한 고급 보안 기능을 제공하여 캐시 중독 및 스푸핑과 같은 공격을 방지합니다.
-
확장성 및 성능: 대규모 쿼리 로드 및 대규모 영역을 효율적으로 처리할 수 있는 기능과 함께 소규모에서 대규모에 이르는 DNS 배포에 적합합니다.
-
유연성 및 커스터마이징:
- DNS 동작, 영역 관리 및 쿼리 처리를 미세 조정하기 위한 광범위한 옵션을 사용하여 고도로 구성할 수 있습니다.
- 마스터(기본), 슬레이브(보조) 및 스텁 영역을 비롯한 다양한 유형의 영역을 지원합니다.
-
동적 DNS: DDNS(동적 DNS)를 지원하므로 서버를 다시 시작하지 않고도 DNS 레코드를 실시간으로 업데이트할 수 있습니다.
-
액세스 제어 및 보안:
- DNS 서비스에 대한 액세스를 제한하고 영역을 질의 또는 업데이트할 수 있는 사용자를 관리하기 위한 ACL(액세스 제어 목록)을 구현합니다.
- 질의 소스를 기반으로 DNS 질의에 대해 다양한 답변을 제공하는 뷰를 지원합니다.
-
로깅 및 모니터링:
- 쿼리, 업데이트 및 서버 성능을 추적하기 위한 광범위한 로깅 기능.
- 모니터링 도구와 통합되어 고가용성과 빠른 문제 해결을 보장합니다.
-
캐싱: 강력한 캐싱 메커니즘을 제공하여 DNS 응답을 캐싱하여 성능을 개선하고 신뢰할 수 있는 DNS 서버의 로드를 줄입니다.
-
영역 전송: AXFR(전체 영역 전송) 및 IXFR(증분 영역 전송)을 사용하여 DNS 서버 간의 보안 영역 전송을 지원합니다.
BIND9의 일반적인 사용 사례
-
권한 있는 DNS 서버: 도메인에 대한 DNS 레코드를 호스트하여 DNS 질의에 대한 신뢰할 수 있는 응답을 제공합니다.
-
Recursive DNS Server: 다른 DNS 서버를 반복적으로 쿼리하여 클라이언트에 대한 DNS 쿼리를 해결합니다.
-
DNS 서버 전달: 캐싱과 함께 사용되는 다른 DNS 서버로 DNS 질의를 전달합니다.
-
보조(슬레이브) DNS 서버: 기본 서버에서 영역 데이터의 복사본을 유지 관리하여 중복성 및 로드 균형 조정을 제공합니다.
BIND9 설치 및 구성
-
설치: BIND9는 Linux, UNIX 및 Windows를 비롯한 다양한 운영 체제에 설치할 수 있습니다. 대부분의 Linux 배포판에서 패키지 관리자를 통해 사용하거나 소스에서 컴파일할 수 있습니다.
-
구성: 기본 구성 파일은 관리자가 영역, 액세스 제어, 로깅 옵션 및 기타 설정을 정의하는
named.conf
입니다. 영역 파일에는 각 도메인에 대한 실제 DNS 레코드가 포함됩니다.
OCI에서 BIND9 사용
일부 고객이 OCI(Oracle Cloud Infrastructure) 관리형 DNS 서비스를 사용하는 대신 자체 DNS(예: BIND9)를 사용하고 관리하도록 선택하는 이유는 여러 가지가 있습니다.
-
사용자 정의 및 유연성:
-
고급 구성: BIND9와 같은 커스터마이징 DNS 솔루션은 광범위한 구성 가능성을 제공하므로 고객은 관리형 서비스에서 지원하지 않을 수 있는 특정 요구 사항을 충족하도록 DNS 설정을 조정할 수 있습니다.
-
전문화된 기술력과 솔루션을 갖춘 기능: 일부 조직에서는 특정 쿼리 로깅, 세부 액세스 제어 또는 관리형 서비스가 제공하지 않을 수 있는 커스터마이징 DNS 레코드와 같은 고급 기능이 필요합니다.
-
-
비용 고려 사항:
-
비용 관리: 자체 관리형 DNS는 특히 관리형 서비스와 관련된 변동 비용을 피할 수 있으므로 상당한 DNS 트래픽을 가진 조직의 경우 더욱 비용 효율적입니다.
-
예측 가능한 비용: 자체 DNS 서버를 운영하면 관리형 DNS 사용량에 대한 비용을 지불하는 대신 인프라 비용만 관리하면 되므로 보다 예측 가능한 비용이 발생할 수 있습니다.
-
-
제어 및 보안:
-
전체 제어: 조직은 커스터마이징 보안 정책, 세부 로깅 및 세분화된 액세스 제어를 구현하는 기능을 포함하여 DNS 인프라를 완벽하게 제어하는 것을 선호할 수 있습니다.
-
데이터 프라이버시: 매우 민감하거나 규제되는 환경의 경우 DNS 트래픽을 자체 네트워크 내부에 유지하는 것이 데이터 프라이버시 및 규정 준수를 보장하는 보안 요구사항이 될 수 있습니다.
-
-
성능 및 안정성:
-
성능 최적화: 자체 관리형 DNS를 통해 조직은 필요에 따라 캐싱, 로드 밸런싱 및 지리적 위치별 DNS 응답을 구성하여 성능을 최적화할 수 있습니다.
-
안정성: 조직은 자체 DNS 서버를 관리함으로써 특정 신뢰성 요구 사항에 맞는 고가용성 구성 및 중복성 조치를 구현할 수 있습니다.
-
-
기존 인프라와 통합:
-
레거시 시스템: 레거시 시스템을 사용하는 조직에는 다른 시스템 및 프로세스와 긴밀하게 통합된 기존 DNS 인프라가 있어 자체 DNS를 보다 쉽게 관리할 수 있습니다.
-
커스터마이징 통합: 자체 관리형 DNS를 사용하면 특정 DNS 구성 또는 상호 작용이 필요한 다른 커스터마이징 또는 타사 애플리케이션과 원활하게 통합할 수 있습니다.
-
-
규정 및 규정 준수 요구 사항:
- 규정 준수 요구 사항: 일부 산업은 법률 및 규정 준수 표준을 준수하기 위해 DNS를 포함한 IT 인프라의 모든 측면을 제어해야 하는 엄격한 규제 요구 사항을 가지고 있습니다.
-
학습 및 전문 지식:
- 기술 개발: 일부 조직은 DNS 관리에 대한 사내 전문 지식과 지식을 유지하는 것을 선호하며, 이는 전체 IT 인프라를 문제 해결 및 최적화하는 데 유용할 수 있습니다.
-
벤더 잠금 방지:
- 잠금 방지: 조직은 자체 DNS를 관리함으로써 특정 공급업체의 에코시스템에 종속되지 않도록 하여 상당한 재구성 없이 제공업체를 전환하거나 워크로드를 마이그레이션할 수 있는 유연성을 높일 수 있습니다.
OCI 관리형 DNS 서비스는 사용 편의성, 확장성 및 관리 오버헤드 감소를 제공하지만, 이러한 요인은 일부 조직이 자체 DNS 인프라를 관리하도록 선택할 수 있는 이유를 강조합니다.
OCI에서 BIND9 설정 목표
-
BIND9 및 OCI 소개
- BIND9가 무엇이고 DNS 관리에서 BIND9의 역할을 이해합니다.
- 이 설정과 관련된 Oracle Cloud Infrastructure(OCI) 및 주요 구성요소에 대한 개요를 확인할 수 있습니다.
-
선수 과정 및 초기 설정
- 설정에 필요한 선행 조건을 식별하고 수집합니다.
- BIND9 서버를 호스팅할 OCI 인스턴스(가상 머신)를 설정합니다.
-
OCI 환경 구성
- OCI에서 기본 네트워크 설정을 구성합니다. 즉, 경로 규칙 및 게이트웨이를 사용하여 모든 관련 서버와 클라이언트 간에 적절한 통신을 설정하고 DNS 트래픽을 허용하는 보안 목록을 설정합니다.
-
OCI 인스턴스에 BIND9 설치
- SSH를 통해 OCI 인스턴스에 액세스합니다.
- BIND9에 필요한 패키지 및 종속성을 설치합니다.
-
BIND9 구성
- 기본 BIND9 구성 파일(
named.conf
)을 구성합니다. - 전달 DNS 조회를 위한 영역 파일을 설정합니다.
- 기본 BIND9 구성 파일(
-
BIND9 서비스 시작 및 관리
- BIND9 서비스를 시작하고 부트 시 시작하도록 구성합니다.
- BIND9 서비스가 제대로 실행 중인지 확인합니다.
-
DNS 서버 테스트
- 명령줄 도구(예: dig, host)를 사용하여 DNS 확인을 테스트합니다.
- 정방향 조회가 올바르게 구성되고 작동하는지 확인하십시오.
-
BIND9 서버 보안
- 액세스 제어를 포함하여 BIND9 서버 보안을 위한 최적의 사용법을 구현합니다.
-
결론 및 추가 리소스
- 수행된 작업을 요약합니다.
- 추가 학습을 위한 추가 리소스 및 레퍼런스를 제공합니다.
목표
-
이 자습서가 끝나면 Oracle Cloud Infrastructure(OCI)에서 실행되는 기능적인 BIND9 DNS 서버가 제공됩니다. DNS의 기본 사항과 BIND9의 작동 방식을 이해하여 클라우드 환경에서 BIND9 서버를 구성, 관리 및 보호할 수 있습니다. 또한 OCI에서 BIND9 DNS 설정을 문제 해결하고 유지 관리하는 데 필요한 지식을 갖추고 있습니다. 이 사용지침서에서는 네트워킹 및 컴퓨트 서비스 내에서 다양한 OCI 구성요소 운영에 대한 기술을 향상하는 데도 도움이 됩니다.
-
이 자습서의 주요 목적은 FE-VM(
fe.orastage.com
)이 신뢰할 수 있는 DNS 서버로 작동하는 Primary-DNS(be.orastage.com
)를 사용하여 BE-VM(primary-dns.orastage.com
)을 질의하거나 그 반대로 질의할 수 있도록 하는 것입니다.
최종 아키텍처
필요 조건
-
OCI 테넌시 및 필요한 네트워크 및 컴퓨트 서비스를 관리할 수 있는 권한에 액세스합니다.
-
OCI 네트워크 라우팅 및 보안과 기능에 대한 기본 이해: VCN(가상 클라우드 네트워크), 라우트 테이블, DRG(동적 라우팅 게이트웨이), 보안 목록 및 배스천.
-
일반적으로 Ubuntu Linux 및 DNS에 대한 기본적인 이해
-
각각 하나의 전용 서브넷에 세 개의 VCN(가상 클라우드 네트워크)이 필요합니다.
- DNS-VCN: 기본 DNS 서버를 호스트합니다. 보조 DNS 및 네트워크 로드 밸런서 외에
- Frontend-VCN: 클라이언트 중 하나를 호스트합니다. OCI DNS 전달자 외에
- 백엔드-VCN: 다른 클라이언트를 호스트합니다. OCI DNS 전달자 외에
작업 1: 경로 지정 및 보안 네트워크 구성 요소 설정
작업 1.1: VCN 생성
-
다음 VCN이 이미 생성되었는지 확인하십시오.
- DNS-VCN(
10.0.0.0/16
): DNS-Private-Subnet(10.0.0.0/24
)을 포함합니다. - FE-Private-Subnet(
10.1.0.0/24
)이 포함된 Frontend-VCN(10.1.0.0/16
). - BE-Private-Subnet(
10.2.0.0/24
)이 포함된 Backend-VCN(10.2.0.0/16
).
- DNS-VCN(
-
왼쪽 상단 모서리에서 햄버거 메뉴 (≡)를 클릭합니다.
- 네트워킹을 누릅니다.
- 가상 클라우드 네트워크를 누릅니다.
-
VCN이 제자리에 표시되고, 각 VCN에는 전용 서브넷이 하나만 있으며, 기본 라우트 테이블과 보안 목록이 연결되어 있습니다.
작업 1.2: DRG(동적 라우팅 게이트웨이) 생성
DRG는 한 VCN에서 다른 VCN으로, 또는 VCN과 온프레미스 네트워크 간에 또는 다른 클라우드 환경 네트워크를 사용하는 VCN에 대한 전용(private) 트래픽 경로를 제공하는 가상 라우터입니다. 따라서 모든 OCI 네트워크 환경에 강력하고 중요한 구성 요소입니다. 이 자습서에서는 이 자습서를 사용하여 동일한 지역의 여러 VCN 간 연결을 설정합니다.
-
왼쪽 상단 모서리에서 햄버거 메뉴 (≡)를 클릭합니다.
- 네트워킹을 누릅니다.
- 동적 경로 지정 게이트웨이를 누릅니다.
-
동적 경로 지정 게이트웨이 생성을 누릅니다.
- DRG에 대한 이름을 입력합니다.
- 동적 경로 지정 게이트웨이 생성을 누릅니다.
-
DRG가 성공적으로 생성되었습니다.
작업 1.3: DRG에 VCN 연결
-
DRG 세부정보 페이지에서 가상 클라우드 네트워크 연결을 만듭니다. 생성하려면 가상 클라우드 네트워크 연결 생성을 누릅니다.
-
DNS-VCN 연결:
-
프론트엔드-VCN 연결:
-
백엔드-VCN 연결:
-
-
모든 VCN이 성공적으로 연결되었습니다. 기본적으로 이러한 연결에는 각 연결이 다른 VCN에 대한 경로를 동적으로 학습할 수 있도록 하는 자동 생성된 DRG 경로 테이블이 사용됩니다.
-
모든 VCN은 서로 연결할 수 있어야 합니다. 그래서 우리는 몇 가지 경로와 보안 규칙을 사용하여 그들 사이의 통신을 용이하게해야합니다. 작업 1.4, 작업 1.5 및 작업 1.6에서 다음 작업을 수행합니다.
- 인스턴스에 로그인할 수 있도록 SSH 액세스를 허용합니다.
- 필요한 경우 DNS 트래픽을 허용합니다.
- Ping 트래픽이 필요한 곳에 허용됩니다.
- 필요한 곳에 송신 인터넷 액세스를 제공합니다.
- 모든 컴퓨팅 인스턴스가 DRG를 통해 다른 컴퓨팅 인스턴스에 도달할 수 있어야 합니다.
작업 1.4: DNS-VCN에 대한 경로 지정 및 보안 구성
-
이 작업은 서브넷 레벨에서 수행해야 합니다. VCN 페이지로 이동하여 DNS-VCN을 누릅니다.
-
전용 서브넷을 누릅니다.
-
지정된 경로 테이블인 경로 테이블을 누릅니다.
-
다음 규칙을 추가해야 합니다.
0.0.0.0/0
- NAT 게이트웨이: 인터넷에 단방향으로 액세스하려면 필요한 경우 패키지/패치를 설치합니다. 이 사용지침서에서는 Primary-DNS 서버에 BIND9 패키지를 설치하려면 이 액세스 권한이 필요합니다.10.1.0.0/16
- DRG: Frontend-VCN으로 향하는 트래픽을 DRG로 라우팅합니다.10.2.0.0/16
- DRG: 백엔드-VCN으로 향하는 트래픽을 DRG로 라우팅합니다.
-
NAT 게이트웨이가 생성되지 않은 경우 위 단계에서 경로 규칙을 추가하기 전에 생성 단계를 따르십시오.
- DNS-VCN 세부정보 페이지로 이동하여 NAT 게이트웨이를 누릅니다.
- NAT 게이트웨이 생성을 누릅니다.
-
다음 정보를 입력하십시오.
- NAT 게이트웨이에 대한 이름을 입력합니다.
- Ephemeral Public IP Address를 선택합니다.
- NAT 게이트웨이 생성을 누릅니다.
NAT 게이트웨이가 성공적으로 생성되었습니다.
-
DNS-VCN 서브넷의 라우팅 부분을 완료했으므로 이제 보안을 수행하겠습니다. 서브넷 세부정보 페이지로 이동하여 지정된 보안 목록을 누릅니다.
-
수신 트래픽을 허용해야 합니다.
- SSH 트래픽(포트 22)
- Frontend-VCN 및 Backend-VCN의 DNS 트래픽(TCP/포트 53 및 UDP/포트 53).
-
송신 트래픽을 모두 허용해야 합니다.
작업 1.5: 프론트엔드-VCN에 대한 경로 지정 및 보안 구성
-
이 작업은 서브넷 레벨에서 수행해야 합니다. VCN 페이지로 이동하여 프론트엔드-VCN을 누릅니다.
-
전용 서브넷을 누릅니다.
-
지정된 경로 테이블인 경로 테이블을 누릅니다.
-
다음 규칙을 추가해야 합니다.
0.0.0.0/0
- NAT 게이트웨이: 인터넷에 단방향으로 액세스하려면 FE-VM**이 OCI 배스천 서비스를 사용할 수 있도록 이 서비스가 필요합니다. 대신 서비스 게이트웨이를 사용하면 이 작업도 수행할 수 있습니다.10.0.0.0/16
- DRG: DNS-VCN으로 향하는 트래픽을 DRG로 라우팅합니다.10.2.0.0/16
- DRG: 백엔드-VCN으로 향하는 트래픽을 DRG로 라우팅합니다.
-
NAT 게이트웨이가 생성되지 않은 경우 위 단계에서 경로 규칙을 추가하기 전에 작업 1.4의 단계에 따라 게이트웨이를 생성합니다.
-
Frontend-VCN에 대한 경로 지정 부분을 완료했으므로 이제 보안을 수행하겠습니다. 서브넷 세부정보 페이지로 이동하여 지정된 보안 목록을 누릅니다.
-
수신 트래픽을 허용해야 합니다.
- SSH 트래픽(포트 22)
- 백엔드-VCN(ICMP, 유형 8)의 트래픽을 핑하려면 테스트 단계에서 이 규칙이 필요합니다.
-
송신 트래픽을 모두 허용해야 합니다.
작업 1.6: 백엔드 VCN에 대한 경로 지정 및 보안 구성
-
이 작업은 서브넷 레벨에서 수행해야 합니다. VCN 페이지로 이동하여 백엔드-VCN을 누릅니다.
-
전용 서브넷을 누릅니다.
-
지정된 경로 테이블인 경로 테이블을 누릅니다.
-
다음 규칙을 추가해야 합니다.
0.0.0.0/0
- NAT 게이트웨이: 인터넷에 단방향으로 액세스하려면 BE-VM이 OCI 배스천 서비스를 사용할 수 있도록 여기에 필요합니다. 대신 서비스 게이트웨이를 사용하면 이 작업도 수행할 수 있습니다.10.0.0.0/16
- DRG: DNS-VCN으로 향하는 트래픽을 DRG로 라우팅합니다.10.1.0.0/16
- DRG: Frontend-VCN으로 향하는 트래픽을 DRG로 라우팅합니다.
-
NAT 게이트웨이가 생성되지 않은 경우 위 단계에서 경로 규칙을 추가하기 전에 작업 1.4의 단계에 따라 게이트웨이를 생성합니다.
-
백엔드-VCN에 대한 경로 지정 부분을 완료했으므로 이제 보안을 수행하겠습니다. 서브넷 세부정보 페이지로 이동하여 지정된 보안 목록을 누릅니다.
-
수신 트래픽을 허용해야 합니다.
- SSH 트래픽(포트 22)
- Frontend-VCN(ICMP, 유형 8)에서 트래픽을 핑하려면 테스트 단계에서 이 규칙이 필요합니다.
-
송신 트래픽을 모두 허용해야 합니다.
-
이제 기본 네트워크 구성요소(VCN, 서브넷, 라우트 테이블, DRG 및 보안 목록)가 준비되었습니다. 이제 아키텍처는 다음 이미지와 같이 표시되어야 합니다.
작업 2: OCI 컴퓨트 인스턴스 프로비전
BIND9가 구성될 컴퓨트 인스턴스를 프로비전합니다.
작업 2.1: SSH 키 쌍 생성
이 작업은 인스턴스를 생성하기 전에 수행해야 합니다. SSH 키는 Linux 컴퓨트 인스턴스에 인증하는 데 사용됩니다. Windows 시스템의 경우 PuTTYgen 도구를 사용하거나 모든 시스템의 경우 ssh-keygen 유틸리티를 사용하여 키를 생성할 수 있습니다. 이 사용지침서에서는 OCI Cloud Shell에서 ssh-keygen을 사용하려고 합니다.
-
Cloud Shell을 누릅니다.
-
ssh-keygen
명령을 실행하여 키 쌍을 생성합니다. -
cd .ssh
명령을 사용하여 기본.ssh
디렉토리로 이동하고 공개 키 파일id_rsa.pub
의 내용을 복사합니다. 그러면 작업 2.2에서 이 디렉토리가 사용됩니다.
작업 2.2: 기본 DNS 컴퓨트 인스턴스 프로비전
-
왼쪽 상단 모서리에서 햄버거 메뉴 (≡)를 클릭합니다.
- Compute(컴퓨트)를 누릅니다.
- 인스턴스를 누릅니다.
-
인스턴스 생성을 누릅니다.
-
인스턴스 이름을 입력합니다.
-
Instance의 Operating System으로 Ubuntu 20.04를 선택합니다.
-
기본 네트워크에 다음 정보를 입력합니다.
- DNS-VCN을 선택합니다.
- 프라이빗 서브넷 선택.
-
인스턴스에 전용 IP 주소
10.0.0.10
을 지정합니다. -
작업 2.1에서 생성된 공개 키를 붙여 넣습니다.
-
페이지 끝으로 이동하여 고급 옵션 표시를 누릅니다.
-
Oracle Cloud 에이전트를 누릅니다.
- 나중에 배스천을 사용하여 인스턴스에 액세스할 예정이므로 배스천 플러그인을 선택합니다.
- Create를 누릅니다.
-
기본 DNS 컴퓨트 인스턴스가 성공적으로 생성됩니다.
-
아키텍처는 다음 그림과 같이 표시되어야 합니다.
이후 작업에서는 Primary-DNS 인스턴스에 BIND9를 설치하고 구성합니다.
작업 3: BIND9 설치 및 구성
작업 3.1: 배스천을 사용하여 기본 DNS 컴퓨트 인스턴스에 액세스
-
우선 BIND9를 설치하고 구성하려면 SSH를 통해 컴퓨트 인스턴스에 대한 액세스를 설정해야 합니다. 그러나 프라이빗 서브넷에 인스턴스를 생성했으므로 퍼블릭 IP가 없으므로 어느 곳에서든 직접 액세스할 수 없으며, 따라서 다른 OCI 서비스를 사용합니다.
OCI Bastion은 개인 네트워크 내의 리소스에 대한 보안 액세스를 허용하는 중개자 역할을 하는 관리형 서비스입니다. 공용 인터넷에 노출되지 않은 리소스에 대한 액세스가 필요한 관리 용도로 특히 유용하며, 이를 Jump Server as a service라고 생각할 수 있습니다.
- ID 및 보안을 누릅니다.
- 배스천을 누릅니다.
-
배스천 생성을 누릅니다.
-
다음 정보를 입력하십시오.
- 배스천 이름을 입력합니다.
- VCN(DNS-VCN) 및 해당 서브넷을 선택합니다.
- CIDR 블록 허용 목록은 배스천에 접속해야 하는 허용된 IP 범위입니다. 여기서는 이 구현에
0.0.0.0/0
를 사용했습니다. 접속하려는 퍼블릭 IP 주소를 선택하여 원하는 경우 보다 구체적으로 지정할 수 있습니다. - 배스천 생성을 누릅니다.
-
배스천이 생성되었습니다. 특정 시간(기본값: 3시간) 동안 대상 리소스(Primary-DNS)에 연결할 수 있는 세션을 만들어야 합니다.
-
다음 정보를 입력하십시오.
- 세션 유형: Managed SSH session을 선택합니다.
- 세션 이름: 세션의 이름을 입력합니다.
- 사용자 이름: 사용자 이름을 입력하십시오. Ubuntu Linux 인스턴스의 경우 기본 사용자 이름은 ubuntu입니다.
- 컴퓨트 인스턴스: 작업 2.2에서 생성된 기본 DNS 인스턴스를 선택합니다.
- 작업 2.1에서 생성한 것과 동일한 공개 키를 붙여넣습니다.
- 세션 생성을 누릅니다.
-
세션이 생성된 후 세 개의 점과 Copy SSH command를 누릅니다.
명령은 다음과 같아야 합니다.
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aiaa6buxxxxxxxxxxxxxxxxxxrlnywmo3n2pty5wpf7fq@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 ubuntu@10.0.0.10
-
OCI Cloud Shell을 엽니다.
cd .ssh
명령을 사용하여.ssh
디렉토리로 이동합니다.- SSH 명령을 붙여넣습니다.
<privateKey>
를 개인 키 파일 이름id_rsa
로 바꿔야 합니다.
-
성공적으로 로그인되었습니다.
작업 3.2: BIND9 설치
인스턴스에 액세스한 후 BIND9를 설치하고 실행 중인지 확인합니다.
-
다음 명령을 실행합니다.
sudo apt update sudo apt install bind9 bind9utils bind9-doc bind9-host
-
sudo systemctl status named
명령을 실행하여 BIND9 서비스 상태를 확인합니다. 활성(실행 중)입니다. -
sudo systemctl enable named
명령을 실행하여 재부트 후 자동으로 시작되도록 서비스를 사용으로 설정합니다.
작업 3.3: 인스턴스의 FQDN(전체 도메인 이름) 변경
-
인스턴스의 FQDN을 변경하려면
sudo vi /etc/hosts
명령을 사용하여 hosts 파일에 액세스하여 다음 행을 추가합니다.10.0.0.10 primary-dns.orastage.com primary-dns
-
변경사항을 확인하려면
hostname -f
명령을 실행하여 새 FQDN을 확인합니다.
작업 3.4: named.conf.options
파일 구성
-
구성을 추가합니다.
-
/etc/bind/named.conf.options
파일 끝에 다음 행을 추가하고 파일을 저장합니다.recursion yes; notify yes; allow-query { any; }; allow-query-cache { any; }; allow-recursion { any; }; forwarders { 8.8.8.8; }; auth-nxdomain no; # conform to RFC1035 listen-on { localhost; any; }; allow-transfer { any; };
-
BIND9 서비스를 다시 시작합니다.
-
서비스 상태를 확인합니다.
-
작업 3. 5: netstat
를 사용하여 TCP/UDP 포트 상태 표시
net-tools는 Linux OS용 필수 네트워킹 도구 모음을 제공하는 명령줄 유틸리티 패키지입니다.
-
sudo apt install net-tools
명령을 실행하여 net-tools를 설치합니다.netstat
명령을 사용하려면 이 작업이 필요합니다. -
sudo netstat -antu
명령을 실행하여 인스턴스가 수신 중인 포트/프로토콜을 확인합니다. 다음 이미지에서 볼 수 있듯이 IP10.0.0.10
의 경우 TCP/port 53 및 UDP/port 53을 열어야 합니다.
작업 3.6: named.conf.local
파일 구성
-
/etc/bind/named.conf.local
파일 끝에 다음 라인을 추가합니다.zone "orastage.com" { type master; allow-transfer { any; }; file "/var/lib/bind/db.orastage.com"; };
작업 3.7: db.orastage.com
파일 구성
-
db.orastage.com
파일이 아직 존재하지 않습니다. 만들려면sudo vi /var/lib/bind/db.orastage.com
명령을 실행하고 다음 내용을 파일에 추가합니다.$TTL 1D @ IN SOA primary-dns.orastage.com. admin.orastage.com. ( 329 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) ) IN NS primary-dns.orastage.com. primary-dns IN A 10.0.0.10 fe IN A 10.1.0.5 be IN A 10.2.0.5
작업 3.8: 50-cloud-init.yaml
파일 구성
-
/etc/netplan/50-cloud-init.yaml
파일에 액세스하여 다음 행을 추가합니다.nameservers: addresses: [10.0.0.10] search: [orastage.com]
-
변경 사항을 적용할 수 있도록
sudo netplan apply
명령을 실행합니다.
작업 3.9: iptables 방화벽 사용 안함
-
이 자습서에 대해서만 iptables를 일시적으로 사용 안함으로 설정하여 테스트 단계 중 어떤 종류의 연결 문제도 방지할 것입니다.
-
sudo su
명령을 실행하여 root 사용자로 전환합니다. -
기존 방화벽 규칙의 백업을 저장하려면
iptables-save > /root/firewall_rules.backup
명령을 실행합니다. -
다음 명령을 실행하여 모든 규칙을 지우고 방화벽을 통과하는 모든 트래픽을 허용합니다.
iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
-
작업 6을 완료한 후
iptables-restore < /root/firewall_rules.backup
명령을 실행하여 방화벽 규칙을 복원합니다. -
규칙을 지운 후 재부트 후 이 변경사항이 지속되는지 확인해야 합니다. 따라서
apt install iptables-persistent
명령을 실행하여 패키지를 설치합니다. -
iptables-save > /etc/iptables/rules.v4
명령을 실행합니다. -
iptables 규칙을 보려면
iptables -L
명령을 실행합니다. 이 명령은 비어 있어야 합니다.
-
작업 3.10: BIND9 다시 시작
-
다음 명령을 실행하여 서비스를 다시 시작합니다.
sudo systemctl restart named
작업 3.11: 테스트
-
db.orastage.com
파일에 추가한 도메인 이름을 질의하는 여러 테스트를 수행하고 로컬에서 질의에 응답하는지 확인합니다.-
orastage.com
도메인:host -a orastage.com
. -
Primary-DNS
도메인:host -a primary-dns.orastage.com
. -
FE-VM
도메인:host -a fe.orastage.com
. -
BE-VM
도메인:host -a be.orastage.com
.
-
작업 4: OCI 전달 끝점 및 규칙 구성
각 OCI VCN에는 동일한 VCN의 호스트 이름, 서로 다른 VCN, 온-프레미스(On-Premise) 네트워크 또는 인터넷에서 공개적으로 게시된 호스트 이름을 확인하는 데 사용할 수 있는 기본 분석기가 있습니다. 이 작업에서는 다음 BIND9 인스턴스 Primary-DNS로 질의를 전달해야 하는 요구사항을 충족하기 위해 분석기의 두 구성요소를 사용합니다.
- 전달 끝점: DNS 분석기가 전달 규칙에 정의된 대로 원격 DNS를 질의할 수 있도록 허용합니다.
- 전달 규칙: 분석기의 프라이빗 뷰에서 질의에 응답하지 않을 때 DNS 질의가 처리되는 방법을 제어하는 데 사용됩니다.
orastage.com
에 대한 질의는 어떤 원격 DNS 서버에 전달되고 어떤 전달 끝점을 사용합니까?
작업 4.1: 프론트엔드-VCN에 대한 전달 끝점 및 규칙 구성
Frontend-VCN에서 FE-VM의 orastage.com
질의를 Primary-DNS 인스턴스로 가리키도록 전달 끝점 및 규칙을 만듭니다.
-
Frontend-VCN으로 이동하고 DNS 분석기를 누릅니다.
-
끝점 생성을 누릅니다.
-
다음 정보를 입력하십시오.
- 이름: 끝점의 이름을 입력합니다.
- 서브넷: VCN의 프라이빗 서브넷을 선택합니다.
- 끝점 유형: 전달을 선택합니다.
- 전달 IP 주소:
10.1.0.6
를 입력합니다. - 끝점 생성을 누릅니다.
-
전달 끝점(FWD)이 성공적으로 생성되었습니다.
-
규칙 및 규칙 관리를 누릅니다.
-
다음 정보를 입력하십시오.
- 규칙 조건: 도메인을 선택합니다.
- 도메인:
orastage.com
도메인을 입력합니다. - 소스 끝점: 전달 끝점을 선택합니다.
- 대상 IP 주소: BIND9 인스턴스
10.0.0.10
의 IP를 입력합니다.
-
전달 규칙이 성공적으로 생성되었습니다.
작업 4.2: 백엔드-VCN에 대한 전달 끝점 및 규칙 구성
백엔드-VCN에서 BE-VM의 orastage.com
질의를 기본-DNS 인스턴스로 가리키도록 전달 끝점 및 규칙을 생성합니다.
- 백엔드-VCN으로 이동하고 DNS 분석기를 누릅니다.
-
끝점 생성을 누릅니다.
-
다음 정보를 입력하십시오.
- 이름: 끝점의 이름을 입력합니다.
- 서브넷: VCN의 프라이빗 서브넷을 선택합니다.
- 끝점 유형: 전달을 선택합니다.
- 전달 IP 주소:
10.2.0.6
를 입력합니다. - 끝점 생성을 누릅니다.
-
전달 끝점(FWD)이 성공적으로 생성되었습니다.
-
규칙 및 규칙 관리를 누릅니다.
-
다음 정보를 입력하십시오.
- 규칙 조건: 도메인을 선택합니다.
- 도메인:
orastage.com
도메인을 입력합니다. - 소스 끝점: 전달 끝점을 선택합니다.
- 대상 IP 주소: BIND9 인스턴스
10.0.0.10
의 IP를 입력합니다.
-
전달 규칙이 성공적으로 생성되었습니다.
-
아키텍처는 다음 그림과 같이 표시되어야 합니다.
작업 5: DNS 질의를 수행하도록 클라이언트 인스턴스 프로비전
작업 5.1: FE-VM
컴퓨트 인스턴스 생성
-
왼쪽 상단 모서리에서 햄버거 메뉴 (≡)를 클릭합니다.
- Compute(컴퓨트)를 누릅니다.
- 인스턴스를 누릅니다.
-
인스턴스 생성을 누릅니다.
-
예를 들어 이름을 입력합니다.
-
인스턴스의 운영체제로 Oracle Linux 8을 선택합니다.
-
기본 네트워크에 다음 정보를 입력합니다.
- Frontend-VCN을 선택합니다.
- 프라이빗 서브넷을 선택합니다.
-
인스턴스에 전용 IP 주소
10.1.0.5
을 지정합니다. -
작업 2.1에서 생성된 공개 키를 붙여 넣습니다.
-
페이지 끝으로 이동하여 고급 옵션 표시를 누릅니다.
-
Oracle Cloud 에이전트를 누릅니다.
-
배스천을 사용하여 인스턴스에 액세스하고 생성을 누르면 배스천 플러그인을 선택합니다.
-
FE-VM 컴퓨트 인스턴스가 성공적으로 생성됩니다.
작업 5.2: BE-VM
컴퓨트 인스턴스 생성
-
인스턴스 및 인스턴스 생성을 누릅니다.
-
인스턴스 이름을 입력합니다.
-
인스턴스의 운영체제로 Oracle Linux 8을 선택합니다.
-
기본 네트워크에 다음 정보를 입력합니다.
- 백엔드-VCN을 선택합니다.
- 프라이빗 서브넷을 선택합니다.
-
인스턴스에 전용 IP 주소
10.2.0.5
을 지정합니다. -
작업 2.1에서 생성된 공개 키를 붙여 넣습니다.
-
페이지 끝으로 이동하여 고급 옵션 표시를 누릅니다.
-
Oracle Cloud 에이전트를 누릅니다.
-
배스천을 사용하여 인스턴스에 액세스하고 생성을 누르면 배스천 플러그인을 선택합니다.
-
BE-VM 컴퓨트 인스턴스가 성공적으로 생성됩니다.
-
아키텍처가 완료되었습니다.
주: 이후 작업에서는 여러 시나리오를 테스트하고 설정이 예상대로 작동하는지 검증합니다.
작업 6: 테스트 및 검증
작업 6.1: 배스천 및 테스트를 사용하여 FE-VM 컴퓨트 인스턴스에 액세스
-
FE-VM 클라이언트 시스템은
be.orastage.com
를 분석할 수 있어야 합니다.- ID 및 보안을 누릅니다.
- 배스천을 누릅니다.
-
배스천 생성을 누릅니다.
-
다음 정보를 입력하십시오.
- 배스천 이름: 배스천 이름을 입력합니다.
- 네트워킹 구성: VCN(Frontend-VCN) 및 해당 서브넷을 선택합니다.
- CIDR 블록 허용 목록은 배스천에 접속해야 하는 허용된 IP 범위입니다. 여기서는 이 구현에
0.0.0.0/0
를 사용했습니다. 접속하려는 퍼블릭 IP 주소를 선택하여 원하는 경우 보다 구체적으로 지정할 수 있습니다. - 배스천 생성을 누릅니다.
-
배스천이 생성되었습니다. 특정 시간 동안 대상 리소스(FE-VM)에 연결하려면 세션을 만들어야 합니다(기본값은 3시간).
-
다음 정보를 입력하십시오.
- 세션 유형: Managed SSH session을 선택합니다.
- 세션 이름: 이름을 입력합니다.
- 사용자 이름: 사용자 이름을 입력하십시오. Oracle Linux 인스턴스의 경우 기본 사용자는
opc
입니다. - 컴퓨트 인스턴스: 작업 5에서 생성된 FE-VM 인스턴스를 선택합니다.
- 태스크 2.1에서 생성된 동일한 공개 키를 붙여 넣습니다.
- 세션 생성을 누릅니다.
-
세션이 생성된 후 세 개의 점과 Copy SSH command를 누릅니다.
명령은 다음과 같아야 합니다.
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aiaskfyan4yj7yx3bmm57rckmvvawikppba5mxxzo2q7dka@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 opc@10.1.0.5
- 클라우드 셸을 열고
cd .ssh
명령을 사용하여.ssh
디렉토리로 이동합니다. - SSH 명령을 붙여넣고
<privateKey>
를 개인 키 파일 이름id_rsa
로 바꿔야 합니다. - yes를 입력하고 Enter를 누릅니다.
- 클라우드 셸을 열고
-
FE-VM에서
be.orastage.com
로orastage.com
질의를 테스트합니다. 다른 방법을 사용하여 설정을 검증할 수 있습니다.host
명령을 실행합니다.ping
명령을 실행합니다.dig
명령을 실행합니다.
위 테스트에 표시된 것처럼 BE-VM 도메인의 IP 주소를 검색할 수 있으며 호스트 이름을 사용하여 핑이 작동하고 있습니다. 즉, 테스트가 성공합니다.
작업 6.2: 배스천 및 테스트를 사용하여 BE-VM 컴퓨트 인스턴스에 액세스
-
BE-VM 클라이언트 시스템은
fe.orastage.com
를 분석할 수 있어야 합니다.- ID 및 보안을 누릅니다.
- 배스천을 누릅니다.
-
배스천 생성을 누릅니다.
-
다음 정보를 입력하십시오.
- 배스천 이름: 배스천 이름을 입력합니다.
- 네트워킹 구성: VCN(백엔드-VCN) 및 해당 서브넷을 선택합니다.
- CIDR 블록 허용 목록은 배스천에 접속해야 하는 허용된 IP 범위입니다. 여기서는 이 구현에
0.0.0.0/0
를 사용했습니다. 접속하려는 퍼블릭 IP 주소를 선택하여 원하는 경우 보다 구체적으로 지정할 수 있습니다. - 배스천 생성을 누릅니다.
-
배스천이 생성되었습니다. 특정 시간(기본값: 3시간) 동안 대상 리소스(BE-VM)에 연결하려면 세션을 만들어야 합니다.
-
다음 정보를 입력하십시오.
- 세션 유형: Managed SSH session을 선택합니다.
- 세션 이름: 이름을 입력합니다.
- 사용자 이름: 사용자 이름을 입력하십시오. Oracle Linux 인스턴스의 경우 기본 사용자는
opc
입니다. - 컴퓨트 인스턴스: STEP 06에서 생성된 BE-VM 인스턴스를 선택합니다.
- 태스크 2.1에서 생성된 동일한 공개 키를 붙여 넣습니다.
- 세션 생성을 누릅니다.
-
세션이 생성된 후 세 개의 점과 Copy SSH command를 누릅니다.
명령은 다음과 같아야 합니다.
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aia73xclnp6h6i2mjnpsuer2bnz4cblejfemnr6uk7pafla@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 opc@10.2.0.5
- 클라우드 셸을 열고
cd .ssh
명령을 사용하여.ssh
디렉토리로 이동합니다. - SSH 명령을 붙여넣고
<privateKey>
를 개인 키 파일 이름id_rsa
로 바꿔야 합니다. - yes를 입력하고 Enter를 누릅니다.
- 클라우드 셸을 열고
-
BE-VM에서
fe.orastage.com
까지orastage.com
질의를 테스트합니다. 다른 방법을 사용하여 설정을 검증할 수 있습니다.host
명령을 실행합니다.ping
명령을 실행합니다.dig
명령을 실행합니다.
위 테스트에 표시된 것처럼 FE-VM 도메인의 IP 주소를 검색할 수 있으며 호스트 이름을 사용하여 핑이 작동하고 있습니다. 즉, 테스트가 성공합니다.
다음 단계
이 사용지침서에서는 Oracle Cloud Infrastructure에서 기본 구성요소, 서버 및 클라이언트 설정을 포함하는 작은 BIND9 DNS 아키텍처를 구축했습니다. 이 세그먼트 전반에 걸쳐 라우트 테이블, DRG, 보안 목록, 배스천 등과 같은 다양한 구성요소를 처리하여 OCI 네트워크 라우팅 및 보안에 대한 통찰력을 얻었습니다. 또한 OCI 환경에서 기능적인 BIND9 DNS를 설치하고 구성하는 방법을 배웠습니다.
다음 사용지침서 자습서 2: Oracle Cloud Infrastructure의 BIND9 도메인 이름 시스템에서 고가용성 구현에서 고가용성 계층을 아키텍처에 통합하여 이 설정을 개선할 예정입니다. 이는 다운타임을 줄이고 사용자 경험을 개선하는 데 매우 중요합니다.
확인
- 작성자 - Anas abdallah(클라우드 네트워킹 전문가)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Configure BIND9 Domain Name System in Oracle Cloud Infrastructure
G13021-03
Copyright ©2025, Oracle and/or its affiliates.