튜기's blogggg

remote 환경 만들 때, xinetd설정

by St1tch



remote 환경을 만들 때, xinetd를 이용하면 편하다.


우선 xinetd에 서비스를 등록시켜야한다.



service test

{

socket_type = stream

flags = REUSE

wait = no

user = root

server = /path

disable = no

}

#flags = REUSE가 socket_type = stream보다 윗 라인에 있을경우 정상적으로 데몬이 돌아가지 않는 경우가 있을수도있음.




위와 같이 test라는 service를 /etc/xinetd.d/경로에 등록시키면 된다.


그리고 난 후 이 포트에 서비스를 매칭을 시켜줘야한다.

echo "서비스명 포트/프로토콜" >> /etc/services


service를 재시작 할 때는

sudo service xinetd restart 

이런식으로 sudo 를 붙여줘야한다.




상황에 따라 포트포워딩을 하거나 로컬일 경우 바로 nc로 접속하면 된다.






<xinetd 속성>

    속 성

    값 및 설명

    flags

    대부분의 현재 값들만이 여기 언급되는데 새로운 값들은 참고문서를 보기 바란다. 
    °IDONLY : 식별 서버를 갖는 클라이언트로부터의 접속만을 허용한다; 
    °NORETRY : 실패한 경우 새로운 프로세스의 분기를 피한다;
    °NAMEINARGS : server_args 속성의 첫 번째 인수를 server 에 대한
                            argv[0] 로 사용하는데, 이는 inetd 에서와 같이
                            server 속성을 tcpd 로 하고 다음에 서버 이름 및 
                            그 인수로 server_args를 써놓음으로써 tspd사용을
                            허용한다. 

    log_type

    xinetd 는 디폴트로 syslogd 와 daemon.info 선택자를 사용한다. 
    °SYSLOG selector [level] : syslogd 가 daemon, auth, user 또는
                                           local0-7 중에서 선택할 수 있도록 한다;
    °FILE[max_size[absolute_max_size]] : 지정된 파일이 로깅 정보를 받는데, 두 옵션은 파일 크기 한계를 설정한다. 파일 크기가 한계값에 도달하면 우선 메시지를 syslogd에 보내고 다음에 이 서비스에 대한 로깅을 중지한다(일반적인 파일 또는 디폴트로 고정되어 있다면 다양한 서비스들이 관련될 수 있다.)

    log_on_success

    서버가 구동할 때 여러 가지 정보가 기록될 수 있다:
    °PID : 서버의 PID(내부 xinetd 서비스라면 PID 는 0의 값을 갖는다) ;
    °HOST : 클라이언트 주소 ;
    °USERID : 식별 프로토콜을 정의하는 RFC1413 에 따른
                   원격 사용자의 아이덴티티 ;
    °EXIT : 프로세스 종료 상태 ;
    °DURATION : 세션 지속 기간

    log_on_failure

    xinetd 는 서버가 자원 부족 또는 접근 규칙 때문에 구동할 수 없을 때 다양한 정보를 기록할 수 있다. 
    °HOSTID, USERID : 위와 동일 ;
    °ATTEMPT : 접근 시도를 기록하며 다른 값이 저공되자마자 실행되는
                      자동 옵션 ;
    °RECORD : 클라이언트에 대한 얻을 수 있는 모든 정보를 기록한다 ;

    nice

    nice 명령어와 같이 서버 우선권을 변경한다. 

    no_access

    이 서비스에 접근할 수 없는 클라이언트 목록

    only_from

    인가된 클라이언트 목록. 이 속성에 값이 부여되지 않는다면 서비스에 대한 접근이 거절된다. 

    port

    서비스와 관련된 포트. /etc/service 파일에 정의되어 있다면 이들 포트 넘버는 서로 일치되어야 한다. 

    protocol

    지정된 프로토콜은 /etc/protocol 파일에 존재해야 하는데 프로토콜이 지정되지 않으면 디폴트 프로토콜이 사용된다. 

    server

    서버 경로.

    server_args

    서버에 주어지는 인수.

    socket_type

    stream(TCP), dgram(UDP), raw(IP direct access) 또는 seqpacket()

    type

    xinetd 는 세가지 유형의 서비스를 다룰 수 있다 :
    1. RPC : /etc/rpc 파일에 정의되어 있는데 그다지 잘
                 작동되지 않는다 :
    2. INTERNAL : echo, time, daytime, chargen 및 discard 와 같은
                          xinetd 가 직접적으로 다루는 서비스
    3. UNLISTED : /etc/rpc 또는 /etc/service파일에 정의되어 있지 않은
                         서비스 ; servers, servicce 와 xadmin 내부 서비스들을
                         다룰 것인데 다양한 값들을 결합하는 것이 가능함을
                         주목하기 바란다. 

    wait

    쓰레드에 대한 서비스 동작을 정의하는데 두 가지 값이 허용될 수 있다 :
    °yes : 단일 쓰레드 서비스로 이 유형의 접속은 단 하나만이 서비스될
             수 있다 ;
    °no : 정의된 최대 한계에 따라 각각의 새로운 서비스 요청에 대해
            xinetd는 새로운 서버를 구동한다(디폴트로 이 한계는 무제한임
            을 유의하기 바란다.)

    cps

    들어오는 접속 수를 제한하는데, 첫 번째 인수는 숫자 자체이다. 한계숫자를 넘을 때 두 번째 인수로 제공되는 주어진 시간(초) 동안 서비스가 비활성화된다. 

    instances

    동시에 작동할 수 있는 동일 유형 서버의 최대수를 정의한다. 

    max_load

    서버에 대한 최대 부하(예를 들어 2 또는 2.5)를 나타내는데, 이 한계를 넘는 경우 이 서버에 대한 요청은 거절된다. 

    per_source

    동일 호스트로부터의 서버 접속수를 제한하는 정수 또는 UNLIMITED

표 출처 : http://www.linuxlab.co.kr/docs/01-06-5.htm


블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기