OS/SOLARIS2005. 7. 12. 20:58
반응형
Fast Ethernet Duplex 설정

 

 

1. Duplex란?

 

Duplex는 시스템 상호간 통신시 송신과 수신이 어떤 형식으로 이루어 지는 지에 대한 mode를 말한다. Simplex는 단방향 통신을 말하고 즉, 일방적으로 송신자는 송신만을 하고 수신자는 수신만을 하는 통신 형태를 말한다. Duplex는 쌍방이 서로 송신과 수신을 수행하는 형태를 말하며 세부적으로 Half Duplex와 Full Duplex로 구분한다.

 

Half Duplex는 우리나라 말로 반 이중방식이라고 하며 데이터를 송신하는 동안에는 데이터를 수신하지 못하는 방식이다. 예를 들면, 무전기와 같은 통신방식이 예가 될 수 있다.

 

Full Duplex는 우리나라 말로 전 이중방식이라 하며 통신하는 쌍방은 데이터 송신과 동시에 수신할 수 있는 방식이다. 일반적인 데이터 통신은 대부분 Full duplex  형식이다.

 

고전적인 Ethernet 네트워크 구성은 동축 케이블이나 HUB를 통해 구성되며, 프로토콜 특성상 공유 매체를 통해서는 송신이나 수신 트래픽에 관계없이 하나의 트래픽만이 매체를 통해 전달될 수 있다. 결국 통신 형태는 Half Duplex 형식으로 이루어지게 된다.

그러나 Switch의 출현으로 인해 Full Duplex로 Ethernet 네트워크를 구성할 수 있게 되었고 Full Duplex로 연결 구성된 모든 컴퓨터들은 송신과 동시에 데이터를 수신할 수 있게 되었다. 결과적으로 송/수채널의 분리로 100Mbps Ethernet의 경우 총 Throughput은 200Mbps를 갖게된다.

 

2. Duplex 설정 문제로 인한 장애현상들

 

Duplex 설정은 서버와 같은 시스템의 네트워크 인터페이스와 Switch 포트 간, Switch 포트와 Router 인터페이스간 서로 일치하여야 한다. 100/10 Ethernet 카드와 Switch의 경우  상호 auto-negotiation을 수행하여 speed와 duplex mode를 자동적으로 설정하게 되지만 장비간 auto-negotiation protocol의 차이로 인해 제대로 연결되지 않는 경우가 발생하게 된다.

따라서, 100Mbps 속도를 지원하고 Full Duplex를 지원하는 장비들 간에는 Auto-negotiation기능을 disable하고 100Mbps-Full Duplex로 fix하여 운영하는 것이 바람직하다.

 

Application

Duplex 문제로 인해 발생되는 현상은 Application 사용시에 응답속도가 느리다는 것과 응답속도가
전반적으로 느린 것이 아니라 순간적인 delay가 발생한다는 것이다. 따라서 현상 자체로 보면 system 자체의 성능문제나 Application의 문제로 생각하기 쉽다. 만약 서버시스템이 100Mbps로 Switch와 연결되어 있다면 이 Duplex 설정을 확인해 볼 필요가 있다.

Switch/Server NIC Statistics

Duplex 설정문제가 있는 경우, 서버와 연결된 Switch의 Port Statistics를 확인할 때 일반적으로 다음의 error들이 발생하게 된다.

- Collision

Collision 현상은 Full Duplex 환경에서는 거의 발생하지 않아야 한다. 매우 Busy한 서버인 경우는 예외이지만, 대부분의 경우, Collision 현상은 매우 적게 나타난다. 그러나 Duplex 설정이 서로 맞지 않는 경우는 매우 많은 collision들이 발생하게 된다.

- Runt, CRC

서버와 스위치간 또는 스위치와 라우터간 Duplex 설정이 서로 맞지 않는 경우, 한편에서는 2차선을이용하여 송신과 수신 데이터를 처리하려하고 다른 한편은 단지 1차선으로 모든 데이터를 처리하다보니 충돌이 빈번히 발생하고 그에 따라 Runt 패킷과 그에 따른 CRC 패킷들이 다수 발생하게 된다. Duplex 설정 문제로 인해 발생되는 collision은 CRC를 유발한다는 것이 일반적인 collision 현상과 구별된다. 다수의 CRC는 Application 계층에서 재 전송을 일으키게 되고 재 전송 메카니즘은 사용자의 응답속도 저하를 유발하게 된다.

 

3.  OS별 Duplex 설정

OS별로 NIC의 duplex를 설정하는 방법이 다르다. 따라서 대표적인 OS별로 Duplex를 설정하는 방법을 설명하도록 한다.

 

3.1. Solaris


Full Duplex Configuration

Solaris는 NIC를 Full Duplex로 설정하는 데 3가지 방법이 있다.
 

Driver dependent config

설치된 네트워크 인터페이스 driver의 구성을 직접 config한다. 그 구성 파일은 "/kernel/drv/hme.conf" 이다. 이 구성은 Solaris에 hme NIC이 장착된 경우이다.

/kernel/drv/hme.conf

adv_autoneg_cap = 0
adv_100fdx_cap = 1
adv_100hdx_cap = 0
adv_10fdx_cap = 0
adv_10hdx_cap = 0


/etc/system config

/etc/system 파일을 수정하여 Full Duplex를 지정한다.

/etc/system

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_100fdx_cap=1


ndd utility를 이용한 config

ndd utility를 이용하여 Full Duplex를 지정하는 경우는 시스템 reboot 시 다시 설정을 하여야 한다.

#ndd -set /dev/hem adv_autoneg_cap 0
#ndd -set /dev/hem adv_100hdx_cap 0
#ndd -set /dev/hem adv_100fdx_cap 1

 

NIC Duplex mode와 Speed를 확인하는 방법
ndd utility 이용

#ndd  /dev/hem link_speed <return>
1  ;      100Mbps
#ndd  /dev/hem link_mode <return>
1  ;      Full Duplex Mode

Full Duplex mode를 enable한 후에는 성능향상을 위해 TCP의 송신과 수신 buffer size를 증가시키는 것이 좋다. TCP 송/수신 buffer를 증가시키기위해서 다음의 command를 이용하며 시스템 reboot시에도 적용되디위해서는 rc script에 해당 command line를 입력하도록 한다.

#ndd  -set  tcp_recv_hiwat 65536
#ndd  -set  tcp_xmit_hiwat  65536


3.2. HP-UX 11.0


Full Duplex Configuration

설치된 네트워크 카드에 따라 /etc/rc.config.d 디렉토리 안에 있는 다음의 파일들을 수정하여야 한다.

/etc/rc.config.d/

hpsppci100conf  ; LAN, 10/100 Base-TX LAN Adapter(PCI Slot)
hppci100conf     ; LAN, 10/100 Base-TX LAN Adapter(PCI Slot)
hpgsc100conf    ; LAN, 10/100 Base-TX LAN Adapter(GSC Slot)
hpgelanconf      ; LAN, 10/100 Base-TX LAN Adapter(PCI Slot)


위 나열된 구성파일 중에서 설치된 NIC에 해당하는 파일을 편집한다. 파일 안에서 설치된 네트워크 인터페이스의 이름을 찾은 다음
"_SPEED[0]" 행을 수정하여야 한다. 예를 들면,

HP_PCI100_SPEED[0]=100FD

와 같이 수정한다. 수정한 다음 변경사항을 적용하기위하여 "/sbin/init.d/net start"를 실행한다.
 

NIC Duplex mode와 Speed를 확인하는 방법

HP-UX 11.0에서 NIC의 Speed와 Duplex mode를 확인하기 위해서는 "lanadmin"이라는 프로그램을 수행하여 확인한다. 수행한 화면에서 "lan" 그리고 "dis" 메뉴를 선택하면 "Description" 행에 현재 Duplex mode가 어떻게 설정되어있는 지를 확인할 수 있고 "Speed" 행은 현재 적용된 Speed를 Mbps단위로 보여준다.

 

3.3. Linux
 

Full Duplex Configuration

Linux의 경우 다양한 LAN Card를 지원하는 관계로 실제 설치된 LAN Card driver에 따라 Options를 다르게 설정하여야 한다. 따라서 설치한 Driver의 설정 방법을 반드시 확인한 뒤 설명에 따라 duplex를 지정하여야 한다. 일반적으로 modprobe 명령을 이용하여 Duplex 설정 및 Speed를 설정하거나 /etc/modules.conf 파일에 필요한 설정을 지정하여 매 reboot시 마다 적용될 수 있도록 한다.

아래에는 가장 일반적인 LAN card인 Intel 계열 LAN card의 duplex 설정 방법을 설명한다.

 

insmod or modprobe 명령사용
인텔 e100 driver를 이용하는 LAN card의 경우

#insmod e100.o e100_speed_duplex=4,4 (for two adapters)


/etc/modules.conf 설정

/etc/modules.conf

alias  eth0  e100
alias  eth1   pcnet32
options e100 e100_speed_duplex=4
options pcnet32 options=14

e100 driver Options
e100_speed_duplex
Valid Range: 0-4 (1=10half;2=10full;3=100half;4=100full)
Default Value: 0

pcnet32 driver Options
options pcnet32 options=0          #(Autonegotiation)
options pcnet32 options=9
          #(MII, 10Mbps, Half duplex)
options pcnet32 options=10
          #(MII, 10Mbps, Full duplex)
options pcnet32 options=13
          #(MII, 100Mbps, Half duplex)
options pcnet32 options=14          #(MII, 100Mbps, Full duplex) 

NIC Duplex mode와 Speed를 확인하는 방법

Linux의 경우는 NIC 의 현재 speed 설정과 Duplex를 확인할 수 있는 방법이 OS 차원에서 제공되지 않는다. 따라서 확인할 수 있는 방법은 Linux 시스템과 연결된 Switch의 port 상태를 확인하여 알 수 있다.

 

* 원본자료 : http://www.enclue.com/operation/guide/duplex.html

 

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

qfe interface는 디폴트로 네트웍에 연결된 상대방의 interface와 negotiation하여
10/100 half/full duplex에 맞게 연결이 된다. 그러나 이 negotiation 기능이 없는
장비나 다른 이유로 하여 negotiation을 하지 못 하여 interface가 UP 되지 못할 경우가
있다. 이 경우에는 negotiation 기능을 사용하지 말고, 연결될 장비의 setting에
맞추어 수동으로 10/100 half/full duplex 설정하여야 한다.

qfe interface의 parameter를 변경하기 위한 방법에는 2 가지가 있다.

        a) ndd 명령어를 사용하는 방법
        b) /etc/system 화일을 수정하는 방법

1. ndd 명령어를 사용하여 변경

    1.1. qfe interface의 속도를 10MB full duplex로 설정하려면 다음과 같이 한다.

         # ndd -set /dev/qfe adv_100T4_cap 0
         # ndd -set /dev/qfe adv_100fdx_cap 0
         # ndd -set /dev/qfe adv_100hdx_cap 0
         # ndd -set /dev/qfe adv_10fdx_cap 1
         # ndd -set /dev/qfe adv_10hdx_cap 0
         # ndd -set /dev/qfe adv_autoneg_cap 0

    1.2. qfe interface의 속도를 10MB half duplex로 설정하려면 다음과 같이 한다.

        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 0
        # ndd -set /dev/qfe adv_100hdx_cap 0
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_10hdx_cap 1
        # ndd -set /dev/qfe adv_autoneg_cap 0

    1.3. qfe interface의 속도를 100MB full duplex로 설정하려면 다음과 같이 한다.

        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 1
        # ndd -set /dev/qfe adv_100hdx_cap 0
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_autoneg_cap 0

    1.4. qfe interface의 속도를 100MB half duplex로 설정하려면 다음과 같이 한다.

        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 0
        # ndd -set /dev/qfe adv_100hdx_cap 1
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_autoneg_cap 0

2. /etc/system 화일을 변경

    /etc/system 화일에 변경한 내용은 바로 적용되지 않고, 시스템을 리부팅한
    후에 적용된다.

    2.1 qfe interface의 속도를 10MB full duplex로 설정하려면 다음과 같이 한다.

        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=1
        set qfe:qfe_adv_10hdx_cap=0

   2.2 qfe interface의 속도를 10MB half duplex로 설정하려면 다음과 같이 한다.

        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=1

    2.3 qfe interface의 속도를 100MB full duplex로 설정하려면 다음과 같이 한다.

        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=1
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=0

   2.4 qfe interface의 속도를 100MB half duplex로 설정하려면 다음과 같이 한다.

        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=1
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=0

3. 위와 같이 하면 시스템에 설치되어 있는 모든 qfe interface의 속도를 10MB 또는
   100MB로 지정할 수 있다. 그러나 각 interface별로 각각 다른 속도를 지정하고
   싶은 경우에는 아래와 같이 interface를 먼저 지정한후 1 또는 2번 과정을 실행
   한다.

   3.1 ndd 명령어를 사용하는 경우

        ndd -set /dev/qfe instance "instance-number"

   3.2 /etc/system 화일을 수정하는 경우

        set qfe:qfe_instance="instance-number"

   위의 설명에서 "instance-number"는 qfe0 interface는 "0", qfe1 interface는
   "1", qfe2 interface는 "2"... 와  같이 정의 된다.

반응형
Posted by [PineTree]
OS/SOLARIS2005. 7. 12. 20:53
반응형
CORBA/==CORBA(Common Object Request Broke Architecture)에 파일을 저장한다
DIR_COLORS==컬러-ls 명령어 표시색의 설정파일
HOSTNAME==FQDN(Fulley Quallified Domain Name)형식으로 호스트명으로 쓰여있는 파일
Muttrc==메일소프트웨어 Mutt의 설정파일
TextConfig==콘솔 화면의 해상도,커서모양,폰트정보
X11==X Window System 설정파일군을 저장하는 디렉토리
adjtime==시각을 설정하는 hwclock의 파라미터 파일
aliases==메일의 앨라이어스 설정파일
aliases.db==메일의 앨라이어스 데이터베이스 파일
amd.conf,amd.net==amd 데몬의 설정 파일
anacrontab==24시간 가동하지 않는 시스템을 위한 cron
at.deny==at 명령어 이용을 금지하는 유저를 기술하는 파일
auto.master==automount 데몬의 설정 파일
auto.misc==automount데몬이 이용하는 맵 파일
bashrc==bash 기동시에 실행되는 설정 파일(~/.bashrc)의 템플릿
cdrecord.conf==cdrecord 명령어의 설정 파일
charsets/==Mutt 캐릭터세터 정의 파일을 저장하는 디렉토리
codepages/==삼바에서 이용하는 codepage 정보를 저장하는 디렉토리
conf.linuxconf==linuxconf의 모듈을 기술한 파일
conf.modules==modeprobe가 이용하는 로더블 모듈 설정 파일(테보리눅스는 modules.conf)
cron.d/==crontable 명령어의설정 파일을 저장하는 디렉토리
cron.daily/==하루에 1회 자동 실행시키고 싶은 스크립트를 저장하는 디렉토리
cron.hourly/==1시간에 1회 자동 실행시키고 싶은 스크립트를 저장하는 디렉토리
cron.monthly/==1개월에 1회 자동 실행시키고 싶은 스크립트를 저장하는 디렉토리
cron.weekly/==1주일에 1회 자동 실행시키고 싶은 스크립트를 저장하는 대렉토리
crontab==crontab명령어의 설정 파일
csh.cshrc==C 쉘 기동시에 실행되는 설정 파일(~/.cshrc)의 디렉토리
csh.login==C 쉘이 로그인시에 시랳하는 설정파일(~/.login)의 디렉토리
default/==신규유저용 디폴트 설정을 저장하는 디렉토리
dhcpc/==DHCP 클라이언트 데몬 dhcpcd가 네트웍 정보를 저장하는 디렉토리
dumpdates==dump명령어로 디스크의 백업을 한 일시와 시각등이 기록된다
enscript.cfg==텍스트 파일을 PostScript로 변환하는 enscript 의 설정 파일
esd.conf==Enlightened Sound Daemon 설정 파일
exports==nfs(Network File System)서버의 설정파일
fb.modes==프레임버퍼 디바이스의 데이타베이스파일(레드햇 리눅스만)
fdprm==플로피 디스크의 패러미터 파일
filesystems==이용할수 있는 파일 시스템의 리스트가 기술된 파일
fnrc==폰터렌더링 라이브러리 fnlib의 설정 파일
fstab==파일 시스템과 마운트 포인터를 기술하는 파일
ftpaccess==ftp서버의 설정 파일
ftpconversions==ftp서버에서 압축/아카이브 전송시의 명령어와 확장자의 설정파일
ftpgroups==ftp서버의 설정 파일
ftphosts==ftp서버에 액세스를 허가/금지하는 호스트를 설정하는 파일
ftpusers==ftp 액세스를 금지하는 유저를 설정하는 파일
gated.conf.sample==동적경로 설정 데몬 gated의 설정 파일 견본
gettydefs==getty가 이용되는 시리얼의 설정 일람
gnome/==GTK+의 국제화 대응 캐릭터 세트 정의 파일을 저장하는 디렉토리
gpm-root.conf==컷&페이스트와 마우스서버(gpm)의 디폴터핸들러의설정파일
group==유저그룹을 정의한 파일
group-==그룹파일의 백업
gshadow==암호화된 그룹 패스워드를 기술한 파일
gshadow-==gshadow의 백업
gtk/==The Gimp Toolkit(GTK+)의 국제화 대응 캐릭터세트 정의 파일을 저장하는 데렉토리
host.conf==name resolve 에 사용되는 방법.우선순위의 설정파일(libc5)
hosts==로컬에서 이름을 해결하기 위한 호스트명,IP 어드레스 정의 파일
hosts.allow==inetd 경유에서 기동된 서버의 액세스 제어 파일,접속 허용 호스트를 기록
hosts.deny==inetd 경유에서 기동ㄷ횐 서버의 액세스 제어파일,접속 불허 호스트를 기록
httpd/==웹서버 Apache의 설정파일 등을 저장하는 디렉토리
identd.conf==개인 인증에 사용되는 identd의 설정 파일
im_palette-small.pal,im_palette-tiny.pal,im_palette.pal,imrc==
화상이미지 묘사 라이브러리 imlib의 파레트 설정 파일
inetd.conf==인터넷 수퍼서버 inetd 설정 파일
info-dir==info명령어가 디폴트로 표시하는 파일
initlog.conf==init가 출력하는 로그인에 관한 설정 파일
inittab==기동시의 런 레벨과 init설정을 기술하는 파일
inputrc==bash등이 이용한느 행입력 컬러 라이브러리의 Readline의 설정 파일
ioctl.save==싱글유저 모드에서 이용하는 콘솔 디바이스 설정(init가 작성한다)
irda/==적외선 통신을 하기위한 irda-utils 패키지의 초기화 스크립트 저장 디렉토리
isapnp.gone==ISA plug&play로 인식할수 없는 리소스를 기술하는 파일
isdn/==ISDN카드 지원 설정 파일을 저장하는 디렉토리
issue==로컬에서 로그인 시 표시하는 메시지
issue.net==리모트에서 로그인 할때 표시하는 메시지
krb5.conf==케로베로스의 설정 파일
ld.so.cache==공유라이브러리를 검색할 떄 이용하는 캐시파일
ld.so.conf==공유라이브러리를 저장하는 디렉토리를 기술하는 파일
ldap.conf==LDAP(Lightweight Directory Access Protocol)모듈 nss_ldap 설정 파일
lilo.conf==lilo 설정 파일
linux-terminfo/==사용되고 있는 콘솔에 대한 데이타가 저장되어 있다
lmhosts==Samba가 NetBios명 해결에 이용하는 호스트명,IP 어드레스 정의 파일
localtime== 머신의 타임존이 쓰여져 있는 바이너리 파일
login.defs==로그인의 설정
logrotate.conf==로그 관리 유틸리티 logrotate의 설정 파일
logrotate.d/==RPM파일에서 인스톨한 데몬을 위한 logrotate설정 파일을 저장한다
ltrace.conf==라이브러리 트레이서의 설정 파일
lvs.cf==레드햇 클러스트링 서비스의 데몬 콘솔 설정 파일
lynx.cfg==텍스트 베이스 웹 브라우저lynx의 설정 파일
mail/==Send mail이 이용한 데이타베이스 파일 등을 저장한다
mail.rc==메일 명령어의 설정 파일
mailcap==metamail 설정 파일
mailcap.vga==metamail 설정 파일(멀티미디어 메일 처리)
man.config==man 명령어의 설정 파일
mc.global==파일 매니저 GNU Midnight Commander의 설정 파일
mesa.conf==OpenGL호환 3D 라이브러리 mesa의 설정 파일
mgetty+sendfax/==mgetty+sendfax 패키지의 설정 파일을 저장하는 디렉토리
midi/==MIDI플레이어의 playmidi 등이 이용한느 음색파일 저장 디렉토리
mime-magic==파일 내용에서 마임 형식을 판단하기 위한 정의 파일
mime-magic.dat==mime-magic에서 만들어진 데이타베이스 파일
mime.types==웹서버 아파치(Apache)가 이용하는 MIME 정의 파일
minicom.users==시리얼통신 프로그램 minicom의 유저 설정 파일
motd==로그인할 때 표시되는 메시지를 기술하는 파일
mtab==마운트 되어있는 파일 시스템의 일람이 쓰여져 있는 파일
mtftpd.conf==리모트 부트 데몬 pxe에서 이용하는 MTFTP서버의 설정 파일
mtools.conf==도스의 패키지를 읽고 쓰는 툴 패키지의 mtools의 설정 파일
named.boot==DNS서버 BIND4의 설정 파일
named.conf==DNS server BIND8의설정 파일
news/==net news server inn의 설정 파일을 저장한다
nmh/==MH를 베이스로 한 메일 툴 패키지 mtools의 설정 파일
nscd.conf==네임서비스 참조개시 데몬 nscd의 설정 파일
nsswitch.conf==시스템데이타베이스와 네임서비스 스위치 설정 파일
ntp/==Network Time Protocol서버 xntp3 패키지가 데이타를 저장
ntp.conf==Network Time Protocol서버 xntpd의 설정 파일
newserv.conf==mars(Netware 에뮬레이터) 설정 파일
newserv.stations==mars용 네트웨어 설정 파일을 저장한다
openldap/==OpenLDAP(Light Weight Directory Access Protocol) 설정 파일 등을 저장
pam.d/==PAM(Pluggable Authentication Modules)의 설정 파일을 저장한다
paper.config==용지 크기의 정의 파일
passwd==모든 유저의 유저명,유저id,그룹id등이 기술되어 있는 파일
passwd-==passwd의 백업
pbm2ppa.conf==portable bitmap 이미지 파일을 HP프린터로 사용하는 PPA 파일로 변환하는 툴의 설정 파일
pcmcia/==pcmcia의 설정 파일을 저장하는 디렉토리
phhttpd.conf==http 엑셀레이터 phhttpd의 설정파일
pine.conf==메일/뉴스 리더 pine의 설정 파일
pine.conf.fixed==메일/뉴스리더 pine의 설정 파일
pnm2ppa.conf==portable anymap 이미지 파일을 HP프린터로 사용하는 PPA 파일로 변환하는 툴의 설정 파일
ppp/==ppp데몬의 설정 파일을 저장하는 디렉토리
printcap==프린터의 설정 파일
profile==bash가 로그인 할떄 실행되는 설정 파일
profile.d/==로그인시 프로파일에서 불려나와 실행된 스크립트의 저장 디렉토리
protocols==프로토콜 설정 파일 (변경 불가)
pwdb.conf==pwdb의 설정 파일
pxe.conf==리모트 부트 데몬 pxe의 설정 파일
rc.d/==기동시에 데몬 등을 기동하는 스크립트를 저장하는 디렉토리
redhat-release등==디스트리뷰션의 릴리스명.issue로 전송된다.
resolv.conf==이름 해결 수단의 우선순위 등 리졸버의 설정 파일
rmt@==/sbin/rmt로의 링크,백업때 사용된다
rpc==RPC(Remote Procedure Call)서버 명과 번호의 대응이 기술된 파일
rpm/==RPM명령어 패키지에 이용하는 디렉토리
rpm2html.config==RPM 레포지터리에서 HTML 데이타베이스를 작성하는 rpm2html 설정파일
rpbfind.conf==인터넷상의 RPM 파일을 검색하는 rpm2html 설정파일
rpmlint/==RPM파일의 에러를 체크하는 rpmlint의 설정파일을 저장한다
screenrc==화면관리 프로그램,스크린의 설정파일 템플릿
security/==PAM(pluggable authentication modules)에서 이용하는 모듈을 저장
sendmail.cf==sendmail의 동작 설정 파일
sendmail.cw==sendmail에서 호스트 명을 이용하는 경우 별명을 정의 하는 파일
sendmail.mc==sendmail.cf를 만들기 위한 매크로 정의 파일,매크로 프로세서 m4로 이용
services==네트웍 서비스명으로 사용하는 포트,프로토콜의 대응을 정의 하는 파일
shadow==각 유저의 새도우 패스워드에 관한 저옵를 기술하는 파일
shadow-==shadow의 백업 파일
shells==로그인 쉘로서 설정 가능한 쉘을 기술하는 파일
skel/==도트파일의 템플릿을 저장하는 디렉토리
slip/==SLIP(Serial Line Internet Protocol)로그인을 위한 설정 파일 저장
smb.conf==삼바의 설정 파일
smbpasswd==삼바의 패스워드 파일
smbusers==리눅스 유저명과 삼바 유저명을 대응 시키는 설정 파일
smrsh/==sendmail용 제한 쉘로 이용할 수 있는 프로그램을 저장한다.
snmp/==SNMP(Simple Network Management Protocol)에이전트의 설정 파일
sound/==GNOME의 이벤트에 나누어 붙인 사운드 파일의 설정 파일을 저장한다
squid/==웹캐시프록시 Squid의 설정 파일을 저장한다
sysconfig/==기동시에 참조된 디바이스 등의 설정 파일을 저장한다
sysctl.conf==기동시에 네트웍을 설정하는 파일
syslog.conf==syslog데몬의 설정 파일
termcap==이전에 사용되어진 단말 정의 데이타베이스 화일
up2date.conf==up2date설정 파일
uucp/==UUCP(Unix To Unix Copy)의 설정파일을 저장한다
vfontcap@==Vflib에서 사용하는 트루타입 폰트의 설정 파일
vga==SVGALIB가 이용하는 트루타입 폰트의 설정 타입
wegtrc==HTTP/FTP대응 파일 다운로드 툴 wfget의 설정 파일
yp.conf==NIS의 설정 파일
ypserv.conf==NIS 서버의 옵션을 기술하는 파일
ytalkrc==ytalk 설정 파일
zlogin,zlogout,zprofile,zshenv,zshrc==zsh의 설정 파일
반응형
Posted by [PineTree]
OS/SOLARIS2005. 7. 12. 20:47
반응형

