리눅스 소규모 네트워크 활용

1. 환경
RedHat-LINUX 9.0 (server)
WindowXP professional (client)

2. server COM 요구 환경

랜카드가 두개 필요함.
(인터넷 연결용 - 이하 1번랜카드, 클라이언트 연결용 - 이하 2번랜카드)
사양 : 하드 5GB 이상

3. Red-Hat LINUX 설치

물론 전체 설치를 하게 되면 사용하기에 편리 하지만,
그만큼 용량을 많이 차지 한다.

GCC컴파일러는 따로 설치하기가 매우 불편하므로 운영체제 설치시 함께 설치 한다.
(GCC컴파일러가 있어야 다른 프로그램을 컴파일설치 할 수 있다.)

4. 1번 랜카드 인식하기

설치가 모두 끝났으면, 랜카드를 인식 시켜야 한다.
(사실,설치 시의 옵션으로 인식 시킬 수 있다.)

(1) #cat /boot/module-info-2.4.20.8 | more
명령으로 랜카드 모듈을 확인한다.

(2) 리눅스 시스템에 랜카드 모듈이 설치되어 있는지 확인 한다.
#cd /lib/module/2.4.20-8/kernel/drivers/net/
해당 디렉토리로 이동한 후 #ls 명령을 내리면 각 네트워크 모듈이 나타난다.
확장자가 .o로 되어있는 파일이 모두 각각 네트워크 모듈이다.

(3) 위의 디렉토리에서 랜카드모듈이 확인 되지 않았다면
네트워크 모듈을 커널 메모리에 추가 시킨다.

#modprobe <모듈명>
ex) 랜카드가 PCI방식인 경우
-> #modprobe 8139too

(4) #lsmod명령으로 랜카드모듈 설치여부를 확인 할 수 있다.

5. network 설정 조작으로 인터넷에 접속이 가능하다.

* #vi /etc/modules.conf
→ 컴퓨터의 기본 네트워크 정보가 들어있는 파일 (호스트이름,도메인이름,게이트웨이 주소등.)

-------------------------------------------------------
alias eth0 8139too
-------------------------------------------------------

위와같은 설정을 한줄 추가한다.
(커널 메모리에 적재된 8139too모듈을 eth0이라는 네트워크 인터페이스로 지정한다라는 의미이다.)


* #vi /etc/sysconfig/network
→ 리눅스 서버에 대한 기본 호스트 정보

-------------------------------------------------------
NETWORKING=yes
HOSTNAME = 자기이름.도메인이름.net(or com or etc...)
DOMAINNAME = 도메인이름.net (or com or etc...)
-------------------------------------------------------

네트워크서비스를 활성화 시킬것인지 여부를 묻는 NETWORKING은 반드시 yes가 되어야함.

* #vi /etc/sysconfig/network-scripts/ifcfg-eth0
→ 1번 랜카드에 대한 설창 파일 (IP주소를 비롯한 수치들)

(1) 고정IP사용경우
-------------------------------------------------------
BOOTPROTO = static
IPADDR = xxx.xxx.xxx.xxx
NETMASK = xxx.xxx.xxx.xxx
GATEWAY = xxx.xxx.xxx.xxx
NETWORK = xxx.xxx.xxx.xxx
BROADCAST = xxx.xxx.xxx.xxx
-------------------------------------------------------
로 모든 설정을 한다.

(2) 유동IP사용경우
-------------------------------------------------------
BOOTPROTO = dhcp
-------------------------------------------------------

* #vi /etc/hosts
→ 호스트이름을 IP주소로 변환하기 위한 정보
-------------------------------------------------------
127.0.0.1 localhost.localdomain localhost
-------------------------------------------------------
위의 내용은 반드시 입력되어야 한다.


* #vi /etc/host.conf
→ 도메인 이름과 관련하여 언떤 순서로 질의할지 결정

-------------------------------------------------------
order hosts,bind
-------------------------------------------------------
위의 순서로 지정해 놓으면 /etc/host 파일에서 도메인 이름을 확인하고
bind,즉 DNS에 질의 하게 된다.

* #vi /etc/resolv.conf
→ DNS 정보

-------------------------------------------------------
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
-------------------------------------------------------

첫번째 줄은 1차 DNS주소, 둘째줄은 2차 DNS주소가 된다.


6. 네트워크 재시작
#/etc/rc.d/init.d/network restart

명령으로 네트워크를 재시작 하면 서버는 인터넷에 접속가능하게 된다.

7. 2번 랜카드 인식

