BLOG main image
전체 글 (101)
나의일상 (12)
내가즐기는것들 (15)
컴퓨터관련 (10)
AP뉴스받아쓰기 (4)
여러가지정보모음 (7)
요즘세상이야기 (33)
퍼온이야기들 (19)
블로그코리아에 블UP하기 믹시
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2008. 7. 12. 12:49
동아리의 고장난 서버를 고치면서 서버를 만들 때 중요한 것 하나를 또 알게 되었습니다!!
고장난 서버를 놔두고 새로운 서버를 구성하면서 ubuntu를 다시 설치하고...
myphpadmin설치, 제로보드 설치, php5 설치 등등등 여러가지로 고생을 많이 했는데요
DNS 설정이라는거... 요놈이 정말 뒤통수를 때리는 놈이었습니다......
네트워크 설정하면서 DNS 주소만 써주면 되는줄 알았더니 그게 아니었더군요..
다음은 ubuntu 공식 홈페이지에 나온 DNS 설명입니다.
↓more을 클릭!


위의 내용에서 잠깐  언급이 되었는데....
도메인을 구입해서 자신의 서버의 ip로 포워딩을 했다고 해서 끝난게 아닙니다...
뭐, 다른 업체에서 계정을 받으신다거나 하는 경우에는 그 업체에서 어떻게 어떻게 하라고 다 알려줄거에요.
그런데 지금 제가 설명하는 것은 완전히 모든것을 스스로 하는 경우... 그러니까...
컴퓨터에 ubuntu를 깔아서 아예 그냥 서버로 자기가 처음부터 끝까지 구성을 하는 경우죠.
이런 경우는 특별한 경우고요, 대부분은 지금 제가 설명하려는 것에는 해당이 되지 않으실 겁니다^^;

아무튼... 저는 서버에다가 네트워크 설정을 하면서 DNS주소만 적어주면 되는건줄 알았었는데요..
그게 아니라 따로 bind9라는것을 설치해서 도메인 주소들을 설정을 해줘야 하는 것이었습니다!!

제가 설명을 하고 싶지만... 저도 그냥 보고 그대로 옮겨적은거 밖에는 없어서..ㅋㅋ
영어로 된 홈페이지여서 중간중간에 설명을 덧붙일게요ㅠ

INSTALLING BIND 9

Before we start, keep in mind that you'll need root privileges to install and configure bind. I prefer switching user to root and execute the commands, rather than using sudo so this guide will assume you do the same. Otherwise, add 'sudo' before every command.

>>>일단 앞으로 예시로 나온 코드들은 모두 'sudo'를 생략할 것이라고 합니다. 그래서 아래 나온 코드대로 하려면 root로 접속을 한 상태로 하는게 편하다고 하네요

Moreover, for this guide, I'll use as an example the domain "linux.lan" and IP addresses "10.10.0.77 and 10.10.0.78". You'll have to replace them with your own.

>>> 그리고 아래의 예시들에서 도메인은 알아서 바꿔서 써주셔야 합니다.
"linux.lan"으로 된 부분에 자신의 도메인 주소를.. "10.10.0.77" 또는 "10.10.0.78"에는 자신 서버의 ip주소로...

. Switching to user root in a terminal and check for updates:
CODE

$ sudo passwd root
Password: (Enter the password for current user)
Enter new UNIX password: (Enter the password you want to set for root)
Retype new UNIX password: (Retype root password)
passwd: password updated successfully

$ su -
Password: (Enter root password here)

# apt-get update; apt-get upgrade
>>> 친절하게 root의 비밀번호를 설정하는 방법도 설명되어있네요 ㅋ
아무 아이디로나 로그인을 한 다음에 sudo passwd root를 입력하면...
Password : 라고 나오는데 여기에다가는 현재 로그인한 아이디의 비밀번호를 입력하시고..
Enter new UNIX password에는 root의 비밀번호로 지정할 것을 쓰시고... 다음칸에 한번 더 쓰시고..

