컴퓨터 통신망 Fedora 보충자료

2009. Fall

윤종호

KAU

1 1. USB 메모리 또는 외장형 HDD 에 Fedora 설치하기

USB 메모리에 페도라 11 리눅스의 데스크탑용 라이브 CD 이미지를 다음과 같이 설치하고 이후 이것으로부터의 부팅이 되도록 한다. 이렇게 하는 이유는 USB 드라이브이기 때문에 언제 어디서나 사용 할 수 있고, 라이브 CD 와는 다르게 읽고 쓰기가 가능해서 데이터와 설정이 저장되는 장점이 있다. USB 드라이브의 용량은 2GB 이상을 추천한다.

 XP 컴퓨터에 라이브 CD 이미지를 Fedora 공식 웹싸이트에서 내려 받는다. (참고: 이것을 CD 에 복사해서 필요시 다른 컴퓨터에서 CD 로부터의 부팅후 HDD 에 Fedora 를 직접 설치할 수도 있으므로 CD 도 하나를 만들어 놓는 것이 좋다.)  XP 컴퓨터에 liveusb-creator 를 다운로드하고, 압축을 푼뒤 liveusb-creator.exe 파일을 실행한다.  “Use existing Live CD”의 [Browse] 버튼을 눌러 라이브 CD 이미지를 선택한다.  Target Device 부분은 USB 드라이브를 지정한다. USB 메모리에 기존 파일이 있어도 설치할 여유 공간만 있으면 문제없다.  “Persistent Overlay” 부분은 USB 드라이브 안에서 파일과 세팅을 저장하는데 사용되는 공간인데. USB 드라이브의 크기에 따라 128MB 정도를 설정한다.  [Create Live USB] 버튼을 눌러 작업을 진행한다.  컴퓨터의 BIOS 에서 USB 로부터의 부팅이 가능하도록 설정한다.  시스템에 USB 메모리를 설치하고 시스템을 재부팅한다. 만약 USB 로 부팅하는 도중에 "No partition active"라는 에러 메시지가 표시되면, 윈도우의 시작 - 실행에서 diskpart 를 입력하고 엔터를 누른 후 다음 명령어를 실행한다..

list disk --- USB 드라이브의 디스크 번호를 알아낼수 있다. 보통은 1 번

select disk 1 ---디스크 번호가 1 일경우.. 다른 번호면 다르게 넣는다.

list partition -- USB 드라이브의 파티션을 여러개로 나누었을 경우 부팅 파티션을 고른다. 보통은 1 번)

select partion 1 --- 파티션 번호가 1 일경우.. 마찬가지로 다른 번호면 다르게 입력

active

exit

2  참고 : 지금 설치한 Fedora 는 데스크탑 PC 전용이므로 개발자가 필요로하는 컴파일러 및 서버용 패키지가 없으므로 필요한 패키지는 “yum -y install [필요한 패키지 명]”을 사용하여 인터넷으로 설치한다.  참고 : Fedora 를 HDD 에 설치할 경우 다음과 같은 3 가지 방법이 있다.  Liveusb 에 의해 USB 메모리에 설치된 Fedora 를 부팅한 경우 바탕화면에 표시되는 “HDD 에 설치”를 클릭하여 HDD 에 설치한다.  LiveCD 를 이용하여 CD 에 Fedora 부팅 CD 를 만든 후 바탕화면에 표시되는 “HDD 에 설치”를 클릭하여 HDD 에 설치한다. (LiveCD 에 의해 만든 Fedora 부팅 CD 에 의한 부팅을 수행하면 이를 이용한 설정값이 저장되지 않기 때문에 HDD 에 설치해야 한다. )  5 장짜리 Fedora 설치 CD 를 사용하여 설치한다.

(주의) 원활한 실험을 위하여, 설치시 보안관련 설정에 대한 “방화벽을 사용하지 않음”과 “SELinux 를 사용하지 않음”을 선택한다.

3 2. Fedora 윈도우 환경 활용 (Term Project)

기본적으로 Fedora 는 사용자에게 친숙한 X 윈도우 기반의 데스크탑 환경인 GNOME 을 제공한다.

2.1 인터넷 응용프로그램 브라우저는 Firefox 이다. 메일클라이언트는 Evolution 이다. 메신저는 gaim 이다. FTP 클라이언트는 gftp 이다.

2.2 멀티미디어 응용프로그램 사운드 음량조절 오디오 CD 재생 : CD 플레이어 음악파일재생 : Helix 플레이어 DVD 플레이어 : totem 플레이어 CD/DVD 레코딩도구 : xcdroast 이다. yum 으로 설치한다.

2.3 에디터 텍스트 편집기는 gedit 이다. PDF 뷰어는 evince 이다.

2.4 그래픽 그래픽 편집기는 gimp 이며 포토샵과 유사하다. 그래픽 뷰어는 gThumb 이다. 화면캡쳐는 키보드에서 PrintScreen 키를 누르면 스크린샷 프로그램에 의해 전체화면이 저장된다.

2.5 오피스 도구 오픈오피스이다. 문서편집기는 OpenOffice Writer 이다. 엑셀은 Calc 이다. PPT 는 Impress 이다. HWP 는 한컴리눅스오피스이다.

4 3. 유용한 리눅스 명령어 (Term Project)

2.1 일반 명령어

su (superuser) #su - : root 로 로그인함. 일반 유저로 로그인했다가 root 로 작업해야 할 필요가 있을 때 사용함.

커널 버전 확인 #uname –r

ls (list ) #ls ; 현재 폴더의 내용을 보여줌

cd (change directory) #cd .. 상위 디렉터리로 이동 #cd / 최상위 디렉터리(root)로 이동

cp (copy) #cp x y : x 를 y 로 파일복사 #cp /home.test/*.* . 해당 폴더의 모든 파일을 현재 폴더로 복사

mv (move) #mv x y : x 를 y 로 파일이름 변경 #mv x //z/. x 를 상위폴더 z 로 이동함. x 는 없어짐

rm (remove) #rm x : file x 를 삭제함

mkdir (make directory) #mkdir x : 현재 폴더에서 하위 폴더 x 를 생성함

rmdir (remove directory) #rmdir x : 현재 폴더의 하위 폴더 x 를 삭제함

pwd (present working directory) #pwd : 현재 작업 디렉터리명을 보여줌

cat #cat x : file x 의 내용을 화면에 보여줌

more #moe x : file x 의 내용 한페이지를 화면에 보여줌

whereis #whereis x : file x 의 위치를 보여줌

shutdown #shutdown –h now : 시스템 중지 및 지금 종료함.

reboot 5 #reboot : 시스템 재시동 또는 #shutdown –r now

[기타] CD mount #mount /dev/cdrom /mnt/cdrom ; CD ROM 장치를 /mnt/cdrom 디렉토리로 마운트한다. #cd /mnt/cdrom/ #ls ; CD 의 내용을 보여줌 플로피 mount #mount /dev/fd0 /mnt/floppy ; FDD 장치를 /mnt/floppy 디렉토리로 마운트한다. #cd /mnt/floppy #ls ; CD 의 내용을 보여줌

unmount : CD나 플로피를 제거할 경우 (반드시 /mnt/cdrom 디렉토리가 아닌 곳에서 실행해야 함.) #umount /mnt/cdrom

CDROM 열기 #eject

2.2 파일 편집 및 컴파일 vi #vi helloworld.c : 파일 helloworld.c 를 생성/열기하여 편집함

C 컴파일

# gcc helloworld.c # ./a.out # gcc helloworld.c –o helloworld.exe # ./helloworld.exe

소켓 프로그램 컴파일 #gcc main.c –lnsl // link with network service library

grep(global regular expression print) : 지정된 폴더 또는 해당 파일에 있는 특정 문자열을 찾는다.

# grep –nr ‘Chongho, YOON’ file1 file2 file3  grep [옵션] <찾을 문자열> [대상 파일명] # grep –nr ‘Chongho, YOON’ *  현재 폴더에 있는 모든 파일에서 ‘Chongho, YOON’문자열을 찾음

2.3 네트워크 관련 명령어

(1) 설정

system-config-network 윈도우 창에서의 네트워크 설정(IP, GW, DNS설정) # system-config-network

system-config-network-tui : 텍스트 창에서의 네트워크 설정(IP, GW, DNS설정) # system-config-network-tui 텍스트 창에서의 네트워크 설정(IP, GW, DNS 설정)

6 설정 적용 명령

# service network restart 설정 변경후 적용 명령

LAN카드 설정, 활성화 및 비활성화 명령어 #ifconfig <인터페이스 명> netmask 255.255.255.0 [up, down] #ifconfig eth0 200.0.0.1 netmask 255.255.255.0 [up, down]

(2) 네트워크관련 설정파일

일반설정 : /etc/sysconfig/network파일을 열어, 다음 사항을 편집함.

NETWORKING=yes HOSTNAME=hanul DOMAINNAME=west.com FORWARD_IPV4=no //라우터로 설정할 경우에는 반드시 yes로 설정해야 함. GATEWAYDEV=eth1 GATEWAY=200.0.1.1 //자신의 기본 라우터

카드 설정파일 확인 #vi /etc/sysconfig/network-scripts/ifcfg-eth0 … DEVICE=eth0 ONBOOT=yes BOOTPROTO=none IPADDR=200.0.1.2 NETMASK=255.255.255.0 NETWORK=200.0.1.0 BROADCAST=200.0.1.255

host name 설정파일 #vi /etc/HOSTNAME … HOSTNAME=aramicom.west.com