1번 랜카드를 인식시킨 방법과 동일하게 인식시킨다.

8. #vi /etc/sysconfig/network-scripts/ifcfg-eth0
위의 명령으로 2번 랜카드를 설정한다.

-------------------------------------------------------
BOOTPROTO = static
IPADDR = 192.168.0.1
NETMASK = 255.255.255.0
NETWORK = 192.168.0.0
BROADCAST = 192.168.0.255
ONBOOT = yes
-------------------------------------------------------

9. #vi /etc/sysconfig/network
위의 파일에서 리눅스 서버를 라우터처럼 패킷을 전송할 수 있는 상태로 만들기 위해
FORWORD_IPV4 의 내용을 반드시 yes로 해주어야 한다.

-------------------------------------------------------
NETWORKING=yes
HOSTNAME = 자기이름.도메인이름.net(or com or etc...)
DOMAINNAME = 도메인이름.net (or com or etc...)
FORWORD_IPV4 = yes
-------------------------------------------------------

10. * #vi /etc/hosts
에서 호스트이름으로 IP주소를 대신할 수 있도록 내용을 추가 해준다.

-------------------------------------------------------
127.0.0.1 localhost.localdomain localhost
192.168.0.1 JUNHAserver.MYHOME.NET JUNHAserver
192.168.0.2 JUNHAclient.MYHOME.NET JUNHAclient
--------------------------------------------------------


11. /etc/rc.d/init.d/network restart
네트워크를 재 시작 한다.


12. 마스커래이드

(1) #vi /etc/sysctl.conf
------------------------------------------------------------
net.ipv4.ip_forward=0 항목을 net.ipv4.ip_forward=1 로 바꾼다.
------------------------------------------------------------

(2) #/etc/rc.d/init.d/network restart
네트워크를 재 시작 한다.

(3) # modprobe ipt_MASQUERADE
위의 명령으로 IP매스커래이드를 사용할 수 있도록 한다.

(4) #iptables -L 이명령으로 패킷을 잘 보내고 받을 수 있는지 알아볼 수 있다.
#iptables -L -t nat 이 명령으로 매스커레이드 상태를 확인할 수 있다.

(5) #iptables -t nat -A POSTROUTING -o eth0 -j MAQUERADE

위의 iptables 명령으로 인터넷과 연결되어있는 eth0 에 ip 매스커레이드를 허가하면
192.168.0.1~192.168.0.255 의 컴퓨터가 모두 인터넷을 사용할 수 있게 된다.

(6) #iptables -L -t nat 명령으로

-------------------------------------------------------
MASQUERADE all -- anywhere anywhere
-------------------------------------------------------

위의 항목이 설정되어 있는지 확인한다.

13. 이제 까지의 내용을 리눅스가 부팅할 때마다 적용하기 위해
#vi /etc/rc.d/rc.local 파일에

--------------------------------------------------------
#iptables -t nat -A POSTROUTING -o eth0 -j MAQUERADE
--------------------------------------------------------

의 항목을 추가 한다.

14. 홈 네트워크 설정 끝!








FTP 서버 운영하기



FTP (File Transfer Protocol) 파일 전송을 위한 프로토콜입니다.



레드헷 리눅스 FTP서버에는 크게 3가지가 있다.



첫째, 예전부터 제공하던 WuFTP, 둘째 레드헷 리눅스 9.0에서 기본으로 제공하는 vsftpd 제공.

마지막으로 세번째에는 가장 다루기 쉽고 국내에 많이 배포된 ProFTP이다.



따라서 이번에는 ProFTP 를 설치할 것이다. 그 이유는 다루기 쉬우니까...^^



우선 ProFTP를 설치하기 전 현재 다른 FTP패키지가 설치 되어 있는지 확인한다.



# rpm -qa | grep ftpd // vsftpd 패키지 확인하기



일반적으로 "vsftpd-1.1.3-8"을 표시 할것이다. 아마 버전은 다를 수도 있겠죠..

이는 vsftpd가 설치되어 있는 것이다. 또 다른 ftp프로그램이 동시에 동작한다면 문제가 야기 될 수 있으므로 vsftpd패키지를 삭제합시다...



# rpm -e vsftpd // 패키지 삭제

# rpm -qa | grep ftpd // 삭제가 되었는지 다시 확인



이제부터 본격적으로 ProFTP서버를 구축해 봅시다.



1) ProFTP 인터넷에서 다운로드 하기