(1) 자신의 개인적인 환경 설정


(1-1) login shell을 변경
# passwd -e
old shell : /sbin/sh
new shell : /bin/ksh <--- 기본적으로 대부분의 관리자는 ksh을 사용한다.

 

(1-2) $HOME/.profile 생성 및 편집
기본적으로 root(관리자)에게는 .profile이 존재하지 않는다.
그래서 원형파일을 복사하여 사용한다.
# cp /etc/skel/local.profile $HOME/.profile
# vi $HOME/.profile

# @(#)local.profile 1.8 99/03/26 SMI
stty istrip
ENV=/.kshrc
EDITOR=vi
PATH=/usr/local/bin:/usr/sadm/admin/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin:/usr/sbin:/sbin:/bin:/usr/bin:/usr/ucb:/etc:.

MANPATH=/usr/share/man:/usr/dt/man:/usr/local/man/usr/openwin/share/man:/usr/man
export PATH ENV EDITOR DISPLAY MANPATH
#
# If possible, start the windows system
#
if [ "`tty`" = "/dev/console" ] ; then
if [ "$TERM" = "sun" -o "$TERM" = "sun-color" -o "$TERM" = "AT386" ]
then
if [ ${OPENWINHOME:-""} = "" ] ; then
OPENWINHOME=/usr/openwin
export OPENWINHOME
fi
echo ""
echo "Starting OpenWindows in 5 seconds (type Control-C to interrupt)"
sleep 5
echo ""
$OPENWINHOME/bin/openwin
clear # get rid of annoying cursor rectangle
exit # logout after leaving windows system
fi

# . $HOME/.profile

 

(1-3) $HOME/.kshrc 생성 및 편집

 

# vi $HOME/.kshrc
PS1=[$LOGNAME@`hostname`:'$PWD]# ' <--- 쉘 변수 설정
export PS1 <--- 변수를 export한다.

set -o vi <--- korn shell을 설정한다.

alias ls='\ls -F' <--- alias을 설정한다.
alias ll='\ls -alF | more'
alias mv='\mv -i'
alias cp='\cp -i'
alias rm='\rm -i'

# ksh
# . $HOME/.kshrc

그럼 아래와 같이 프롬프트가 변경이 된다.
[root@test:/]#

 

(2) vi 편집기에 대한 환경설정
# vi $HOME/.exrc
set showmode sm nu
set ai nolist

# . $HOME/.exrc


(3) 전체적인 설정을 확인


(3-1) 로그인 쉘을 확인
# cat /etc/passwd | grep root
root:x:0:1:Super-User:/:/bin/ksh

 

(3-2) 쉘 프롬프트를 확인
[root@test:/]#

 

(3-3) vi 환경설정 확인
# vi testfile
( ) <--- ( )을 입력해 보면 커서가 움직이게 된다.

반응형
Posted by [PineTree]
OS/SOLARIS2005. 7. 12. 20:40
반응형
제목 : 테이프 명령어 및 사용 방법 요약
촐처 : SUN 기술문서, http://kr.sun.com/service/techdocs/0001/000516.html

----------------------------------------------------------------------------------
설명:                             

테이프 명령어
명령:mt - 자기 테이프 용도:테이프 상태 확인, 되감기, 지우기 등 경로:/usr/bin/mt

구문:mt [ -f 테이프 장치 이름 ] 명령 [ 반복 횟수] 여기서 테이프 장치 이름은 보통
   /dev/rmt/0입니다.

   명령은 다음과 같습니다.

   status  -테이프 드라이브의 상태 정보를 표시합니다
   rewind  -테이프를 되감습니다.
   retension  -테이프를 팽팽한 상태로 만듭니다.
   erase  -테이프 전체를 지웁니다.
   fsf   -지정된 반복 횟수만큼 파일을 앞으로 건너뜁니다.
   bsf   -지정된 반복 횟수 만큼 파일을 뒤로 건너뜁니다.
   eom   -기록된 미디어의 끝부분으로 건너 뜁니다.

   반복 횟수는 요청된 작업을 수행하는 횟수를 말합니다.
   기본적으로 mt는 명령을 한 번 수행합니다.
   하나의 명령을 두 번 이상 반복하려면 반복 횟수를 지정하면 됩니다.

   예:mt -f /dev/rmt/0 status ---> 테이프의 상태를 표시합니다.
   mt -f /dev/rmt/0 rewind ---> 테이프를 되감습니다.
   mt -f /dev/rmt/0n fsf 2 ---> 첫 번째 두 개의 파일을 건너뜁니다.
   mt -f /dev/rmt/0n bsf 2 ---> 두 개의 파일만큼 뒤로 건너뜁니다.

명령: tar - 테이프 아카이브
용도: 테이프 아카이브를 만들거나 복원합니다.
    디렉토리 구조를 유지하면서 하나 또는 여러 개의 파일을 백업하는데 사용합니다.
경로: /usr/bin/tar
구문: tar [옵션] [장치 이름] [파일 이름]

   옵션은 다음과 같습니다.
   c    tar 파일을 새로 만듭니다.
   r    기존 tar 파일을 대체합니다.
   t    테이프 아카이브의 목차를 표시합니다.
   u    업데이트합니다.
       업데이트할 파일이 tar 파일에 없거나 마지막으로 tar 파일을 쓴 후
       수정된 경우에는 tar 파일의 끝에 씁니다. 업데이트 수행은 다소
       느릴 수 있습니다. 5.x 시스템에서 만든 tar 파일은 4.x 시스템에서
       업데이트할 수 없습니다.
   x    추출하거나 복원합니다.
      추출하거나 복원할 파일은 tar 파일에서 추출하고 현재 디렉토리에서
      tar 파일에 지정된 디렉토리에 씁니다. 추출할 파일 및 디렉토리에
      대해 상대 경로 이름을 사용하십시오.
   v    자세한 정보를 표시합니다.
      기능 문자 다음에 각 파일의 이름을 출력합니다.

여기서 장치 이름은 대개 /dev/rmt/0입니다. 또는 파일 이름일 수도 있습니다. 파일
이름은 아카이브로 만들 파일 이름입니다.

예:
tar cvf /dev/rmt/0 /export/home/user1 --> /dev/rmt/0 테이프에 /export/home/user1의
테이프 아카이브를 만듭니다.
tar tvf /dev/rmt/0 ---> /dev/rmt/0의 목차를 표시합니다.
tar xvf /dev/rmt/0 ---> /dev/rmt/0에서 데이터를 복원합니다.

참고: 위의 명령에서 /dev/rmt/0 대신 /dev/rmt/0n을 사용할 수 있습니다.
/dev/rmt/0n을 사용하면 백업 수행 후 테이프를 되감지 않습니다.
명령: ufsdump
용도: 파일 시스템, 파일 또는 디렉토리를 백업하는데 사용합니다.
   전체 백업이나 증분 백업을 수행할 수 있습니다.
경로: /usr/sbin/ufsdump
구문: ufsdump [옵션] [장치 이름] [덤프할 파일]

옵션은 다음과 같습니다.

0 ~ 9 덤프 레벨 옵션을 지정합니다.
    레벨 0은 가장 낮은 수준으로 전체 백업을 수행합니다. 레벨 1 ~ 9는 증분
    백업을 수행합니다.
u   현재 백업의 날짜와 덤프 레벨을 /etc/dumpdates 덤프 기록에 업데이트합니다.
f   파일이 쓰여질 장치를 지정합니다.이 옵션은 장치 이름이 필요합니다.
v   테이프에 있는 데이터를 파일 시스템에 있는 데이터와 비교하고 검사합니다.

여기서 장치 이름은 /dev/rmt/0입니다.
덤프할 파일은 초기 파일 시스템 /dev/rdsk/c0t2d0s0이나 블록 파일 시스템
/dev/dsk/c0t2d0s0입니다. 또한 /export/home과 같이 파일 시스템 이름이나
/export/home/user1과 같이 파일 이름 또는 디렉토리 이름을 사용할 수도 있습니다.

예:
ufsdump 0uf /dev/rmt/0 /export/home ---> /export/home 파일 시스템을 /dev/rmt/0
으로 덤프하고 전체 백업을 수행합니다.

ufsdump 1uf /dev/rmt/0 /dev/dsk/c0t2d0s4 --> /dev/dsk/c0t2d0s4 파일 시스템을
/dev/rmt/0로 덤프합니다. 이 명령은 레벨 1의 증분 백업을 수행합니다.

ufsdump 4uf dbserver:/dev/rmt/0 /export/home/user1 --> /export/home/user1에 대한
레벨 4의 증분 백업을 Remote Box dbserver에 마운트된 dev/rmt/0 테이프 장치에 덤프
합니다.   여기서 테이프 장치는 로컬 시스템이 아니라원격 시스템인 dbserver에 있는
장치입니다.

명령: ufsrestore
용도: ufsdump 명령으로 만들어진 백업본에서 파일을 복구하거나 추출하는데 사용합니다.
경로: /usr/sbin/ufsrestore
구문: ufsrestore [옵션] [장치 이름] [복원할 파일]

옵션은 다음과 같습니다.
i    대화형 모드로 파일을 복원합니다.
r    백업 전체를 복원합니다.
t    백업의 목차를 표시합니다.
x    명령행에서 지정한 파일을 복원합니다.
f    /dev/rmt/0과 같이 장치 이름을 지정합니다.
v    파일을 복원하고 있는 경로 이름을 표시합니다(세부 정보 표시 모드).

참고: 이 옵션은 ufsdump 명령에서 사용하는 v(verify) 옵션과 다릅니다.

예:
ufsrestore xvf /dev/rmt/0 ./etc/hosts ---> /etc/hosts 파일을 현재 디렉토리로
                   복원합니다.   
ufsrestore ivf /dev/rmt/0 ---> 복원될 파일을 선택합니다.
ufsrestore rvf /dev/rmt/0 ./opt ---> /opt 파일 시스템을 현재 디렉토리로 복원합니다.
ufsrestore tvf /dev/rmt/0 ---> /dev/rmt/0의 목차를 표시합니다.

해결 방법 요약

내부 요약

제출자:    Ramakrishna Mandava 전자 메일:Ramakrishna.Mandava@Sun.Com
적용 대상:   네트워크 - OS
반응형
Posted by [PineTree]
OS/SOLARIS2005. 7. 12. 20:38
반응형
# vi /.profile
PATH=/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/usr/ucb:.
MANPATH=/usr/share/man:/usr/local/man
EDITOR=vi
LANG=ko
ENV=/.kshrc
export PATH MANPATH EDITOR LANG ENV
 
# vi /.kshrc
stty erase ^H ( Backspace key 사용가능)
alias ls='ls -aF'
alias c=clear
alias h=history
alias cp='cp -i'  (overwrite 방지)
set -o vi  (command line에서 'esc' 누르고 vi 편집기와 같은 형식으로 사용)
set -o noclobber  (overwrite 방지)
PS1=`uname -n` '[$PWD]# '
export PS1
반응형
Posted by [PineTree]
OS/SOLARIS2005. 7. 12. 20:38
반응형

(1) 자신의 개인적인 환경 설정


(1-1) login shell을 변경
# passwd -e
old shell : /sbin/sh
new shell : /bin/ksh <--- 기본적으로 대부분의 관리자는 ksh을 사용한다.

 

(1-2) $HOME/.profile 생성 및 편집
기본적으로 root(관리자)에게는 .profile이 존재하지 않는다.
그래서 원형파일을 복사하여 사용한다.
# cp /etc/skel/local.profile $HOME/.profile
# vi $HOME/.profile

# @(#)local.profile 1.8 99/03/26 SMI
stty istrip
ENV=/.kshrc
EDITOR=vi
PATH=/usr/local/bin:/usr/sadm/admin/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin:/usr/sbin:/sbin:/bin:/usr/bin:/usr/ucb:/etc:.

MANPATH=/usr/share/man:/usr/dt/man:/usr/local/man/usr/openwin/share/man:/usr/man
export PATH ENV EDITOR DISPLAY MANPATH
#
# If possible, start the windows system
#
if [ "`tty`" = "/dev/console" ] ; then
if [ "$TERM" = "sun" -o "$TERM" = "sun-color" -o "$TERM" = "AT386" ]
then
if [ ${OPENWINHOME:-""} = "" ] ; then
OPENWINHOME=/usr/openwin
export OPENWINHOME
fi
echo ""
echo "Starting OpenWindows in 5 seconds (type Control-C to interrupt)"
sleep 5
echo ""
$OPENWINHOME/bin/openwin
clear # get rid of annoying cursor rectangle
exit # logout after leaving windows system
fi

# . $HOME/.profile

 

(1-3) $HOME/.kshrc 생성 및 편집

 

# vi $HOME/.kshrc
PS1=[$LOGNAME@`hostname`:'$PWD]# ' <--- 쉘 변수 설정
export PS1 <--- 변수를 export한다.

set -o vi <--- korn shell을 설정한다.

alias ls='\ls -F' <--- alias을 설정한다.
alias ll='\ls -alF | more'
alias mv='\mv -i'
alias cp='\cp -i'
alias rm='\rm -i'

# ksh
# . $HOME/.kshrc

그럼 아래와 같이 프롬프트가 변경이 된다.
[root@test:/]#

 

(2) vi 편집기에 대한 환경설정
# vi $HOME/.exrc
set showmode sm nu
set ai nolist

# . $HOME/.exrc


(3) 전체적인 설정을 확인


(3-1) 로그인 쉘을 확인
# cat /etc/passwd | grep root
root:x:0:1:Super-User:/:/bin/ksh

 

(3-2) 쉘 프롬프트를 확인
[root@test:/]#

 

(3-3) vi 환경설정 확인
# vi testfile
( ) <--- ( )을 입력해 보면 커서가 움직이게 된다.

반응형
Posted by [PineTree]
OS/SOLARIS2005. 6. 13. 19:26
반응형

Sun 서버 시스템에서의 negotiation 설정

네트워크의 negotiation
 
network 상에서 negotiation 이란 네트워크 장비와 서버간의 속도를
맞춰주는 것을 말한다. 이는 10/100/1000 이냐 아니면 half/full
duplex 인가를 맞춰주는 것이다.
 
hme interface는 디폴트로 네트웍에 연결된 상대방의 interface에
negotiation하여 10/100 half/full duplex에 맞게 연결이 된다.
그러나 이 negotiation 기능이 없는장비나 다른 이유로 하여
negotiation을 하지 못 하여 interface가 UP 되지 못할 경우가
있다. 이 경우에는 negotiation 기능을 사용하지 말고, 연결될 장비의
 setting에 맞추어 수동으로 10/100 half/full duplex 설정하여야 한다.
 
hme interface의 parameter를 변경하기 위한 방법에는 2 가지가 있다.
 
        a) ndd 명령어를 사용하는 방법
        b) /etc/system 화일을 수정하는 방법
 
 