DNS설정파일 #vi /etc/resolv.conf … nameserver 200.0.1.x  기본 로컬 DNS서버

설정내용의 적용 : 위의 파일 내용을 수정하고 이를 적용할 경우에는 다음과 같이 한다.

# service network restart Shutting down interface eth0: [OK] Setting network parameters: [OK] Bring up interface lo: : [OK] Bring up interface eth0 : [OK]

또는

#/etc/init.d/network restart Shutting down interface eth0: [OK] Setting network parameters: [OK] Bring up interface lo: : [OK] Bring up interface eth0 : [OK]

xinetd의 시동 및 중지 #/etc/init.d/xinetd [start stop restart] 7

(3) 동작상태 확인

netstat : /proc/net에 있는 라우팅 테이블이나 활성화되어 있는 네트워크 연결같은 네트워크 통계와 정보를 보여줌 #netstat :

# netstat –an | grep “:69”  netstat 출력결과에서 ”:69” 스트링이 있는지 표시하도록 함.

route #route : 라우팅 정보를 보여주거나 수정함. #route add default gw <라우터 주소> : 기본라우터정보를 추가함

nslookup # nslookup ---- DNS 서버 주소 확인 # nslookup www.google.co.kr ---- DNS에 의한 IP주소 확인 # nslookup 203.253.145.5 ---- DNS에 의한 이름 확인

wall (write all) #wall System Going Down… : 모든 사용자에게 메시지를 방송함.

2.4 모듈관리 (1) yum Yellow Dog Updater Modified 명령어는 패키지 추가설치시 기존에 설치된 관련 파일도 함께 교체되어야 하는 의존성이 있을 때 관련 패키지도 함께 자동으로 설치해 준다. 단 이러한 기능은 모두 인터넷을 통하여 수행된다.

(예) ethereal 패키지 설치 # yum –y install ethereal-gnome (예) ethereal 패키지 제거 # yum remove ethereal-gnome

(참고) 설치과정이 느리다고 판단되면 “CTRL C”를 누르면 다른 mirror site 로부터 이어 다운받을 수 있다.

(2) 모듈 처리

적재된 모듈 확인 : lsmod 적재된 모듈 제거 : rmmod <모듈 이름> 모듈의 적재 : modprobe <모듈 이름> 부팅시 모듈의 자동 적재 방법: /etc/modules.conf파일을 열어, alias eth0 8139.o로 편집하고, 저장함.

2.5 파일 압축관련

gzip #gzip –d x.gz : 압축된 파일 x.gz을 extract할 때 tar (tape archive) #tar xvf x.tar : 압축된 파일 x.tar를 extract할 때 8 #tar xvzf x.tar.gz : 압축된 파일 x.tar.gz를 extract할 때 #tar cvzf x.tar.gz: 현재폴더의 모든 파일을 x.tar.gz이름으로 압축함. 압축해제 #tar xvf <압축화일명.tar> #tar zxvf <압축화일명.tar.gz>

2.6 파이프, 리다이렉션, 필터

파이프 # ls /etc | more --- ls의 결과를 more 명령어의 입력으로 보내어 출력함

리다이렉션 # ls /etc > newfile --- ls의 결과를 newfile에 저장함 # ls /etc >> newfile --- ls의 결과를 newfile에 append함

필터 2.7 프로세스 관리

ps #ps : 동작중인 프로세스들을 열거 man #man x : x에 해당되는 매뉴얼 출력 kill #kill x : 동작중인 프로세스 x를 강제종료

2.8 사용자 관리

groupadd 사용자그룹생성 # groupadd westgroup

adduser 사용자 추가 # adduser borami –g westgroup # passwd borami Changing password for user borami New UNIX password: ----- 입력 Retype new UNIX password: Passwd: all authenticatin tokens updated successfully # cat /etc/shadow – 사용자별 비밀번호 파일 확인

* group 을 지정하지 않으면 borami 는 /etc/group 폴더에 추가됨 * 별도의 홈 폴더를 지정하지 않으면 “/home/borami” 폴더가 생성됨. * root 사용자의 홈 폴더는 /root 임

userdel 사용자 제거 # userdel -r borami groupdel 사용자그룹제거 # groupdel westgroup

* 이러한 제거시 반드시 사용자 홈 폴더인 /home/borami 를 삭제해야 함. # rm –rf /home/borami

9 [참고] x 윈도우 창에서의 사용자/그룹 관리는 “system-config-users”를 입력하여 얻어지는 “사용자 관리”창에서 위와 유사한 작업을 수행해도 된다.

2.9 파일 관리

파일 허가관(permission)확인 # ls -l

파일 허가권 변경 # chmod 777

파일 소유권(ownership) 변경 # chown

4. 리눅스 디렉터리 구조 (Term Project)

� /boot : 커널 이미지가 있는 디렉토리 � /bin : 일반 사용자의 명령어가 있는 디렉토리 � /dev : 장치들에 대한 파일이 있는 디렉토리 � /etc : 리눅스에 필요한 각종 설정파일이 있는 디렉토리 � /home : 사용자 홈 디렉토리 � /lib : 프로그램 실행에 필요한 라이브러리가 있는 디렉토리 � /mnt : 마운트를 위한 디렉토리 � /proc : 프로세스의 정보가 있는 디렉토리 � /sbin : root 의 명령어가 있는 디렉토리 � /tmp : 임시 파일 디렉토리 � /usr : 리눅스에서 사용되는 프로그램이 있는 디렉토리 � /var : 프린터 스풀, DNS 정보, log, mail 등 지속적으로 변하는 내용이 저장되는 디렉토리

5. 유용한 리눅스 정보 (Term Project)

(1) 파일의 위치  데몬들의 설정화일(script) 위치 : /etc/init.d, /etc/xinetd  네트워크 서비스 설정 파일의 위치 : /etc/services  네트워크 드라이버 모듈의 위치 : /lib/modules/리눅스버전/kernel/drivers/net

(2) (예) telnet 데몬의 설정화일 내용

#cd /etc/xinetd.d #ls #vi telnet

10

# service telnet { disable = no ; 텔넷 서비스가 가능하도록 설정함. .. }

(3) Tip1 (명령어 자동완성기능) : 명령어를 모두 타이핑하지 않아도 명령어를 자동완성(auto completion)할 수 있다. 명령어의 처음 몇 자를 친 다음 [tab 키]를 누르면 된다. 예를 들어 history 라는 명령어를 타이핑한다면 굳이 history 를 다 칠 필요가 없이 "his"까지만 치고 탭키를 누르면 history 로 자동완성 됨. (4) Tip2 가상콘솔 : Fedora 에서는 7 개의 console 화면을 출력할 수 있다. 부팅시 X 윈도우 기반으로 자동 실행되는데 이 화면은 7 번째 가상콘솔이라고 보면 된다. 나머지 1~6 개의 콘솔은 모두 텍스트 모드에서 동작하는데 이를 선택하려면

(3) run level

(4) rc 파일 부팅시 먼저 수행할 내용을 list 함.

11 6. vi (Term Project)

tobe

12 7. 프로토콜 분석기 설치 및 사용 (Term Project)

(1) e-watch (윈도우 XP 전용)

Tobe

(2) ethereal (리눅스,, 윈도우 XP 가능)

Tobe

Filter 설정

13 8. LAN카드에 대한 IP주소 설정

네트워크를 이용하려면 먼저 이더넷 카드에 대한 IP 주소 설정과 카드를 활성화 시켜야 하므로 다음과 같이 수행하도록 한다.

(1) 관리 메뉴에서 “네트워크”를 클릭한다. (네트워크를 실행시키기 위해서는 root 권한이 필요하다.)

(2) “네트워크”를 실행시 다음 화면에서 "편집”을 클릭한다.

(3) 만약 비어 있으면, “새로 만들기”를 클릭한다.

-- 추가 ---

(4) "NetworkManger 에 의해 관리" 를 활성화하고, “정적으로 설정된 IP 주소”를 선택한 후 수동 IP 주소를 설정한다. (DHCP 에 의한 자동설정시에는 "IP 주소 설정을 자동으로 얻기"를 클릭한다.)

14

참고로 아래 그림에서 PC 가 두개 겹쳐져 있는 아이콘이 네트워크 메니\저이다.

(4) 네트워크 정보 설정시에 DNS 를 설정할 수 있는데, DNS 를 설정해도 시스템을 리부팅 하고 나면 DNS 정보가 사라진다면 ifcfg-eth0 파일을 직접 수정해야 한다.

(5) DNS 주소 설정

현재 설정된 eth0 인터페이스에 대한 정보가 수록된 “/etc/sysconfig/network-scripts/ifcfg-eth0:파일을 vi 로 열어 DNS 서버 주소를 추가 편집한다. (빨간 상자가 추가한 부분이다)

15 (6) 설정값을 적용한다. 이를 위하여 # service network start 명령어를 사용하거나, 시스템을 리부팅한다. 즉, “터미널”을 사용하여 “su – “를 입력한 후 „service network start”명령어를 입력한다.

참고로, network device 의 동작을 stop 시킬 경우에는 다음과 같다.

(7) 이후 NetworkManager 의 “연결 정보”를 통하여 설정값을 확인한다.

(8) 터미널 창에서 “ifconfig eth0”를 사용하여 설정된 값을 터미널 창에서 확인한다.

(9) ping 시험과 파이어폭스를 이용하여 웹서버 접속을 수행한다.

16

17 9. 방화벽 (Term Project)