방금 이 과정은 ubuntu를 처음 설치하고 나서 root의 계정을 사용하지 않은 상태일 때 하는 과정입니다.
이미 root의 비밀번호를 정해놓은 경우라면 건너뛰셔도 됩니다.

. Install BIND9:
CODE

# apt-get install bind9
>>> apt-get install ->이 부분이 무슨 프로그램같은걸 설치할 때 쓰는 문장이죠.
bind9를 설치할거니까 apt-get install bind9 라고 입력을 하시면 되구요..
제 기억이 맞다면 이걸 설치할 때 ubuntu CD도 넣어줘야 합니다.
인터넷으로 다운받아서 알아서 설치하긴 하는데 중간에 CD를 넣으라는 말이 나오더라구요.

CONFIGURING BIND

. Ubuntu provides you with a pre-configured version of Bind so you will only have to open the file /etc/bind/named.conf.local in your favorite editor and insert your zones. A zone is a domain name that is referenced in the DNS server.
CODE

zone "linux.lan" {
type master;
file "/etc/bind/zones/linux.lan.db";
};

zone "0.10.10.in-addr.arpa" {
type master;
file "/etc/bind/zones/rev.0.10.10.in-addr.arpa";
};
>>> 자, 이제부터 코드입력 들어갑니다. 각자 자신이 많이 사용하던 에디터로 들어가셔서 /etc/bind/named.conf.local 파일을 수정해주시면 됩니다.. 아 아니다... 새로 파일을 만드는거였나? -_-
아무튼... 저는 vi편집기를 이용해서 했기 때문에...
vi /etc/bind/named.conf.local 이라고 입력을 했습니다..ㅋㅋ
이렇게 입력하면 만약에 파일이 없는 경우였다면 새로 만들거구요, 원래 있었다고 해도 창이 뜰거구요...ㅋㅋㅋㅋㅋㅋㅋㅋ

. Next, edit the bind options file, /etc/bind/named.conf.options and modify the forwarders directive. This is the DNS server to witch your Bind installation will forward the requests it can't process. Replace the IP given as an example in that file with the DNS IP address provided by your ISP. Also, make sure the forwarders directive ISN'T commented out (has two slashes in front of it). If it does, remove them.
>>> 이제 bind의 옵션파일을 수정해주는건데요, 이 부분은 예시로 나오질 않았네요ㅠㅠ
아무튼 이건 원래 있었던 파일이라고 기억이 납니다!!
원래 적혀있는 IP가 아마도 제 기억으로는 0.0.0.0이라고 적혀있었던 것 같은데요... 이 부분을 본인 서버의 IP로 바꿔서 적어주시구요, DNS IP를 적는 부분이 또 있는데 이 부분도 아마 0.0.0.0이라고 입력이 되있었던 걸로 기억이 납니다... (아니라면 죄송...;) 이 부분은 자기가 서버를 직접 운영하는 상황이라면 DNS주소에 적어준 IP를 적어주면 됩니다. 만약 업체같은데서 호스팅을 받는 경우라면 업체에서 주어진 DNS(네임서버) IP가 있을텐데 그걸 적어주시면 됩니다.
그리고 또 한가지 해주셔야 하는게.... 아마 원본파일에는 앞부분에 "/" 이 기호로 맨 앞칸에 적혀있을거에요. 이 기호를 모두 지워주셔야 '주석'으로 인식하지 않고 제대로 읽어들입니다.

. It's time to add the zone definition files. Create the zones directory:
CODE

# mkdir /etc/bind/zones
>>> 저 위쪽에 configuring bind 부분에서 경로를 미리 적어뒀었는데 원래 그 경로는 없는 폴더입니다~
그래서 이제 그 폴더를 mkdir로 만들어주는 부분이네요


. Add the zone definitions to file /etc/bind/zones/linux.lan.db (file does not exist, create it):
CODE