1. ndd 명령어를 사용하여 변경
 
    1.1. hme interface의 속도를 10MB full duplex로 설정하려면
다음과 같이 한다.
 
         # ndd -set /dev/hme adv_100T4_cap 0
         # ndd -set /dev/hme adv_100fdx_cap 0
         # ndd -set /dev/hme adv_100hdx_cap 0
         # ndd -set /dev/hme adv_10fdx_cap 1
         # ndd -set /dev/hme adv_10hdx_cap 0
         # ndd -set /dev/hme adv_autoneg_cap 0
 
    1.2. hme interface의 속도를 10MB half duplex로 설정하려면
다음과 같이 한다.
 
        # ndd -set /dev/hme adv_100T4_cap 0
        # ndd -set /dev/hme adv_100fdx_cap 0
        # ndd -set /dev/hme adv_100hdx_cap 0
        # ndd -set /dev/hme adv_10fdx_cap 0
        # ndd -set /dev/hme adv_10hdx_cap 1
        # ndd -set /dev/hme adv_autoneg_cap 0
 
    1.3. hme interface의 속도를 100MB full duplex로 설정하려면
다음과 같이 한다.
 
        # ndd -set /dev/hme adv_100T4_cap 0
        # ndd -set /dev/hme adv_100fdx_cap 1
        # ndd -set /dev/hme adv_100hdx_cap 0
        # ndd -set /dev/hme adv_10fdx_cap 0
        # ndd -set /dev/hme adv_10hdx_cap 0
        # ndd -set /dev/hme adv_autoneg_cap 0
 
    1.4. hme interface의 속도를 100MB half duplex로 설정하려면
다음과 같이 한다.
 
        # ndd -set /dev/hme adv_100T4_cap 0
        # ndd -set /dev/hme adv_100fdx_cap 0
        # ndd -set /dev/hme adv_100hdx_cap 1
        # ndd -set /dev/hme adv_10fdx_cap 0
        # ndd -set /dev/hme adv_10hdx_cap 0
        # ndd -set /dev/hme adv_autoneg_cap 0
 
 
2. /etc/system 화일을 변경
 
    /etc/system 화일에 변경한 내용은 바로 적용되지 않고, 리부팅한
후에  시스템에 적용된다.
   
    2.1 hme interface의 속도를 10MB full duplex로 설정하려면
다음과 같이 한다.
 
        set hme:hme_adv_autoneg_cap=0
        set hme:hme_adv_100T4_cap=0
        set hme:hme_adv_100fdx_cap=0
        set hme:hme_adv_100hdx_cap=0
        set hme:hme_adv_10fdx_cap=1
        set hme:hme_adv_10hdx_cap=0
 
   2.2 hme interface의 속도를 10MB half duplex로 설정하려면
다음과 같이 한다.
 
        set hme:hme_adv_autoneg_cap=0
        set hme:hme_adv_100T4_cap=0
        set hme:hme_adv_100fdx_cap=0
        set hme:hme_adv_100hdx_cap=0
        set hme:hme_adv_10fdx_cap=0
        set hme:hme_adv_10hdx_cap=1
 
    2.3 hme interface의 속도를 100MB full duplex로 설정하려면
다음과 같이 한다.
 
        set hme:hme_adv_autoneg_cap=0
        set hme:hme_adv_100T4_cap=0
        set hme:hme_adv_100fdx_cap=1
        set hme:hme_adv_100hdx_cap=0
        set hme:hme_adv_10fdx_cap=0
        set hme:hme_adv_10hdx_cap=0
 
   2.4 hme interface의 속도를 100MB half duplex로 설정하려면
다음과 같이 한다.
 
        set hme:hme_adv_autoneg_cap=0
        set hme:hme_adv_100T4_cap=0
        set hme:hme_adv_100fdx_cap=0
        set hme:hme_adv_100hdx_cap=1
        set hme:hme_adv_10fdx_cap=0
        set hme:hme_adv_10hdx_cap=0
 
3. hme 카드가 2개 이상 있는 경우에 개별적인 instance에 대해서
각각 지정하여야 한다.
 
        # ndd -set /dev/hme instance 0
 
               hme0에 대하여 위에 지정한 파라메터를 여기에 지정한다.
 
 
        # ndd -set /dev/hme instance 1
 
               hme1에 대하여 위에 지정한 파라메터를 여기에 지정한다.
 
 
4. 실제 시스템에 설정된 상태를 확인하려면 다음과 같은 명령어로
확인할 수 있다.
 
        # ndd -get /dev/hme link_status
        # ndd -get /dev/hme link_speed
        # ndd -get /dev/hme link_mode
 
        link_status (read only)
               0 for Link Down
               1 for Link up
 
        link_speed (read only)
               0 for 10 Mbps
               1 for 100 Mbps
 
        link_mode (read only)
               0 for Half-Duplex mode
               1 for Full-Duplex mode
 

 

 

 

qfe interface는 디폴트로 네트웍에 연결된 상대방의 interface와
negotiation하여 10/100 half/full duplex에 맞게 연결이 된다.
그러나 이 negotiation 기능이 없는 장비나 다른 이유로 하여
negotiation을 하지 못 하여 interface가 UP 되지 못할 경우가 있다.
이 경우에는 negotiation 기능을 사용하지 말고, 연결될 장비의
setting에 맞추어 수동으로 10/100 half/full duplex 설정하여야 한다.
 
qfe interface의 parameter를 변경하기 위한 방법에는 2 가지가 있다.
 
        a) ndd 명령어를 사용하는 방법
        b) /etc/system 화일을 수정하는 방법
 
1. ndd 명령어를 사용하여 변경
 
    1.1. qfe interface의 속도를 10MB full duplex로 설정하려면
다음과 같이 한다.
 
         # ndd -set /dev/qfe adv_100T4_cap 0
         # ndd -set /dev/qfe adv_100fdx_cap 0
         # ndd -set /dev/qfe adv_100hdx_cap 0
         # ndd -set /dev/qfe adv_10fdx_cap 1
         # ndd -set /dev/qfe adv_10hdx_cap 0
         # ndd -set /dev/qfe adv_autoneg_cap 0
 
    1.2. qfe interface의 속도를 10MB half duplex로 설정하려면
다음과 같이 한다.
 
        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 0
        # ndd -set /dev/qfe adv_100hdx_cap 0
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_10hdx_cap 1
        # ndd -set /dev/qfe adv_autoneg_cap 0
 
    1.3. qfe interface의 속도를 100MB full duplex로 설정하려면
다음과 같이 한다.
 
        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 1
        # ndd -set /dev/qfe adv_100hdx_cap 0
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_autoneg_cap 0
 
    1.4. qfe interface의 속도를 100MB half duplex로 설정하려면
다음과 같이 한다.
 
        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 0
        # ndd -set /dev/qfe adv_100hdx_cap 1
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_autoneg_cap 0
 
2. /etc/system 화일을 변경
 
    /etc/system 화일에 변경한 내용은 바로 적용되지 않고, 시스템을
리부팅한 후에 적용된다.
 
    2.1 qfe interface의 속도를 10MB full duplex로 설정하려면
 다음과 같이 한다.
 
        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=1
        set qfe:qfe_adv_10hdx_cap=0
 
   2.2 qfe interface의 속도를 10MB half duplex로 설정하려면
다음과 같이 한다.
 
        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=1
 
    2.3 qfe interface의 속도를 100MB full duplex로 설정하려면
다음과 같이 한다.
 
        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=1
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=0
 
   2.4 qfe interface의 속도를 100MB half duplex로 설정하려면
다음과 같이 한다.
 
        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=1
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=0
 
3. 위와 같이 하면 시스템에 설치되어 있는 모든 qfe interface의
속도를 10MB 또는 100MB로 지정할 수 있다. 그러나 각 interface
별로 각각 다른 속도를 지정하고 싶은 경우에는 아래와 같이 interface
를 먼저 지정한후 1 또는 2번 과정을 실행 한다.
 
   3.1 ndd 명령어를 사용하는 경우
        ndd -set /dev/qfe instance "instance-number"
 
   3.2 /etc/system 화일을 수정하는 경우
 
        set qfe:qfe_instance="instance-number"
 
   위의 설명에서 "instance-number"는 qfe0 interface는 "0",
qfe1 interface는 "1", qfe2 interface는 "2"... 와  같이 정의 된다.

반응형
Posted by [PineTree]
OS/SOLARIS2005. 6. 13. 19:25
반응형

 

# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 223.222.222.9 netmask ffffff00 broadcast 222.222.222.255
ce2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 50.222.222.2 netmask ffffff00 broadcast 50.222.222.255

 

# ndd -get /dev/ce '?'

....

instance                      (read and write)
adv_autoneg_cap               (read and write)
adv_1000fdx_cap               (read and write)
adv_1000hdx_cap               (read and write)
adv_100T4_cap                 (read and write)
adv_100fdx_cap                (read and write)
adv_100hdx_cap                (read and write)
adv_10fdx_cap                 (read and write)
adv_10hdx_cap                 (read and write)
.....

 

# cat /etc/rc2.d/S69inet

......

######## 100FDX ERI ###############
ndd -set /dev/ce instance 0
ndd -set /dev/ce adv_1000fdx_cap 0
ndd -set /dev/ce adv_1000hdx_cap 0
ndd -set /dev/ce adv_100T4_cap 0
ndd -set /dev/ce adv_100fdx_cap 1
ndd -set /dev/ce adv_100hdx_cap 0
ndd -set /dev/ce adv_10fdx_cap 0
ndd -set /dev/ce adv_10hdx_cap 0
ndd -set /dev/ce adv_autoneg_cap 0

 

ndd -set /dev/ce instance 2
ndd -set /dev/ce adv_1000fdx_cap 0
ndd -set /dev/ce adv_1000hdx_cap 0
ndd -set /dev/ce adv_100T4_cap 0
ndd -set /dev/ce adv_100fdx_cap 1
ndd -set /dev/ce adv_100hdx_cap 0
ndd -set /dev/ce adv_10fdx_cap 0
ndd -set /dev/ce adv_10hdx_cap 0
ndd -set /dev/ce adv_autoneg_cap 0

ndd -set /dev/ce instance 0

반응형
Posted by [PineTree]
OS/SOLARIS2005. 6. 13. 19:24
반응형

Solaris Network Kernel Tunning for Security           출처:  http://blog.naver.com/uliel7719.do


1. 소개

 

Solaris Kernel은 TCP/IP스택에 여러가지 사용자 인터페이스를 제공한다. Cache 테이블의 ifetime 및 다수의 TCP 연결에 대한 여러가지 옵션을 통하여 Kernel Parameter의 설정 및 제어가 가능하다. 하지만 이러한 Kernel Parameter들을 Tunning하기 위하여 각각의 kernel parameter들에대한 정확한 기능들의 이해가 반드시 요구되어진다. 그리고 많은 시스템관리자들은 이러한 Kernel Parameter들을 사용 및 설정하는 등의 일련의 Security 업무에 소홀히 해왔다. 이 보고서에서는 solaris에서 제공되어지는 Network Security Kernel들에 관련하여 올바르게 이해해고 설정하여 Tunning하는 방법을 소개하고자 한다.

 

2. Solaris Kernel Tools

 

solaris에서는 TCP/IP 커널에 대한 드라이버로서 "ndd"가 유일한 도구이며 Solaris 시스템의 네트워크 커널 변수들을 Tunning하기 위한 가장 유용한 Tool이 "ndd"이다.

 

3. Solaris 네트워크 커널 변수들

 

일반적으로 TCP/IP 커널에 대한 변수들을 보는 방법은 다음과 같은 명령어를 실행함으로써 가능하다.

# ndd /dev/<driver> <parameter>

여기서 TCP/IP 커널에 대하여 <driver>는 ARP, IP, TCP, UDP중에 하나이며 각각의 드라이버에 대하여 모든 변수들을 보는 명령어는 다음과 같다.

 

# ndd /dev/<driver> \?

 

IP 드라이버에 대한 명령어를 실행하면 다음과 같이 출력된다.

 

[phoenix:root]:/ >ndd /dev/ip \?

? (read only)

ip_forwarding (read and write)

ip_respond_to_address_mask_broadcast(read and write)

ip_respond_to_echo_broadcast (read and write)

ip_respond_to_timestamp (read and write)

ip_respond_to_timestamp_broadcast(read and write)

ip_send_redirects (read and write)

ip_forward_directed_broadcasts(read and write)

ip_debug (read and write)

ip_mrtdebug (read and write)

ip_ire_cleanup_interval (read and write)

ip_ire_flush_interval (read and write)

ip_ire_redirect_interval (read and write)

ip_def_ttl (read and write)

ip_forward_src_routed (read and write)

ip_wroff_extra (read and write)

ip_ire_pathmtu_interval (read and write)

ip_icmp_return_data_bytes (read and write)

ip_send_source_quench (read and write)

ip_path_mtu_discovery (read and write)

ip_ignore_delete_time (read and write)

ip_ignore_redirect (read and write)

ip_output_queue (read and write)

ip_broadcast_ttl (read and write)

ip_icmp_err_interval (read and write)

ip_reass_queue_bytes (read and write)

ip_strict_dst_multihoming (read and write)

ip_addrs_per_if (read and write)

ip_ill_status (read only)

ip_ipif_status (read only)

ip_ire_status (read only)

ip_ipc_status (read only)

ip_rput_pullups (read and write)

ip_enable_group_ifs (read and write)

 

ndd를 사용하여 커널 변수를 설정하기 위하여는 다음과 같이 명령어를 실행하면 된다.

 

# ndd -set /dev/<driver> <parameter> <value>

 

ndd를 사용하여 커널 변수를 변경할때는 주의하여야 할 사항이 있다. 한번 설정된 parameter는 시스템을 재부팅할 경우에는 이전에 설정된 값이 원래의 기본설정값으로 변경된다는 점이다. 설정된 값을 계속적으로 사용하기 위해서는 시스템 관리자가 shell script등을 이용해서 시스템 부팅시 자동으로 시스템관리자가 원하는 설정값으로 설정되게 운영하여야 많다. 예를들어 /etc/init.d/inetinit나 개별적인 shell script로 운영하여야만 한다.

 

4. ARP (Address Resolution Protocol)

 

ARP는 Layer3의 네트워크 주소를 data-link 주소(MAC Address)로 동적 맵핑(mapping)하는데 사용된다. 하나의 시스템이 한 네트워크 상에서 다른 시스템과 통신하고자 한다면 broadcast주소인 ff:ff:ff:ff:ff:ff로 ARP 패킷을 첫번째로 보낸다.

그 패킷은 단순한 패킷으로서 해당 주소를 어떤 시스템이 사용하고 있는지에 대한 질의 패킷이다. 예를 들어 누가 주소 A를 사용하고 있느지에 대하여 ARP패킷을 broadcast하면, 한 network 상에 존재하는 모든 호스트들이 이 패킷을 수신하게 된다. 이때 시스템 A는 ARP 요구에 대한 응답으로서 답을 보내게된다.

ARP Broadcast패킷을 보냈던 해당 시스템은 32bit IP주소를 layer-2인 MAC주소로 매핑하면서 table과 cache를 구성하여 운영하게 된다. 이때 해당 시스템은 network layer에의한 두번째 테이블을 구성하게 된다. 이 테이블은 data-link layer에의해 제공되어지는 정보로부터 구성되어지며, 활성화된 연결에대한 네트워크 라우팅 정보를 포함하고 있다. network layer는 data-link layer로부터 MAC주소를 요청하며, 요청된 결과로부터 수신된 이러한 주소를 네트워크 라우팅 테이블에 저장되어진다. Network layer의 정보는 20분 후에 만료된다.

 

하나의 네트워크에서 호스트는 다른 시스템과 통신하기 우히아여 첫번째로 IP layer의 ARP cache를 체크한다. 이때 네트워크 peer에대한 엔트리가 cache에 존해하지 않으면 ARP 요청이 broadcast되어 진다. ARP Cache 엔트리는 5분후에 만료된다. ARP Cache를 이용한 공격은 두가지 종류가 있다. 하나는 ARP cache poisoning이며 다른 하나는 ARP spoofing이다.

 

ARP cache poisoning은 존재하지 않는 ARP주소나, 잘못된 ARP주소를 시스템의 ARP cache에 삽입시키는 것이다. 이것은 target시스템이 peer의 IP주소로 패킷을 보내지만 MAC주소가 잘못되어 있기때문에 해당 시스템으로 하여금 서비스 거부를 일으킬수 있다,

 

ARP spoofing은 system compromise결과를 초래할 수 있다. IP spoofing처럼 ARP spoofing은 네트워크상에 존재하는 하나의 호스트를 네트워크 기능을 정상적으로 처리하지 못하게 해서 모든 ARP 요청 broadcast에 대한 응답을 못하도록 한다. 이것이 행해지기만 하면 공격자는 무능력해진 호스트의 IP주소를 공격 호스트로서 구성하여 사용할 수가 있게 되어진다. 피해 호스트가 무능력해진 호스트와 통신하려 할때 공격자의 시스템이 모든 ARP broadcast의 요청에 응답하게 된다. 이렇게 하면 그것의 MAC주소가 피해시스템의 ARP Cache에 저장되어지게 되서 피해시스템은 disable된 시스템이 공격자의 시스템으로 알게되서 공격시스템과 피해시스팀과의 정상적인 통신이 가능하게 되어진다.

 

ARP 공격에 대응하기는 매우 어렵다. ARP공격에 대한 한가지 대응방법은 cache 엔트리의 lifetime을 줄이는 것이다. cache lifetime은 네트워크 커널 변수인 arp_cleanup_interval에 의하여 결정되어 진다. IP routing 테이블 엔트리의 lifetime은 커널 변수인 ip_ire_flush_interval에 의해서 조정되어 질 수 있다. 이에 대한 커널 변수는 다음과 같은 명령어의 실행에 의해서 가능하다.

 

# ndd -set /dev/arp arp_cleanup_interval <time>

# ndd -set /dev/ip ip_ire_flush_interval <time>

 

여기서 time은 millisecond를 의미한다. ARP Cache 만료 및 IP routing 테이블의 만료시간을 줄이는 것은 공격의 피해를 줄일수 는 있으나 근본적이 해결책은 아니다. 또다른 옵션은 일부 시스템에 대하여 정적(static)인 ARP 주소를 사용하면 가능하다. 정적인 ARP cache 엔트리는 영구적이어서 만료되지 않는다. 이러한 정적인 entry는 명령어 arp -d를 사용하여 제거되어 질수 있다.

 

5. IP Parameters

 

Solaris 커널은 IP 네트워크 프로토콜의 다양한 특징들에 대한 제어방법을 제공한다. 이러한 기능들은 몇몇의 파라미터들들을 통하여 제공된다. 많이 사용되는 parameter들은 다음과 같다

 

ip_forwarding

ip_strict_dst_multihoming

ip_forward_directed_broadcasts

ip_forward_src_routed

 

IP forwarding은 동일 시스템에 두개이상의 네트워크 인터페이스사이에 IP 패킷들을 라우팅하는 것을 일컷는다. 전형적으로로 이러한 기능은 라우터의 기능과 동일하다. Solaris를 가지고 설치된 시스템은 이러한 IP Forwarding을 잘 수행한다. 이러한 IP forwarding은 ip_forwarding 파라미터을 0으로 세팅하여 차단할 수 있다. IP Forwarding기능을 차단하기 위한 명령어는 다음과 같다.

 

#ndd -set /dev/ip ip_forwarding 0

 

침입자는 IP 패킷들을 forwarding하지 않는 multihomed server에 연결된 네트워크 경로로 패킷들을 발생 시키는 또다른 공격이 있을 수 있으므로 이러한 공격을 차단하기 위해서는 시스템의 IP 커널 변수인 ip_strict_dst_multihoming을 0으로 세팅하여 차단할 수 있다. 이렇게 시스템을 설정함으로써 연결된 하나의 네트워크로부터 또다른 네트워크 인터페이스로 발생되는 모든 패킷들이 차단되게 할 수 있다. 커널 설정은 다음과 같은 명령으를 실행함으로써 가능하다.

 

#ndd -set /dev/ip ip_strict_dst_multihoming 0

 

Directed Broadcast는 외부 네트워크의 한 시스템으로부터 또 다른 네트워크의 모든 시스템에 보내어지는 패킷들을 말한다. Directed Broadcast는 "smurf"공격의 근간으로써 강제된 ICMP 패킷들이 하나의 호스트로부터 리모트 네트워크의 broadcast 주소로 보내어진다. ICMP패킷들의 출발지 주소는 피해를 입히고자 하는 시스템의 주소를 갖도록 강제로 설정할 수 있다. 그러면 원격의 네트워크에 있는 시스템들은 ICMP 패킷들을 받으면 이에 대한 응답으로서 응답 패킷이 피해호스트로 전송되어 진다. 대용량의 패킷을 받은 호스트은 flooding되게 된다.