9.1 해당 서비스 방화벽 해제

(1) 방법 1 : 터미널에서

#system-config-securitylevel

[보안수준설정]창에서, “신뢰하는 서비스”의 telnet 항목을 첵크하고 [확인]을 클릭한다.

(2) 방법 2

# lokkit

- 해당 항목에 대한 disable 설정

(3) GUI 화면에서

Desktop → System Settings → Security Level.

9.2 selinux 해제 fedora 는 selinux 를 통해 보안 정책을 관리 하도록 되어 있다. 위와 같이 방화벽을 해제해도 selinux 때문에 외부에서 접근이 불가능 하므로 먼저 다음과 같은 2 가지 방법 중 하나를 사용하여 selinux 를 해제한다.

(1) 방법 1 : 앞에서 #system-config-securitylevel 명령에 의한 동일한 [보안수준설정]창의 [Selinux]탭을 선택하고, “활성화”부분을 off 시키고 시스템을 재부팅한다.

(2) 방법 2 : selinux config 설정 변경

# vi /etc/selinux/config

… SELINUX=disabled // 상태확인

… # sestatus ?v v  상태확인 SELinux status: disabled

이후 재부팅한다.

18 (2) 방법 3 : system 보안 설정 변경

# vi /etc/sysconfig/system-config-securitylevel

… setenforce 0  추가

… # sestatus ?v  상태확인 SELinux status: disabled

이후 재부팅한다.

19 10. TFTP 서버와 클라이언트 설치

모든 설치과정은 root 계정을 사용해야 한다.

su (superuser) #su - : root로 로그인함. 일반 유져로 로그인했다가 root로 작업해야 할 필요가 있을 때 사용함.

(1) 먼저 TFTP 서버가 자신의 리눅스 시스템에 설치되어 있는지 다음과 같이 확인한다.

(a) 방법 1 TFTP 서버는 69 번 포트번호를 사용하므로 69 번 포트가 활성화 되어 있는지를 점검하여 TFTP 서버가 구동 중인지 확인한 것이다. [root@localhost etc]# netstat -an | grep ":69" udp 0 0 0.0.0.0:69 0.0.0.0:*

(b) 방법 2 또는 다음과 같이 TFTP 서버가 설치되어 있는지 확인한다. 이 /etc/xinetd.d 디렉토리에는 여러 가지의 사용 가능한 서버들의 목록이 있는데 tftp 라는 항목이 있다면 tftp 는 이미 설치되어 있는 것이다.

[root@localhost root]# cd /etc/xinetd.d [root@localhost xinetd.d]# ls amanda daytime finger klogin rexec talk amandaidx daytime-udp gssftp krb5-telnet rlogin telnet amidxtape dbskkd-cdb imap kshell rsh tftp chargen echo imaps linuxconf-web rsync time chargen-udp echo-udp ipop2 ntalk sgi_fam time-udp comsat eklogin ipop3 pop3s swat wu-ftpd [root@localhost xinetd.d]#

(c ) 방법 3 chkconfig --list 명령을 사용하여 xinetd 가 관리하는 tftp 서비스를 조회하면, 활성화 (on) 되었는지 또는 비활성화 (off) 되었는지 여부를 알 수 있다.

# chkconfig –list tftp tftp on – 또는 off

[또는] # chkconfig --list

(2) 만약 /etc/xinetd.d 디렉토리에 tftp 항목이 없는 경우에는 yum 사용하여 클라이언트 tftp 와 서버 tftp- 를 설치한다.

# yum install xinetd //만약 xinetd 가 없다면… # yum install tftp # yum install tftp-server

(3) /etc/xinetd.d/tftp 파일을 vi 로 다음과 같이 수정하여 환경을 설정한다. 만약 “disable = yes”로 설정된 경우에는 빠져나온다. # default: off

20 # description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is often used to boot diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot  tftp 에서 파일을 제공하는 디렉토리 임 disable = no // was yes – tftp 사용 가능으로 바꿈 per_source = 11 cps = 100 2 flags = IPv4 }

(4) tftpboot 디렉토리에 클라이언트에 다운로드 될 파일을 생성한다. # cd /tftpboot # vi test.c 시험용 파일인 test.c 파일을 작성한다. … #

(5) tftp 서버 실행 xinetd 에 등록된 tftp 를 실행하도록 xinetd 를 시동한다. 이 경우, tftpd 는 xinetd 하부에 있는 서비스이므로 xinetd 를 기동하면 tftpd 는 당연히 기동한다.

#service xinetd start 또는 # /etc/init.d/xinetd restart xinetd 를 정지함: [ 확인 ] xinetd (을)를 시작합니다: [ 확인 ] #

또는 chkconfig 명령어 의해 xinetd 가 관리하는 서비스에 즉시 적용되므로 xinetd 를 재시동 할 필요는 없다.

# chkconfig tftp on

#

(6) 마지막으로, 이 서버가 부팅될 때마다 활성화될 수 있도록 “ntsysv “를 사용하여 설정한다. 사용자를 등록하고 암호까지 지정한다. -???? # ntsysv

다음 화면에서 tftp 에 체크한다.

21

또는

#chkconfig tftp on --- 시스템에 등록된 데몬들을 리눅스 부팅시 자동으로 실행하도록 함.

(5) 클라이언트 PC 에서 tftp 를 이용하여 파일을 전송 받은 후 확인한다. $ tftp 192.168.10.51 -r test.c –g // 또는 tftp 192.168.10.51 //tftp>get test.c //tftp>quit $ ls -al -rw-r--r-- 1 root root 21 Jan 1 00:03 test.c $ cat test.c

22 11. DCHP 서버 구성

11.1 설치확인

STEP 1 DHCP 데몬의 설치여부 검사: 자신의 리눅스 시스템에 이미 DHCP 서버 데몬이 실행 중인지 아래와 같은 명령어를 사용하여 확인하도록 한다. DHCP 서버는 67 번 포트를 사용하므로 서버가 실행 중이면 아래와 같이 나타나게 된다.

[root@localhost etc]# netstat -an | grep ":67" udp 0 0 0.0.0.0:67 0.0.0.0:*

만약, 설치는 되어 있지만 서버가 실행 중이 아니라면 서버의 실행을 위하여 다음과 같이 /usr/sbin/dhcpd 라는 명령어를 입력하도록 한다.

[root@localhost root]# /usr/sbin/dhcpd

만약 이 명령에 대하여, 다음과 같은 메시지가 표시되면 dhcpd 데몬은 설치가 되어 있으나 이에 관련된 설정 파일이 존재하지 않는 경우이다. 이 설정 파일을 나중에 작성하면 되므로, 이렇게 dhpcd 데몬이 설치가 되어있는 것만 확인된다면 다음 과정으로 넘어가도록 한다.

[root@localhost root]# /usr/sbin/dhcpd Internet Consortium DHCP Server 2.0pl5 Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.

Please contribute if you find this software useful. For info, please visit http://www.isc.org/dhcp-contrib.html

Can't open /etc/dhcpd.conf: No such file or directory exiting.

반면에 다음과 같은 메시지가 나타나면 리눅스 시스템에 dhcpd 데몬이 설치가 되지 않은 경우이다.

[root@localhost root]# /usr/sbin/dhcpd Bash: /usr/sbin/dhcpd: No such file or directory

이러한 경우 dhcpd 데몬을 설치해야 하므로, 다음과 같은 과정에 따라 dhcpd 데몬을 설치하도록 한다.

11.2 설치 STEP 2 dhcpd 데몬 설치 (이미 설치되어 있다면, 다음 과정으로 이동) 리눅스 시스템에 처음으로 dhcpd 를 설치하기 위해서는 다음과 같이 yum 을 사용한다.

#yum install dhcp #yum install dhcp-devel

23

STEP 3 DHCP 서버의 실행을 완성하기 위하여, 다음과 같은 /etc/dhcpd.conf 파일에 의해 dhcpd 데몬에 대한

설정이 되어 있어야 한다. 이 파일은 /etc/dhcp d.conf.example 파일을 복사하여 사용하도록 한다. [root@localhost etc]# cp /etc/dhcpd.conf.example /etc/dhcpd.conf

/etc/dhcpd.conf 파일을 vi 편집기를 사용하여 다음과 같이 변경하고 저장한 후 빠져 나온다. #vi /etc/dhcpd.conf # Sample configuration file for ISCD dhcpd # ddns-update-style none; subnet 200.0.0.0 netmask 255.255.255.0 { option routers 203.253.145.5; # 주소 option subnet-mask 255.255.255.0; option domain-name "west.com"; option domain-name-servers 134.75.55.2; #dns 서버주소 range dynamic-bootp 200.0.0.50 200.0.0.100; #주소할당 범위 (50~100) default-lease-time 21600; #임대기간(초) max-lease-time 43200; }

STEP 4 DHCP 서비스를 개시한다.

#service dhcpd start

또는

# /etc/init.d/dhcpd start

참고로 클라이언트가 대여해 간 IP주소 정보는 /var/lib/dhcp/dhcpd.leases 파일에 있다.

STEP 5 이후 DHCP 서버동작이 원활하지 않는 경우 방화벽용 DHCP 용 포트를 개방한다.

#system-config-securitylevel

“보안수준설정”창에서 “그외의 포트”부분에 “67:udp, 68:udp”를 입력하고 확인을 클릭한다.

