반응형
BIND9에 뷰를 설정하는 방법
BIND9에서 뷰(View) 설정을 사용하면 클라이언트의 소스 IP 주소나 네트워크에 따라 서로 다른 DNS 응답을 제공할 수 있습니다. 이는 내부 네트워크와 외부 네트워크에 대해 다른 존 데이터를 제공하거나, 특정 클라이언트에 대해 제한된 액세스를 구현할 때 유용합니다.
ACL 및 VIEW 설정
named.conf.default-zones 설정
vim /etc/bind/named.conf.default-zones
더보기
---
acl "internal" {
192.168.1.0/24; // 내부 네트워크
localhost;
};
acl "external" {
any; // 그 외 모든 클라이언트
};
view "internal" {
match-clients { internal; };
allow-query { internal; };
allow-recursion { internal; };
recursion yes;
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
};
view "external" {
match-clients { external; };
allow-query { external; };
allow-recursion { none; };
recursion no;
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
};
---
acl(Access Control List)
- 클라이언트 IP 범위를 정의
- internal : 192.168.1.0/24 네트워크와 로컬 호스트를 포함.
- external : 나머지 모든 클라이언트를 포함.
acl "internal" {
192.168.1.0/24; // 내부 네트워크
localhost;
};
acl "external" {
any; // 그 외 모든 클라이언트
};
view 블록
- 각 뷰에 대해 존과 동작 정의
view "internal" {
match-clients { internal; };
allow-query { internal; };
allow-recursion { internal; };
recursion yes;
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
};
view "external" {
match-clients { external; };
allow-query { external; };
allow-recursion { none; };
recursion no;
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
};
728x90
뷰별 존 파일 생성
디렉토리 생성
sudo mkdir -p /etc/bind/internal
내부 정방향 존 파일
sudo vim /etc/bind/internal/db.example.com
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025050901 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
;
IN NS ns1.example.com.
IN A 192.168.1.100
ns1 IN A 192.168.1.100
www IN A 192.168.1.100
존 파일 복사
sudo cp /etc/bind/internal/db.example.com /etc/bind/db.example.com
외부 정방향 존 파일
sudo vim /etc/bind/db.example.com
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025050901 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
;
IN NS ns1.example.com.
IN A 192.168.200.100
ns1 IN A 192.168.200.100
www IN A 192.168.200.100
파일 권한 설정
sudo chown -R bind:bind /etc/bind/internal
sudo chmod -R 644 /etc/bind/internal/db.example.com
sudo chmod -R 644 /etc/bind/db.example.com
named.conf.default-zones 설정
sudo vim named.conf.default-zones
view "internal" {
match-clients { internal; };
allow-query { internal; };
allow-recursion { internal; };
recursion yes;
...
zone "example.com" {
type master;
file "/etc/bind/internal/db.example.com";
};
...
};
view "external" {
match-clients { external; };
allow-query { external; };
allow-recursion { none; };
recursion no;
...
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
...
};
구문 검사(named.conf)
sudo named-checkconf /etc/bind/named.conf
존 파일 검사
sudo named-checkzone example.com /etc/bind/internal/db.example.com
BIND9 서비스 재시작
sudo systemctl restart named
BIND9 서비스 상태 확인
sudo systemctl status named
뷰 테스트
내부 클라이언트 테스트
$ dig @127.0.0.1 example.com +short
192.168.1.100
외부 클라이언트 테스트
$ dig @172.16.100.200 example.com +short
192.168.200.100
BIND9에 내부 및 외부 뷰를 설정하고 클라이언트별로 다른 DNS 응답을 제공할 수 있습니다.
"내부"보기 { 성냥개비 {내부; }; 허용 쿼리 {내부; }; 허용 재고 {내부; }; 재귀 예; ... Zone "example.com"{ 유형 마스터; "/etc/bind/internal/db.example.com"파일; }; ... }; "외부"보기 { 성냥개비 {외부; }; 허용 쿼리 {외부; }; 허용 재고 {없음; }; 재귀 번호; ... Zone "example.com"{ 유형 마스터; "/etc/bind/db.example.com"파일; }; ... };
반응형
'네임서버' 카테고리의 다른 글
우분투 22.04에서 BIND9를 설치하고 설정하는 방법 (0) | 2025.05.09 |
---|---|
CentOS 7에서 Unbound를 설치하고 DNSSEC을 활성화하여 사용하는 방법 (2) | 2024.10.05 |
BIND에서 nsupdate 명령을 사용하여 동적으로 존을 변경하는 방법 (0) | 2024.05.29 |
우분투에 BIND를 컴파일하고 설치하는 방법 (0) | 2024.05.13 |
Caching DNS와 Cache-Only DNS의 차이점 및 Bind를 사용하여 구현하는 방법 (0) | 2023.10.27 |