IP forwarding이 설정된 모든 솔라리스 시스템은 directed broadcast역시 forwarding할 것이다. directed broadcast의 forwarding기능을 해제하기 위해서는 ip_forward_directed_broadcasts 커널변수를 0으로 설정하면 될 것이다.

 

#ndd -set /dev/ip ip_forward_directed_broadcasts 0

 

패킷들이 한 네트워크의 호스트로부터 다른 호스트로 전달되어 질때, 라우팅서비스를 제공하는 호스트들이나 전용 라우터들에 의해 그들이 경로가 결정되어 진다. 그래서 IP는 출발지와 목적지사이에서 경로를 지정하는 기능을 가지고 있다. 이러한 기능들은 두가지 형태를 취할 수 있으며 하나는 strict source routing로서 패킷의 송신시스템이 출발지와 목적지사의의 중간의 모든 HOP마다 라우팅부소를 제공해주는 경우와, 다른 하나는 loose source routing으로서 송신측의 두 시스템 사이의 모든 경로를 선택함에 있어서 일부 몇개의 HOP만 지정해주고 나머지는 자유롭게 도달하도록 하는 방법이다.

source routing은 네트워크 토폴로지상에서 보안체계를 우회하도록 사용될 수 있다. 물론 하나의 네트워크상에서 source-route된 패킷은 특별한 경우를 제외하고는 사용되지 않는다. 그렇기 때문에 IP Forwarding을제공하는 모든 호스트들은 Solaris kernel 변수인 ip_forward_src_routed를 0으로 세팅하여 source-route된 패킷들이 자동으로 드롭되도록 설정하여 운영하여야 한다. 설정방법은 다음과 같다.

 

#ndd -set /dev/IP ip_forward_src_routed 0

 

6. TCP Parameters

 

1997년 hrack Magazine의 기사에서 SYN flood로서 알려진 하나의 서비스거부공격을 기술하였다. 이러한 공격의 목적은 특정 시스템을 파괴하기 보다는 internet이나 intranet상에서 시스템이 네트워크 서비스를 불가능하게 만드는 것이다. 이러한 서비스 거부공격은 TCP연결의 기본방법을 이용하여 개발되었다.

하나의 시스템이 한 서버에 TCP를 사용하여 연결하고자 할때 sender는 처음 TCP/IP 패킷에 SYN bit를 설정하여 목적지에 발송한다. 이 SYN패킷은 TCP헤더에 SYN과 ACK 비트가 설정된 패킷을 가지고 목적지 시스템으로부터 응답받는다. 이 때 sender는 SYN-ACK패킷에 대한 응답으로서 ACK패킷을 보낸다. 이러한 방식을 "3-way handshake"방식이라 한다. 다음은 이러한 일련의 과정을 그림으로 설명한다.

 

sender(client) destination(server)

SYN -------------------------->

(sequence #: X)

<-------------------------- SYN-ACK

(sequence #:X+1, sequence #: Y)

ACK -------------------------->

(sequence #: Y+1)

 

이러한 과정에서 목적지 시스템이 sender에게 SYN-ACK패킷을 응답하고 ACK패킷을 sender가 응답하지 않을때 발생한다. 목적지 호스트는 "half-open"상태로 connection이 확립되기를 기다린다. 이때 srouce호스트가 목적지의 모든 가능한 TCP소켓 리소스를 고갈시킬때까지 이러한 half-open connection을 계속하게되면 목적지 시스템은 더이상의 TCP SYN패킷을 처리하지 못할 것이다. Solaris 시스템이 TCP SYN공격하에 있는지를 결정하는 한가지 방법은 SYN_RCVD상태에 있는 TCP connection의 갯수를 모니터링하는 것이다. SYN_RCVD상태의 connection은 다음과 같은 명령어를 통하여 확인 할 수 있다.

 

#netstat -an -f inet | grep SYN_RCVD

 

다음은 Solaris 7시스템이 SYN Flooding공격을 받고있는 동안에 위의 명령어를 실행한 결과이다.

 

[search:root]/user/ksch/dos > netstat -an -f inet | grep SYN_RCVD | more

127.0.0.1.80 172.16.10.1.14059 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.33931 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.61628 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.37302 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.27227 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.8350 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.52729 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.6407 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.63538 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.5467 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.33539 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.59230 0 0 9112 0 SYN_RCVD

............................................................................

............................................................................

127.0.0.1.80 172.16.10.1.59230 0 0 9112 0 SYN_RCVD

 

시스템이 정상적인 상태에서는 SYN_RCVD상태의 connection의 횟수가 거의 0이다.

다음은 SYN flooding공격을 받고있는 상태에서 SYN_RCVD상태를 카운트 한것이다.

 

[search:root]/user/ksch/dos > netstat -an -f inet | grep SYN_RCVD | wc -l

898

 

이러한 값은 시스템이 정상적인 환경하에서 작동할때의 기본적인 값과의 비교를 통하여 수행되어 질 수 있다.

Solaris는 시스템이 TCP SYN공격하에 있는지를 결정해주는 또다른 방법이 있다. 다음과 같은 명령어를 사용해서 하나의 TCP SYN공격이 확인되어질 수 있는 tcpHalfOpenDrop, tcpTimRetransDrop, tcp_ListenDrop 파라미터들의 값을 조사하면서 가능하다.

 

#netstat -s -P tcp

 

다음은 정상적인 시스템의 상태에서 TCP SYN Flooding공격을 받고있는 상태의 파라미터값들을 조사한 결과이다.

 

정상적인 상태에서는 tcpTimRetransDrop = 0, tcpListenDrop = 0,

tcpHalfOpenDrop = 0의 값을 유지하고 있었으나,

공격을 받은 상태에서는 tcpTimRetransDrop = 4243 , tcpListenDrop = 0,

tcpHalfOpenDrop = 140336

 

의 값을 나타내었다. 다음은 TCP SYN Flooding공격을 받고있는 Solaris 7시스템의 커널 파라미터값을 조회한 결과이다.

 

[search:root]:/ > netstat -s -P tcp

TCP tcpRtoAlgorithm = 4 tcpRtoMin = 200

tcpRtoMax = 60000 tcpMaxConn = -1

tcpActiveOpens = 72503 tcpPassiveOpens =207964

tcpAttemptFails = 10067 tcpEstabResets = 27

tcpCurrEstab = 18 tcpOutSegs =3220622

tcpOutDataSegs =2857020 tcpOutDataBytes =270559996

tcpRetransSegs =315847 tcpRetransBytes =577759

tcpOutAck =363525 tcpOutAckDelayed = 10315

tcpOutUrg = 3 tcpOutWinUpdate = 42

tcpOutWinProbe = 118 tcpOutControl =734882

tcpOutRsts = 14378 tcpOutFastRetrans = 353

tcpInSegs =3872088

tcpInAckSegs =2909440 tcpInAckBytes =270664796

tcpInDupAck =189991 tcpInAckUnsent = 0

tcpInInorderSegs =2845248 tcpInInorderBytes =300182637

tcpInUnorderSegs = 1428 tcpInUnorderBytes =1034420

tcpInDupSegs = 2487 tcpInDupBytes = 23404

tcpInPartDupSegs = 76 tcpInPartDupBytes = 45970

tcpInPastWinSegs = 0 tcpInPastWinBytes = 0

tcpInWinProbe = 0 tcpInWinUpdate = 118

tcpInClosed = 27 tcpRttNoUpdate = 359

tcpRttUpdate =2841174 tcpTimRetrans = 110

tcpTimRetransDrop = 4243 tcpTimKeepalive = 1498

tcpTimKeepaliveProbe= 64 tcpTimKeepaliveDrop = 1

tcpListenDrop = 0 tcpListenDropQ0 = 0

tcpHalfOpenDrop =140336 tcpOutSackRetrans = 0

 

파라미터 tcpTimRetransDrop은 시스템 부팅후에 SYN 요구나 연결확립된 TCP 연결에 대하여 시간만료된 패킷의 수이며, 파라미터 tcpListenDrop은 시스템이 부팅한 후에 TCP queue backlog때문에 거절된 SYN 요구의 횟수를 의미한다. 또한 tcpTimRetransDrop의 값에 따라 tcpListenDrop 및 tcpHalfOpenDrop값이 빠르게 증가하면 해당 시스템이 TCP SYN 공격을 당하고 있을 확율이 상당히 높음을 나타낸다. 이러한 공격을 상쇄하기 위해서 관리자는 다음의 두가지 작업을 수행할 수 있다. 하나는 abort timer의 값을 더 짧게 하는 것이고 다른 하나는 TCP 연결 큐(queue)를 더 길게하는 것이다. abort timer를 짧게하기 위해서는 milli-second로 설정하는 커널 변수인 tcp_ip_abort_cinterval를 사용할 수 있다. 시스템 디폴트값은 180초로 설정되어 있다. abort timer를 60초로 설정하기 위해서는 다음과 같은 명령어를 실행하면 될것이다.

 

#ndd -set /dev/tcp tcp_ip_abort_cinterval 60000

(60000 = 60 * 1000)

 

연결확립(connection established)이 이루어지지 않은 패킷에대한 큐 크기는 커널 변수인 tcp_conn_req_max_q0(Solaris 2.6이상)를 사용할 수 있다. solaris 2.5.1은 patch 103581-11를 패치하여야만 한다. tcp_conn_req_max_q0의 디폴트 값은 1024이다. queue 크기를 증가시키기 위햐여 다음의 명령어를 실행시키면 된다.

 

#ndd -set /dev/tcp tcp_conn_req_max_q0 2048

 

SYN Attack의 또다른 방법은 연결확립된 TCP의 queue를 고갈시키는 것이다. 이러한 방법은 출발지 주소가 노출되기 때문에 SYN공격으로서는 잘 사용되지 않는 방법이다. 하지만 해킹에 성공한 서버등을 사용하는 방법을 통하여 사용될 수 있는 방법이기도 하다. Solaris 2.6이상(Solaris 2.5.1은 103582-11로 패치필요)에 대하여 tcp_conn_req_max_q의 커널 변수를 통하여 queue 크기를 증가시킬수 있다.

 

#ndd -set /dev/tcp tcp_conn_req_max_q <size>

 

여기서 <size>는 호스트에서 허용하는 TCP연결확립의 총 수를 의미한다. established 및 unestablished TCP연결에 대한 queue 크기를 증가시키기 위해서는 더 많은 메모리를 필요로한다. 따라서 충분한 메모리의 확보 없이 queue 크기를 증가시키면 서버의 performance에 영향을 줄수 있다. 뿐만아니라 서버가 처리할 수 있는 것보다 더 많은양의 half-open이나 established에 대한 TCP Connections을 발생시키면 이러한 서비스 거부공격은 성공할 것이다.

 

7. 결론

 

Solaris Kernel은 많은 Security관련 환경 파라미터를 가지고 있다. 이러한 파라미터들의 조정을 통하여 시스템의 security 대응능력을 증가시킬 수 있다. 이러한 Solaris Security 커널 변수들은 ARP timeout, 패킷들의 IP forwarding, 패킷들의 IP Source routing, TCP connection queue size, network connection들을 통제하는 많은 다른 요소들로 구성된다. 커널 변수들을 올바르게 tunning함으로써 시스템관리자는 Solaris System을 외부의 Security위협에 대하여 저항력 있는 서버시스템을 구성할 수 있을것이다.

 

출처 : 솔라리스 운영자 모임.

반응형
Posted by [PineTree]
OS/SOLARIS2005. 4. 20. 22:51
반응형

1.솔라리스 개요

 

유닉스 역사

 

AT&T Bell Lab.

(1969 ~ 1970 )

BSD

( 1977 )

4.2 BSD

( 1984 )

4.3 BSD

( 1985 )

4.4 BSD

( 1993 )

Version 7

( 1979 )

System III

( 1982 )

System V R2

( 1984 )

System V R3

( 1986 )

System V R4

( 1993 )

OSF/1

( 1992 )

XENIX

( 1979 ~ )

Version 6

( 1977 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 


유닉스 계보

 

BSD

System V R3

System V R4

OSF/1

POSIX

SunOS

Linux

DBC

OSF/1

AIX

HP-UX

10

Solaris

IRIX

SCO

UNIX

 

 

 

 

 

 

 

 

 

 

 

 

 

 


다양한 유닉스 버젼들

UNIX System V R4.0

유닉스의 표준이 되는 버전으로 연구소에서 개발된 유닉스 시스템의 정식 이름이다.

SCO UNIX

Santa Cruz Operation사의 SCO Open Desktop SCO Open Server Release 3 이름이며 운영체제는 UNIX SVR3.2.5 구현이다.

SunOS

Sun사의 가장 알려진 BSD 중심의 운영체제

Solaris

Sun SVR4 구현이다.

HP-UX

UNIX 휴렛-팩커드 버전은 OSF/1 많은 특성들을 도입한 SVR4 변형이다. HP-UX 9 버전은 몇가지 확장성을 가진 SVR3 비슷하고 HP-UX 10 SVR4 운영체제이다.

Digital UNIX

OSF/1 DEC 버전은 실질적인 면에서는 System V 가깝지만 관리적인 측면에서 보면 일반적인 BSD시스템과 비슷하다. Digital UNIX 거의 같은 표준을 따르고 있지만 아주 다른 관리를 필요로 하는 시스템이다.

AIX

IBM System V 운영체제로 SVR4, BSD, OSF/1 특징들을 고루 가지고 있다.

Linux

 

인텔 프로세서를 위한 Free UNIX 방식의 운영체제이다. Linus Torvalds 만들었으며 이름의 의미는 Linus UNIX라는 뜻이다. Linux BSD 방식이다. 기술적으로 Linux라는 이름은 기본적인 core(커널과 일부드라이버 ) 말하지만 일반적으로 Linux 보급판을 구성하고 있는 다양한 소스로부터 전체적인 프리웨어를 말한다.

 

유닉스 계열

BSD(Berkeley Software Distribution) 계열 유닉스

캘리포니아 버클리 대학에서 무료로 배포하기 시작한 유닉스 버전

1993 4.4 BSD 발표됨

 

시스템Ⅴ(SYSV: System Five) 계열 유닉스

AT&T에서 발전시킨 유닉스 버젼들을 통칭하여 시스템 V

시스템 V 후속 버젼들은시스템 V 릴리즈 4’이므로 간단히 SVR4 표시

 

 

 

 

 

 

 

솔라리스(Solaris)

마이크로 시스템즈 사의 워크스테이션에 설치되어 대학 연구소를 중심으로 널리 사용되는 상용 유닉스 운영체제의 일종

초기 버젼인 SunOS 4.x 솔라리스 1.x 버전은 BSD 유닉스 계열의 버젼

솔라리스 2.x 버전부터는 SYS V 유닉스 계열의 버젼

솔라리스는 BSD 계열과 system V 계열 둘의 영향을 모두 받은 독특한 운영체제

 

프리BSD(FreeBSD)

버클리대학의 CSRG 선보인 4.4BSD-Lite2 기반한 유닉스 운영체제

BSD 유닉스 계열의 PC 유닉스 운영체제 (인텔 x86 계열)

 

리눅스(Linux)

1991 핀란드 헬싱키 대학의 학부생 리누스 토발즈에 의해 개발됨

현재 GNU 시스템 유틸리티와 인터넷을 통한 많은 공개 소프트웨어와 결합되어 PC 유닉스 운영체제로 각광 받음

 

유닉스 시스템 특징

 

1) 소프트웨어를 도구로 사용하는 개념을 도입

 

유닉스 시스템은 컴퓨팅에 새로운 개념을 도입했다. 간단한 몇몇 기능을 결합하여 하나의 작업을 처리 하는 것이다. 이러한 사고는 개발 영역에 까지 확대되어 많은 서브루틴 라이브러리들이 작성되었으며 이로 인해 새로운 실행 프로그램의 작성이 수월해졌다. 이와 같은 소프트웨어 재사용이라는 기본 개념으로 인해 유닉스 시스템은 높은 생산성을 제공한다.

 

2) 기종간의 호환성 극대화

 

마이크로 컴퓨터와 메인 프레임 그리고 과거의 기계와 새로운 기계, 특히 서로 다른 유닉스 버젼 간에도 응용 프로그램의 호환성이 뛰어나다. 이는 유닉스 시스템이 사용자가 기계 구조와 독립적으로 프로그램을 작성할 있는 환경을 제공하므로 최소의 수정으로 여러 다른 시스템에 프로그램을 이식할 있도록 한다.

 

3) 복수 사용자와 복수 태스킹 지원

 

유닉스는 분할 방식의 복수 태스킹 환경을 제공하기 때문에 동시에 여러개의 작업을 수월하게 처리할 있다. 동시에 여러 사용자를 지원하도록 고안된 다중사용자 시스템이다. 각각의 사용자는 다른 사용자의 활동으로부터 보호 받고

안을 유지하면서 컴퓨터 시스템에 저장된 정보와 처리 능력을 여러 사용자가 효율적으로 공유한다. 사용자가 늘어도 추가 비용 부담이 적고 다중 사용자가 공유 데이타에 대해 작업할 있도록 한다.

 

4) 계층적 화일 시스템

 

계층적 화일 시스템은 정보의 고유 구조를 반영하도록 그룹화하는데 최대의 유연성을 제공한다. 사용자는 데이타를 사용자별로 그룹화할 수도 있고 여러 사용자의 데이타를 협력 조직별로 모아서 그룹화할 수도 있다. 결과적으로 저장된 데이타의 위치를 쉽게 찾고 관리할 있다.

 

5) UNIX

 

사용자와 유닉스간의 접촉은 강력한 명령어 해석기인 쉘에 의해 이루어진다. 쉘은 응용 프로그램의 입력과 출력 방향 변경, 하나의 명령으로 한꺼번에 여러개의 화일을 조작하는 능력 수많은 편리한 기능을 제공한다. 또한 쉘은 프로그래밍 언어 기능을 내장하고 있어 미리 정의된 명령어들의 모임을 실행 시킬 수도 있다.

 

6) UNIX 유틸리티

 

유닉스는 데이타의 정렬, 텍스트 처리, 정보검색등 300여개의 유틸리티 프로그램을 포함하고 있다. 이런 유틸리티들은 새로운 프로그램을 작성하지 않고 많은 작업을 완료할 있는 강력한 도구들이다.

 

 

 

 

 

 

 

7) 완숙성

 

유닉스는 30년이 넘게 사용되면서 오랜 시간 동안 확실히 테스트된 운영체제이다. 소프트웨어는 오래될수록 상대적으로 버그가 적어지므로 운영체제의 작동에 높은 신뢰성을 제공한다. 기술적인 장점 이외에도 유닉스의 성공은 많은 유닉스 사용자들이 동호회나 신문, 잡지, 전시회를 통해 기술 교환, 요구 사항 등을 모아 개선 발전시켜 나가고 있다.

 

8) 강력한 통신 기능

 

유닉스 시스템의 최신 버젼들은 통신의 기능이 강화되고 있다. 시스템에 내장된 다양한 통신 도구나 저급 장치 동기 용이한 추가, 유연한 파일 시스템, 멀티 태스킹, 대용량의 통신 소프트웨어를 갖춘 유닉스 시스템은 통신 작업을 간단하고 쉽게 해준다.

 

 

 

 

 

 

 

 

 

유닉스 시스템 구조

 

커널 (Kernel)

- 도스의 IO.SYS MSDOS.SYS 유사한 역할 담당
-
시스템 프로그램과 시스템 하드웨어 사이의 제어 기능

- 디바이스, 메모리, 프로세스, 데몬 관리
-
모든 command 스케쥴링하고 수행

 

(Shell)

- 도스의 command.com 유사한 역할

- 쉘은 사용자가 입력한 명령어를 해석하여 커널이 이해할 있는 명령어로
번역

 

  유틸리티 응용 프로그램

- 제공되는 유틸리티 운영체제에 특정 기능을 부여하는 응용 프로그램

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


솔라리스란?

솔라리스( Solaris ) 구분

 

- 솔라리스 1.x = SunOS 4.1.x + Openwindows 3.0 = BSD계열

- 솔라리스 2.x = SunOS 5.1.x + Openwindows 3.x = SVR4계열

 

% uname -a
운영체제 이름, 호스트 이름, 릴리즈, 버전, 하드웨어명, 프로세서 형태를 표시

Sunos atmos50 5.4 generic sun4m sparc

 

Solaris 7 구성요소

- SunOS 5.7 operating system

- ONC+ : 네트웍을 가능하게 하는 프로토콜
- CDE:
공통의 GUI 환경

- NFS, NIS+

솔라리스 8 특징


- 64
개의 CPU, 4노드 클러스터를 지원하는 뛰어난 확장성
-
파일의 Drag and Drop
-
파일의 속성이나 소유자 변경 또한 마우스 오른쪽 버튼 클릭으로 가능