linux.lan. IN SOA ns1.linux.lan. admin.linux.lan. (

2006081401
28800
3600
604800
38400 )

linux.lan. IN NS ns1.linux.lan.
IN A 10.10.0.77
mail.linux.lan. IN MX 10 mail.linux.lan.
linux.lan. IN MX 10 mail.linux.lan.

www IN A 10.10.0.77
mail IN A 10.10.0.77
ns1 IN A 10.10.0.77
>>> 이제 만든 폴더 안에 파일을 만들어줘야겠죠??
vi편집기든 뭐든 이용해서 위와 같이 파일을 작성합니다. vi편집기라면 vi /etc/bind/zones/[도메인주소].db
저기에 영어설명에 linux.lan이라고 되어있는데 이 부분은 자신의 도메인으로 바꾸라고 앞에서 설명했었죠? ㅋ
코드 안에도 자신의 도메인으로 바꿔야할 부분이 있구요. 저같은 경우에 도메인을 정할 때 네임서버의 주소를 ns.~~~.com 이런 식으로 정했었구요, 파일 안에서는 ns1.~~~.lan 이런 형식이네요. 그러니까 저 부분은 네임서버의 IP를 적는게 아니라... 도메인을 받을 때 자신의 서버에 네임서버를 지정한다?? 뭐 이런 뜻이구요 -_-;; 저도 자세히는 잘 모르겠습니다... 아무튼 저긴 자기 도메인주소 앞에 ns를 붙여서 해주시면 될거에요;;
그리고 밑에 보시면 www IN A ~.~.~.~ 이런 부분이 있는데.... (물결부분은 당연히 자신의 서버 IP)
예를 들어서 www.naver.com 도 있고 cafe.naver.com도 있고 blog.naver.com도 있는데 이걸 모두 사용하기 위해서는 저기다가 cafe IN A ~.~.~.~ 이런식으로 모두 추가해주셔야 합니다. 귀찮으신 분들은 그냥 www IN A ~.~.~.~ 여기에서 www를 * 기호로 바꿔주시면 됩니다 ㅋ


. Create the reverse DNS zone file. Create the file /etc/bind/zones/rev.rev.0.10.10.in-addr.arpa and add:
CODE

@ IN SOA linux.lan. admin.linux.lan. (
2006081401;
28800;
604800;
604800;
86400 );

IN NS ns1.linux.lan.
77 IN PTR linux.lan.
>>> 이제 또다른 파일을 만듭니다. vi편집기라면.. vi /etc/bind/zones/rev.rev.0.10.10.in-addr.arpa
라고 입력을 해서 그 안에다가 위와같이 입력을 해주시구요...


. Restart Bind so the changes will take effect:
CODE

# /etc/init.d/bind9 restart
>>> bind9의 파일들을 수정해주었으니까 다시 시작해주는 명령어를 입력해야죠~


TESTING BIND

. To test DNS resolving, use either host, dig, both or any other tools (nslookup etc):
CODE

# host linux.lan 127.0.0.1
linux.lan has address 10.10.0.7
linux.lan mail is handled by 10 mail.linux.lan.
>>> 이제 bind 설정이 잘 되었나 테스트를 해보는건데요. 저같은 경우에는 옆에있던 컴퓨터로 윈도우즈에서 프롬프트 창으로 들어가서 nslookup 을 이용했습니다. 윈도우즈 프롬프트 창은 [시작]->[실행]에서 cmd를 입력하시고... 거기서 nslookup을 입력하면 나오는 칸에다가 주소를 입력하면 됩니다.  만약에 Non-existent domain 인가??? 이런식으로 나오면 실패한거구요...;;; 성공한 글자들은.. 그냥 딱 보면 성공했다는 느낌이 드는 글들이 나옵니다-_-


CODE

# dig linux.lan
; QUESTION SECTION:
;linux.lan. IN A

;; ANSWER SECTION:
linux.lan. 38400 IN A 10.10.0.77