1. Open System | Administration | Server Settings | Services. 2. Choose Background Services tab, and mark all services (such as dhcpd, httpd, mysqld, named and ftp service) that need to start when system running. Then save this configuration. 3. Open System | Administration | Security Level and . 4. Choose Firewall Options tab, mark WWW (HTTP), Secure WWW (HTTPS) and FTP. 5. Choose SELinux tab. Change SELinux Setting option (ex : Permissive). 6. Click OK and Yes.

24

STEP 5 다음 부팅시에 자동으로 dhcpd 가 동작하도록 설정한다.

#chkconfig dhcpd on --- dhcpd 데몬을 리눅스 부팅시 자동으로 실행하도록 함.

11.3 DCHP 클라이언트 구성

이더넷 카드에 대한 IP 주소 설정과 카드 활성화를 수행해야 한다. 이를 위하여 자동으로 이더넷 카드를 활성화 시키는 네트워크 메니져 (NetworkManager) 라는 툴을 다음과 같이 사용한다.

(1) 관리 메뉴에서 “네트워크”를 클릭한다. (네트워크를 실행시키기 위해서는 root 권한이 필요하다.)

(2) “네트워크”를 실행시 다음 화면에서 "편집”을 클릭한다.

(3) 만약 비어 있으면, “새로 만들기”를 클릭한다.

-- 추가 --- 25

(4) "NetworkManger 에 의해 관리" 를 활성화하고, “정적으로 설정된 IP 주소”를 선택한 후 “IP 주소설정을 자동으로 얻기”를 클릭한다.

참고로 아래 그림에서 PC 가 두개 겹쳐져 있는 아이콘이 네트워크 메니\저이다.

(5) 네트워크 서비스를 다시 개시한 후 설정상황을 확인한다.

#service network restart

#ifconfig eth0

(6) 참고로 console 모드에서 설정하는 경우는 다음과 같다.

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE = eth0

BOOTPROTO = dhcp

ONBOOT=yes

#service network restart

26 12. DNS 서버 설치

10.1 개요

(1) BIND BIND (Berkeley Internet Name Domain)은 DNS 관련 소프트웨어를 개발하는 프로젝트의 이름으로써 이 모임의 가장 유명한 결과물은 DNS 서버기능을 수행하는 데몬인 named 이다.

(2) DNS Client DNS client 는 /etc/resolv.conf 파일에 DNS 서버의 주소와 도메인 이름을 명시하고 있다. #vi /etc/resolv.conf search west.com nameserver 192.168.1.100 nameserver 192.168.1.102 #

(3) Authoritative DNS Server

Authoritative server 는 우리의 DNS 도메인에 대한 definitive information 을 유지하는 서버이다.

(4) How DNS Servers Find Out Your Site Information

13 개의 root authoritative DNS server 가 있으며 모든 DNS server 는 이 서버에 먼저 질의한다. 이러한 root server 는 모든 주 도메인 (com, .net, 등)의 Authoritative server 를 알고 있다.

(5) DNS Caching Name Server

로컬망의 각 PC 들이 authoritative server 에게 직접 질의하는 대신에 내부에 caching DNS 서버를 설치하고, 각 PC 는 이것을 자신의 DNS 서버로 설정한다. 이후 PC 는 DNS 질의를 이 캐싱서버에 질의하면, 해당 서버의 캐시에 해당 질의에 대한 답이 없으면 DNS 클라이언트처럼 외부의 DNS 서버에게 질의하고, 그 결과를 저장함과 동시에 해당 PC 에게 대답한다. 이후 다른 PC 가 동일한 질의를 하면 캐싱서버가 대신 대답한다.

10.2 DNS 기본 명령어

(1) “host” 명령어

[root@bigboy tmp]# host www.linuxhomenetworking.com

www.linuxhomenetworking.com has address 65.115.71.34

[root@bigboy tmp]# host 65.115.71.34  reverse lookup

34.71.115.65.in-addr.arpa domain name pointer 65-115-71-34.myisp.net. [root@bigboy tmp]#

27 (2) “nslookup” 명령어

#nslookup www.linuxhomenetworking.com

Server: 192-168-1-200.my-site.com

Address: 192.168.1.200

Non-authoritative answer:

Name: www.linuxhomenetworking.com

Address: 65.115.71.34

#nslookup 65.115.71.34  reverse lookup

Server: 192-168-1-200.my-site.com

Address: 192.168.1.200

Name: 65-115-71-34.my-isp.com

Address: 65.115.71.34

#

10.3 로컬 DNS 캐싱서버 설치

(1) 패키지 설치

yum -y install caching-namveserver

(2) 방화벽 해제

# system-config-securitylevel

<그 외의 포트> 에서 “53:tcp, 53:udp”를 입력하여 DNS 포트 방화벽을 해제한다. (3) 시동한다.

#service named start

(4) 클라이언트 PC 의 DNS 서버 IP 주소를 프록시서버의 주소로 변경한다.

#system-config-network <네트워크 설정>창에서 “기본 DNS”주소를 Proxy 서버 주소로 변경한다.

#service network restart

(5) 외부 접속을 시험한다.

28

10.3 로컬 마스터 DNS 서버 설치 (Term-Project)

(3) 설치 BIND Package

yum -y install bind yum -y install bind-chroot  ???? yum –y install system-config-bind

(4) BIND 설정

# system-config-bind

(4) BIND 설정 (TOBE…) [root@bigboy tmp]# chkconfig named on [root@virtuozzo ~]# service named start  또는 /etc/init.d/named start Starting named: [ OK ] [root@bigboy tmp]#

TOBE…

10.4 DHCP Considerations For DNS (Term Project)

"Dynamic DNS".

29 13. Telnet 서버 설치

(1) 설치

#yum install telnet-server

(2) 설정

# vi /etc/xinetd.d/telnet 파일을 열어

..

disable=yes -> disable=no 수정후 저장후 종료

..

(3) firewal and 방화벽 open

아래 3 개 명령으로 해당 기능 disable 해야 접속이 가능해진다. (이미 설정하였다면 통과) - system-config-firewall - system-config-security - system-config-selinux (/etc/selinux/config)

* 또는 system-config-securitylevel-tui 또는 lokkit 을 실행하고, “security level”을 “disabled”로 체크한다.

(4) 시동 xinetd 데몬 재 시작

#/etc/init.d/xinted restart

(5) 재시동시 가동하도록 함.

#chkconfig telnet on

(참고) You can also use the chkconfig --list command to verify that telnet will be started on the next reboot.

# chkconfig --list | grep telnet

telnet: on

30 14. FTP 서버 설치

(1) 설치

#yum –y install vsftpd

(2) 설정

#vi /etc/xinetd.d/vsftpd 파일을 열어

disable=yes -> disable=no 수정후 저장후 종료

#

(3) 방화벽 해제

아래 3 개 명령으로 해당 기능 disable 해야 접속이 가능해진다. (이미 설정하였다면 통과) - system-config-firewall - system-config-security - system-config-selinux (/etc/selinux/config)

* 또는 system-config-securitylevel-tui 또는 lokkit 을 실행하고, “security level”을 “disabled”로 체크한다.

(4) 환영문 작성

#cd /var/ftp  /var/ftp 폴더로 이동한다.

#touch welcome.msg 파일 생성

#vi welcome.msg

############# Welcome to YOON’s FTP SERVER ##########

#vi /etc/vsftd/vsftpd.conf

Banner_file=/var/ftp/welcome.msg 추가

..

#

(4) 시동. xinetd 데몬 재 시작

/etc/init.d/xinted restart

또는

31 #service vsftpd start

(5) 재시동시 가동하도록 함.

#chkconfig vsftpd on

32 15. ApachWeb 서버 설치

15. 1 기본 웹 서버 설치

(1) 설치

Apache server 는 다음과 같이 설치한다.

#yum install httpd

(2) 기본 페이지 작성

/var/www/ 폴더에 기본페이지를 작성한다.

#vi /var/www/html/index.html

WELCOME MY FIRST WEB PAGE

#

(3) firewall 해제를 위하여 system-config-securitylevel utility 를 사용한다.

Choose Desktop → System Settings → Security Level. Select WWW (HTTP) from the list of services. When prompted, select Yes to update the firewall configuration.

(4) 시동

#service httpd start

(5) 재부팅시 가동하도록 설정함.

#chkconfig --level 345 httpd on

15.2 Zeroboard 설치

게시판 기능 설치

15.3 웹 하드 기능 설치

Shade_webhard 설치

33

34 16. 메일서버 설치 (term project)

(1) 설치

Sendmail 설치

Tobe…

16. NFS 및 Samba 설치 (term project)

(1) 설치

Sendmail 설치

Tobe…

14. SNMP Agent 설치 (term project)

SNMP (Simple Network Management Protocol) is a protocol used for network management. The NET-SNMP project includes various SNMP tools: an extensible agent, an SNMP library, tools for requesting or setting information from SNMP agents, tools for generating and handling SNMP traps, a version of the netstat command which uses SNMP, and a Tk/Perl mib browser. This package contains the snmpd and snmptrapd daemons, documentation, etc.

You will probably also want to install the net-snmp-utils package, which contains NET-SNMP utilities.

Building option: --without tcp_wrappers : disable tcp_wrappers support

15. 패킷 포워더

기본적으로 Fedora 에서는 IP forwarding 기능이 disable 되어 있으므로, 라우터 실습을 위하여 다음과 같이 enable 시킨다. 35 [root@myServer ~ ] # sysctl -w net.ipv4.ip_forward=1