(http://www.proftpd.org) 접속 후 세로 이동 막대를 아래로 내리면

Mirrors and Downloads -> Download servers 클릭



2) 다운로드 경로는 상관없다. 내 경우 /root에 다운로드 후 설치 후 삭제예정



- 3가지 파일을 다운로드 (RPM설치 시)

proftpd-1.2.7-1.i386.rpm // 본체 패키지

proftpd-inetd-1.2.7-1.i386.rpm // inetd방식으로 운영하기 위한 패키지

proftpd-standalone-1.2.7-1.i386.rpm // standalone방식으로 운영하기 위한 패키지



- 1가지 다운로드 (소스컴파일 설치 시)

proftpd-1.2.8.tar.gz



3)

- (RPM 이용 설치방법) RPM 패키지를 설치한다.



# rpm -ivh proftpd-1.2.7-1.i386.rpm // proftp서버의 데몬설치

# rpm -ivh proftpd-standalone-1.2.7-1.i386.rpm // standalone방식으로 운영



- (소스컴파일 설치방법)



# tar xvfz proftpd-1.2.8.tar.gz -C

# cd /prproftpd-1.2.8

# ./configure --prefix=/usr/local/proftpd/ --enable-autoshadow --with-modules=mod_ratio

# make

# make install

(우선 압축을 풀어야 겠지..압축 푸는 방법은 ...

# tar zxvf install_flash_player_7_linux.tar.gz

(옵션 설명 : z : tar.gz일 경우 푸는 옵션, x : 압축을 푸는옵션 , v :파일의 내용을 출력,

f : tar파일을 사용할 때 반드시 사용))

4) 이제 설치가 완료 됐으니 환경설정에 도입!



주의사항) proftpd.conf 파일의 위치

rpm 설치시 /etc/proftpd.conf 에 위치

소스컴파일 설치시 /usr/local/proftpd/etc/proftpd.conf 에 위치



5) vi 에디터로 파일열기

# vi /etc/proftpd.conf (rpm설치 기준, 소스파일 설치 기준으로하면 경로만 변경되겠죠..^^)



ServerName ftp.cktek.uos.ac.kr // 원하는 이름으로

ServerType standalone // 서버데몬을 직접 운영하기 위해

DefaultServer on // 목적지를 알수 없는 접속이 들어왔을 때

기본설정으로 접속



Port 21 // 일반적으로 FTP서버포트는 21번

Umask 022 // 기본적으로 주어지는 디렉토리 및 파일의 퍼미션

(# 참고 : 022 => 디렉토리 755, 파일 644)



MaxInstance 30 // 최대 접속 가능한 사용자수



User nobody // root를 제외한 누구에게도 권한을 안주겠다

Group nobody



AllowOverwrite on // 새로 전송할 파일이 기존파일과 동일할 때

기존의 파일을 덮어쓸 수 있게 적용



참고 : 익명 FTP 환경 설정



// /home/ftp 디렉토리 생성



User ftp // 사용자 및 그룹설정

Group ftp

RequireValidShell off // 반드시 off로 안그러면 익명접속자는 로그인조차 못함



UserAlias anonymous ftp // 익명과 ftp라는 이름으로 로그인 가능하게 설정

Maxclients 10 // 동시 최대 접속자 수. 제한없음시 : none



// Anonymous 접속허가

AllowAll





// 익명 ftp서버에서는 /root디렉토리에 쓰기금지 설정

DenyAll





// /home/ftp/public 디렉토리 설정



Umask 070 // 익명 사용자가 파일업로드 권한부여

AllowStoreRestart on // 이어올리기 기능 설정

AllowRetrieveRestart on // "



// 익명 접속자에게 READ & STOR 허가설정

AllowAll





AllowAll





// 설정 마무리 짓기





SHIFT + ; wq // 저장 후 나오기

---------------------------------------------------------------------------------------

6)

# mkdir /home/ftp/public // 익명접속자를 위한 /home/ftp/public 디렉토리 생성

# ls -l /home/ftp // 소유권 및 권한 확인

# chown ftp.ftp /home/ftp/public // 소유권 변경

# chmod 775 /home/ftp/public // 권한변경

# ls -l /home.ftp // 소유권 및 권한 확인





7) 새로운 환경설정을 바탕으로 FTP서버 시작



# /etc/rc.d/init.d/proftpd restart





8) 리눅스가 부팅할 때 알아서 ftp서버를 자동시키기위해 ntsysv 이용하여 설정

# ntsysv



proftpd 서비스를 찾아 체크한 후 확인



FTP 서버 활용하기