;; AUTHORITY SECTION:
linux.lan. 38400 IN NS ns1.linux.lan.

;; ADDITIONAL SECTION:
ns1.linux.lan. 38400 IN A 10.10.0.77
>>> 이 코드는 dig를 이용해서 확인을 한 것 같네요. nslookup이나 이거나 그게 그거인듯?


CHANGING DEFAULT DNS SERVER

. If the results are similar to the ones above, it's time to make your system use the new DNS server. Edit the file /etc/resolv.conf to look like:
CODE

search linux.lan
nameserver 10.10.0.77
nameserver 123.123.123.123
>>> 위와 같은 순서에서 정상적인 반응(?)이 나왔다면 /etc/resolv.conf 파일을 편집할 차례입니다. DNS 서버의 주소를 편집하는 파일인데요, 이제 자신의 서버도 DNS 서버가 되었으니까 자기껄 추가해주면 됩니다. search [본인의 도메인] 이렇게 입력하시고.. 다음줄에는 nameserver [자신의 서버 IP]


Where 10.10.0.77 is the server's IP running Bind, which is also reachable by computers in your network or Internet (depending on what you want to do with your DNS server), and 123.123.123.123 is the DNS IP address provided by your ISP.
>>> 위의 코드에서 123.123.123.123은 네트워크 설정에서 네임서버 주소로 썼던 IP를 쓰는 곳인데 아마 미리 입력이 되어있을 거에요(제 기억상). 만약에 없었다면 네트워크 설정에서 썼던 IP를 적어주세요. 네트워크 설정을 보는건 ifconfig를 입력하시면 정보가 나옵니다.




이 다음에 나오는 것들은.... 뭔가 또다른 DNS 서버를 만드는 것 같은데 저의 경우에는 위의 과정까지만 하고 나니까 홈페이지가 잘 들어가졌습니다~~ IP주소로만 들어가지고 도메인으로는 접속이 안됐었는데 잘 되는걸 보니 아래쪽의 설명부분은 그냥 다른 설명인 것 같습니다. 혹시 살펴보시고 필요한 것 같으면 해보시구요..ㅋㅋ DNS에 대한 설명은 이것으로 마치겠습니다^^

INSTALLING SLAVE DNS SERVER

. On another machine, follow the same guide above until the ZONES part.
- The following commands are for the slave server unless stated otherwise. -

. Create the zones directory:
CODE

# mkdir /etc/bind/zones


. For BOTH master and slave, edit /etc/bind/named.conf.options and add this line within the options section (somewhere in the middle of the file, not at beginning/end):
CODE

dnssec-enable yes;


. Use dnssec-keygen to generate a .private and .key file:
CODE

# dnssec-keygen -a hmac-md5 -b 128 -n host linux.lan


. Add this in your /etc/bind/named.conf on master AND slave. Open the .private file generated earlier and copy the hashkey from Key:, then paste it to secret directive:
CODE

key "TRANSFER" {
algorithm hmac-md5;
secret "HASHKEY-FROM-.PRIVATE-FILE";
};


. On the MASTER server, add the slave IP to /etc/bind/named.conf (again, don't forget to replace the examples with your valid IP addresses):
CODE

server 10.10.0.78 {
keys {
TRANSFER;
};
};


. On the SLAVE server, add the master IP to /etc/bind/named.conf:
CODE

server 10.10.0.77 {
keys {
TRANSFER;
};
};


. Add the following to /etc/bind/named.conf.local (yes, on slave):
CODE

zone "linux.lan" {
type slave;
file "/etc/bind/zones/slave_linux.lan.db";
masters { 10.10.0.77; };
allow-notify { 10.10.0.77; };
};


. Finally, add this to /etc/bind/named.conf:
CODE

include "/etc/bind/rndc.key";


When Bind will be restarted, there will be a zone transfer. This requires a synchronized clock, so the last step before restarting bind is to run the following command on both servers:
CODE

# apt-get -y install ntpdate


Enjoy!