반응형
    
    
    
  CentOS 7에서 BIND(named)에 GeoIP 기능을 설정하여 사용하는 방법
1. BIND 설치 확인 및 GeoIP 패키지 설치
sudo yum install -y epel-releasesudo yum install -y zlib-devel openssl-develBIND 설치
- BIND와 관련된 패키지를 설치해야 합니다.
sudo yum install -y install bind bind-utilsGeoIP 라이브러리 설치
- GeoIP 데이터베이스를 사용하려면 MaxMind의 GeoIP 라이브러리를 설치해야 합니다.
sudo yum install -y GeoIP GeoIP-devel2. MaxMind GeoIP 데이터베이스 다운로드
MaxMind에서 제공하는 GeoIP Legacy 데이터베이스를 사용하여 지역별로 DNS 요청을 처리할 수 있습니다.
sudo yum install -y geoipupdate소스 파일을 사용하여 컴파일하고 설치하기
더보기
---
필요한 패키지 설치
sudo yum groupinstall "Development Tools"sudo yum install -y openssl-devel libcap-devel libxml2-devel json-c-devel libuv-develbind download site : http://ftp.isc.org/isc/bind9/9.10.4-P6/
cd /usr/local/src/BIND 소스 코드 다운로드
wget http://ftp.isc.org/isc/bind9/9.10.4-P6/bind-9.10.4-P6.tar.gz소스 파일 압축 해제
tar xfz bind-9.10.4-P6.tar.gzcd bind-9.10.4-P6Configure
./configure --prefix=/usr/local/bind-9.10.4-P6 --sysconfdir=/etc --localstatedir=/var --enable-threads --without-openssl --with-geoip=/usr/share/GeoIP컴파일 및 설치
make && make installcd /usr/local/bind-9.10.4-P6/sbin
./named -V | sed -r 's/ +/\n/g' | grep geoip$ ./named -V | sed -r 's/ +/\n/g'|grep geoip
'--with-geoip=/usr/share/GeoIP'환경 변수 설정
ldd ./named | grep libGeoIP$ ldd ./named | grep libGeoIP
        libGeoIP.so.1 => /usr/lib64/libGeoIP.so.1 (0x00007f3284d00000)파일 복사
cp /usr/local/bind-9.10.4-P6/sbin/named /usr/sbin/namedcp /usr/local/bind-9.10.4-P6/sbin/named-checkconf /usr/sbin/named-checkconfcp /usr/local/bind-9.10.4-P6/sbin/named-checkzone /usr/sbin/named-checkzone---
3. BIND 설정 파일 수정
BIND(named)에서 GeoIP 기능을 활성화하려면 named.conf 파일을 수정하여 GeoIP 데이터베이스가 저장된 디렉터리와 지역별 설정을 추가해야 합니다.
GeoIP 데이터베이스 디렉터리 설정
vim /etc/named.confacl "country_KR" {
        geoip country KR;
        #geoip region CA;
        #geoip city "Redwood City"; 
        /* names, etc., must be quoted if they contain spaces */
};
options {
#       listen-on port 53 { 127.0.0.1; };
#       listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion yes;
	# GeoIP 데이터베이스가 있는 디렉터리 설정
        geoip-directory "/usr/share/GeoIP";
        dnssec-enable yes;
        dnssec-validation yes;
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};
include "/etc/named.logging.conf";
#include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";GeoIP에 따른 view 설정
- 이제 국가별로 다른 DNS 응답을 설정할 수 있는 view를 정의합니다. view는 특정 지역에 따라 서로 다른 존 파일을 사용할 수 있게 해 줍니다.
view "ACL_KR" {
      match-clients { country_KR; }; # 한국 IP 대역에만 해당
      recursion yes;
             zone "." IN {
                                        type hint;
                                        file "named.ca";
                                        };
             zone "localhost" IN {
                                        type master;
                                        file "named.localhost";
                                        allow-update { none; };
                                        };
 
             zone "1.0.0.127.in-addr.arpa" IN {
                                        type master;
                                        file "named.loopback";
                                        allow-update { none; };
                                        };
             zone "example.com" IN {
                                        type master;
                                        file "example.com-KR.zone";
                                        allow-update { none; };
                                        };
};
view "OTHER" {
      match-clients { any; }; # 기타 모든 지역
      recursion yes;
             zone "." IN {
                                        type hint;
                                        file "named.ca";
                                        };
             zone "localhost" IN {
                                        type master;
                                        file "named.localhost";
                                        allow-update { none; };
                                        };
             zone "1.0.0.127.in-addr.arpa" IN {
                                        type master;
                                        file "named.loopback";
                                        allow-update { none; };
                                        };
             zone "example.com" IN {
                                        type master;
                                        file "example.com-ETC.zone";
                                        allow-update { none; };
                                        };
};4. GeoIP 관련 존 파일 설정
각 국가별로 zone 파일을 생성합니다.
example.com-KR.zone (한국 사용자용)
vim /var/named/example.com-KR.zone$TTL 60
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                        IN      NS      ns1.example.com.
                        IN      A       1.1.1.1
www                     IN      A       1.1.1.1
ns1                     IN      A       192.168.56.101example.com-ETC.zone (기타 사용자용)
vim /var/named/example.com-ETC.zone$TTL 60
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                        IN      NS      ns1.example.com.
                        IN      A       2.2.2.2
www                     IN      A       2.2.2.2
ns1                     IN      A       192.168.56.101BIND(named) 서비스 재시작
BIND(named)를 재시작하여 변경사항을 적용합니다.
sudo systemctl restart namedGeoIP 기능 테스트
GeoIP 기능이 올바르게 작동하는지 확인하기 위해 다양한 국가에서 DNS 질의를 테스트합니다.
한국에서 example.com 요청
dig @<BIND 서버 IP> example.com기타 지역에서 example.com 요청
dig @<BIND 서버 IP> example.com
CentOS 7에서 BIND(named)로 GeoIP 기능을 사용하여 각기 다른 지역의 사용자에게 맞춤형 DNS 응답을 제공할 수 있습니다.
728x90
    
    
  반응형
    
    
    
  '네임서버' 카테고리의 다른 글
| bind rndc 명령어 (0) | 2017.04.21 | 
|---|---|
| BIND 관리를 위한 RNDC 설정 (0) | 2017.04.21 | 
| DNS 서버 설정 파일과 실행 파일을 백업하는 스크립트 (0) | 2015.02.07 | 
| 도메인 위임 설정 (0) | 2015.01.07 | 
| [dns] windows DNS nams 올라기 (1) | 2014.03.11 | 
 
                  
                 
                  
                 
                  
                