총 4대의 서버가 서울과 대전에 각 2대씩 있는데 그 4대 모두 같은 주소를 share한다.
143.248.대역에서 접근하는 client에게는 대전 서버, 그 이외의 대역에서는 서울 서버의 ip를 알려준다.
같은 지역에 있는 서버 두 대는 서로 load-balancing이 되어야 한다.
www.networksolutions.com에서 “dprox.net”이라는 domain을 사고, 네임서버를
ns1.dprox.net: 203.255.250.254, ns2.dprox.net: 203.255.250.250으로 설정하였다.
사실 ns2는 필요없는데 최소 2대를 적으라 그래서 안 쓰는 ip 걍 줌.
bind9 설정
View는 client의 특성(ip)에 따라서 서로 다른 규칙을 적용시켜주는 것이다. client에 따라 완전히 다르게 작동하도록 설정 할 수 있다.
1. View 기능을 쓰려면 모든 zone들이 view안에 있어야 한다. 그래서 default-zones를 view안에 넣어야 함. name.conf에서는 default-zone을 빼자.
named.conf
1 2 3 4 5 6 7 8 9 10 11 |
// This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; //include "/etc/bind/named.conf.default-zones"; |
view 문법은 아래에 코드를 대충 보면 쉽게 이해할 수 있을 것이다. default-zones를 view안에 넣었다.
named.conf.local
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; acl kaist { 143.248.0.0/16; }; view "kaist-view" { match-clients { kaist; }; include "/etc/bind/named.conf.default-zones"; zone "dprox.net" { type master; file "/etc/bind/db.kaist.dprox.net"; }; }; view "external-view" { match-clients { any; }; include "/etc/bind/named.conf.default-zones"; zone "dprox.net" { type master; file "/etc/bind/db.dprox.net"; }; }; |
db.kaist.dprox.net과 db.dprox.net의 차이는 dprox의 주소 밖에 없다.
사실 $ORIGIN drpox.net. 과 ns1 IN A 203.255.250.254 ns2 IN A 203.255.250.254는 잘 이해가 되지 않지만 일단 작동하니 두기로 하자. (빼도 될 것 같기도 한데…)
두 파일이 거의 동일해서 redundant한 부분을 하나로 합칠 수 있는 방법이 있으면 좋겠지만 잘 모르겠다.
TTL을 0으로 준 것은 상위 네임서버에 caching되는 것을 막기 위해서이다.
db.kaist.dprox.net
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ORIGIN dprox.net. $TTL 0 ;604800 @ IN SOA ns1.drpox.net. root.dprox.net. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 0 ) ; Negative Cache TTL ; @ IN NS ns1.dprox.net. @ IN NS ns2.dprox.net. @ IN A 203.255.250.254 ns1 IN A 203.255.250.254 ns2 IN A 203.255.250.254 dprox IN A 203.255.250.251 IN A 203.255.250.252 mon IN A 203.255.250.253 dj1 IN A 203.255.250.251 dj2 IN A 203.255.250.252 so1 IN A 203.255.250.242 so2 IN A 203.255.250.245 |
db.dprox.net
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ORIGIN dprox.net. $TTL 0 ;604800 @ IN SOA ns1.drpox.net. root.dprox.net. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 0 ) ; Negative Cache TTL ; @ IN NS ns1.dprox.net. @ IN NS ns2.dprox.net. @ IN A 203.255.250.254 ns1 IN A 203.255.250.254 ns2 IN A 203.255.250.254 dprox IN A 203.255.250.242 IN A 203.255.250.245 mon IN A 203.255.250.253 dj1 IN A 203.255.250.251 dj2 IN A 203.255.250.252 so1 IN A 203.255.250.242 so2 IN A 203.255.250.245 |
nslookup을 해보면 dprox.net, ns1.dprox.net, ns2.dprox.net의 ip는 모두 203.255.250.254 즉 dns서버의 주소가 나온다.
dprox.drpox.net은 4대의 서버에 mapping된다.