현재 BioinfoSarangNet의 문제. 저 유동[IP]를 어떻게 [Domain]에 연결할것인가.


IP공유기를 설치한 이후로, IP가 계속 바뀐다. 왜 예전엔 안바뀌였던거지? 어쨌건, 대략 하루내지는 이틀에 한번꼴로 아이피가 바뀐다. 대안은? 이 경우 어떻해야 하는가. --[yong27]

일단 무료 [DDNS]를 하나 얻었다. yong27.dyndns.org 이 [Domain]은 바뀔때마다 바뀐 [IP]를 기억하고 있는 [Domain]. 따라서, 내가 쓰는 다른 네임들을 다 저곳으로 포워딩하면 될듯한데... 아니 그전에 ns.biohackers.net [DNS]서버는 어쩔것인가 고민중.

집에와서 다시 해보니 저 IP공유기에서 저 [DDNS] 설정이 안되더만. 이래저래 방법을 모색중이긴 하나, 뾰족한 수가 떠오르지 않는다. 만일의 경우에는 메가패스에 고정아이피를 신청해야할듯. 그러나... 메가패스 ntopia서비스는 고정아이피를 지원하지 않는단다. 어쩌지...

지금보니 바뀐 IP가 제대로 [DDNS]에 전달된듯... 어쨌건 yong27.dyndns.org 는 제대로 된 [IP]를 항상 들고 있다는 얘기. 저걸 어떻게 잘 이용할 방법이 없을까...


[Twisted] 네트워크 데몬 프로그램 구상중. --> 이 방법은 바뀐 후 몇시간동안의 작동을 보장하지 않는다.


dnsever의 [DDNS]서비스 이용으로 일단 해결봤슴.

사랑넷 [Domain]이 가동된다. 한동안 먹통이였던 이유가 무엇이였을라나... 암튼, 이참에 싹 옮기느냐, 아님 두개를 다 유지하느냐...

dig로 확인해보면,

bioinfo.sarang.net.     17619   IN      CNAME   ns.biohackers.net.

ns.biohackers.net 이 DynamicIpProblem으로 바뀔수도 있기에, 그때그때 네임서버를 재시작해줘야 한다는 문제는 여전히 존재함. --[yong27], 2005-01-10

따라서, IP가 바뀔경우의 [DNS]재시작 스크립트

   1 #!/usr/local/bin/python
   2 
   3 import socket, os, time
   4 
   5 currentIp = file('/etc/currentip').read().strip()
   6 newIp = socket.gethostbyname('yong27.dyndns.org')
   7 currentTime = time.ctime(time.time())
   8 
   9 if currentIp != newIp:
  10     os.system("""wget 어쩌고저쩌고 to dnsever.com""")
  11 
  12     bhn = '/var/named/chroot/zone/local/bhn.zone'
  13     bsn = '/var/named/chroot/zone/local/bsn.zone'
  14     n_bhn = file(bhn).read().replace(currentIp, newIp)
  15     n_bsn = file(bsn).read().replace(currentIp, newIp)
  16     file(bhn,'w').write(n_bhn)
  17     file(bsn,'w').write(n_bsn)
  18     os.system("/etc/rc.d/init.d/named restart")
  19     file('/etc/currentip','w').write(newIp)
  20     file('/etc/currentip.log','a').write('%s at %s\n'%(newIp, currentTime))
  21 else:
  22     print '%s is not changed at %s'%(currentIp, currentTime)

윗 스크립트를 crontab으로 10분마다 한번씩

0,10,20,30,40,50 * * * * /etc/cron.hourly/ipcheck.py


현재 DynamicIpProblem은 다 해결되었지만,,, 한가지. 최초 lookup시 시간이 좀 걸리긴 하다. 생각해보면, bioinfo.sarang.net의 [IP]를 얻기위한 절차는

  1. net 에다가 ns.sarang.net을 물어본다. (->) ns.sarang.net 의 ip 획득

  2. ns.sarang.sarang 에다가 bioinfo.sarang.net 을 물어본다. (->) cname으로 ns.biohackers.net 에 있다고 알게됨.

  3. net 에다가 ns.biohackers.net 을 물어본다. (->) cname으로 ns.dnsever.com 에 있다고 알게됨

  4. ns.dnsever.com 에다가 ns.biohackers.net 을 물어본다. (->) [DDNS]로 연결된 [IP]를 알게됨

  5. ns.biohackers.net 에다가 bioinfo.sarang.net 을 물어본다. (->) BioinfoSarangNet [DNS]가 현재 [IP]를 알려줌.

이러니... 오래걸릴수밖에, 게다가 [DDNS]로 인해 캐쉬에 있는 시간을 최대한으로 줄였으므로, 시간은 더 걸린다. --[yong27], 2005-01-17