-  8G
이상의 고용량 하드디스크도 실린더 수와 관계없이 곧바로 사용가능
-
완벽한 한글 지원
-
기본적으로 설치되는 다양한 프로그램들
아파치 1.3.9 서버, Perl, Samba, ftp, telnet, JDK 1.2.1
- http://www.sun.co.kr/products/software/os_platforms/solaris/solaris.html

 

 

 

 

 

 

솔라리스 구입

- 9장의 CD 구성됨
- http://www.sun.com/software/solaris/binaries/solaris.html (
인터넷 주문)

 

솔라리스 인텔 플랫폼 개요

History

1998 11 Sun Microsystems에서 X86계열의 인텔 CPU 사용자도 사용할 있는 Solaris 7 발표됨

99 9 솔라리스 8 베타판이 제한된 테스터들에게 공개

2000 3 솔라리스 8 정식제품이 발표됨

 

인텔 플랫폼과 스팍 플랫폼의 차이점

스팍 플랫폼은 32 비트 또는 64비트 커널 운영체제이나 인텔 플랫폼은 32비트 커널 운영체제이다.

스팍 플랫폼에서 돌아가는 소프트웨어 유틸리티가 훨씬 다양하다.

solutions.sun.com 가면 솔라리스 프로그램 다운로드 가능하다.

 

Solaris 8 경우 Sun Microsystems lxrun 개발팀의 협력하에 lxrun이라는 유틸리티가 개발됨으로써 인텔 플랫폼 솔라리스 사용자들은 솔라리스에서 리눅스 프로그램을 곧바로 실행 가능

 

인텔 플랫폼 최소 설치 사양

intel Architecture (32-bit) 플랫폼

Disk 공간: 2.4 Gbyte

메모리: 64 Mbytes

지원 가능한 하드웨어 목록
http://soldc.sun.com/support/drivers/hcl/8/600/BOOK.htm

 

 

 

2.유닉스 부팅 개요

 

 

boot 과정 (일반적인 유닉스의 부팅 과정)

kernel loading initailization

·Device detection configuration

¸System process 생성

¹Operator intervention(single-user boot에서만 가능함)

ºSystem 시작 스크립트 수행

»Multi-user operation

 

X86 계열의 부팅과정

전원이 들어오면 일단 BIOS 시스템 하드웨어에 문제가 없는지 테스트한다.

·첫번째 하드 디스크의 MBR (Master Boot Record) 프로그램이 파티션 테이블을 검사하여 활성화(Active) 파티션의 부트 섹터를 읽어 코드를 실행한다. 해당 코드는 커널을 메모리로 읽어 들이는 역할을 한다.

¸커널은 자료구조를 초기화하고 필요한 커널 모듈을 읽어 들인다.

¹Root file system mount한다.

ºinit 프로그램을 수행한다.

(init 프로그램이 다양한 스크립트를 수행하여 multi-user mode 전환하게 된다.)

 

초기  프로세스의 생성

커널이 메모리에 올라오고 초기화 작업이 끝나는 시점에서 사용자 메모리 영역에 개의 자발적 프로세스를 만든다.

System V 계열에서는 shed: process 0, init:process 1 등의 이름을 가지고 있다. 몇몇 초기 프로세스의 생성이 끝나면, 부팅에 관한 커널의 임무는 여기서 끝나고 나머지 부팅 과정은 init process 주도한다.

 

시작 스크립트

init 각종 스크립트를 수행하여 시스템 운영 환경을 구축한다. 스크립트의 수행구조는 BSD 계열과 System V 계열이 약간 차이가 있다.

BSD 계열은 /etc 하위에 rc 시작하는 파일들이 수행하는 스크립트이며, system V 계열은 /etc/init.d 하위에 시작 스크립트들이 존재하고 이중 필요한 것들이 /etc/rc0.d, /etc/rc1.d 등의 디렉토리에 링크되어 사용된다. 어떤 시스템이든 시작 스크립트는 대략 다음과 같은 일들을 한다.

 

-컴퓨터의 이름 setting

-time zone setting

-시스템의 디스크들을 mount

-network interface configuration

-각종 데몬과 network service 시작

 

 

 

 

 

 

 

 

 

 

 

 

 

OpenBoot PROM Instruction

 

Boot PROM

Configuration

Information

Binary

machine instructions

EEPROM

Time of day

Ethernet

address

hostid

power-on self-test

    diagonostics

       (POST)

     Generic

device drivers

  User

interface

   Default

parameters

IU

SPARC CPU chip

NVRAM

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


-          Boot PROM
kernel
load 되기 전에 시스템을 Control 하는 프로그램으로 Programmable Read-Only Memory 이다
.
시스템은 monitor PROM chip 가지고 있고 PROM 시스템이 부팅되기 이전에 사용되며 self-test 절차로 시스템과 하드웨어의 무결성 여부를 진단한다.

-          Power-on self-tests(POST) : 간단한 하드웨어 자가진단

-          Generic device drivers: 드라이버와 주변기기 간의 동기화

-          User interface

-          Default parameters: OK 프롬프트에서 사용되는 파라미터의 디폴트

-          EEPROM: Boot PROM 디폴트 값의 변경

-          Time of day: 시간 동기화

-          Ethernet

-          addresshostid:시스템 식별 ID

 

 

 

 

 

 

 

 

 

 

 

 

Basic OpenBoot PROM Commands

 

ok banner: 모델, 메모리 용량, hostid, 시스템의 PROM 버전 번호 등에 관한 정보 확인

ok printenv: NVRAM 파라미터의 디폴트 값과 현재 셋팅 확인

ok setenv: PROM 파라미터 변경

ok set-defaults: 모든 파라미터 디폴트로 설정

ok probe-scsi: SCSI controller 연결된 디바이스 확인

ok probe-scsi-all: multi-system board 사용 SCSI controller 연결된 디바이스 확인

ok probe-ide: ide controller 연결된 디바이스 확인

ok devalias: device alias name 확인

ok show-devs:루트 레벨에서부터의 모든 디바이스의 path 확인

ok nvalias mydisk /pci@1f,0/pci@1,1/ide@3/disk@0,0

    디바이스 알리어스 명을 mydisk 지정

ok nvunalias mydisk: 설정된 디바이스의 알리어스 해제

 

 

 

 

 

 

 

 

EEPEOM Commands

/usr/sbin/eeprom 명령어는 Solaris operation system running하는 동안 NVRAM 변수들을 확인하고 변경할 있는 명령어이다.

 

List all of the EEPROM parameters

# eeprom

 

List a single EEPROM patameters

#eeprom bootpath

 

Change the default boot device

#eeprom auto-boot?=false

#eeprom auto-boot?=true

 

 

 

 

 

 

 

 

 

 

 

 

 

3.시스템 부팅 단계

 

시스템 부팅 단계

Boot PROM phase

 

PROM runs

self-test diagnostics

Ok printenv boot-device

Ok boot

reads disk label (sector 0)

Reads boot block

(sectors 1-15)

PROM loads boot blocks

(bootblk) program

Boot PROM phase

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


-Boot PROM 프로그램은 시스템의 하드웨어와 메모리 체크

-System identification banner 출력

-Sector 0 있는 디스크 라벨을 읽어 default boot device 체크

-시스템의 boot block program(bootblk:sectors 1-15 위치) read

-PROM boot block program(bootblk) 메모리로 load

 

 

 

Boot program phase

 

 

The boot block program loads

the boot(ufsboot) program

The boot(ufsboot) program

loads the 32-or 64-bit kernel

Boot program phase

 

 

 

 

 

 

 

 

 


 32 bit 시스템의  kernel
  platform-specific kernel: /platform/`uname -m`/kernel/unix

  generic kernel: /kernel/genunix

 

64 bit 시스템의 kernel

  platform-specific kernel: /platform/`uname -m`/kernel/sparcv9/unix

  generic kernel:/platform/`uname -m`/kernel/sparcv9/genunix

 

 

 

 

 

 

 

 

 

 

 

 

Kernel initailization phase

 

 

 

Load kernel modules

Read /etc/system file

The kernel initializes itself and

starts the init process

Kernel initialization phase

The /sbin/init phase

The init process starts the

run control scripts

 

 

 

 

 

 

 

 

 

 

 

 

 


Kernel Module directories

- /kernel

- /usr/kernel

- /platform/`uname -m`/kernel

 

The kernel Subdirectories

- drv: Device drivers and pseudo drivers

- exec: 실행파일 수행 필요한 모듈

- fs: File-system module(ufs, nfs, and proc)

- misc: 가상 메모리 수행과 프로세스 통신을 위해 필요한 여러 모듈들

- sched: Scheduling classes and corresponding dispatch table modules

- strmod: 사용자와 디바이스 드라이버들 사이의 연결 스트림 모듈

- sys: 시스템

 

 

/etc/system file

:Kernel configuration process 변경을 위해 /etc/system 파일의 편집 필요

- moddir:부팅 로딩되는 커널 모듈의 패스 설정(커널 패스)

- rootdev: root device 설정

- exclude: 시스템 부팅 메모리에 로드시키지 않을 커널 모듈들

- forceload: 시스템 부팅 항상 메모리에 로드시켜야 커널 모듈들

- set: set variable=value 같은 꼴로 커널 파라미터의 기본 설정 값의 변경 가능

-커널 파라미터에 대한 자세한 정보 확인: http://docs.sun.com

 

/sbin/init phase

- 커널은 유저 프로세스를 생성하고 /sbin/init 프로그램을 시작시킴

- /sbin/init 프로그램
/etc/inittab
정보를 사용하여 프로세스 생성
디폴트 레벨로 시스템 부팅
/etc/inittab
내용을 토대로 레벨 전환

 

 

 

 

 

 

 

 

4.The /etc/inittab file

 

/etc/inittab file

System default run level 정의

Process start, monitor, restart

run level 전환

 

/etc/inittab File format
id:rstate:action:process
) s3:3:wait:/sbin/rc3  >/dev/console 2<> /dev/console < /dev/console

-id(s3): 각각의 항목을 구별하기 위한 식별자

-rstate(3): 수행될 레벨 명시
-action(wait):
프로세스가 어떤 action 취해야 하는지를 init 프로세스에게 전달하기 위한 키워드 명시
-initdefault: default run level (default 3)

-respawn: 프로세스가 종료되면 즉시 다시 시작됨
-powerfail:
시스템 파워쪽 문제가 발생하면 다음 프로세스 수행됨
-sysinit:
다른 프로세스의 수행 이전에 가장 먼저 수행되는 프로세스
-wait:
현재 수행중인 프로세스가 실행을 완료할 때까지 기다린 다음 프로세스를 수행함

-process(/sbin/rc3): 실제 프로세스 수행 위한 명령어 명시

 

*Inittab 파일의 각각의 항목들은 레벨에서 생성되어야 프로세스
들과 수행될 action들의 내용을 init 프로세스에게 전달한다.

 

 

 

 

 

 

 

 

/etc/inittab 파일의 내용
- 시스템의 기본 레벨
-
시스템이 새로운 레벨로 바뀌었을 취해져야 action
-
특정 프로세스가 죽었을 시작될 프로세스, 모니터 프로세스 다시 시작되어야 프로세스를 정의함

 

프로세스의 역할
- autopush: read 커널 모듈을 메모리에 올려 주는 역할
- soconfig:
소켓 프로그램 관리
- sac:
시리얼 포트쪽(로그인 서비스)으로 오는 요청을 관리해 주는 역할
- ttymon:
터미널 쪽으로 들어오는 요청을 처리하는 역할

 

/etc/inittab file 내용

 

ap::sysinit:/sbin/autopush -f /etc/iu.ap

ap::sysinit:/sbin/soconfig -f /etc/sock2path

fs::sysinit:/sbin/rcS sysinit >/dev/msglog 2<>/dev/msglog </dev/console

is:3:initdefault:

p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog

sS:s:wait:/sbin/rcS >/dev/msglog 2<>/dev/msglog </dev/console

s0:0:wait:/sbin/rc0 >/dev/msglog 2<>/dev/msglog </dev/console

s1:1:respawn:/sbin/rc1 >/dev/msglog 2<>/dev/msglog </dev/console

s2:23:wait:/sbin/rc2 >/dev/msglog 2<>/dev/msglog </dev/console

s3:3:wait:/sbin/rc3 >/dev/msglog 2<>/dev/msglog </dev/console

s5:5:wait:/sbin/rc5 >/dev/msglog 2<>/dev/msglog </dev/console

s6:6:wait:/sbin/rc6 >/dev/msglog 2<>/dev/msglog </dev/console

fw:0:wait:/sbin/uadmin 2 0 >/dev/msglog 2<>/dev/msglog </dev/console

of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog </dev/console

of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog </dev/console

rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog </dev/console

rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog </dev/console

sc:234:respawn:/usr/lib/saf/sac -t 300

co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: " -T sun -d

/dev/console -l console -m idterm,ttcompat

 

The init Process and the /etc/inittab File

init process

/etc/inittab

Set initdefault to level 3

Run entries with sysinit in

action field

Run entries with 3 in

rstate field

sbin/autopushh

/sbin/soconf

/sbin/rcS

/sbin/rc2

/sbin/rc3

/usr/lib/saf/sac

/usr/lib/saf/ttymon

system startup stsstartup

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


init 프로세스는 inittab 파일을 읽는다.

init 프로세스는 initdefault entry 의거하여 디폴트 레벨로 부팅하도록 한다.

init 프로세스는 sysinit field 포함하고 있는 명령어나 스크립트를 수행한다.

init 프로세스는 rstate 3 모든 entry 해당되는 스크립트를 수행한다.

(/sbin/rc2, sbin/rc3, /usr/lib/saf/sac, and /usr/lib/saf/ttymon)

 

 

/sbin Directory

 

sbin

rcS

rc0

rc1

rc2

rc3

rc5

rc6

 

 

 

 

 

 

 

 

 

 

 

 


init 프로세는 각각의 런레벨마다 수행되어야 rc 스크립트를 찾아 수행하고 rc 스크립트는 /sbin 디렉토리에 위치한다.

/etc/rc# /sbin/rc# symbolically link되어 있다.

#cd /etc

#ls -l rcS

 

 

 

 

 

 

 

 

 

 

 

/etc/re#.d directory

 

/etc

rcS.d

rc0.d

rc1.d

rc2.d

rc3.d

K*

S*

README

K*

K*

S*

S*

README

K*

S*

 

 

 

 

 

 

 

 

 

 

 

 


파일들은 K S 시작한다. 먼저 K* 실행된 S* 실행된다.

K* kill process file이고 S* start process file 이다.

만약 어떤 script 첨가하고 싶은 경우 /etc/init.d 디렉토리에 해당 script

첨가하면 된다.

 

 

 

 

 

 

 

 

 

/etc/init.d directory

/etc

ANNOUNCE

MOUNTFS

nfs.client

lp

standardmounts

volmgt

init.d

 

 

 

 

 

 

 

 

 

 

 

 

 


/etc/init.d 디렉토리에 있는 actual run control files 들은 런레벨의 변경없이 프로세스들을 시작, 종료 가능

  # /etc/init.d/lp stop

  # /etc/init.d/lp start

/etc/init.d 디렉토리에는 모든 레벨에서 수행되어야 rc 스크립트가 전부

들어 있다.

 

 

 

 

 

 

 

 5.System Run Level

 

RUN LEVELS

Run level

Function

0

PROM monitor level

1

Single user mode

2

Multi-user level(with no resources shared)

3

Multi-user level(with resources shared)

4

Not currently used

5

Halt(and turn off Sun-4m and Sun-4u architecture)

6

Reboot to default run level 3

S

Single-user mode

 

Changing System States

 

init command

#init [012356]

 

shutdown command

#shutdown [-y] [-g seconds] [-i init-state] [message]

 

other commands

-#halt: init 0

-#poweroff: init 5

-#reboot: init 6

 

Halt

Init 0

Shutdown –i0

Reboot

Init 6

Shutdown –i6

Poweroff

Init 5

Shutdown –i5

 

 

 

Boot Process 중의 Trobelshooting

Stop-a sequence
  Recovery
위한 이상의 방법이 없다고 고려되면 Stop-a 키를 사용한다.

Sync
  Ok
프롬프트 상태에서 sync 명령어를 통해 disk synchronize 시킨다.

Go
  Go
명령어는 잠시 중단시켰던 오퍼레이션을 다시 작동시킨다.
  Stop-A
누르기 상태로 돌아갈 있다.

 

 

 

 

 

 

 

 

 

 

 

 

6.초기화 파일

 

초기화 파일 설정

 

쉘의 공통된 기능

쉘은 사용자와 시스템 사이의 명령어 해석 인터페이스를 제공하는 것이 목적이며 어떤 쉘을 사용하는지는 상관없으며 쉘마다의 특성에 따라, 자신이 작업하고자 하는 환경에 맞는 것을 선택하면 된다.

쉘의 가장 기능이라면 사용자의 명령어를 해석하여 커널에 전달하는 것과 사용자가 시스템에 로그인을 하거나 다른 쉘로 이동 시에 작업환경을 정의하는 역할을 한다.

 

Initailization Files

 

Shell

System(Read First)

User(Read Second/Third)

Template (/etc/skel)

Bourne

/etc/profile

$HOME/.profile

local.profile

Korn

/etc/profile

$HOME/.profile

then

$HOME/.kshrc

local.profile

C

/etc/.login

$HOME/.cshrc

then

$HOME/.login

local.cshrc

local.login

 

System Wide 초기화 파일

 

- login name 위한 LOGNAME 같은 환경변수를 export한다.
-
기본 명령어를 위한 PATH 변수를 export한다
.
-
기본 terminal type 위한 TERM 변수를 셋업 한다
.
- /etc/motd
파일이 포함하고 있는 내용을 화면에 보여준다
.
-
기본 permissions 셋업 한다
.
- login
mail message check한다.

 

User specific 초기화 파일(.profile, .kshrc, .cshrc 등등)
 

- 기본 prompt 설정한다. ex)PS1='$PWD> '
-
기본 프린터를 설정한다
.
-
기본 permission 설정한다
.
- Korn shell
C shell 위한 history 설정한다
.
- vi
다른 tool 의해 사용 되어진 terminal type 설정한다
.
-
새로운 mail message check 한다
.
- redirection
실행할 파일의 overwriting 방지하는 noclobber 설정:

 set -o noclobber 
-
사용자가 자주 사용하는 명령어들의 경로를 설정한다
.
- custom commands
설정한다.

 

command line에서 변경내용 적용시키기

  - Bourne and Korn shells

    # . ./.profile

    #. ./.profile
 

  - C

    # source ~/.login

    # source ~/.cshrc

 

 

 

 

 

7.환경변수

 

 

환경변수

local 변수: 지금 현재 shell에서만 적용

global 변수: 모든 shell 환경에서 적용됨

 

Bourne shell & korn shell

C shell

Local 변수 선언: 변수명=

Global 변수 선언: export

Local 변수 선언: set, @

Global 변수 선언: setenv

예제
 
#A=123
  #B=abc
  #export B
  #ksh
  #echo $A
  #echo $B
  #exit
  #echo $A
  #echo $B

 

예제
  #set A=123
  #@ B=abc
  #setenv C=xyz
  #bash
  #echo $A
  #echo $B
  #echo $C
  #exit
  #echo $A
  #echo $B
  #echo $C

 

 

 

 

 

 

 

 

 

 

 

 

 

미리 정의된 환경변수

1.PATH: 명령어의 검색 경로 지정
C
쉘의 경우는 PATH 환경 변수는 변수인 path 값을 설정하는데 이용됨
setenv PATH 명령을 실행할 때마다 C 쉘은 path 변수를 그에 맞게 수정
setenv PATH /bin:/usr/bin:/usr/local::$HOME/bin

2.EDITOR: 즐겨 이용하는 편집기의 이름
일부 프로그램은 EDITOR 변수(ed 등의 라인 편집기) VISUAL 변수(vi 등의 화면 편집기) 구별함
Korn
쉘은 VISUAL EDITOR 순서로 검사함

3.PRINTER: lpr 명령에서 사용될 기본 프린터의 이름

4.PWD: 현재 디렉토리의 절대 경로명

5.HOME: 디렉토리의 절대 경로명

6.SHELL: 로그인 쉘의 절대 경로명

7.USER 또는 LOGNAME: 사용자의 이름, 로그인 하면 자동으로 설정되고 바뀌지 않음

8.TERM: 터미널 종류 이름

9.ENV: korn 쉘에서만 이용되는 변수로 새로운 korn 쉘이 시작될 마다
실행되어야 하는 초기화 파일의 이름을 담고 있음

10.EXINIT: vi 편집기의 설정 옵션들

11.PS1: 본쉘의 기본 프롬프트를 갖고 있다.
  C
쉘은 프롬프트를 환경 변수에 담아 두지 않고 prompt라는 변수를 이용

 
하는데 이는 새로운 쉘이 시작될 마다 .cshrc 파일을 읽어 필요한 설정을
 
하기 때문이다.

12.PS2: 쉘의 보조 프롬프트를 갖고 있다.