이 설정은 재시동이나 network service 가 restart 될 때 사라진다. 따라서, 영속적으로 설정할 경우에는 /etc/sysctl.conf 파일의 내용 중에서 다음과 같이 수정하고 적용한다.

#vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

# sysctl –p /etc/sysctl.conf

[필요시] iptables provides routing and forwarding policies that can be implemented to prevent abnormal usage of network resources. The FORWARD chain allows an administrator to control where packets can be routed within a LAN. For example, to allow forwarding for the entire LAN (assuming the firewall/gateway is assigned an internal IP address on eth1), use the following rules:

[root@ ~ ] # iptables -A FORWARD -i eth1 -j ACCEPT

[root@ ~ ] # iptables -A FORWARD -o eth1 -j ACCEPT

This rule gives systems behind the firewall/gateway access to the internal network. The gateway routes packets from one LAN node to its intended destination node, passing all packets through its eth1 device.

36 16. 라우팅 패키지 설치

[참고]다음과 같은 무료 라우팅 패키지가 있음.

Click modular router · CoovaAP · Fdgw · · FREESCO · FreeWRT · HyperWRT · LEAF Project · OpenWrt · PacketProtector · The · Gargoyle · pfSense · Quagga · · · WiFi-Box · X-Wrt · XORP ·

(유료) DD-WRT · Ipcop · ·

16.1 IP FORWARDING 기능 사전 확인 It is possible to check the ip_forwarding status under the Quagga router: In this case the IP forwarding is activated.

#show ip forwarding

IP forwarding is on

#

만약 off 되어 있으면 활성화 시켜야 함.

#echo "1" > /proc/sys/net/ipv4/ip_forward

The command above will add the "1" value inside the /proc/sys/net/ipv4/ip_forward file and thus activate the IP forwarding. If you want to keep the IP forwarding after a Linux reboot:

#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

16.2 Quagga 패키지 설치

(1) 설치

#yum –y install quagga

