6.1
네트워킹 분야에서 자주 나오는 용어
¶ 패킷의 구조
* Destination
address
: 데이터가 전송되어야
할 마지막 목적지 주소를 의미한다
* Source address
: 데이터를 송신한
위치의 주소를 의미한다.
* Protocol
type
: 사용하는 프로토콜을
의미하는데, TCP/IP를 사용한다면 이에 대한 패킷코드가 있을 것이다.
* Variable-sized
data area
: 회선속도와 목적지의
시스템 전송속도가 일정하지 않을 때 데이터의 전송 율이 변하게 되는데 이때
데이터 크기가 변하게 된다. 이때 전송하고자 하는 데이터 외의 다른 어드레스나
프로토콜의 크기는 절대 변하지 않는다.
* Error check
sequence
: 오류를 체크하여
수정하기 위한 보호코드가 붙어 있는 셈이다. 즉, 수신 측에서 에러체크
코드를 체크하여 전송오류를 체크해서
에러가 났을 때의 상황에 맞게 재전송을 요구한다든가 오류를 자체 수정하는
방법으로 조치를 취한다.
¶ repeater
LAN의 상호연결에
사용되는 가장 간단한 장치이다. 리피터는 다른 통신망을 서로 연결시키
는데 이용되지 않는다. 리피터의 기능은
더 확장된 LAN을 형성하기 위하여 LAN segment들을 상호
접속하는 것에 제한된다. 그 목적은 신호를 받아서 그 신호를 재생하고 강하게
하는 것이다. 리피터가 이용될
때 그것은 같은 구조의 통신망에 연결해야 한다. 같은 프로토콜과
전송기술이 이용되어야 한다.
¶ bridge
서로 다른 전송프로토콜을
지원하는 network들을 상호 접속할 수 있다. 두 LAN간의 bridge
는 두 network모두로부터 패킷을 받아
목적지를 확인하고 그 패킷들을 필요한 LAN에 전송한다. bridge는 통신 량을
분할하고 LAN이 어떤 한 위상의 물리적 한계를 넘어 LAN을 확장될
수 있게 한다. 패킷들은
재 전송되기 전에 bridge 시스템에 저장되기 때문에 bridge는
store-and-forward 기법을 구현하고 있다.
패킷들을 적절히 전송시키기 위해서 bridge는 두 network에서
사용되는 주소체계를 인식하고 있어야 한다.
¶ router
패킷에게 송신노드로부터
중간 노드들을 거쳐 수신노드까지의 전송선로를 결정한다. 전송
선로상의 다음노드와 최종 수신 노드의
두 주소가 패킷에 첨부되어 함께 전송되어야 한다.
첫 번째 주소는 전송선로상의
노드마다 변하는 반면에 두 번 째 주소는 변하지 않는다.
router의 주요기능은
패킷을 보내야 할 다음 노드를 결정하는 것이다.
¶ gateway
완전히 다른
구조로 구축되는 network들을 상호 접속하는데 이용된다. gateway는 한
network에서 다른 network로 패킷을 전송하기
위한 주소와 프로토콜의 변환을 수행한다.
gateway는 network
상호 통신에서 가장 유연성을 제공한다. 즉, 여러 기관들이 그들의 LAN
을 하나로 결합하여 WAN으로 연결시킬
수 있는 방편을 제공한다.
¶ FDDI
Fiber Distributed
Data Interface, 100Mbps지원. 광케이블망으로 구성된 인터페이스로서
고속 LAN 환경 하에서 많이 사용한다.
광케이블을 이용하기 때문에 빠른 속도와 근거리에서 디지털 방식으로 통신이
가능하다. 기존의 동케이블보다 용량측면이나 속도측면에서 월등히
우수하다.
¶ ATM
Asynchoronous
Transfer Mode, 음성, 데이터, 화상과 동화상 같은 모든 미디어를 작은 고정크기의
cell(packet)로 나누어 전송하는 고속 패킷 교환방식을 말하며, 이 방식을 이용한
ATM 교환기가 많이 사용되고 있다.
6.2
Interface Enable
SUN Solaris 2.x
시스템을 구입하면 기본적으로 LAN에 접속되지 않고 운영될 수 있는 환경
을 구입처에서 설정해준다. 그리고 나면
시스템을 구입한 운영자는 LAN에 시스템을 접속해 인터넷과
통신할 수 있게 해야한다.
LAN은 FDDI(매제
접속방식에 따른 분류), Token-Ring(망구성에 따른 분류), ethernet(게이트웨이에서
터미널까지)등이 있는데 많은 LAN형태는 ethernet이므로 ethernet에 접속하는
것을 중심으로 설명한다. 그리고 또한
일반대학교 전산망을 기반으로 하여 설명을 전개하도
록 한다. T1급의 회선결합속도로
물려있긴 해도 초당 1.544Mbps 정도밖에 안되어 낮동안처럼 많은 사용자들이
발생할 경우 트래픽이 심해져서 패킷의 크기가 줄게되어 속도저하 현상
을 가져온다. 이러한 문제점을 해결하려면
고속의 회선기술도 중요하지만 전송프로토콜의 영향도
적잖이 미친다. 만약에 중간에 에러가 발생했을 때에 그 에러처리를 어떻게
하느냐 에 따라 재전송 요구를
할 수도 있으며, 자체 수정도 할 수 있을 것이다. 만약 에러처리를
재전송요구로서 처리한다면 트래픽은 더욱
심해질 것이다.
우선 운영자는
시스템에 ethernet interface card가 준비되어 있는지 확인한다. 하지만
SUN호환기종인 Workstation을 사용하는
경우에는 보드에 Network 칩셋(보통 Ethernet Chip 이라
함)이 내장되어 있으므로 상관없다. LAN에 HUB가 있다면 UTP port(10baseT)가,
Thin
cable (10base2)만
있다면 BNC port(둥근 형태의 포트)가, Thick Cable (10base5)만 있다면
AUI port가 card port에서 제공되어야
한다. 가장 많이 사용하는 10baseT의 연결부 생김새 는
다음과 같다.
시스템을 LAN에 접속한
후 운영자는 다음과 같이 2개의 logical interface가 시스템에 설정되어 있는지
확인을 해야만 한다. 방법은 다음과 같다. 이 때 사용하는 shell은 SUN shell
일 때 적용된다.
root# ifconfig
-a
lo0: flags=849 <UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
inet 127.0.0.1 netmask ff000000
le0: flags=863 <UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu
1500
inet 203.246.109.69 netmask ffffff00 broadcast 203.246.109.255
root#
|
위에서 lo0는 local
loopback이라는 것으로 시스템 자신을 의미하고, le0는 ethernet interface
card가 접속되어 있음을 의미한다. 운영자가 시스템을 ethernet에 막 접속했다면
le0의 UP이 UP이 아니고 DOWN이라고 표시되어 있을 수 있으며 inet, netmask,
broadcast address가 위와 다를 수 있다. 운영자는 우선 ethernet interface
card를 enable 시켜 주어야 하는데 그 방법은 간단하다. 그러나 우선 시스템에
공인된 IP address중 어떤 것을 할당할 것인지 그리고 network을 어떻게 subnetting해야
할지 설계해야 한다.
subnetting 하는 방법은
다음을 참고한다.
6.3
IP address subnetting
시스템이 속한
네트웍 환경에 따라 설정을 다르게 해야하는데, 여기에는 class 개념이 적용된다.
C class IP address인 203.246.109.0을 할당받았고, subnetting을 하지 않기로
했다면 다음과 같이 입력해주면 (시스템의 문제가 없다면) logical ethernet
interface는 enable
된다. 시스템의 IP address는 203.246.109.69를 할당하기로 결정하였다고 하자.
root# ifconfig
le0 203.246.109.69 netmask 255.255.255.0 broadcast 203.246.109.255 up
root# ifconfig
-a
lo0: flags=849 <UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
inet 127.0.0.1 netmask ff000000
le0: flags=863 <UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
inet 203.246.109.69 netmask ffff0000 broadcast 203.246.109.255
root#
|
logical ethernet interface
가 enable 되었는지 확인하는 확실한 방법은 ping 명령어를 입력했을 때 alive라는
응답이 나오면 된다.
root# ping
203.246.109.69
203.246.109.69 is alive
root#
|
라우터까지
통신가능상태 점검 서버시스템이 라우터를 통해 인터넷과 통신가능하려면 시스템에서
나온 데이터가 라우터까지 전달될 수 있어야 한다. 라우터가 서버시스템과 동일한
network address(203.246.109.0)에 접속되어 있고 그것의 IP address가 203.246.109.69라면
ping 시험을 하였을 때 결과가 alive가 나와야 한다.
root# ping
203.246.109.69
203.246.109.69 is alive
root#
|
만약 alive라는 명령어가
나오지 않으면 다음과 같이 상태를 검사한다
root# netstat
-nr
Routing Table:
Destination
Gateway Flags
Ref Use Interface
--------------------------------------------------------------------------------
127.0.0.1
127.0.0.1
UH 0 10020 lo0
203.246.109.0 203.246.109.69
U 4 1520
le0
root#
|
위와 같이 되어 있는데도
ping에서 alive 응답이 나오지 않으면 라우터의 접속이 잘못되어 있거나 LAN
cable 혹은 HUB의 문제일 수 있다.
ping 시험결과
alive라는 응답이 나오면 시스템접속은 거의 다 완료한 셈이다. 그러나 완전히
끝난 것은 아니다. 이를 응용하여 사용할 수 있는 서비스 접속이 이루어져야
한다. 이 부분은 다음에 계속 나오게 된다.
6.4
라우팅프로그램 Disable & Enable
서버시스템이
경우에 따라 라우터 역할을 하게 되는 경우가 있다. 그러나 서버시스템이 라우터역할을
하는 경우는 드물며, 권장하고 싶지 않다. 다음은 서버시스템이 라우터 역할을
하지 않은 경우에 라우팅프로그램을 Disable
하는 예이다. 굳이 서버시스템의 라우팅프로그램을 Disable해야하는 것은 아니지만
일반적인 상황에서는 라우팅프로그램이 불필요하며, Disable하는
것이 시스템성능에도 좋은 결과를 미친다.
Sun 시스템이
제공될 때 대개 라우팅프로그램이 Enable 되어 있다. 라우팅프로그램이
Enable된 상황은 다음과 같이 검사할 수
있다.
root# cd /etc/rc2.d
root# grep routed *
S69inet:# Run routed/router discovery only if we don't already have a default
S69inet:
# Machine is a router: turn on ip_forwarding, run
routed
S69inet:
if [ -f /usr/sbin/in.routed ]; then
S69inet:
/usr/sbin/in.routed -s
S69inet:
# run routed in space-saving mode.
S69inet:
elif [ -f /usr/sbin/in.routed ]; then
S69inet:
/usr/sbin/in.routed -q;
root#
|
라우팅프로그램의 설정은
vi editor등의 편집기로 들어가 다음과 같이 #을 이용하여 remark하면 된다.
root# cd /etc/rc2.d
root# grep routed *
S69inet:# Run routed/router discovery only if we don't already have a default
S69inet:
# Machine is a router: turn on ip_forwarding, run
routed
S69inet:
#if [ -f /usr/sbin/in.routed ]; then
S69inet:
# /usr/sbin/in.routed -s
S69inet:
# run routed in space-saving mode.
S69inet:
#elif [ -f /usr/sbin/in.routed ]; then
S69inet:
# /usr/sbin/in.routed -q;
root#
|
6.5
Enable Default Route
라우터 Setup에서
언급했지만 시스템이 인터넷상에 있는 모든 시스템을 어떻게 도달할지
알 수는 없다. 왜냐하면 목적지 주소를
가지고서 현재시점에서는 라우터에서 다음의 라우터 까지의
경로밖에 예측을 못하기 때문에 각각의 라우터의 네트워크 상태에 따라서 경로가
바
뀔 수 있다. 그래서
정확한 경로예측을 하기가 어렵다. 그런 경우 시스템은 자신이 모르는
시스템경로는 자기보다 많이 아는 시스템에게
던져주어 전달될 수 있도록 한다. 이 경우 자신보다 많이 아는 시스템으로의
경로를 default route라고 한다. 서버 시스템에서도 이 default
route를 enable 시켜주어야 한다. 그렇지 않으면 시스템과 같은 network address에
접속되어 있는 시스템밖에 도달하지 못한다.
대개 라우터의 IP address를 default route로 선정한다.
default route를 enable 시키는 방법은 다음과 같다.
root# route
add default 203.246.109.69
root# netstat -nr
Routing Table:
Destination Gateway
Flags Ref Use Interface
-----------------------------------------------------------------
127.0.0.1
127.0.0.1
UH 0 10020 lo0
203.246.109.0 203.246.109.69
U 4 1520 le0
default
203.246.109.1 UG
0
root#
|
라우터의 Setup이 제대로
되었다면 다음과 같이 할 경우 203.246.109.69 에 대한 ping 시험결과 응답이
alive가 나와야 한다.
root#
ping 203.246.109.69
203.246.109.69 is alive
root#
|
6.6
Domain Name Service
인터넷에는 수많은 시스템들이
접속되어 있으며, 각 시스템들마다 IP address와 간단한 이름을 지니고 있다.
사람들은 원하는 시스템에 접속하기 위해서는 전화번호와 같이 그 시스템 IP
address를 기억해야만 한다. 그런데 IP address는 전화번호보다 길어 외우기가
쉽지 않다. 그런데 시스템이름은 기억하기 쉽다. 따라서 시스템이름(domain
name)을 입력하면 그 것의 IP address를
알려주는 기능이 Domain Name Service이다. Solaris의 경우는
/etc/hosts라는 파일에 있는 도메인 서비스
라인을 참조하게 된다. 아래의 예는 개념적인 기술이다.
Domain Name
Service의 개념
1. 개념
system-name
host-name
system IP Address
2. 실례
comsys.sunchon.ac.kr comsys
203.246.109.69
|
pctop@comsys[/etc]
:2 # cat hosts
# Internet
host table
127.0.0.1
localhost
203.246.109.69
comsys.sunchon.ac.kr comsys loghost
202.30.44.11
sunchon
168.131.33.5
chonnam.chonnam.ac.kr chonnam
147.47.1.1
ns
|
domain name과 host의
이름이 결합하여 최종적인 system name을 만들게 되는데 sunchon.ac.kr은 sunchon
Network의 domain name이고 comsys.sunchon.ac.kr에서 comsys는 sunchon.ac.kr의
domain안에 있는 comsys host이다. 여기서 kr은 한국, ac는 대학, sunchon은
순천대, comsys는 comsys(통신시스템 연구실)을 의미한다. 그리고 이러한 domain
name을 서비스하는 서버를 DNS(Domain Name Server)라 부른다. 순천대학교의
DNS는 sunchon.sunchon.ac.kr로 보통 사용하고 있다. 하지만 comsys 서버가
더 많은 domain정보를 가지고 있거나 comsys 서버가 한국전산원(http://www.nca.or.kr)에
domain name service를 등록해 놓은 상태라면 comsys.sunchon.ac.kr을 DNS로
설정해 놓고 써도 무방하다. 그러므로 자신만의 DNS도 구축할 수 있다는 의미이다.
하지만 comsys가
sunchon network에서 dns가 아닌 경우 실제 dns를 이용하고자 할 때에는
/etc/nsswitch.conf를 수정해 주어야 한다.
아래에서는 수정할
부분을 제시한다
1 #
2 # /etc/nsswitch.files:
3 #
4 passwd: files
5 group: files
6 hosts: files dns
7 networks: files
8 protocols: files
9 rpc: files
10 ethers: files
11 netmasks: files
12 bootparams: files
13 publickey: files
|
위의 표에서 12행에
있는 마지막 files dns 가 수정한 부분이다. 만약 UNIX설치시에 NIS+, NIS,
DNS를 설정하는 부분에서 DNS를 정해주지 않으면 /etc/hosts 파일만 참조하여
name service를 받을 수밖에 없다. 그래서 12행의 부분을 위와 같이 바꾸어
주면 /etc/resolv.conf가 활성화되어 name service를 받을 수 있게 된다. 파일이
없다면 만들어 주어야 한다.
domain name
client는 comsys.sunchon.ac.kr과 같은 시스템이름이 입력되었을 때, 그것의
IP address를 알려달라고 요청하는 기능으로
Sun Solaris 2.x에서는 /etc/resolv.conf만 다음과 같이 수정해 놓으면 된다.
위에서 domain이 sunchon.ac.kr이라
설정되어 있는데, 이것을 해당업체의 domain name으로 입력해 놓으면 된다.
그리고 nameserver는
202.30.44.11로 되어 있는데, 해당업체에 name server가 있다면 그
name server의 IP address(순천대의 경우는
202.30.44.11)를 입력해 놓으면 되고, 없다면 다른
외부의 name server IP address를 입력해 놓으면 된다. comsys 서버의 경우는
168.131.33.5와 147.47.1.1까지 네임서버를
추가시켜 놓았다.
가령 abc사가 domain
name으로 abc.co.kr이고 abc사의 name server가 203.252.3.2라면 다음
과 같이 입력해 놓아도 된다.
# uncompress
sendmail.8.6.12h2.tar.Z
# tar
xvf sendmail.8.6.12h2.tar
|
압축이 풀리면 sendmail.8.6.12h2라는
디렉토리가 생기며 이곳에서 컴파일을 하면 된다.
# cd sendmail.8.6.12h2
6.8.1 Sendmail의
컴파일
먼저 컴파일할
시스템의 타입에 따라 Makefile을 선택하여 컴파일 한다. 여기서는 Sun시스
템의 Solaris2.4환경을 기준으로 설명한다.
# cd src
우선 몇 가지 수정을
한 후에 make를 수행한다
# cp sysexits.h /usr/ucbinclude/sysexits.h
위와 같이 파일을 복사하고,
Makefile.SunOS.5.x파일에서 다음과 같이 comment처리를 한다
#> ln -s /usr/ucbinclude/sysexits.h
==> #ln -s
/usr/ucbinclude/sysexits.h
${NROFF} -mandoc
aliases.5 > aliases.0
==> ${ NROFF}
-man aliases.5 > aliases.0
${NROFF} -mandoc
mailq.1 > mailq.0
==> ${ NROFF}
-man mailq.1 > mailq.0
${NROFF} -mandoc
newaliases.1 > newaliases.0
==> ${ NROFF}
-man newaliases.1 > newaliases.0
${NROFF} -mandoc
sendmail.8 > sendmail.0
==> ${ NROFF}
-man sendmail.8 > sendmail.0
위와 같이
변경한 후에 make를 실행한다. make 하는 방법은 아래와 같다
#> make -f
Makefile.SunOS.5.x
|
6.8.2 Sendmail의
Install
설치를 하기전에 시스템에서
제공하는 sendmail을 따로 보관한다.
# which sendmail
/usr/lib/sendmail
# cp /usr/lib/sendmail /usr/lib/sendmail.org
그리고 컴파일된 sendmail을 설치한다.
# cp ./sendmail /usr/lib/sendmail
# chmod 555 /usr/lib/sendmail
# chown root /usr/lib/sendmail
# chgrp sys /usr/lib/sendmail
6.8.3 Sendmail Configuration
sendmail.cf화일은 ftp://ftp.dacom.co.kr/pub/hangul/mail/cf
디렉토리에서 자신의 시스
템 타입에 맞는 파일을 가져온다.
여기서는 Solaris2.4를 사용하므로
sendmail.cf.sparc-sun-solaris2.3을 이용하여 설치해
보자.
우선 기존의 sendmail.cf 를 다른
이름으로 복사를 하고 설치한다.
# cp /etc/mail/sendmail
/etc/mail/sendmail.cf.org
# cp
sendmail.cf.sparc-sun-solaris2.3 /etc/mail/sendmail.cf
|
그리고 sendmail.cf화일의
내용을 자신의 시스템에 맞도록 수정을 한다. 특별히 수정을 하지 않아도 메일을
바로 사용할 수 있으나 몇 가지 기능을 추가 할 경우 아래와 같이 수정한다.
- 만일 도메인명으로
메일을 받으려면 다음과 같이 수정한다.
Cwlocalhost
===> Cwlocalhost
Cwsunchon.ac.kr
Cwabc.ac.kr
|
위와 같이 변경하면
현재의 호스트명으로 메일을 받을 수도 있고, sunchon.ac.kr, abc.ac.kr로도
메일을 받을 수 있다. 물론 도메인으로 메일을 받을 경우에는 네임서버에 MX
레코드에 등록이 되어 있어야 한다.
- 메일을 보낼때 자신의
호스트 네임이 아니라 다른 이름으로 보낼 경우에는 다음과 같이
수정한다.
DM ===> DMabc.ac.kr
위와 같이 하면 메일을
보낼때 id@abc.ac.kr이라는 송신자 주소로 메일이 발송된다.
6.8.4 Sendmail의
실행
sendmail구동은 루트권한으로
다음과 같이 실행하면 된다.
# /usr/lib/sendmail -bd -q1h
6.8.5 POP Server의
설치
Netscape, Eudora와
같은 프로그램을 통해 메일을 사용하기 위해서는 메일서버에 POP서버
가 설치되어 있어야한다. POP 서버라는
것은 서버에 자신의 아이디와 패스워드만 알면 텔넷 으로
로그인하지 않고서도 메일만 체크할 수 있는 기능을 갖고 있다. 그리고 설정에서
읽은 메일은 지울 수도 아니면
그대로 둘 수도 있다.
ftp://ftp.dacom.co.kr/pub/server/pop/qpop2.1.4-r3.tar.Z
를 다운로드 받는다.
다음과 같이 압축을
풀고 컴파일을 한다.
# uncompress
qpop2.1.4-r3.tar.Z
# tar
xvf qpop2.1.4-r3.tar
# cd
qpopper2.1.4
# make
solaris2 => 자신의 OS에 맞는 것을 선택한다.
|
# telnet localhost
110
# telnet
localhost 110
Trying
127.0.0.1
Connected
to localhost
Escape
character is '^]'.
+OK
QUALCOMM Pop server derived from UCB (version 2.1.4-R3) at
comsys.sunchon.ac.kr
starting.
|
위와 같이 연결이 되면 정상적으로
POP 서버가 동작하는 것이다.
|