13.MANPATH: 매뉴얼 페이지를 찾기 위한 순서

14.TZ: 표준 시간대

15.DISPLAY: X 윈도우 시스템을 이용하여 X 애플리케이션 입력과 출력으로
이용될 디스플레이 서버(키보드와 화면 처리 프로그램) 지정

 

 

 

 

 

 

 

모든 환경 변수의 목록 출력

#printenv

#env

모든 변수 목록 출력

#set

 

 

DISPLAY 환경변수

원격호스트의 DISPLAY 변수를 로컬호스트에 전달하는 방법

 

원격 컴퓨터에 dark.matt.er telnet접속이 되어있고, 원격 컴퓨터가 csh 실행중

dark%  setenv  DISPLAY light.uni.verse:0

dark%  xfig &

 

원격이ksh 실행중

dark$ DISPLAY = light.uni.verse: 0

dark$ export  DISPLAY

dark$ xfig &

 

설정예

대의 컴퓨터를 사용할 경우 xhost --display 옵션으로 X윈도우 어플리케이션을 각기 다른 컴퓨터의 화면에 띄울 있습니다.

컴퓨터 A B 있다고 가정하고 각기 168.126.63.1 168.126.63.2 IP 사용한다고 하면 컴퓨터 B(168.126.63.2) 터미널에서 #xhost +168.126.63.1 서버를 열어줍니다.

컴퓨터A(168.126.63.1)에서

#hanterm -display 168.126.63.2:0

실행하면 컴퓨터B 화면에 한텀창이 뜨게 됩니다.

만약 컴퓨터A에는 없고 컴퓨터B에만 있는 프로그램이 있다면 telnet으로 접속하여 컴퓨터B에서 프로그램을 실행하고 컴퓨터A X윈도우에 화면을 띄울 있습니다.

 

 

C

 

C

C 쉘은 bourne 쉘보다 기능면에서 많은 부분 진보된 쉘로 C 쉘에서 지원하는 기능에는 aliases, command history, job control 등이 있다.

C 쉘에서는 초기화 파일로 .login, .cshrc, .logout 있다. 이들은 각각 서로 다른 기능을 갖고 있다. 사용자가 로그인 제일 먼저 .logout 파일을 읽고, 각각의 쉘이 실행될 때마다 .cshrc 파일을 읽는다. 그리고 마지막으로 로그아웃을 실행할 .logout 파일을 읽게 된다. 일반적으로 환경변수는 .logout 파일에 설정하고, 변수들은 .cshrc 설정한다.

 

C 쉘의 특징

Alias

alias 사전적 뜻으로 별명 혹은 축약어라는 의미를 지니고 있고 명령을 alias 명령을 이용하여 쉽게 사용하도록 편의를 제공해 준다.

alias alias_name command

 

명령 히스토리

명령 히스토리란 최근에 사용한 명령을 명령 히스토리 목록에 저장하여 사용자의 명령 사용에 편리성을 제공해 주는 기능이다.

 

히스토리 크기 바꾸기

set history=30

다음 로그인 이전 명령 히스토리 사용

set savehistory=20

 

 

 

 

C 쉘의 변수들

 

변수명

내용

argv

Argument variable

cwd

Working 디렉토리의 내용

history

History 리스트의 크기

cdpath

디렉토리들의 목록을 저장

prompt

Bourne 쉘의 PS1 동일

savelist

로그아웃시 저장하는 history 정보

shell

Shell pathname

$$

현재 쉘의 PID number

mail

E-mail 경우 쉘이 알려줌

noglob

와일드카드 확장을 금지시킴

notify

백그라운드 작업 중지 알려줌

ignoreeof

쉘은 ctrl-d 반응하지 않음

noclobber

리다이렉션시 파일의 overwriting 방지

 

 

 

 

초기화 파일 설정 예제

 

The Bourne Shell

  $cat .profile

  TERM=vt100

  PATH=/usr/ucb:/usr/bin:/usr/sbin:
  PS1=“`hostname`>”
  PS2=“>”

  CDPATH=:$HOME

export TERM PATH PS1 CDPATH

The C shell

% cat .cshrc

  set noclobber
  set ignoreeof

  set hostory=100

  set prompt=“`hostname`%”

  set PATH=(/usr/bin /usr/ucb /usr/sbin ~/bin .)

  alias h history

  alias ll ls -l

%cat .logout

  echo remember to turn on call

  echo forwarding before you go home.

  Sleep 10

The korn shell

/export/home/mhkang> cat .kshrc

PS1='$PWD> '

set -o noclobber

set -o vi

stty erase ^H

alias dir='ls -al'

alias c=clear

/export/home/mhkang> cat .profile ?

PATH=$PATH:/usr/local/bin

ENV=$HOME/.kshrc

export ENV

 

 

shell 기능

 

기능

bourne

C

Korn

Aliases

No

Yes

Yes

Command-line editing

No

Yes

Yes

History List

No

Yes

Yes

Ignore Control-d ( ignoreeof)

No

Yes

Yes

Separate initialization file from .profile

No

Yes

Yes

Job control (ability to move job to and from

the background and foreground for processing;

ability to suspend a job)

 

No

Yes

Yes

Logout file

No

Yes

No

Protect files from overwriting

(noclobber)

 

No

Yes

Yes

 

 

 

 

 

 

 

 

 

 

 

8.디스크 관리

 

 

디스크 관리

Disk Slices

디스크는 슬라이스라고도 부르는 8개의 파티션으로 나누어진다.

Slice 0 root 파일을 포함하는 boot 디스크

Slice 2 전체 디스크

Swap 어떤 slice라도 무관

 

System Board

host adapter

 

 

host adapter

C0

SCSI controller

SCSI controller

SCSI controller

t0

t1

t6

/dev/dsk/c0t0d0s0

 

/dev/dsk/c0t0d0s1

/dev/dsk/c0t1d0s5

 

/dev/dsk/c0t1d0s6

/dev/dsk/c0t6d0s0

 

/dev/dsk/c0t6d0s6

d0

d0

d0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


디스크 이름

Logical Device Names

-시스템 관리자가 참조하는 용도로 사용되는 이름으로 “c0t0d0s7” 처럼 영문과 숫자의 조합으로 표시

-logical name /dev/dsk (block device names) /dev/rdsk(raw device names) 디렉토리에 존재하며 실제로는 /devices 디렉토리의 복잡한 디바이스 이름과 링크됨

 

  c0: controller number 0

  t0: target number 0, IDE에는 존재하지 않으며 SCSI 경우는 id 번호가

  d0: disk number 0

  s7: slice number 7
- Logical device name
확인

  # ls /dev/dsk

 

Physical Device Names

- devices 디렉토리 밑에 위치함

- 형식: driver-name@unit-address:device arguments

 

   : /sbus@if,0/esp@0,4000/sd@3,0:a
   if,0
메인 시스템 버스 주소를 가지고 sbus 연결됨

   esp 장치(scsi bus) 0 슬롯, 4000 옵셋에 부착되어 있으며

   SCSI target 번호가 3, 디스크 번호가 0, 슬라이스 번호가 0

   확인: # ls -l /dev/dsk/c0t0d0s0

 

Instance Names

- physical device name 디바이스 이름 축약형
s=SCSI, d=disk, n=logical disk number
  
: sd0 first SCSI disk drive

 

 

 

 

디스크 관련 명령어
 

dmesg command
    

시스템에 연결된 디바이스 확인

instance name  physical name 확인


/etc/path_to_inst file

instance name physical name list
 

format command

logical and physical device name display

 

   prtconf command

시스템 메모리와 주변장치의 configuration 정보를 display

시스템에 장착되어 있지 않은 장치에 대한 것도 확인가능
#prtconf|grep -v not : 사용하고 있지 않은 장치 확인

 

파일시스템의 이용상황 체크

 

df [옵션] --- 슬라이스의 용량 조사

  -k : 킬로바이트 단위로 총량, 사용량, 빈용량 표시

  -t : 블록수, 파일수의 현재 용량과 총량을 표시

du [옵션] ---- 디렉토리에서 사용하고 있는 파일의 크기

  -a : 디렉토리 아니라 파일 크기를 표시

  -s : 총합계 크기만을 표시

quot [옵션] [파일 시스템 ] --- 슬라이스 마다 사용자의 사용량

  -f : 사용량과 사용자의 파일수도 표시

  -a : 마운트 되어 있는 모든 파일 시스템에 대해 표시

 

 

 

 

Reconfiguring Device

Reconfiguring Device
디스크의 이동이나 교체 등의 작업시 디스크 설치 부팅을 진행하면 시스템은
이를 인식하지 못한다. 이럴경우 reconfigure 작업이 진행되어야 한다.

 

부팅 옵션을 입력

x86 버전의 경우 부팅 (b)oot (i)nterprete 고르는 부분이 있는데 여기서

“b -r” 입력

 

부팅 상태에서의 명령어

  # reboot -- -r

 

reconfigure 파일 생성 reboot
reconfigure
파일을 만든 reboot 하게 되면 부팅 init에서 불러 들이는 rc.sysinit
파일에서는 root 디렉토리에 reconfigure  라는 파일의 존재를 파악하여 시스템의
변경 부분에 대해 kernel rebuild한다.

# touch /reconfigure

  # reboot

 

OS레벨에서 디바이스 인식시키기(reboot 과정 없이 가능)

  # drvconfig: /devices 쪽을 다시 생성해

  # disks: 디스크 디바이스 인식

  # tapes: 테이프 디바이스 인식

 

 

 

 

 

 

 

Format

format 사용한 partitioning

 

1.대상 디스크 고르기

 

iacademy[/]155#format

Searching for disks...done

AVAILABLE DISK SELECTIONS:

       0. c0d0

       /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0

       1. c0d1

       /pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0

 

2. 메뉴 fdisk 통해 솔라리스 파일 시스템 생성

3. Create a partition에서 100% solaris 파티션을 설정

4. partition 명령어 사용하여 파티션 나누기

5. print 명령을 통해 현재 디스크의 슬라이스 상태 확인

6.모든 파티션 나누는 작업이 완료되면 label 사용하여 수정된 정보를 디스크

(VTOC) 저장함

7.newfs command file system 변경사항을 적용시킴

  #newfs /dev/rdsk/c1d0s0

8.prtvtoc 명령어로 VTOC 정보 디스플레이

  #prtvtoc /dev/rdsk/c1d0s0

 

 

 

 

 

 

 

 

 

 

 

 

디스크 추가

1./reconfigure 파일 생성

  # touch /reconfigure

  #init 5

2. 디스크 장착하기

3. 하드웨어 레벨에서 인식 확인

  ok probe-scsi

  ok probe-ide

4. #format (파티션 나누기)

5. newfs 명령어 통해 슬라이스 별로 파일 시스템 재구성

  #newfs /dev/dsk/c1d0s0

6. #mount /dev/dsk/c1d0s0 /p1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.유닉스의 파일 시스템

 

유닉스의 파일 시스템

UNIX File System


  - UNIX
시스템은 여러 개의 물리적 디스크를 가질 있고  이러한 디스크들은
 
하나 이상의  file system 가지게 된다.
  -
커널은 각각의 file system 다루며 각각의 file system마다

  device number(EX:/dev/dsk/c0t3d0s0)
 부여하여 이를 논리적 device 다루게 된다.
  - File System
데이타를 file단위로 저장하며 UNIX file system tree 구조를

 
루고 있다.
  -
하나의 file system boot block, super block, inode list, data block으로 구성된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

파일시스템의 타입

디스크 기반의 파일 시스템 타입
 1.ufs
기본 disk 파일시스템
   - The Disk Label(VTOC):
파티션 table 정보
     VTOC(Volume Table of Contents)
disk 정보를 가지고 있는 label 확장된 개념
   - VTOC
구성
     Volume Name
disk 구별 사용하며 8 이하로 만들 있으며 disk 구분
    
하는 예를 들면 “intdisk” “extdisk”
     partition tags(unassigned, boot, root, swap, usr, backup, stand, var, home)
partition
    
구별할 사용함
     Partition flags(w,r,m,u)
해당 partition 대해 read/write 그리고 mount 가능한지의
   
여부에 사용함
   -The bootblock (1-15 sector)

      파일시스템 loader
   -The superblock
     
디스크 전반적인 정보들, 파일시스템의 모든 정보
   -Backup superblocks

2. hsfs CD-ROM파일시스템(High sierra파일시스템)

3. pcfs DOS디스켓 data read/write 지원하는 file system

 

Network-based file system (NFS) type

  분산파일시스템은 network 접속된 다른 시스템의 access 지원

RAM-based file system

  디스크 영역을 메모리처럼 사용하고자 하는 것으로 patch  작업시 자주 사용하며
 
일시적 또는 빠르게 처리해야 경우 사용함

  전원 off 되면 데이터가 전부 없어짐

 

 

 

 

10.FSCK

 

 

 

FSCK

fsck 사용한 파일시스템 복구

# newfs –N /dev/rdsk/c0t3d0s5

/dev/rdsk/c0t3d0s5:     615600 sectors in 405 cylinders of 19 tracks, 80 sectors

        300.6MB in 26 cyl groups (16 c/g, 11.88MB/g, 5696 i/g)

super-block backups (for fsck -F ufs -o b=#) at:

 32, 24432, 48832, 73232, 97632, 122032, 146432, 170832, 195232, 219632,

 244032, 268432, 292832, 317232, 341632, 366032, 390432, 414832, 439232,

 463632, 488032, 512432, 536832, 561232, 585632, 610032,

 

# fsck –o b=32 /dev/rdsk/c0t3d0s5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.파일시스템 관리(파일시스템의 full)

 

파일시스템 체크

 

/ 화일시스템에 사용자가 임으로 만들어 디렉토리가 있으면 정리

 

/dev 디렉토리 밑에 일반화일이 있는지 조사
 

 #find  /dev  -type  f  -exec ls -l {} \;
  

일반화일이 있으면 제거

 

시스템에 있는 core 파일을 제거

 

#find / -name core -print (core 파일 찾기)

#find / -name core -exec rm {}\; -print

 

/var root 화일시스템에 있을 경우, /var 디렉토리 밑을 조사

  #du -sk /var/* |sort -nr

 

명령어를 실행하면 /var 밑에 있는 디렉토리 별로 서브 디렉토리까지
포함하여 KB 단위의 크기를 출력하고 사이즈가 디렉토리에 대하여
조사함

 

 

 

 

 

 

 

주로 문제가 만한 디렉토리는 다음과 같다.
  

/var/adm
/var/mail
/var/log

/var/preserve

/var/spool

 

/var/adm


  - /var/adm 디렉토리에는 시스템 운용 중에 발생하는 메시지나 기타
 
정보들이 누적 보관된다. 디렉토리에 파일이 있으면 정리한다.
  - messages.0, messages.1,….
같은 파일은 지워도 무방하다. 파일의 크기가
 
너무 크면 #cp /dev/null messages 명령어를 사용하여 파일 크기를 0으로 만듬
  - wtmp
또는 wtmpx 파일의 크기가 너무 크면 다음과 같은 명령어로 크기를
  0
으로 만든다. 파일은 접속한 사용자에 대한 정보를 가지고 있다.

 

#cp /dev/null wtmp

#cp /dev/null wtmpx

 

/var/mail


디렉토리는 메일 데이터가 보관되는 곳으로 디렉토리에 사이즈가
파일이 있으면, 해당 사용자에게 메일을 정리하도록 한다.

/ 파일 시스템에 있는 1MB 이상되는 파일을 조사하여, 파일 크기순으로 sor하여 내용을 조사한다.
 

#find / -mount -size +1024k -ls > /tmp/find.list

#find -nr +6 /tmp/find.list > /tmp/find.list.s

 

find.list.s 파일에서 비정상적인 파일이 있는지 조사한다.

 

 

12.Mount 

 

File system 마운트

 

root ( / )

usr

opt

etc

var

export

dev

kernel

rmt

default

adm

home

openwin

bin

dt

ssa2

ssa3

ssa1

The root (/) file system

The /usr file system

The /export/home file system

/dev/dsk/c0t3d0s6

/dev/dsk/c0t3d0s7

/dev/dsk/c0t3d0s0

mount

mount

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


파일시스템의 마운트와 언마운트

 

마운팅
 
- 분산된 파일 시스템을 하나의 디렉토리에 모으는 과정
  - mounting
unmounting 시스템 startup, shutdown 자동으로 실행됨
  - backup, fsck, repartition
등을 사용함

 

새로운 파일 시스템의 마운팅

  #mkdir /database

  #mount /dev/dsk/c0t0d0s0 /database

 

언마운팅

device special file system name이용하는 방법

# umount /dev/dsk/c0t0d0s0

 

 /etc/vfstab file 지정된 monut-point 이용하는 방법

# umount /database

 

Local File System Mounting

  - startup(/etc/vfstab file mount at boot field 참조)
  - run level 2
mountsys script 의해 mount

 

 

 

 

 

 

 

 

 

 

 

 

 

/etc/vfstab file

 

/etc/vfstab 파일의 필드

 

- device to mount:local ufs file system logical(block)device name

- device to fsck

local ufs file system raw special device name

fsck 유틸리티에 의해 사용됨

- mount point:local file resource default mount point

- FS type:local file resource 대해서는 항상 "ufs”

- fsck pass:파일시스템 체크를 자동으로 수행할 것인지의 여부 결정

- mount at boot

field 값이 양수이면 check, 음수면 pass

root(/), /usr, and /var 파일시스템은 /etc/rcS.d/S30rootusr.sh 스크립트 수행 이미

마운트가

 

mount option :comma 구분되는 mount option list

-          option

-          rw:ro

-          bg:fg->mount 수행 실패 retry bg/fg 결정, bg 설정되어 있어야 server

-          문제에 의해 마운트 문제 발생시에도 부팅이 이루어짐, 디폴트는 fg

-          soft:hard-> hard 설정하면 마운트 때까지 재시도 , 디폴트는 hard

-          intr:nointr->디폴트는 intr

-          suid|nosuid->setuid 설정 여부, 디폴트는 suid

-          timeo=n

-          retry=n

-          retrans=n: 연결 도중 연결이 끊겼을 연결시도 횟수

 

 

 

 

다른 파일시스템의 마운팅

마운트 포인트 생성

 

#mkdir /pcfs

 

파일시스템 타입 명시
 

#mount -F pcfs /dev/diskette /pcfs

#mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom

 

vold 
 

-          cdrom 플로피 디스크 자동 마운트는 vold 해줌

 

# /etc/init.d/volmgt stop

# /etc/init.d/volmgt start


 - #eject 명령어는 umount 수행하고 미디어 제거함

 

파일시스템의 결정


   - /etc/vfstab
파일에 엔트리 추가
   - /etc/default/fs
로컬 파일 시스템의 파일시스템 타입 명시
   - /etc/dfs/fstypes
분산된 파일 시스템의 파일시스템 타입 명시

 

 

 

 

 

 

 

13.NFS(Network File System)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


NFS 장점

Centralized Files:데이터를 중앙 집중화하여 관리의 편리함 도모

Common software:소프트웨어의 공유가 가능

Files appear to be local
  :
로컬에 있는 데이터처럼 편리하게 사용 가능

Easy to use

 

 

 

 

 

 

 

 

 

 

NFS File Server

자동마운트 설정(The /etc/dfs/dfstab file)
  - run level 3
들어갈 read
  - root
shareall 명령어 수행 read
  - /etc/init.d/nfs.server
스크립트 수행 read

 

수동 마운트 설정 (share 명령어)
 

share [-F FSType] [-o option] [-d description] pathname

    - option
      F FSType:
파일시스템 타입을 명시하며 /etc/dfs/fstypes 파일을 참조
      ro: read only, rw: default, root=client
hostname
      ro=access-list, rw=access-list (@network, .domain)
      anon=n: anonymous
사용자 접근 제한
    - pathname
     
절대경로로
     
디렉토리만 공유 가능

 

unshare command

리모트 시스템에 의해 공유된 자원을 공유하지 않음

    unshare [-F nfs]  pathname

 

shareall and unshareall commands

현재 공유된 목록을 모두 공유하거나 공유하지 않음

 shareall [-F nfs]   unshareall [-F nfs]

 

 

 

 

 

 

NFS File Server 설정

 

- /etc/dfs/dfstab 파일 편집
  - server
데몬을 start 시킴

/etc/init.d/nfs.server start

 

-          공유된 목록 확인(서버에서 공유하고 있는 공유 리스트 확인)

    #dfshares  #dfshares edu001 (edu001 공유하고 있는 공유 리스트 확인)

 

dfmounts command

  서버에서 client 쪽의 마운트 정보 확인

 

NFS Client

 

Manual mouting(수동 마운트)

NFS 서버의 공유 내용들을 클라이언트에서 사용하려면 서버에서 공유된 
자원을 마운트 해야

      

mount [ -F nfs ] [ -o options ] server:pathname mount_point

 

Automatic mounting (자동 마운트)

/etc/vfstab 파일에 아래와 같이 기술하면 자동으로 마운트 되어 재부팅
시에도 마운팅 정보를 유지하게

# vi /etc/vfstab

edu001:/usr/share/man - /usr/share/man nfs - yes –

;run level 2 들어갈 마다 참조

 

 

 

 

umount command

#umount  /usr/share/man  ;mount 해제

 

mountall, umountall commands

 

- mountall -r :모든 로컬 파일시스템에 대한 마운트
-
umountall -r: 모든 로컬 파일시스템에 대한 마운트

- -r
옵션: 파일시스템 타입이 ufs 이고 mount at boot 필드가 yes 것만 마운트

 

NFS Client Setup

 

- 서버에서 공유해 주고 있는 목록 확인
   # dfshares teacher
  -
서버의 공유 자원을  마운트 포인트를 사용하여 공유
   # mount teacher:/usr/share/man  /usr/share/man
  - /etc/vfstab
파일을 편집하여 자동 마운트를 설정한다. (optional)
  -
이상 서버의 자원을 공유할 필요가 없다면 마운트 시킴

    #umount /usr/share/man

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.CacheFS 파일시스템

 

CacheFS 파일시스템

CacheFS 기능

CacheFS file system 사용하게 되면 NFS CD-ROM 드라이브 사용 읽은 데이터
 
로컬 하드 디스크에 캐싱 하므로 시스템의 성능향상을 도모할 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


CacheFS 파일시스템 관련 명령어

 

Cache file system 생성한다.

#cfsadmin -c /export/home_cache

 

마운트 포인트가 없으면 생성한다.

#mkdir /export/home

 

리모트 파일 시스템과 CacheFS 파일 시스템을 마운트한다.

# mount -F cachefs -o backfstype=nfs, cachedir=/export/home_cache,

cache_id=export_home_0823  edu001:/export/home /export/home

 

mount 명령어를 사용하여 제대로 마운트 되었는지 확인한다.

#mount

 

Cache 디렉토리 만들기

 

# cfsadmin -c /cache/doc

주의할 사항은 /cache 디렉토리는 반드시 생성되어 있어야 하며, root 로그인해서 들어가야 한다.

 

Mount하기

#mount -F cachefs -o backfstype=fstype,cachedir=cache-directory, [options] back-filesystem mount-point

#mount -F cachefs -o backfstype=nfs,cachedir=/cache/doc A:/export/home  /export/home

 

backfstype 서버의 파일시스템 종류
    -o
뒤에 있는 옵션들(여기에서는 backfstype cachedir)사이에는 "," 구분하고
   
공백이 있으면 된다.

 

 

 

 

 

 

CacheFS 통계치 보기

 

#cachefsstat mount-point

#cachefsstat /export/home

 

 /export/home

 cache hit rate:    50% (2 hits, 2 misses)

 consistency checks:      8 (8 pass, 0 fail)

 modifies:      0

 garbage collection:      0

 

CacheFS Consistency 체크

 #cfsadmin -s

 

CacheFS Logging

 

-cachefswssize 사용하여 현재 cache 저장된 데이터의 사이즈를 알기
서는 먼저 cachefslog 사용하여 logging 하여야 한다.

#cachefslog -f  /var/cachelogs/home_cache.log /export/home

 

-로그파일 확인하기

#cachefslog /export/home

 

-cache 사이즈 체크

#cachefswssize /var/cachelogs/home_cache.log

 

CacheFS file system 제거하기
 

# cfsadmin -d  cache 디렉토리 경로

# cfsadmin -d all /cache/doc

15.Automount

 

Automount

Automount?

소프트웨어로 사용자가 서버에서 share 디렉토리 안으로 이동할 자동으로 마운트되고 일정기간( 5 정도) 사용하지 않으면 디렉토리를 마운트 시켜 주는 시스템 서비스

 

Automount 특징

-필요에 의해서 file system 마운트

-File system 보다 효과적으로 자동 마운트
-File system
자동으로 unmount

-File system 쓰는 동안에는 마운드 되어 있고, 5 동안 사용하지 않으면
자동으로 unmount

 

Automount Benefit

- mount, umount 명령어를 내릴 필요가 없다.
-
필요할 때만 mount 하기 때문에 network 효율적으로 있다
.
-automount directory
아는 사람만 쓰므로 주요 정보를 감출 있다
.
-NFS server
쪽에는 아무런 영향도 미치지 못한다.

 

HOW Automounting works?

Autofs file system

autofs file system 정의는 client /etc 디렉토리 안의 automount map 정의됨

 

automount program

시스템 startup   call 되고 autofs 마운트를 생성하기 위해 auto_master 파일을 read



 

automountd 데몬

시스템 booting 시나 요청이 있을 데몬은 start

  #/etc/init.d/autofs start

 

Automount configuration 파일 (map file)

mount point  경로가 절대경로이면 direct map 이고 상대경로이면 indirect map
 

-          master map - /etc/auto_master

-          - direct map - /etc/auto_direct

-          - Indirect map - /etc/auto_home

 

Automount 명령어

- direct map 생성하거나 master map 변환할 , automount 명령어를 실행함으로써 효과를 있다.

 

- Command Format

  - automount [-t duration] [-v]

  - Options

         -t     duration, 초단위로 시간을 설정, 사용 하지 않는 시간, defualt 5

         -v    verbose mode

 

 

 

 

 

 

 

 

 

 

 

 

Master Maps

- autofs directory automount maps 정의
- autofs
체크해야 모든 map 정의

 

/net       -hosts                   -nosuid, nobrowse
/-            auto_direct
/home                    auto_home       -nobrowse

/xfn        -xfn

mount     DB(map)파일     옵션

point

 

/net  -hosts  : ) # cd /net/edu001 --> /net 아래에 있는 edu001 access 하면
-hosts (/etc/hosts or
기타 name service 참고해서 edu001에서 share하고 있는 내용들을 자동으로 mount )