(2) 설정파일 편집 (/etc/quagga/*.conf files)

You must create a configuration file (even if it is empty) each time you activate a Quagga daemon. Each daemon is associated with a specific file name:

37 zebra: zebra.conf bgpd: bgpd.conf ospfd: ospfd.conf ospf6d: ospf6d.conf ripd: ripd.conf ripngd: ripngd.conf

만약 위와 같은 파일이 없다면 copy the sample config files as follows: In our example, as we activated the zebra and ripd daemons; we need to create the zebra.conf and ripd.conf files.

#cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf #cp /usr/share/doc/quagga/examples/ripd.conf.sample /etc/quagga/ripd.conf

(필요시) give user and group ownership to respectively quagga and quaggavty to the files inside the /etc/quagga directory:

#chown quagga.quaggavty /etc/quagga/*.conf #chmod 640 /etc/quagga/*.conf

(3) Restart the Quagga service:

#/etc/init.d/quagga restart

(4) 텔넷으로 Zebra 데몬에 접속하여 기본 설정한다.

[root@SEOUL/root]# telnet localhost zebra Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.

Hello, this is Quagga (version 0.99.11). Copyright 1996-2005 Kunihiro Ishiguro, et al.

User Access Verification

Password: zebra Zebra> enable  또는 en Zebra# conf t Zebra(config)# hostname Seoul_Zebra Seoul_Zebra (config)# interface eth0 Seoul_Zebra (config-if)# ? Negate bandwidth description end exit help ip list multicast no quit shutdown write Seoul_Zebra (config-if)# ip address 200.0.1.1/24 Seoul_Zebra (config-if)# exit ---- 2 번째 인터페이스 설정 Seoul_Zebra (config)# interface eth1 Seoul_Zebra (config-if)# ip address 200.0.251.1/24 Seoul_Zebra (config-if)# exit Seoul_Zebra (config)# exit Seoul_Zebra# show run Current configuration: ! hostname Seoul_Zebra password zebra 38 log stdout ! interface lo ! interface brg0 ! interface eth0 ip address 200.0.1.1/24 ! interface eth1 ip address 200.0.251.1/24 ! line vty ! end Seoul_Zebra# copy run start Seoul_Zebra# exit Connection closed by foreign host. [root@SEOUL/root]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.1.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

0.0.0.0 10.1.4.2 0.0.0.0 UG 0 0 0 eth0

39

[참고 ] 1. QUAGGA DAEMONS: You have to activate the Quagga daemons matching the routing protocols you want to set on your router. zebra: Interface declaration and static routing bgpd: BGP routing protocol ospfd: OSPF routing protocol ospf6d: OSPF IPv6 routing protocol ripd: RIP v2 routing protocol ripngd: RIP Ipv6 routing protocol In the example below, the zebra and IPv4 OSPF daemon have been activated.

#vi /etc/quagga/daemons

zebra=yes bgpd=no ospfd=no

ospf6d=no ripd=yes ripngd=no

#

#/etc/init.d/quagga restart

Stopping Quagga daemons (prio:0): ospfd zebra (bgpd) (ripd) (ripngd) (ospf6d) (isisd). Removing all routes made by zebra. Nothing to flush. Loading capability module if not yet done. Starting Quagga daemons (prio:10): zebra ripd.

You can check the Quagga daemons status:

#ps -ef | grep quagga

UID PID PPID C STIME TTY TIME CMD

quagga 4632 1 0 22:25 ? 00:00:00 /usr/lib/quagga/ripd --daemon

quagga 4636 1 0 22:25 ? 00:00:00 /usr/lib/quagga/zebra --daemon

If a Quagga daemon doesn't stop properly, you can kill it manually and start the quagga service:

#kill -9 "UID number"

#/etc/init.d/quagga start

40

2601 zebra: 2602 ripd: 2603 ripng: 2604 ospfd: 2605 bgpd: 2606 ospf6d:

41 17. RIP 기본실험 : 한 개의 라우터로 구성된 망에서의 기본실험

(1) 망 구성

200.0.1.0 망과 200.0.251.0 망을 연결할 수 있도록 다음과 같이 Quagga 가 탑재된 라우터를 설정하도록 한다. 서울 컴퓨터는 200.0.1.10 그리고 경부선망에 있는 금강 휴게소 컴퓨터는 200.0.251.10 의 IP 주소를 가진다. 그리고 각 PC 에는 e- watch 를 설치하도록 한다.

서울컴 .10

서울망 200.0.1.0

서울 라우터 .1 .1 금강 휴게소 컴퓨터

경부선망 200.0.251.0 200.0.251.254

한 개의 라우터로 구성된 망

(2) Quagga RIP 데몬 설정

실험에 앞서, Zebra RIP 데몬 설정 방법들을 먼저 알아본다. 이 방법을 사용하면, 인터페이스 및 네트워크 설정을 command line 형태로 입력할 수 있고, 입력된 내용을 즉시 확인할 수도 있다. 또한, 상용 라우터에서 사용하는 명령어와 매우 유사하고, 명령어의 형식이나 파라미터들을 도움말을 이용하여 사용할 수 있는 장점이 있다. 이미 자신의 리눅스 시스템에 Quagga 의 Zebra 데몬에 대한 설정이 되어 있다면, (3)항의 RIP 데몬설정과정으로 이동한다.

① eth0 인터페이스에 대한 IP주소를 다음과 같이 할당하기 위하여, 다음과 같이 실행하여 어떠한 명령어들이 가능하지 알아 본 다음 해당 IP주소를 할당하도록 한다.

[root@ SEOUL/root]# telnet 127.0.0.1 2601 Entering character mode Escape character is '^]'. Hello. this is zebra (version 0.91a) Copyright 1996-2001 Kunihiro Ishiguro. User Access Verification Password: zebra Seoul_Zebra>en Seoul_Zebra (config)# interface eth0 Seoul_Zebra (config-if)# ? Negate bandwidth description end exit help ip list multicast no quit shutdown write Seoul_Zebra (config-if)# ip address 200.0.1.1/24 Seoul_Zebra (config-if)#exit Seoul_Zebra (config)#exit Seoul_Zebra #

② 이 또 다른 인터페이스인 eth1의 IP 주소도 (11)과 같은 방법으로 200.0.251.1/24를 설정하도록 한다. . 42

Seoul_Zebra# conf t Seoul_Zebra(config)# int eth1 Seoul_Zebra(config-if)# ip address 200.0.251.1/24 Seoul_Zebra(config-if)#exit Seoul_Zebra(config)#exit Seoul_Zebra#

③ sh run(show running-config)를 입력하면, 지금까지 설정한 내용을 확인할 수 있다.

Seoul_Zebra# sh run Current configuration: ! hostname Seoul_Zebra password zebra log stdout ! interface lo ! interface brg0 ! interface eth0 ip address 200.0.1.1/24 ! interface eth1 ip address 200.0.251.1/24 ! line vty ! end Seoul_Zebra# copy run start Seoul_Zebra# exit Connection closed by foreign host [root@ SEOUL/root]#_

④ 지금까지 설정한 내용인 running-config를 startup-config로 저장하기 위하여, copy run start라는 명령어를 실행한 다음, exit명령에 의해 zebra에서 리눅스로 복귀한다.

(3) RIP 데몬 설정

① RIP 데몬의 설정을 위하여, telnet으로 rip 데몬에 접속한다. RIP데몬의 포트번호는 2602번이다. 그리고, 어떠한 명령어 들이 지원되는지 „?‟로 확인한다.

[root@ SEOUL/root]#telnet 127.0.0.1 2602 Entering character mode Escape character is '^]'. Hello. this is zebra (version 0.91a) Copyright 1996-2001 Kunihiro Ishiguro. User Access Verification Password:zebra ripd> ? enable exit help list quit show terminal who ripd> show % Command Incomplete ripd> show ? history ip memory version ripd> show ip % Command Incomplete ripd>show ip ? prefix-list protocols rip ripd> show ip rip 43 Codes: R – RIP, C – connected, O – OSPF, B - BGP Network Next Hop Metric From Time ripd>

② 다음과 같이 enable하여, RIP데몬의 이름과 network을 설정한다.1

ripd>en ripd# ? clear configure copy debug disable end exit help list no quit show terminal who write ripd# conf t ripd(config)#? access-list banner debug enable end exit help hostname interface ip key line list log no password quit route-map router service show write ripd(config)#hostname Seoul_RIP Seoul_RIP(config)#router ? rip zebra Seoul_RIP (config)#router rip Seoul_RIP (config-router)# ? default-information default-metric distribute-list end exit help list neighbor network no offset-list passive-interface quit redistribute route timers version write Seoul_RIP (config-router)# network 200.0.1.0/24 // 또는 eth0 Seoul_RIP (config-router)# network 200.0.251.0/24 //또는 eth1 Seoul_RIP (config-router)# redistribute connected Seoul_RIP (config-router)# redistribute kernel Seoul_RIP(config-router)#

③ Ctrl + Z를 입력하거나 또는 exit 명령어를 반복 사용하여 ripd의 초기 프롬프트 단계로 이동하고, 여기서, 설정한 내용 을 확인하기 위해서는 sh run을 입력하면, 지금까지 설정한 내용을 확인할 수 있다. 혹시, redistribute connected 항목 이 없다면, 설정하도록 한다. 그리고, 지금까지 설정된 내용인 running-config를 startup-config로 저장하기 위하여, copy 명령을 사용한다.

Seoul_RIP# show ? debugging history ip memory running-config startup-config version Seoul_RIP# sh run Current configuration: ! hostname Seoul_RIP password zebra log stdout ! interface lo ! interface brg0 ! interface eth0 ip rip send version 2 ip rip receive version 2 ! interface eth1 ip rip send version 2 ip rip receive version 2 ! router rip timer basic 10 60 40 redistribute connected network 200.0.1.0/24 network 200.0.251.0/24 ! line vty

1 프로토콜을 설정하는 방법은 http://www.cisco.com/pcgi-bin/Support/PSP/index.pl?i=Technologies#IP-Routing_Protocols을 참고하도록 한다. 44 ! end Seoul_RIP# copy run start Seoul_RIP# exit Connection closed by foreign host [root@ SEOUL/root]#

(4) RIP 데몬의 실행

STEP 1 부팅시 zebrad, ripd 등이 자동 실행된다. 실행되고 있는지 다음과 같이 확인한다.

[root@ SEOUL/root]# ps –aux

만약 자동실행이 안되었다면 zebrad, ripd 를 실행시켜야 한다.다음과 같이 RIP 데몬을 실행시킨다.

[root@ SEOUL/root]# ripd –d

STEP 2 각 인터페이스의 설정값들을 확인하기 위하여, 다음과 같은 명령어를 수행해 보자.

[root@ SEOUL/root]#ifconfig eth0

eth0 Link encap:Ethernet Hwaddr 00:01:03:45:EE:D7

inet addr:200.0.1.1 Bcast:200.0.1.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

[root@ SEOUL/root]#

수행결과, 이더넷 물리주소와 IP 주소 및 서브넷 마스크 그리고 MTU 등을 확인할 수 있다. eth1 에 대해서도 같은 방법으로 확인한다.

STEP 3 라우팅테이블 확인 : 다음과 같이 세가지 방법이 모두 가능하다.

① 리눅스에서의 확인 방법: 다음과 같은 route –n 명령을 입력하여, 각 인터페이스에 대한 활성화 상태와 경로정보를 확인할 수 있다.

[root@ SEOUL/root]#route –n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface

200.0.251.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

200.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 [root@ SEOUL/root]#

이 수행결과에서, 이 “서울 라우터”는 두 개의 이더넷 인터페이스 (eth0 와 eth1)을 가지며, 각각은 200.0.1.0 망과 200.0.251.0 망에 직접 연결되어 있음을 각 destination 에 대한 gateway 값 0.0.0.0 과 Metric = 0 값, Flag = U 로 알 수 있다2.

② Zebra에서의 라우팅테이블 확인 방법: 다음과 같이, 서울라우터의 zebra에서도 경로정보를 확인할 수 있다.

2 IP 주소 0.0.0.0은 자기 자신임. 45 [root@ SEOUL/root]# telnet 127.0.0.1 2601 Entering character mode Escape character is '^]'. Hello. this is zebra (version 0.91a) Copyright 1996-2001 Kunihiro Ishiguro. User Access Verification Password: zebra Seoul_Zebra>en Password: zebra Seoul_Zebra# sh ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, B - BGP, > - selected route, * - FIB route

C>* 127.0.0.0/8 is directly connected, lo R 200.0.1.0/24 [110/10] is directly connected, eth0, 00:14:31 C>* 200.0.1.0/24 is directly connected, eth0 R 200.0.251.0/24 [110/10] is directly connected, eth1, 00:14:31 C>* 200.0.251.0/24 is directly connected, eth1 Seoul_Zebra# exit [root@ SEOUL/root]#

이 수행결과에서, 이 “서울라우터”는 두 개의 이더넷 인터페이스 (eth0 와 eth1)을 가지며, 각각은 200.0.1.0 망과 200.0.251.0 망에 직접 연결되어 있음을 알 수 있다. 여기서, C 는 직접 연결된 망임을 나타내며, R 은 RIP 에 의해 습득된 망임을 표시한다.

③ RIP데몬에서의 라우팅테이블 확인 방법: 다음과 같이, 서울라우터의 RIP데몬에서도 경로정보를 확인할 수 있다.

[root@ SEOUL/root]#telnet 200.0.1.1 2602 Entering character mode Escape character is '^]'. Hello. this is zebra (version 0.91a) Copyright 1996-2001 Kunihiro Ishiguro. User Access Verification Password:zebra Seoul_RIP> en Seoul_RIP# show ip rip Codes: R – RIP, C – connected, O – OSPF, B - BGP

Network Next Hop Metric From Time C 200.0.1.0/24 1 C 200.0.251.0/24 1

46 18. OSPF 기본실험

여기에서는 OSPF 를 운용할 수 있는 가장 기본적인 환경구축을 수행한 다음, 주기적으로 송신되는 Hello 메시지에 대해서 알아보도록 한다3. 실험에서 사용하는 망의 구성은 다음과 같다.

Area 1000 ??? .10 ??? 200.0.1.0

?? ??? seoul .1 .1 ?? ??? ???

???? .10 200.0.251.0

OSPF 라우터 실험환경

STEP 1 서울 라우터에 있는 2 개의 인터페이스들에 대한 IP 주소들을 할당한다. 이를 위하여, Zebra 의 구성 파일인 /etc/zebra.conf 파일이 다음과 같이 설정되도록 한다4.

File "/etc/zebra.conf" 260 bytes read. Press F1 to toggle help. ! ! Zebra configuration saved from vty ! 1998/02/01 21:30:32 ! hostname Seoul_Zebra password zebra enable password zebra

! interface lo ! interface brg0 ! interface eth0 ip address 200.0.1.1/24 ! interface eth1 ip address 200.0.251.1/24 ! line vty ! << EOF >>

3 만약 RIP가 설정이 되어 있는 라우터라면 rip 설정은 지워야 ospf만의 특징을 알아볼 수 있다. RIP의 설정을 지우는 방법은 1) RIP 데몬에 접속(telnet 127.0.0.1 2602)하여, 2) enable 모드 접속(en) 한 다음, 3) 터미널 설정모드로 접속(conf t)하여, 4) RIP 라우터 설정 지우 기(no router rip)의 순서를 거치면 된다. 4 Zebra 데몬을 이용한 인터페이스 설정은 앞의 RIP 설정과정에서 언급하였으며, 내용은 동일하다. 47

zebra.conf 파일의 내용 STEP 2 OSPF 데몬에 접속하여, OSPF 관련 사항을 설정한다. RIP 데몬에 접속하는 방법과 유사하게, Zebra 의 ospf 데몬 설정포트 번호인 2604 번에 텔넷으로 접속한다. Ospfd 의 설정 예는 아래와 같으며, 각 인터페이스의 area 는 모두 1000 으로 설정한다.

[root@Seoul_Router root]# telnet 127.0.0.1 2604 Passwd : zebra ospfd> en ospfd# conf t ospfd(config)# hostname Seoul_OSPF Seoul_OSPF(config)# router ospf Seoul_OSPF(config-router)# ? area auto-cost compatible default-information default-metric distribute-list end exit help list neighbor network no ospf passive-interface quit redistribute refresh router-id timers write Seoul_OSPF(config-router)# network 200.0.1.0/24 area 1000 Seoul_OSPF(config-router)# network 200.0.251.0/24 area 1000 Seoul_OSPF(config-router)# Seoul_OSPF# sh running-config

Current configuration: ! hostname Seoul_OSPF password zebra log stdout ! interface lo ! interface brg0 ! interface eth0 ! interface eth1 ! router ospf network 200.0.1.0/24 area 1000 network 200.0.251.0/24 area 1000 ! line vty ! end

Seoul_OSPF# copy run start Seoul_OSPF# exit Connection closed by foreign host

[root@Seoul_Router root]#_

ospf 데몬의 설정

STEP 3 생성된 서울 라우터의 라우팅 테이블의 내용을 확인한다. 라우팅 테이블을 확인할 수 있는 방법은 여러 가지 방법이 있는데, 여기서는 zebra 데몬에서 "sh ip route "명령어로 확인하는 방법과 ospf 데몬에서 "sh ip ospf route" 명령어로 확인하는 두 가지 방법을 각각 사용해 본다. 물론 리눅스의 route –n 을 이용하여도 라우팅 테이블을 확인할 수 있다.5

④ zebra 데몬에서 확인하는 방법 : 다음은 zebra 데몬에서 확인한 라우팅 테이블의 내용이다. 여기서, C는 이 라우터에 직접 연결된 망을 표시하며, O는 ospf에 의해서 습득된 망을 나타낸다.

Seoul_Zebra# sh ip route

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, B - BGP, > - selected route, * - FIB route

C>* 127.0.0.0 /8 is directly connected, lo O 200.0.1.0 /24 [110/10] is directly connected, eth0, 00:02:44

5 Zebra 데몬에서 라우팅 테이블을 확인하면 어떤 라우팅 프로토콜에 의해서 정보가 습득되었는지 알 수 있다. 48 C>* 200.0.1.0 /24 is directly connected, eth0 O 200.0.251.0/24 [110/10] is directly connected, eth1, 00:02:34 C>* 200.0.251.0/24 is directly connected, eth1

zebra 데몬에서 보는 라우팅 테이블

여기서, C 는 직접 연결된 망임을 나타내며, O 는 ospf 에 의해 습득된 망임을 표시한다.

⑤ Ospf 데몬에서 에서 확인하는 방법 : ospf 데몬에서도 라우팅 테이블을 다음과 같이 확인할 수 있다.

Seoul_OSPF# sh ip ospf route ======OSPF network routing table ======N 200.0.1.0/24 [10] area: 0.0.3.232 (=1000) directly attached to eth0

N 200.0.251.0/24 [10] area: 0.0.3.232 (=1000) directly attached to eth1 ======OSPF router routing table ======OSPF external routing table ======

ospf 데몬에서 보는 라우팅 테이블

이 방법으로 확인한 라우팅 테이블에는 ospf 에 의해 습득된 망에 대한 정보(Zebra 데몬으로 알 수 있었던 라우팅 정보에서 „O‟플래그 항목에 해당되는 정보)만을 표시한다. 이 예에서, 현재 이 서울 라우터는 200.0.1.0 과 200.0.251.0 등의 직접 연결된 2 개의 망에 대한 라우팅 정보를 가지고 있음을 알 수 있다.

STEP 4 위와 같이, 라우팅 테이블이 확인이 된다면, 서울망과 경부선망에 e-watch 를 설치하여, 이 서울 라우터가 전송하고 있을 Hello 메시지를 수집하여 분석한다. 다음의 그림들은 각각 서울망과 경부선망에서 전송되는, 즉, 200.0.1.1 인터페이스와 200.0.251.1 인터페이스로 전송되는 Hello 메시지들이다. 이 서울라우터는 up 되어 40 초 이후에는 자신의 인터페이스 IP 주소들(200.0.1.1 과 200.0.251.1)을 DR 항목에 실어 알려주고 있음을 알 수 있다.

49

STEP 5 수집된 서울 라우터가 전송한 Hello 패킷들의 내용을 분석하면, 다음과 같이 Hello 패킷들이 송신되고 있음을 알 수 있다.

Seoul Router 서울망 seoul 경부선망 200.0.1.0 200.0.251.0 Area ID = 0.0.3.232 = 1000 200.0.0..1 200.0.251.1 Area ID = 0.0.3.232 = 1000 Router ID = 200.0.251.1 Router ID = 200.0.251.1 Hello Interval =10sec Hello Interval =10sec Router Dead Interval = 40sec Router Dead Interval = 40sec up up No Designated Router No Designated Router No BDR 10sec Hello Hello No BDR No Neighbor No Neighbor Hello Hello

Hello Hello

Hello Hello 40초 이후에 DR이 됨 DR = 200.0.251.1 DR = 200.0.1.1

OSPF 라우터가 송신하는 Hello 패킷들의 예

이러한 패킷들로부터 다음과 같은 사항들을 알 수 있다.

서울 라우터의 eth0와 eth1 모두는 10초 간격으로 Hello 패킷을 연속 전송하고 있음을 알 수 있다. 이 Hello 패킷에는 이 라우터가 속해있는 area에 대한 정보, 라우터 ID 그리고 Hello 패킷 전송의 시간간격 등에 대한 정보가 실려서 전송되고 있다는 것을 확인할 수 있다. 특히, Hello Interval 정보로부터 10초마다 Hello 패킷들이 실제로 송신되고 있음을 알 수 있다. 또한, 이 라우터의 인터페이스는 각각 서울망과 경부선망에 접속되어 200.0.1.1과 200.0.251.1주소를 가지는데, 이 주소들 중에서, 번호가 높은 200.0.251.1주소가 이 라우터를 대표하는 IP 주소인 Router ID로 사용되어, 두개의 인터페이스로 각각 송신되는 Hello 패킷에 동일하게 사용됨을 알 수 있다. 서울 라우터 자신만 있기 때문에, 자신이 Designated Router이며, BDR과 Neighbor는 없음을 알린다. DR주소는 이 라우터의 각 인터페이스들의 주소이다. 결과적으로, 서울 라우터는 자신의 두 인터페이스를 통해서 “나는 200.0.251.1번인 라우터로 내가 속한 area는 0.0.3.252(1000)번 이며, 나 외에는 없다.” 라는 사실을 10초 간격으로 다른 라우터들에게 알리고 있음을 알 수 있다. 50 19. BGP 실험 (IBGP 실험 I)

STEP 1 다음과 같이, 동일한 AS 10 에 속한 3 대의 IBGP 라우터를 구성한다.

??? ????? 10.0.0.0 AS 10

.1 .1

???? (12.0.0.0)

????? .2 ?????

.3 .2 .3 ???? .2 ??? (23.0.0.0) ??? 30.0.0.0 20.0.0.0

STEP 2 한국라우터, 일본 라우터, 중국라우터의 설정은 아래와 같이 한다. 먼저, bgpd 데몬에 접속하기 위해서는 아래와 같은 명령어를 사용한다6.

Korea# telnet 127.0.0.1 2605

RIP 나 ospf 의 설정시 사용한 방법을 사용하여, 각 BGP 라우터들을 설정한다. 설정결과는 다음과 같아야 한다.

Korea# sh run Current configuration : ! hostname Korea password zebra log stdout ! router bgp 10  AS=10 설정 network 12.0.0.0/24 한일 링크 망 설정 network 10.0.0.0/24 <-- 서울망 설정 neighbor 12.0.0.2 remote-AS 10 이웃설정 :일본 라우터의 한일링크 인터페이스 ! line vty ! end

Japan# sh run Current configuration : ! hostname Japan password zebra log stdout

6 Bgpd 데몬의 설정 내용은 /etc/bgpd.conf 파일에 저장이 된다. 2605번은 bgpd 데몬에 접속하는 포트번호이다. 51 ! router bgp 10  AS=10 설정 network 12.0.0.0/24 한일 링크 망 설정 network 23.0.0.0/24  중일 링크 망 설정 network 20.0.0.0/24 일본망 설정 neighbor 12.0.0.1 remote-AS 10  이웃설정: 한국라우터 neighbor 23.0.0.3 remote-AS 10  이웃설정: 중국라우터 ! line vty ! end

China# sh run Current configuration : ! hostname China password zebra log stdout ! router bgp 10 network 23.0.0.0/24  일중 링크 망 설정 network 30.0.0.0/24 (중국망 설정) neighbor 23.0.0.2 remote-AS 10  이웃설정 : 일본 라우터의 일중간 인터페이스 ! line vty ! end

[TIP] BGP 에서는 peer 간 연결시 TCP 가 사용되므로 이웃을 설정할 때 IP 주소를 정확히 설정하여야 한다. 한국과 중국라우터에서는 이웃이 일본 라우터 밖에 없지만 일본 라우터의 경우 한국라우터와 중국라우터가 모두 이웃이 될 수 있으므로 2 개의 이웃을 가지고 있는 차이점도 알고 있어야 한다. [TIP] bgpd 데몬에 접속하여 “router bgp 10”를 적용하는 도중 다음과 같은 오류가 발생하는 경우가 있다.

BGP is already running ; AS is 7675

위와 같은 오류 메시지를 보았다면 이미 BGP 가 AS 7675 번으로 작동하고 있다고 알려주고 있으므로 AS 7675 로 동작하고 있는 BGP 를 중지시키고 새로운 AS 로 BGP 를 가동해야 한다.

Korea(config)# no router bgp 7675 Korea(config)# router bgp 10

위의 2 가지의 명령어를 이용하여 이미 작동하던 BGP 를 중지시키고 새로운 AS10 에 속한 BGP 를 가동할 수 있다. 이 경우, route-refresh 메시지가 송신된다.

[TIP] BGP 의 설정을 변경하면 이 설정을 적용될 수 있도록 아래와 같은 명령어를 반드시 사용하여야 한다.

Korea# clear ip bgp ? A.B.C.D BGP neighbor IP address to clear X:X::X:X BGP neighbor IPv6 address to clear * Clear all peers <1-65535> Clear peers with the AS number

Korea# clear ip bgp * Korea#

특정 이웃과의 세션만을 재 접속시키거나 모든 BGP 이웃과의 세션을 재 접속시킬 수 있는데, 특정 이웃과의 세션을 재 접속하기 위해서는 이웃의 IP 주소를 적어주면 되고 모든 이웃과의 세션을 재 접속하기 위해서는 *를 파라미터로 사용하면 된다.7 이때, route-refresh 메시지가 송신된다.

7 한국 라우터뿐만 아니라 일본 라우터, 중국 라우터에서도 동일한 작업을 해야만 한다. 52 STEP 3 BGP 를 동작시키면서 반드시 검사해야 할 사항은 이웃의 상태이다. TCP 연결을 사용하는 BGP 는 이웃과의 연결이 성립이 되어야만 BGP 정보를 주고받을 수 있기 때문이다. 예를 들어, 한국라우터의 이웃에 있는 라우터들의 상태는 다음과 같은 명령어를 사용하여 확인할 수 있다.

Korea# sh ip bgp neighbors BGP neighbor is 12.0.0.2, remote AS 10, internal link BGP version 4, remote router ID 20.0.0.2  일본 R BGP state = Established, up for 00:00:45 Last read 00:00:45, hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: Route refresh: advertised and received(old and new) Address family IPv4 Unicast: advertised and received Received 23 messages, 0 notifications, 0 in queue Sent 26 messages, 0 notifications, 0 in queue Route refresh request: received 0, sent 0 Minimum time between advertisement runs is 0 seconds …………………………(중략)

명령어의 결과를 확인하면 이웃에 대한 정보가 나타난다. 그 중에서 BGP state 라는 부분이 있는데 이 부분을 유의해야 한다. 이 상태가 Established 가 아닌 다른 상태라면 BGP 이웃간의 연결이 제대로 안된 것이므로 선의 연결 유무라든가, 설정내용을 확인하여야 한다. 또는, Step 2 에서 설정한 내용을 적용하도록 명령어를 정확히 입력했는지 확인하여야 한다.

STEP 4 위와 같이 설정을 마쳤다면, 결과를 확인해 보자. 결과를 확인하기 위해서는 bgpd 데몬에 접속하여 sh ip bgp 라는 명령어를 사용하면 bgp 라우팅 테이블을 볼 수 있다. 한국라우터의 bgpd 데몬에 접속하여 다음을 확인한다.

Korea# sh ip bgp BGP table version is 0, local router ID is 10.0.0.1 Status codes : s suppressed, d damped, h history, * valid, > best, I –internal Origin codes : I – IGP, e – EGP, ? – incomplete

Network Nexthop Metric LocPrf Weight Path * i12.0.0.0(한일) 12.0.0.2 (일본 R) 100 0 i *> (한일) 0.0.0.0 32768 i *>i23.0.0.0(일중) 12.0.0.2*(일본 R) 100 0 i *> 10.0.0.0(한국망) 0.0.0.0 32768 i *> i20.0.0.0(일본망) 12.0.0.2(일본 R) 100 0 i Total number of prefixed 4 Korea#

일본 라우터에서의 라우팅 테이블은 어떻게 되었는가 확인한다.

Japan# sh ip bgp BGP table version is 0, local router ID is 20.0.0.2 Status codes : s suppressed, d damped, h history, * valid, > best, I –internal Origin codes : I – IGP, e – EGP, ? – incomplete

Network Nexthop Metric LocPrf Weight Path * i12.0.0.0(한일) 12.0.0.1(한국 R) 100 0 i *> (한일) 0.0.0.0 32768 i * i23.0.0.0(일중) 23.0.0.3(중국 R) 100 0 i *> (일중) 0.0.0.0 32768 i *> i10.0.0.0(한국망) 12.0.0.1(한국 R) 100 0 i *> 20.0.0.0(일본망) 0.0.0.0(로컬) 32768 i *> i30.0.0.0(중국망) 23.0.0.3(중국 R) 100 0 i Total number of prefixes 5

중국라우터의 bgp 라우팅 테이블도 확인하여 보아라.

일본 라우터의 경우에는 한국망(200.0.1.0)과 중국망(202.0.1.0)에 대한 내용이 포함되어 있다. 하지만 한국라우터와 중국라우터의 경우에는 한국라우터에서는 중국망에 대한 정보가, 중국라우터에서는 한국망에 대한 정보가 나타나질 않는다. 이러한 이유는 무엇일까?

53 IBGP 는 서로 다른 AS 를 연결해주는 Transit AS 의 역할을 수행할 때 사용하게 된다. 따라서 한 AS 에 있는 IBGP 라우터(speaker8 )끼리는 직접 도달이 가능한 상태로 되어 있어야 한다. 즉, IBGP 라우터들간에는 full-mesh 로 연결되어 있어야 한다. 위와 같은 예에서는 하나의 AS 내에서, 한국과 중국라우터간에는 직접 연결된 상태가 아니므로 IBGP 라우터 간에는 한국라우터와 중국라우터가 서로 물리적으로 연결이 되어있거나 IGP (RIP,OSPF 등)를 사용하여 서로간에 도달이 가능한 상태로 되어야만 IBGP 가 정상적으로 작동하게 된다. 일본 라우터에서 bgp 라우팅 테이블을 확인하도록 한다. 그리고 한국라우터에서 확인한 라우팅 테이블와 어떠한 차이점 있는지 알아보자.

Japan# sh ip bgp BGP table version is 0, local router ID is 20.0.0.2 Status codes : s suppressed, d damped, h history, * valid, > best, I –internal Origin codes : I – IGP, e – EGP, ? – incomplete Network Next Hop Metric LocPrf Weight Path * i12.0.0.0(한일망) 12.0.0.1 (한국 R) 100 0 i *> (한일망) 0.0.0.0 32768 i * i23.0.0.0 (일중망) 23.0.0.3 (중국 R) 100 0 i *> (일중망) 0.0.0.0 32768 i *>i10.0.0.0 (서울망) 12.0.0.1(한국 R) 100 0 i *>i30.0.0.0 (중국망) 23.0.0.3(중국 R) 100 0 i *>20.0.0.0 (일본망) 0.0.0.0 32768 i Total number of prefixes 5

일본 라우터의 경우에는 한국라우터와 중국라우터와 모두 연결이 가능하므로 한국망과 중국망에 대한 정보를 알고 있다. 앞의 일본 라우터의 라우팅 테이블을 가지고 내용으로부터 다음 사항을 알 수 있다. 우선 Network 항목에는 일본 라우터가 알고 있는 그리고 알게 된 네트워크에 대한 정보가 나타나 있다. Network 앞에 있는 „*‟, „>‟, „i‟는 각각 valid, best, internal 을 의미한다. 여기서, best 라는 것은 예를 들어, 일본 라우터에서 12.0.0.0(한일)망에 대한 정보를 두 가지 가지고 있는데 하나는 12.0.0.1 을 거치는 것과 또 하나는 자기 자신을 통해서 연결할 수 있는 2 가지 경로 중에서 best 라는 것으로 자신을 거쳐서 가는 것으로 선택하였다9. 이처럼 여러 개의 경로가 있을 경우 그 중 하나를 선택하게 되며 선택된 경로는 best 라고 표시가 된다. 그리고, i 는 internal 이라는 의미이다. IBGP 를 운용하게 되면 Network 앞에 i 가 표시되게 된다. Path 항목에 표시된 i 는 Network 의 i 와는 다른 의미인데 Path 의 i 는 이 경로가 IGP 에 의해서 얻어짐을 나타낸다. 보통 BGP 의 network 명령어를 사용하는 경우(즉, 수동설정의 경우) 또는 IGP 를 BGP 로 재분배하는 경우에 해당된다.

STEP 5 리눅스상에서 “route –n”으로 라우팅 테이블의 내용을 아래와 같이 확인한다.

8 BGP가 운용되는 라우터를 BGP speaker라 한다. 9 왜 2가지 경로 중에서 한 가지가 결정이 되었는지는 후반부에 설명된다. 54 Korea# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 20.0.0.0 (일본망) 12.0.0.2(일본 R) 255.255.255.0 UG 0 0 0 eth1 23.0.0.0 (일중망) 12.0.0.2(일본 R) 255.255.255.0 UG 0 0 0 eth1 10.0.0.0 (한국망) 0.0.0.0 255.255.255.0 U 0 0 0 eth2 12.0.0.0 (한일망) 0.0.0.0 255.255.255.0 U 0 0 0 eth1

Japan# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 30.0.0.0 (중국망) 23.0.0.3(중국 R) 255.255.255.0 UG 0 0 0 eth2 23.0.0.0 (중일망) 0.0.0.0 255.255.255.0 U 0 0 0 eth2 10.0.0.0 (한국망) 12.0.0.1(한국 R) 255.255.255.0 UG 0 0 0 eth1 12.0.0.0(한일망) 0.0.0.0 255.255.255.0 U 0 0 0 eth1 20.0.0.0 (일본망) 0.0.0.0 255.255.255.0 U 0 0 0 eth0

China# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 30.0.0.0(중국망) 0.0.0.0 255.255.255.0 U 0 0 0 eth0 20.0.0.0 (일본망) 23.0.0.2(일본 R) 255.255.255.0 UG 0 0 0 eth1 23.0.0.0 (일중망) 0.0.0.0 255.255.255.0 U 0 0 0 eth1 12.0.0.0 (한일망) 23.0.0.2(일본 R) 255.255.255.0 UG 0 0 0 eth1

55