1. 일반사용자의 FTP 접속 디렉토리 제한하기



# vi /etc/proftpd.conf



~

port 21



DefaultRoot ~ // 접속된 사용자의 디렉토리를 '~'(홈디렉토리)로 제한

~

shift+; wq // 저장 후 종료



# /etc/rc.d/init.d/proftpd restart / 설정 내용을 적용시키기 위해 재시작








아파치 웹서버 구동하기



아파치란 가장 잘나가는 웹서버 중의 하나이다. 그러면 웹서버란 무엇인가?

웹서비스를 하는 컴퓨터라고 할 수있겠지..^^



아파치 패키지 설치하기



1. 우선 아파치 패키지가 설치 되어있는지 확인한다. 왜냐면 기본적으로 설치되어 있기 때문이지..^^

# rpm -qa | grep httpd



httpd-2.0.40-21

redhat-config-httpd-1.0.1-18

httpd-manual-2.0.40-21



이상 3가지가 출력되면 아파치 패키지가 현재 설치되어있는 상태이므로 rpm설치과정은 스킵!



2. 만약 패키지가 설치되어 있지 않으면 httpd rpm 설치

-> 관련 rpm 은 /root에 다운로드 후 설치



# cd /root // RPM이 다운로드 된 루트 디렉토리로 이동

# rpm -Uhv *httpd* // HTTPD에관련 된 3가지 패키지를 동시에 설치하기



3. 아파치 시동하기



# vi /etc/httpd/conf/httpd.conf // httpd의 정보파일을 수정하기 위해 httpd.conf 문서 오픈

.

. // Section 2 : 'Main' server configuration 중의

. ServerName 수정

ServerName cktek.uos.ac.kr // 현재 보유하고 있는 도메인 네임으로 수정

.

.

.



저장 후 닫기 (vi 편집기 사용시 명령어 : shift + ; -> wq 입력 후 엔터)



# /etc/rc.d/init.d/httpd restart // 당연히 수정을 했으니 데몬을 재시동해야 겠죠...



ServerName 항목만을 변경해 주어도 아파치 웹서버를 실행할 수 있다.



# ps -ef | grep httpd // 아파치가 실행 중인지 프로세스 확인

# ntsysv // 리눅스 부팅시 아파치 웹서버가 자동 실행되도록 설정



-> httpd 항목에 체크 후 확인



4. 모든 설정이 끝났으면 웹브라우저를 이용해서 웹서버에 접속해보자.

모질라 실행 후 주소창에...



http://cktek.uos.ac.kr 를 입력하면 테스트용 HTML문서가 나타날 것이다.. 아싸 성공이다!!



이번엔 클라이언트의 웹브라우저에서도 웹서버에 접속해보자.

역시 테스트용 HTML문서가 나타나면 성공!!!




APM은 무엇인가?



아파치 웹서버는 웹서버 자체 기능인 웹페이지를 표시하는데 문제 없지만 뭔가 2% 아니 심하게 부족하다. 이런 아파치 웹서버에 방대한 자료를 처리하기위한 데이터베이스, 웹서버와 데이터베이스 사이를 연동을 위해 사용되는 PHP를 사용하여 동적인 홈페이지를 만들 수 있을 것이다.



이런 동적인 웹페이지를 구축하기 위해 필요한 것은 아래와 같다.



1) 아파치 웹서버 Apache

2) 스크립트 언어 PHP

3) 데이터베이스 Mysql



이 3인방의 첫 이니셜을 따서 APM 이라고 부른다.



주의사항)

위의 3가지 사항을 설치시 사소한 설정 실수로 인해 전체 설치를 실패할 수있으므로 하나씩 신중히 따라하세요.



APM설치하기



1. 패키지들의 설치 상황 파악! (이미 설치되어 있는지 확인!)



# rpm -qa | grep httpd // 아파치가 설치되어 있는지 확인

// 설치되어있다면 httpd-manual-2.0.40-21 를 표시할 것이다.

redhat-config-httpd-1.0.1-18

httpd-2.0.40-21



# rpm -qa | grep php // PHP가 설치되었는지 확인

// 설치되어있다면 php-ldap-4.2.2-17 를 표시할 것이다.

php-4.2.2-17

php-imap-4.2.2-17



# rpm -qa | grep mysql // 일반적으로 설치되어 있지 않다.





2. 설치된 패키지를 확인했으면 미설치된 패키지를 설치해 보자.



HTTPD와 PHP패키지 설치는 생략! 왜냐면 RPM설치법은 앞서 여러번 했으므로..찾아보세요^^



