팁 같지도 않은 팁이긴 합니다만... 저처럼 유용하게 쓰실 분이 계실 듯
하여서 올립니다...
하나로 ADSL 을 쓰는데, 얼마전 장애처리 끝에 ADSL 모뎀을 내장형에서
외장형 SpeedTouchPro 로 교체하였습니다.
(인터넷)
|
| <-(하나로에서 주는 공인IP)
|
(외장형모뎀)
| <-(10.0.0.138)
|
| <-(10.0.0.1)
(내 컴퓨터)
이 상태에서 외부에서 텔넷으로 제 컴퓨터에 접속하고자 합니다. 이 때
문제는 내 공인IP가 바뀌어버린다는 것이지요. (외장형 모뎀을 계속 켜
두면 어지간하면 오랫동안 유지되긴 하는데, 가끔은 제멋대로 접속이
끊어졌다 재연결되면서 IP가 바뀌어버립니다) 따라서,
http://www.dyndns.org 에서 제공하는 DynamicDNS 서비스를 사용해서
동적으로 raymundo.dyndns.org 라는 이름과 제 유동IP를 연결하고자
합니다.
대충 상황 설명은 되었고, dyndns 사용 방법은 위 홈페이지에서직접
살펴보시고요, 현재의 문제점은
1. ifconfig로 얻을 수 있는 내 컴퓨터의 IP주소는 죽었다 깨어나도
10.0.0.1 밖에 없다... 따라서 내 공인IP주소를 얻을 수 없다.
2. dyndns 서비스에 내 IP를 갱신하는 ddup 역시 10.0.0.1 을 가지고
갱신을 시도한다. 따라서 외부에서 raymundo.dyndns.org 라는이름으로
접속할 수 없다.
입니다. 따라서 ADSL모뎀에서 http 로 자신의 상태를 보여줌을 이용하여서
부여받은 IP 를 얻어내고, 기존의 IP와 비교해서 바뀌었으면 ddup 를
이용하여 갱신하는 스크립트를 작성해보았습니다. (매우 허접합니다)
~/bin/update_my_ip :
#! /bin/bash
# IP주소를 남겨두는 디렉토리입니다. 미리 만들어둬야 합니다.
TEMP=$HOME/.send_my_ip
# 모뎀이 접속이 안 된 채로 버티고 있는 경우를 대비해서,
# 모뎀의 동작을 위해서 ping 을 날린다
ping -c 3 147.46.80.1 > /dev/null
# 기존의 IP주소를 백업한다.
mv -f $TEMP/ip_new $TEMP/ip_old
# 새 IP주소를 알아낸다. ifconfig 를 쓸 수 없으므로, wget 을 이용하여 모
뎀에서
# 직접 ip 주소를 담고 있는 cgi/router/index.html 파일을 읽어낸다
( cd $TEMP ; wget http://10.0.0.138/cgi/router/index.html )
# index.html 로부터 현재의 IP 주소 추출
# 아래의 grep 부터 ip_new 까지를 한줄로 작성할 것.
# ^M 은 vi 에서 ^V와 ^M을 연속으로 눌러 입력한다.
# s/" 와 <TD 사이에는 ^V와 TAB을 연속으로 눌러서 탭이 들어가도록 한다.
# 아래의 행이 실행되면 ip_new 란 파일에 정확히 IP주소만남는다.
grep "21" $TEMP/index.html | sed 2,$d | sed s/^M//g |
sed s/" <TD ALIGN=CENTER >"//g | sed s/"</TD>"//g > $TEMP/ip_new
# 기존의 IP주소와 새로 얻은 IP주소를 diff로 비교하여 결과를 ip_diff 에
저장
diff $TEMP/ip_new $TEMP/ip_old > $TEMP/ip_diff
# ip_diff파일의 크기가 0보다 클 경우는 IP주소가 바뀌었다는 것이다
if [ -s $TEMP/ip_diff]
then
# IP가 바뀌었을 때에는 dyndns 갱신
/usr/local/sbin/ddup --ip `cat $TEMP/ip_new` --host
raymundus.dyndns.org
# dyndns 서비스의 불안정으로 갱신이 제때에 되지 않을 경우에 대비해서 새
로운
# IP주소를 메일로도 보낸다.
cat $TEMP/ip_diff | mail -s `cat $TEMP/ip_new` 내@메일.주소
fi
rm -f $TEMP/index.html
# 스크립트의 끝
위 스크립트에 실행권한을 주어 ~/bin 디렉토리에 넣고 crontab 을 이용하
여
적절한 간격 (저는 5분으로 했습니다) 으로 실행되게 해 두면, 도중에 IP주
소가
바뀌더라도 자동으로 dyndns 에 갱신을 해주고, 새로운 주소를 메일로도보
내
주기 때문에 외부에서 자기의 컴퓨터에 접속하는 것이 가능합니다. 이 외장
형모뎀이
텔넷이나 FTP 포트 등은 자동으로 내부네트웍의 컴퓨터로 패킷을 넘겨주는
듯
하더군요. :-)
아예 리눅스머신의 NIC에다 외장형모뎀이 부여받은 IP를 그대로 부여할 수
있는
방법도 있는 듯 한데 (하나넷 리눅스동호회 뒤져보면 나와 있습니다) 이 경
우는
두 대 이상의 컴퓨터에 인터넷 공유를 하기 위해서는 리눅스머신과 다른 컴
퓨터
사이를 다시 랜으로 연결해줘야 한다는군요. (위의 경우에는 모뎀에서 막바
로
허브로 연결할 수 있지요) 어쨌든 이럴 때는 자기의 IP주소를 ifconfig 로
쉽게
알 수 있기 때문에 위와 같이 힘들게 할 필요는 없겠습니다만...