/home  auto_home: ) 사용자 로그인 -- > /home 아래에 있는 user01 access 하면 /etc/auto_home 참고해서 자동으로 mount

 

Direct Maps

        

#cat /etc/auto_direct

+auto_home

/apps/frame      -ro,soft     mars:/export/framemaker,v4.0

/opt/local           -ro,soft     jupiter:/export/unbundled

/usr/share/man                  -ro,soft  sun,moon,stars:/usr/share/man

 

        +auto_home NIS, NIS+ 참조함을 의미
        Direct map
에서는 Mount point 절대경로로 지정함

 

 

 

 

 

Indirect Maps

#cat /etc/auto_home

stevenu              starbug:/export/home/stevenu
johnnyd             comet:/export/home/johnnyd
wkd                    mars:/export/home/wkd

*                          mars:/export/home/&

 

Example

# pkginfo SUNWman

# pkgrm SUNWman

# man ls

# edit /etc/auto_master

#+auto_master

(/etc/auto_master 다음 라인을 추가)

/-          /etc/auto_direct

 (/etc/auto_direct 다음 라인을 추가)

/usr/share/man    -ro         server:/usr/share/man

# automount -v

# man ls -> 확인

 

 

 

 

 

 

 

 

 

 

 

 

 

16.백업과 복구

 

 

백업과 복구

백업의 타입

 -full dump : 모든 파일시스템의 내용을 백업
 -incremental dump :
첫번째만 full dump하고 다음 부터 변경된 파일만 백업 받음

 

백업 명령어

  ufsdump options [argument] files_to_dump:

 

 optin
    0-9: 0
full dump, 1-9
incremental dump
    u:
덤프시 발생하는 정보를 /etc/dumpdates 로그 남김

    f:
백업 받을 디바이스 지정
   
# ufsdump 0uf /dev/rmt/0 /export/home

 

 

 

 

 

 

 

 

 

 

 

 

restore 명령어

 ufsdump 명령어에 의해 생성된 백업내용을 복구하는 용도로 사용됨

# ufsrestore tvf /dev/rmt/0 : 백업 리스트 확인만

# ufsrestore rvf /p2/backup

주의해야 것은 복구를 하고자 하는 디렉토리에 들어가서 진행하여야

 

ufsrestore options [arguments] [filename]

 

option
    l:
대화형 restore 수행
    r:
백업 받은 전체에 대한 restore 진행
    t:
백업 받은 내용 출력
    x:
명령어 라인에 명명된 파일만 추출
    f dump_file:restore
진행할 dump_file 명시
    v: restore
것들의 full path 모두 출력함

 

tar

 

# tar cvf test.tar

현재 디렉토리의 모든 파일을 test.tar라는 파일로 묶는다.

 

  # tar xvf test.tar

test.tar라는 tar 파일을 현재 디렉토리에 풀어 낸다.

 

 

 

 

 

 

 

17.The Package Command

Package 관련 명령어

pkginfo 명령어는 software package information display

 

command format

pkginfo [-d  [device | pathname] ] [ -l ] pkg_name

 

  Option
   -d device:
패키지의 path 정보

   -l:
패키지에 대한 자세한 정보 출력
   - pkg_name:
패키지의 이름

 

예제

    #pkginfo -d /cdrom/cdrom0/s0/Solaris_2.7/Product | more

    #pkginfo -d /cdrom/cdrom0/s0/Solaris_2.7/Product -l SUNWaudio

  - 패키지 인스톨 개수 체크

    #pkginfo | wc -l

 

pkgrm 명령어는 software package 지우기 위해 사용한다.

   

- pkgrm package_name

#pkgrm SUNWaudio

 

pkgadd 명령어는 software package 추가하기 위해 사용한다.

pkgadd [-d  [device | pathname ] ] pkg_name

#pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product SUNWaudio

 

 

 

 

 

 

pkgchk 명령어는 package path name system log file 기술한 것과 일치하는지 확인하기 위해 사용한다.

  - pkgchk [ -p path1 [ path2 …] ]

#pkgchk SUNWaudio

  #pkgchk -p /etc/group

 

SUN freeware 패키지 사이트

   http://www.sunfreeware.com

Spooling Packages

/var/spool/pkg 디렉토리로 패키지 스풀링

#pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product -s spool SUNWaudio

 

명시한 디렉토리 위치에 패키지 스풀링

  #pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product -s /export/pkgs SUNWaudio

 

스풀링 패키지 지우기

  #pkgrm -s /export/pkgs SUNWaudio

 

 

 

 

 

 

 

 

 

 

18.Maintaining Patches

 

 

Patch 정의
 

패치는 소프트웨어의 수행에 문제를 일으키는 파일들과디렉토리들을 replace하거나update 하여 버그를잡고 해당 소프트웨어의 기능을 강화하기 위한 파일 또는
디렉토리를 의미함

 

Patch numbering

패치는 각각 자신의 패치 번호와 같은 이름으로 디렉토리에 패키지화 되어 있다.

 

Patches Patch Reports 제공

  http://sunsolve.sun.com

  http://access1.sun.com/patch.y2k

  ftp sunsolve.sun.com

 

Patch Storage (현재 시스템에 인스톨 패치의 historical 정보 )

  #ls /var/sadm/patch

 

Patch installation

#patchadd 106793-01

 

Checking Current Patch Status

  # patchadd -p (solaris 2.6 이상)

  # showrev -p

 

Patch Removal

  #patchrm 106793-01

 

 

 

 

 

Extracting Patch Files for Installation

  압축해제와 tar 풀기를 single command line에서 수행하여 디스크 스페이스
 
절약 가능

  

#zcat 105050-01.tar.Z| tar xvf -

#gzcat 102340-02.tar.gz | tar xvf -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19.System Security

 

 

/etc/passwd Database

  loginID:x:UID:GID:comment:home directory:login shell

   

- /etc/passwd record format

      login: 숫자, period, _, -, 등을 포함한 8글자까지 가능하며 글자는 알파벳
     
문자여야하며 적어도 소문자를 하나는 포함하여야

      x: 사용자의 암호화된 패스워드의 placeholder

      home directory: 사용자의 디렉토리 path name

      login shell: 사용자의 디폴트 로그인 (/bin/sh, /bin/csh, /bin/ksh)

 

/etc/shadow Database

loginID:password:lastchg:min:max:warn:inactive:expire:

   

/etc/shadow record format

      password: *LP*-inaccessible account, NP-no possible password

      lastchg: 1970 1 1 부터 마지막 패스워드 변경 사이의 날짜

      min: 최소 패스워드 사용할 있는 사용기간

      max: 최대 패스워드 사용할 있는  사용기간

      warn: 패스워드 만료 경고 메세지로 알려줌

      inactive: 일정기간 로그인 사실이 없으면 사용자의 account lock 건다.

 

 

 

 

 

 

 

 

 

 

/etc/group Database

  groupname:password:GID:userlist

   

/etc/group record format

      groupname: 8글자까지 가능

      password: /usr/bin/newgrp 명령어로 그룹 패스워드 지정 가능

      userlist: secondary group membership

 

 

 

The sysadmin Group

GID=14이고 admintool utility 사용 가능

 

id command

 

(effective) user ID, user name, group ID, group name

    #id -a: 내가 포함된 모든 그룹의 리스트 확인

 

who am i command

  실제 로그인한 사용자의 ID

 

whoami command

  effective user ID

 

su command

  다른 사용자로 변경할 사용

  -(dash) 옵션을 사용하면 사용자의 로그인 환경까지도 모두 적용됨

 

 

 

 

 

chown command

파일이나 디렉토리에 대한 소유권 변경

 

  #chown  user_name  filename

  # chown -R user_name directory name (디렉토리 소유권 변경)

  # chown -R lister:staff mydocs (소유자와 소유그룸을 동시에 변경

 

chgrp command

  파일이나 디렉토리에 대한 그룹 소유권 변경

    #chgrp groupname filename

    #chgrp GID filename

 

groups command

  현재 로그인한 사용자가 속한 그룹의 리스트 확인

 

/etc/default directory

passwd file

    MAXWEEKS variable: 지정한 패스워드 최대 사용가능 기간(주단위)

    MINWEEKS variable:지정한 패스워드를 최소 사용해야 하는 기간(주단위)

    PASSLENGTH variable:패스워드 길이 최소 6에서 최대 8까지 지정 가능

 

login file

    ULIMIT 로그인시 file size 제한

   

CONSOLE

#CONSOLE=/dev/console: 루트 사용자는 어디서든지 로그인 가능

CONSOLE=/dev/console: 콘솔창을 통해서만 root 로그인 가능
CONSOLE=:
루트 사용자로는 로그인하지 못함. su 명령어를 통해서만 루트

사용자 권한 획득 가능

   

 

 

 

PASSREQ: PASSREQ=YES: 패스워드 없는 사용자는 로그인 불가능
PATH: PATH=/usr/bin:
환경변수에 PATH 변수가 셋팅되어 있지 않을 경우 따르는path

TIMEOUT: TIMEOUT=300: 로그인하여 아무런 작업도 하지 않았을 때의 timeout

UMASK: UMASK=022: 처음 파일이나 디렉토리 생성시의 권한 설정

SYSLOG: SYSLOG=YES: 시스템에서 발생하는 모든 내용을 log 남김

 

su file

SULOG=/var/adm/sulog: su 명령 수행에 대한 로그 기록 파일 지정

#CONSOLE=/dev/console: 모든 su 명령어 수행에 대한 로그가 콘솔에 logging

CONSOLE=/dev/console: 수퍼 유저가 되기 위한 su 명령어 수행이 성공했을 때는
콘솔과 로그 파일에 전부 로그 메시지를 남기고 실패했을 경우 로그파일에만

로그 메시지를 남긴다
.
SUPATH: root
shell path

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20.Monitoring System Access

 

 

관련 명령어

who command

  - 현재 시스템에 로그인 되어 있는 사용자를 확인
  - /var/adm/utmp, /var/adm/utmpx
로그  남음

  # who
    console: screen device

    pts: 가상 단말기

    term: 시리얼 포트에 물리적으로 연결된 디바이스

    # who -r:런레벨 확인

 

finger command

  - 현재 로컬이나 리모트에서 로그인 되어 있는 사용자의 자세한 정보 확인
  - /var/adm/wtmp, /var/adm/wtmpx
로그 남음

  - user name, /etc/passwd 파일의 commnet 필드의 내용, 터미널 이름, idle time,

login time, host name

 

    # finger mhkang

 

last command

  사용자에 대한 로그인 로그아웃 정보 확인

   #last mhkang

 

 

 

 

고급 파일 퍼미션

umask

  - umask 파일과 디렉토리에 대한 디폴트 퍼미션 결정

  - 파일:666 디렉토리:777

  - 현재 쉘에서 umask 변경: # umask 027

  - 완전 바꾸기: # vi .profile에서 umask 027

 

setfacl

  - 세부적으로 파일 퍼미션에 대한 권한을 설정함(ACLs)

setfacl options acl_entry filename1 [filename2…]

 

option

        -m: 권한 추가

        -s: 권한 대치

        -d: 권한 삭제

   -

 #setfacl -m user:ssa20:6 ch3.doc

   -#setfacl -s user::rw-, group::r--,other:---,mask:rw-,user:ssa20:rw- ch3.txt

   - # ls - l ch3.doc: + 표시가 보임

 

getfacl

   - file 설정되어 있는 ACL 확인하기 위해 사용함

   - effective permission 원래 설정되어 있는 default mask값에 따라 결정됨

#getfacl ch3.txt

 

 

 

 

 

 

setuid

- 모든 사용자가 프로그램의 소유자처럼 프로그램 수행 가능

- 파일, 디렉토리에 설정 가능

- setuid setgid 설정되어 있다면 execute fild 알파벳 s 표시됨

    # ls -l /bin/passwd /etc/shadow

224 -r-sr-sr-x   3 root     sys        99640 1998 10  6 /bin/passwd*

2 -r--------   1 root     sys          447 10 20  10:18 /etc/shadow setgid

 

- 실행권한은 off되어 있고 setuid, setgid 걸려 있으면 대문자 S 사용하여
오류임을 표시

- setgid 디렉토리에 걸면 하부 디렉토리와 파일은 부모 디렉토리의
그룹으로 동일하게 상속됨

 

setgid

-          모든 사용자가 프로그램의 그룹에 속한 것처럼 프로그램 수행 가능

-          디렉토리에만 설정 가능

 

sticky bit

- 모든 퍼미션이 777 이더라도 파일을 생성한 소유자나 수퍼유저가 아니면 해당 파일의 수정, 삭제가 불가능하도록
-
설정이 되어 있는 디렉토리 내의 파일이나 디렉토리는 다음의 조건에 한해서만 수정과 삭제가 가능

 

파일의 소유자

디렉토리의 소유자

수퍼유저

 

 

 

 

 

 

 

 

설정방법

 - 숫자로 표현

4=setuid, 2=setgid, 1=sticky bit

# chmod 4755 setuid_program

  - 문자로 표현

# chmod g+s some_directory

# chmod 1777 project

# chmod a=rwxt stickybit_program

# chmod a=rwxt project

 executable fild off 되어 있고 sticky fild 셋팅되어 있으면 대문자 T 에러 표시

# ls  -ld /var/tmp2 drwxrwxrwt+  2 sys  sys  1024 12 22  11:23 /var/tmp/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21.Process Control

 

 

ps command

  :현재 시스템에서 running 하고 있는 프로세스의 리스트 확인

PPID: parent process ID

C: processor utilization for scheduling

TTY: 해당 프로세스가 수행중인 터미널의 이름으로 ?마크는 데몬 프로세스를

나타냄

TIME: 해당 프로세스의 idle time

CMD: 프로세스의 이름과 경로

-옵션:

  e:every process

  f: full list 정보

 

kill command:

  :명시된 프로세스에 시스널(신호) 보내기 위해 사용

kill [-signal] PID(s)

시스널 번호를 명시하지 않으면 기본 시그널은 15번이고 이는 프로세스의 종료를 의미함

9: 프로세스의 강제 종료

시스널 번호 확인: man -s 5 signal

 

pgrep command

  ps+grep

pkill command

  ps+kill





 

 

 

at command

 :지정된 시간에 특정 명령어나 스크립트를 수행함

- at [-m] [-r job번호] time [date]
m:
작업 종료 메일 보내

r: 걸어 놓은 작업 해지

time: 수행시간 지정

date: 수행날짜 지정

- 예약작업 보기: # atq

- 작업취소하기 : # at -r job 번호:

- /etc/cron.d/at.deny: at 명령어 사용할 없도록 하고자 하는 사용자 등록

 

# at 11:50pm

at>/usr/bin/banner test > /dev/console

at> ^D

#arq (예약작업확인)

#at -r job 번호 (작업취소)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

crontab command

  -지정된 시간에 cron 데몬은 /var/spool/cron/crontabs 디렉토리에 있는 crontab

  파일을 읽어 특정 명령을 규칙적으로 수행함

-리스트 보기:

# crontab -l

 

The root crontab File

/etc/cron.d/logchecker

cron 로그 파일인 /var/cron/log 파일이 max size 넘으면 /var/cron/olog 파일로 copy