우선 mysql과 관련된 패키지를 확인 후 다운받는다.



libdbi-dbd-mysql-0.6.5-5.i386.rpm // 현재 필요없음

mysql-devel-3.23.54a-11.i386.rpm // 현재 필요없음

mod_auth_mysql-1.11-12.i386.rpm // 현재 필요없음

mysql-server-3.23.54a-11.i386.rpm // 다운로드

mysql-3.23.54a-11.i386.rpm // 다운로드

php-mysql-4.2.2-17.i386.rpm // 다운로드



이상 위의 칼라풀한 3개의 rpm을 다운로드 받은 후 설치한다. 여기서 주의사항은 패키지의 의존성 때문에 설치과정이 다른 rpm패키지 보다 조금 복잡하다.

먼저, mysql 패키지를 설치하기 위해서는 다음 패키지를 설치해야 한다.



perl-CGI

perl-DBD-MySQL

mysql



이제부터 순서대로 설치해보자. 순서에 유념해야 한다..왜냐면 순서가 뒤바뀌면 설치 실패한다!!



3. perl-CGI 설치하기



# rpm -Uhv prel-CGI-2.81-88.i386.rpm



4. perl-DBD-MySQL 과 mysql 패키지 설치



-> 이 두가지 패키지는 패키지 의존성 문제로 동시에 설치해야한다. 그렇지 않으면 설치할 수없다.



그 이유는?

perl-DBD-MySQL 를 설치하려면 mysql의 공유라이브러리인 "libmysql-client.so.10"이 필요하다. 이 공유 라이브러니는 mysql 패키지 안에 있다. 즉 패키지 의존성에 의해 perl-DBD-MySQL 를 설치할 수없다.



# rpm -Uhv perl-DBD-MySQL-2.1021-3.i386.rpm mysql-3.23.54a-11.i386.rpm





5. mysql-server를 설치



# rpm -Uhv mysql-server-3.23.54a-11.i386.rpm





6. 이제 APM의 아파치 웹서버와 PHP, MySQL을 모두 설치했다.





7. 하지만 여기서 끝나는것이 아니다. 세가지 패키지들을 연결하기위한 php-mysql 패키지 설치필요



# rpm -Uhv php-mysql-4.2.2-17.i386.rpm





8. APM의 모든 패키치 설치 끝!! 먼저 MySQL 데몬을 실행시켜보자.



# /etc/rc.d/init.d/mysqld start





9. MySQL이 제대로 동작하는지 확인!!



# ps -ef | grep mysql



10. 동작한다면 MySQL에 접속해보자. 첫 접속시 MySQL 서버의 관리자 암호를 지정해야한다.

접속하기전 다음과 같이 암호를 만든다.



# /usr/bin/mysqladmin -u root password '********' // ******** 은 설정할 암호





11. MySQL 서버에 접속! 암호 입력시 앞서 지정한 암호 입력!



# /usr/bin/mysql -p mysql // MySQL 서버접속



Enter password: // 메세지를 출력하면 암호 입력 후 엔터





12. mysql> 프롬프트가 나타나면 성공!!



13. status 명령을 입력하면 MySQL 상태를 출력!



mysql> status



.

.

상태 메세지 출력!!

.

.



14. 사용할 수 있는 데이터베이스 확인



mysql> show databases; // 주의 ";"기호를 덧붙여 주어야 한다.



+-----------+

| Database |

+-----------+

| mysql |

| test |

+-----------+

2 rows in set (0.00 sec) // 출력내용



mysql> exit; // 리눅스의 명렴 프롬프트로 돌아감.

#



15. PHP가 제대로 동작하는지 테스트하기 위해 /var/www/html 디렉토리에 test.php 파일 만들기!



# vi /var/www/html/test.php




echo " 이것은 테스트용 페이지 입니다"; // 리눅스상에서 영문에서 한글변환하기 =>

phpinfo(); shift + space

?>



파일 저장 후 모질라 실행!

주소창에 http://cktek.uos.ac.kr/test.php 입력하면 위에 작성한 문장 및 PHP정보 와 시스템 정보가 나타난다.



클라이언트 PC에서도 확인!! 성공? 아마도 성공할껄요..^^



16. 리눅스 부팅시 자동으로 AMP서비스 실행하도록 ntsysv 설정



# ntsysv



HTTPD 와 MySQL 항목에 체크 후 확인 // 체크는 스페이스키 확인으로 넘어가기는 탭키!