728x90
CentOS 7에서 BIND(named)에 GeoIP 기능을 설정하여 사용하는 방법
1. BIND 설치 확인 및 GeoIP 패키지 설치
sudo yum install -y epel-release
sudo yum install -y zlib-devel openssl-devel
BIND 설치
- BIND와 관련된 패키지를 설치해야 합니다.
sudo yum install -y install bind bind-utils
GeoIP 라이브러리 설치
- GeoIP 데이터베이스를 사용하려면 MaxMind의 GeoIP 라이브러리를 설치해야 합니다.
sudo yum install -y GeoIP GeoIP-devel
2. 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-devel
bind 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.gz
cd bind-9.10.4-P6
Configure
./configure --prefix=/usr/local/bind-9.10.4-P6 --sysconfdir=/etc --localstatedir=/var --enable-threads --without-openssl --with-geoip=/usr/share/GeoIP
컴파일 및 설치
make && make install
cd /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/named
cp /usr/local/bind-9.10.4-P6/sbin/named-checkconf /usr/sbin/named-checkconf
cp /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.conf
acl "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";
728x90
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.101
example.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.101
BIND(named) 서비스 재시작
BIND(named)를 재시작하여 변경사항을 적용합니다.
sudo systemctl restart named
GeoIP 기능 테스트
GeoIP 기능이 올바르게 작동하는지 확인하기 위해 다양한 국가에서 DNS 질의를 테스트합니다.
한국에서 example.com 요청
dig @<BIND 서버 IP> example.com
기타 지역에서 example.com 요청
dig @<BIND 서버 IP> example.com
CentOS 7에서 BIND(named)로 GeoIP 기능을 사용하여 각기 다른 지역의 사용자에게 맞춤형 DNS 응답을 제공할 수 있습니다.
728x90
'리눅스' 카테고리의 다른 글
[리눅스] php 임의(랜덤)의 패스워드 생성 (0) | 2022.11.24 |
---|---|
[리눅스] named(bind) zone file ip change scripte (0) | 2022.11.24 |
DNS 서버 설정 파일과 실행 파일을 백업하는 스크립트 (0) | 2022.11.24 |
How to Install python 3.7 on CentOS 7 (0) | 2022.11.24 |
[리눅스] bind rndc(rndc.conf) 설정 및 rndc 명령 (0) | 2022.11.23 |