/usr/lib/newsyslog

syslogd 데몬에 의해 생성된 /var/adm 밑의 log 파일을 지움

crontab access

/etc/cron.d/cron.allow: crontab 사용 가능한 사용자 등록

/etc/cron.d/cron.deny: crontab 사용 불가능한 사용자 등록

파일이 모두 존재하지 않으면 수퍼유저만이 crontab 수행가능

 

  -crontab editing

    #crontab -e

    * 요일 명령어(절대패스로 지정할 )

 

0   12  1   1   *   /new/lib/newsyslog

corntab

: 0-59

:0-23

:1-31

:1-12

요일:0-6

0 0 * * *:언제나

0 12 1 1 *: 1 1 12

 

 

 

22.Solaris syslog and Auditing Utilities

 

 

Syslog 데몬의 역할
 

시스템 로그에 메시지를 write
사용자들에게 메시지를 forward
시스템 콘솔에 메시지를 write
다른 호스트에 메시지를 forward :logfile 다른 host 보내어 해킹에 대한 보안 강화함

 

Confuguration file (/etc/syslog.conf)

Selector: 메시지를 만들어 있는 프로세스의 카테고리인 facility
Level:
메시지의 심각성에 대한 단계를 나타내는 level 구성됨

Action: 메시지가 보내질 곳을 결정

 

    *.err                            /var/adm/messages
    facility.level                  action

    every process에서 에러가 발생하면 /var/adm/messages 로그파일로 남겨라.

 

 

 

 

 

 

 

 

 

 

 

 

 

/etc/syslog.conf 파일


  /etc/syslog.conf
파일에서는 탭만이 여백으로 인정됨
  facility:
메시지를 만들어 있는 프로세스 카테고리

  user, kern, mail, daemon, auth, lpr, news, uucp, cron, local0-7, mark, *

 

facility
  - user:
사용자 프로세스에 의해 생성되는 메시지
  - kern:
커널에 의해 생성되는 메시지
  - mail:
메일과 관련된 메시지
  - daemon:
시스템 데몬에 의해 생성되는 메시지
  - auth: login, su, getty
같이 authorization 관련 메시지
  - lpr: The line printer spooling system
  - news:
유즈넷
  - uucp: The UNIX to UNIX copy system
  - cron: crontab, at, cron
등을 포함하는 cron at facility
  - local0-7:
로컬 사용을 위해 예약된 필드

  - mark: syslogd
의해 생성된 timestamp 메시지
  - *: mark facility
제외한 모든 facility

Level
  - emerg: panic condition
으로 모든 사용자에게 메세지를 broadcast
  - alert:
문제상황을 즉시 고칠수 있는 상태
  - crit:
하드 디바이스 에러와 같은 critical conditions 대한 warning

  - err: 그밖의 다른 에러들
  - warning:
경고메세지
  - info:
정보성메세지
  - debug:
프로그램을 디버깅 사용되는 메세지
  - notice:
에러 상태는 아니고 특별한 핸들링을 요구하는 상황

 

 

 

 

 

 

Action Filed
  - /filename:
로그가 남겨질 절대 경로

  -@host:
로그가 남겨질 호스트 이름
  -usesr1, user2:
로그를 보낼 사용자 이름
  -*:
로그인 되어 있는 모든 사용자에게 로그를 남김

 

 

명령어 라인을 통한 syslogd 시작과 종료

#/etc/init.d/syslog start|stop

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23.Network Configuration

 

네크워크 설정 관련 configuration 파일

 

기본 설정 파일

 

-          /etc/hosts

-          - /etc/hostname

-          - /etc/nodename

-          - /etc/resolv.conf

-          - /etc/nsswitch.conf

-          - /etc/defaultrouter

-          - /etc/defaultdomain

-          - /etc/netmasks --> /etc/inet/netmasks

 

/etc/hosts
 -
시스템의  loopback address IP address, hostname 등록
  -
다른 host IP address 등록
  - IP-address  hostname  [nickname]  [#comment]

 

/etc/hostname.[le0, hme0..]
 - port
타입을 결정하고 hostname 기록
  - mac address
IP address 매핑시킴
   Primary ethernet port(10 Mbps) -> hostname.le0
   Secondary ethernet port(10 Mbps) -> hostname.le1
   fast ehternet port(100 Mbps) -> hostname.hme0

 
- /etc/hostname.le0
    edu001

 

 

 

 

 

/etc/nodename
  -
시스템의 hostname 등록

 

/etc/resolv.conf
  - DNS clinet setup
  -
소속된 domain 요청할 name server 기록

domain name  kr.psi.net

nameserver  203.255.112.34

 

/etc/nsswitch.conf
  - Name service switch configuration file
  -
각종 database file 형태를 정의
  - files, dns, NIS, NIS+
  - DNS client setup

 

/etc/defaultrouter
 
- 시스템의 기본 라우터 정의
   -
라우터가 정의되지 않으면 외부망과 연결 불가능

/etc/defaultrouter

203.235.127.254

 

/etc/defaultdomain
 
 -
시스템의 기본 domain name 기록

/etc/defaultdomain

kr.psi.net

 

 

 

 

/etc/netmasks
 
-
시스템의 subnet mask 정의
  - network address
netmask 구성

203.235.127.0   255.255.255.0

 

IP주소 설정

ifconfig  le0  203.235.127.1  netmask  255.255.255.0  up

 

IP address 제거

 ifconfig  le0  0.0.0.0  down

 

라우터 주소 설정(/etc/defaultrouter 파일의 내용 변경)

 route add default  203.235.127.254 1

 

/etc 밑의 설정파일 수정

-          /etc/resolv.conf

-          - /etc/hosts

-          - /etc/defaultdomain

-          - /etc/nsswitch.conf

 

 

 

 

 

 

 

 

 

 

 

네트워크 관련 명령어

ifconfig

 ifconfig 명령은 네트워크 인터페이스를 설정된 값을 확인하거나 네트워크 인터페이스에 address 할당할 사용됨

iprb0: 인터페이스 이름

up: 인터페이스를 통해 패킷의 송수신 가능

running: 인터페이스가 커널에 의해 인식됨

mtu: 최대 전송 단위

notailers: 패킷 끝에 다음 패킷에 대한 헤더 정보를 넣지 않음

broadcast: 인터페이스가 브로드캐스트 주소 지원 가능

netstat

현재 네트워크 인터페이스의 상태를 확인하기 위해 사용함

-r: 라우팅 테이블 정보를 보여줌

-n: 결과를 숫자 형태로 보여줌

-a: connetion 모든 호스트를 보여줌

충돌율: Coll/Oerrors*100

 

traceroute

  원하는 host 도달하기까지 시간과 거쳐간 host path 정보를 보여줌

 

 

 

 

 

 

 

 

 

 

 

snoop 명령어

네트워크 패킷을 capture하고 내용을 출력함
#snoop broadcast
-option
-v:TCP/IP
모든 계층의 header Application 계층의 데이터에 대한 정보를
아주 자세하게 보여줌
-o: snoop
명령어의 output 파일로 저장함

#snoop -o /tmp/snooper -V arp

-i: 파일에 저장한 내용 보기

#snoop -i /tmp/snooper

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

라우팅

정적라우팅
 
- route 명령으로 수작업함
  - /etc/defaultrouter
파일을 생성하고  default router IP 기술

#cat /etc/defaultrouter

203.235.127.254

 

라우팅 테이블 확인
   
- netstat -r 명령으로 확인
   -
라우팅 테이블의 flag 

U: ethernet interface up

H: destination network 아니고 호스트임을 나타냄

G: delivery host

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

24.DNS

 

 

DNS

DNS 이해

Domain Name System이란 이름과 IP 주소를 매핑하여 주는 분산 네이밍 시스템

일반적으로 웹브라우저에 URL(hostname) 입력하게 되고, 이후 해당 웹서버로 접속하게 된다.

하지만, 실제 packet 적게 되는 것은 IP address이며, 이로 인해 routing 가능해 진다.

Hostname IP address 변환해 주는데, 이것에 대한 service DNS 담당한다.

IP address Network number + Host number 구성되어 있다면, FQDN = Hostname + Domain Name으로 구성된다.

DNS service Directory service 종류로 DNS server 자신이 담당하는 영역(domain) 대해서만 응답 책임을 진다.

현재 BIND version 9.1.0 까지 release되었으며,http://www.isc.org에서 관리되고
있다.

Nameserver로서 동작하려면, BIND 소프트웨어어 설치와 설정 NIC(Network Information Center) 등록을 하여야 한다.

com, net, org domain 대행하는 http://www.networksolutions.net kr domain 관장하는

http://www.krnic.net 있다.

 

DNS-A Brief History

Early Internet naming problems

·Name uniqueness

¸Hosts.txt file maintenance

¹Server/network load

 

 

 

 

DNS Namespace

 

 

 

 

 

 

 

 

 

 

 

 

 

 

디렉토리 구조와 유사함을 있는데, Root domain(도트로 표시되는)

Top level 도메인에 관한 정보를, Top level 도메인은 하위 도메인에 관한 정보를

유지/관리하는 구조를 취한다.

이러한 정보의 계층구조로 인하여 정보는 도메인의 네임서버(NS:Name Server)
분산, 관리된다.

 

 

 

 

 

 

 

 

 

 

DomainName Name Resolving

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


1.Client상의 응용이 WWW.YAHOO.COM 접속하기 위해 자신의

Local Name Server(TCP/IP 설정시 명시한) 질의한다.

 

2.Local NS 먼저 자신의 캐쉬에 자료가 있는지 확인한 발견되지 않을시

Root NS(Root NS 목록은 갖고있다) 질의를 던진다.

그러나 Root NS WWW.YAHOO.COM 자료를 갖고 있지 않으므로,
COM
도메인을 관리하는 NS 참고하라는 답변을 보내준다.

 

3.Local NS 다시 COM NS 질의를 던지고, COM NS 다시 YAHOO.COM

NS 일러준다.

(루트(도트) COM 도메인은 Root NS에서 같이 관리되기 때문에 실제로

과정은 일어나지 않고 (2)번에서 바로 YAHOO.COM NS

참고하라는 답변이 나온다.)

 

4.Local NS YAHOO.COM NS 질의한다. YAHOO.COM NS 서브도메인에

대한 자료를 관리하는 실제 NS 이므로, WWW.YAHOO.COM 대한 IP 204.71.200.74

답변(authoritative answer) 한다. (실제 WWW.YAHOO.COM 대한 IP resolving 하면

매번 다른 IP 주소가 넘어오는 것을 있는데, 이는 사이트가 다수의

미러링 서버로 운영되고, 부하 공유를 위해 해당 도메인에

다수의 IP 매핑하였기 때문이다. (참고: 미러링 서버간의 부하 공유)

 

5.마지막으로, Local NS Client에게 결과를 전송한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DNS Name Resolving(Solaris)

 

 

 

Client
(resolver)

/etc/inet/hosts file

NIS+ hosts

database

  Local

  nameserver

Yahoo.
com
nameserver

Com.

nameserver

root

nameserver

Cache

/etc/nsswitch.conf file

  hosts:files nisplus dns

    1

2

3

 4

7

8

9

10

11

12

6

/etc/resolve.conf

5

13

 

 

 

 

 

 

 

 

 

 

 

 

 


1./etc/nsswitch 파일에서 name resolution 순서를 확인한다.

2./etc/inet/hosts 파일로 name resolution 한다.

3.NIS+ hosts database name resolution 한다.

4./etc/resolv.conf 파일에서 name resolution 제공할 도메인과 네임서버의 IP 주소를

확인한다.

5.local DNS server에게 서비스 받고자 하는 domain name (:ftp.internic.net) query

한다.

6.local DNS server 자신의 캐쉬 정보를 통해 서비스 있는지 확인한다.

7.local DNS server root server에게 internic.net 도메인에 대한 정보를 가진 DNS

누구인지 query한다.

8.root server 결과를 리턴한다.

9.local DNS server 7 query 통해 알게된 정보 net 도메인을 관리하는 네임서

에게 internic 도메인을 관리하는 네임서버가 누구인지 query 한다.

10.결과를 리턴한다.

11.Internic.net 네임서버에게 ftp.internic.net 도메인에 대한 IP query한다.

 

 

12.결과를 리턴한다.

13.client에게 client query ftp.internic.net 도메인에 대한 IP 리턴한다.

 

네임서버의 유형

Primary server
  

해당 도메인을 관리하는 네임서버이다.

 

Secondary server


특정 도메인에 대한 back-up copy 유지하는 서버이다. Secondary Primary   정상 운행될 때와 부하를 분산시키기 위해 운용하며, 다수가 존재할 있다.
Secondary
원칙적으론 외부 네트웍에 위치시켜 정전 등의 사태로 Primary 다운되었을 때를 대비한다. 따라서, 도메인을 운영하기 위해서는 최소 2(Primary * 1, Secondary * n) 이상의 네임서버가 요구된다.

 

Cache only server

 

도메인에 대한 데이터를 관리하지는 않고, resolving만을 처리해 준다. 만약, 본사와 지사가 있고 회사의 Primary, Secondary Name server 모두 본사에 위치한다고 , 지사에 위치한 네트워크 유저들은 Local DNS server 없게 된다. 이럴 경우 도메인 resolving 요구될 때마다 다른 네트워크(본사) 접속을 시도하게 되므로 약간의 딜레이가 생기게 되며, 본사 네트워크가 단절 되었을 지사도 실질적으로 인터넷 사용이 불가능한 단점이 있다. 이럴 지사에 Cache only server 운용하면 효과적으로 문제를 해결할 있다.

 

 

 

 

 

 

 

Resolv.conf file & nsswitch.conf

/etc/resolv.conf
 
- resolving
query 던질 네임 서버를 지정한다.
  - nameserver
등록은 3개까지 가능하다
.
  -
먼저 “domain” 부분을 등록한다. (호스트명 뒤에 붙을 도메인
)
  -
다음으로 nameserver 등록한다.

 

domain              kr.psi.net

search               kr.psi.net

nameserver 127.0.0.1

nameserver      203.255.112.34

nameserver 203.255.112.4

 

/etc/nsswitch.conf
 
- hosts
대한 resolving 참조하게 되는 파일들의 순서를 설정한다.

……

hosts:                 files          dns           nis

…...

 

/etc/named.conf

현재 가장 많이 사용되고 있는 BIND version 크게 version 4 8이다.

4 8 차이점은 거의 없다고 말할 있으나, named 구동 되면서 최초로 읽게 되는 top level configuration file 다르다.

4 경우 /etc/named.boot 8 경우 /etc/named.conf 읽어 들이게 되며 가지 file format 틀릴 구성 요소는 동일하다.

/etc/named.conf 역할

- named 어떠한 service 것인가에 대한 정의

- 해당 service 참조해야 file들이 어디에 위치하고 있는가에 대한 정의

- 해당 service 특징 참조 file 대한 정의

 

 

 

 

named 경우 standalone type(부팅 시에 startup 되는 데몬 서비스) service이므로 설정 파일 변경 항상 재구동 하여야

named syntax error이든 logical error이든 상관하지 않고, 구동 되므로 service시작 log 파일을 참조하여 syntax error 점검하여야 하며 resolver 통하여 logical error 수정해 나간다.

 

/etc/named.conf  file

 

          options {

directory “/var/named”;

          };

       zone “com” in {

type master;

file “com.zone”;

          };

          zone “127.235.203.in-addr.arpa” in {

type master;

file “com.rev”;

          };

          zone “0.0.127.in-addr.arpa” {

type master;

file com.loop;

          };

 

          zone “.” {

type hint;

file com.cache;

          };

 

 

 

 

 

 

Directory 문장
-DNS 데이터 화일들이 위치하고 있는 곳을 지정한다.
-
대부분 시스템의 기본 경로는 /var/named 이다.

 

Cache 파일
-root
네임서버의 위치를 알려 주는 파일이다. 도메인 정보를 루트네임서버로부터 알아내는데 참조한다. 대부분  네임서버에서 같은 파일을 가지고 있다.
-
다른 도메인에 대한 질의를 처리하기 위해서는 root 네임서버의 위치를 알기 위해 필요한 파일이다.

 

named.conf 파일 해석
- com 도메인을 primary 서버로 설정하고 설정내용은 /var/named 디렉토리의 com.zone 파일을 참조한다.(domain-info)
-
다음은 리버스 도메인에 관한 부분이며 IP로부터 도메인 이름을 찾을 사용된다.127.235.203.in-addr.arpa 도메인을 master 설정하고 com.rev 파일에 reverse 설정에 관한 내용이 있다. (inverse-domain-info)
-0.0.127.in-addr.arpa
대한 1 네임 서버임을 등록하는 부분으로 관련된 파일이 com.loop라는 것을 명시하고 있다.(loopback-domain-info)

Forward 대한 정의 (primary 경우)

zone “com” {

type master;

file com.zone;

          };

Forward 대한 정의 (Secondary 경우)

          zone “com” {

file com-slave.zone;

master { 203.235.127.30; };

          };

Reverse 대한 정의

          zone “127.235.203.in-addr.arpa” {

type master;

file com.rev;           };

 

 

/var/named

/var/named/com.zone

          @              IN              SOA         edu030.com. root.edu030.com. (

                                                               990417 ; Serial

                                                               21600          ; Refresh (6h)

                                                               900              ; Retry (15min)

                                                               604800        ; Expire (7d)

                                                               43200 )        ; Minimun TTL (12h)

 

                                             IN              NS            edu030.com.

                                             IN              MX           mail.com.

edu030                               IN              A               203.235.127.30

mail                    IN              A               203.235.127.30

corp1.com.       IN              NS            edu001.corp1.com.

corp2.com.       IN              NS            edu003.corp2.com.

edu001.corp1.com.         IN              A               203.235.127.1

edu003.crop2.com.         IN              A               203.235.127.3

www                   IN              CNAME   edu030

 

DNS Database 파일 포맷

기본형식
[name]               [ttl]             class        type          data

 

 

 

 

 

 

 

 

 

 

 

 

 

@ 의미
만약 해당 파일내에 $ORIGIN 값이 셋팅되어 있다면 값으로 대치되고 그렇지 않다면 named.conf 파일에 정의되어 있는 해당 파일에 대한 도메인 명으로 대치된다.

SOA: start of Authority 약자로 해당 도메인에 대한 실제적인 응답을 있는 권한을
가질 있는 호스트 이름 명시

Serial: 데이터의 변경 등이 있을 때마다 값을 하나씩 증가 시켜 주어야 한다. Secondary Server에서 refresh , 값이 증가되어 있을 때만 변경이 있는 것으로 판단되어 zone file 새로 가져온다.

Fresh: Secondary Server Primary server 데이터가 변경되었는지 확인하는 시간 간격()

Retry: secondary server primary server 접속을 재시도 하는 간격()

Expire: secondary server Primary server에서 데이터를 가져올 기존 자료를 사용할 있는 시간()

Minimum: Resource Record 위한 ttl(유효한 기간) 값을 나타낸다.

NS: Name Server 약자로 도메인 네임서버를 확인한다.

A: Address 도메인 이름을 주소로 메핑하는 것을 의미

MX: Mail Exchange 주어진 도메인 이름에서 메일을 전달할 곳을 확인한다.

PTR: IP 주소에 대해 도메인 명을 매핑시켜 주며 Reverse Zone File에서 사용한다.

CNAME: 도메인에 대한 다른 이름이 가능하도록 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/var/named/com.rev

          @              IN              SOA         edu030.com.  root.edu030.com. (

                                                               990417 ; Serial

                                                               21600          ; Refresh (6h)

                                                               900              ; Retry (15min)

                                                               604800        ; Expire (7d)

                                                               43200 )        ; Minimun TTL (12h)

                            IN              NS            edu030.com.

30                       IN              PTR         edu030.com.

 

/var/named/com.cache

@      IN              NS            edu030.com.

edu030.com.   IN              A               203.235.127.30

 

 

/var/named/com.loop

          @              IN              SOA         edu030.com.  root.edu030.com. (

                            990417 ; Serial

                            21600          ; Refresh (6h)

                            900              ; Retry (15min)

                            604800        ; Expire (7d)

                            43200 )        ; Minimun TTL (12h)

                            IN              NS            edu030.com.

1                         IN              PTR         localhost.

 

 

 

 

 

 

 

 

 

 

 

 

/var/log/messages

name server 경우 syntax error /var/adm/messages 저장된다.

in.named start시키기 전에 messages file 대해 monitoring 준비한다.

 

          # tail –f /var/adm/messages

 

이제 in.named start 통해 name server 구동하고, messages file error 점검한다.만약 syntax error 발생하였다면, 어느 파일의 몇번째 라인(named.conf:16)이란 형태로 log 나타날 것이다.

해당 file 수정한 named 구동한다.

Syntax error 발견되지 않는다면 nslookup(resolver) 통해 정상적으로 구동 중인지 여부를 점검한다.

 

 

반응형
Posted by [PineTree]