시작/종료 쉘 스크립트는 아래처럼 작성한다.

<시작 쉘> - startServer.sh
--------------------------------------------------------------------
#!/bin/sh

Log=/home/test/test.out
DATE=`date +%Y%m%d-%H%M%S`

mv -f "$Log" "$Log_`date +%Y-%m-%d-%H%M`"

echo "#################################################" >> $Log
echo "  Test 서버를 시작합니다.."

Cnt=`ps -ex|grep "TestServer"|grep -v grep|wc -l`
PROCESS=`ps -ex|grep "Test"|grep -v grep|awk '{print $1}'`

if [ $Cnt -ne 0 ]
then
  echo "$DATE : Test 서버(PID : $PROCESS)가 이미 동작하고 있습니다." >> $Log
else
  nohup java TestServer >> $Log &
  echo "$DATE : Test 서버가 시작되었습니다." >> $Log
fi

echo "#################################################" >> $Log
--------------------------------------------------------------------

<종료 쉘> - stopServer.sh
--------------------------------------------------------------------
#!/bin/sh

Log=/home/test/test.out
DATE=`date +%Y%m%d-%H%M%S`

echo "#################################################" >> $Log
echo "  Test 서버를 종료합니다.."

Cnt=`ps -ex|grep "Test"|grep -v grep|wc -l`
PROCESS=`ps -ex|grep "Test"|grep -v grep|awk '{print $1}'`

if [ $Cnt -ne 0 ]
then
  kill -9 $PROCESS
  echo "$DATE : Test 서버(PID : $PROCESS)가 중지되었습니다." >> $Log
else
  echo "$DATE : Test 서버가 실행중이 아닙니다." >> $Log
fi

echo "#########################################" >> $Log
--------------------------------------------------------------------



<무정지 서버 시작 쉘 스크립트> - startMonitor.sh
----------------------------------------------------------------------------------
#!/bin/bash

Log=/home/test/monitor.out
DATE=`date +%Y%m%d-%H%M%S`
NORMAL_SLEEP=60     #정상시 대기 시간
PROB_SLEEP=5     #장애발생시 대기 시간(장애시 곧바로 시작하기 위해)

#Log File Rename
mv -f "$Log" "${Log}_`date +%Y-%m-%d-%H%M`"

echo "#####################################" >> $Log
echo "$DATE TestServer Monitor Start!"   >> $Log
echo "#####################################" >> $Log

while [ 1 ]
do
       DATE=`date +%Y%m%d-%H%M%S`

       Cnt=`ps -ex|grep "TestServer"|grep -v grep|wc -l`

       if [ $Cnt < 1 ]
       then
               PROCESS=`ps -ex|grep "TestServer"|grep -v grep|awk '{print $1}'`
               if [ "$PROCESS" != "" ]
               then
                       echo "$DATE : 프로세스를 종료합니다." >> $Log
                       kill -9 $PROCESS
                       wait
               fi

               echo "$DATE : Test 서버를 재 기동합니다." >> $Log
                # 여기서 서버를 재기동한다.
               startServer.sh &

               echo "$DATE : Test 서버를 재 기동 완료." >> $Log

               sleep $PROB_SLEEP

               continue

       else
               echo "$DATE : 정상 작동중 입니다." >> $Log
       fi


       sleep $NORMAL_SLEEP

done
----------------------------------------------------------------------------------

Posted by hjlee
:

성천아 받아~~

2010. 8. 21. 01:12
Posted by hjlee
:
사용자 삽입 이미지
Posted by hjlee
:

[SIP 개요]

   

[SIP 특성]

   

[SIP 기반 네트워크]

- SIP 단말 : 전화기, 이종 망에 대한 게이트웨이(SS7 지원하는 VoIP GW, SSW)

- SIP 서버 : 필요한 부분에 대해서만 SIP 서버를 사용하며 전적으로 SIP 서버를 의존하지 않는다.

SIP 단말은 수신자의 정확한 주소 정보가 없어도 오로지 invite 메시지만으로 호 설정 가능(sip 서버 사용)

SIP 서버는 필요 시 수신자의 다른 단말로 경로 변경 가능(FORKING),


[SIP 기본 특징]

- 주소 지정 방식 : URI, URL 모두 사용, Email 형식, E.164 형식

- 사용자 등록 : 단말은 원활한 호 설정을 위해 서버에 등록된다. 한 사용자가 여러 PC에서 동일한 서비스 사용 가능.

전화망에서처럼 교환기에 의해 미리 설정된 경로를 통해서만 서비스가 이루어지는 것과 대조적

- 보안

- 수신 대체(Redirect) : SIP 서버는 단말의 서비스 요청을 다른 서버에 대체할 수 있다. 지능망(AIN)의 해당 기능과 유사

- Proxy : SIP Proxy Server 는 특정 서비스를 요청하는 경우 해당 서비스를 제공 할 수 있는 다른 서버로 그 요청을 전달

- Forking : 등록 단말이 여럿인 경우 요청을 상대방의 여러 단말로 동시에 전달

- 상태정보와 랑데부(Rendezvous) : 랑데부의 동적 형태는 필요한 서비스를 제공할 수 있는 서버나 단말로 호 설정을

직접 요청하는 것으로 구성된다. 반면 수동 형태에서는 상태정보로 구성된다. 즉 단말에서 어떠한 서비스를 필요로

한다는 것을 상태정보 등록을 통해 상대방이 알도록 한다.

- 이동성 : 다양한 통신 단말과 다양한 망 사용(IP망, 전화망, 이동통신망, Wibro망, WiMAX 등)

- 사용자 취향(User Preferences) : 발신자는 자신의 요청이 서버나 망에서 어떻게 처리될지를 정할 수 있다.

통화 가능은 물론 원치않는 상대방 그룹을 미리 지정할 수 있고, 상대방이 통화중이거나 자동응답기이면 아예

연결되지 않도록 설정할 수도 있다. 수신자 입장에서도 발신자가 누구인지, 어디에서건 전화인지, 통화 시간대,

단말 종류 등 다양한 기준에 따라 수신 여부를 능동적으로 결정할 수 있다.

- 경로 제어 : SIP 메시지의 전달 경로 또한 제어되거나 저장할 수 있다.

=> 이런 대부분의 기능들이 지능망(AIN)이나 웹, 이메일에서 사용되지만 기존 전화망에서는 제공되지 않는 SIP만의

기능들이다.


* 랑데부(클라이언트와 서버, 서버와 서버간 메시지 전달 프로토콜, RVP라고 함. draft-calsyn-rvp.txt 참고)

   

   

[표준 제정 과정의 투명성]

- 개방성 : 열린 개발 과정 표준화 제안, 방대한 표준 문서

- 자발적 기여

- 넘쳐나는 창의성

- 실행 코드에 근거한 SIP 표준화 : 표준 확정 되기전에 기능 구현을 통해 검증

   

[SIP 범위]

SIP는 양방향 세션의 시작, 수정, 종료에 관한 프로토콜이다. SIP는 장치 제어나 원격 프로시저 호출(RPC)를 위한

프로토콜은 아니다. 그렇다고 전송 프로토콜도 아니다. 메시지가 첨부되기도 하지만 대용량 데이터나 스트림 전송에

사용할 수는 없다. SIP 메시지가 설정한 전송 경로가 뒤에 따라오는 미디어의 전송 경로를 보장하는 것은 아니기 때문에

자원 예약(RSVP) 프로토콜도 아니다. SIP는 PSTN을 대체하는 프로토콜도 아니다. SIP의 틀은 전화의 시그널링 프로토콜

이나 통화 모델과 근본적으로 다르다. 물론 GW를 통해서 PSTN과 상호 연동할 수 있지만 그렇다고 SIP의 기본 역활이라

할 수 없다. SIP는 세션 관리 프로토콜이 아니라 세션 설정 프로토콜이다.

SIP는 VoIP 프로토콜도 아니다. VoIP는 SIP 네트워크에서 제공 될 수 있는 여러 서비스 가운데 하나일 뿐이다. SIP는

오로지 시그널링 프로토콜로써 미디어에 관한 사항, 즉 미디어 타입, 종류, 서비스 등에 대해서는 전혀 규정하지 않는다.

반면 H323은 그 이전의 ISDN 처럼 시그널링은 물론 미디어, 호 기능, 서비스, 세션 제어 등 모든 사항이 포함되어 있다.

   

[SIP 소개]

http와 smtp 를 바탕, 기본 목적은 세션 설정(Initiation)이다. 메시징 presence 기능 제공도 포함.

SIP는 P2P 프로토콜로써 세션에 참여하는 상대는 서로 대등한 관계지만 http 처럼 서버-클라이언트 트랜잭션 모델을

사용한다. SIP 클라이언트는 SIP Request 를 요청하고, SIP 서버는 응답 메시지를 통해 클라이언트의 요청에 응답한다.

SIP 메소드 : invite, ack, bye, cancel, register, options, info, prack, update, refer, subscribe, notify, message, publish

SIP 응답 코드 : 1xx, 2xx, 3xx, 4xx, 5xx, 6xx

   

------------SIP 메시지의 행별 설명------------

설명

INVITE sip:userb@there.com SIP/2.0

SIP 요청 메시지의 첫줄은 다른 헤더를 포함하지 않는다. 메소드(여기서는 invite)

이름으로 시작하여 한 칸 띄고 요청의 목적지 주소인 Request-URI(여기서는

sip:userb@there.com)가 오며 다시 한 칸 띄고 SIP의 버전(2.0)이 온다.

모든 행은 CRLF(carriage Return and Line Feed)문자로 끝난다.

SIP 버전은 RFC 2543이나 RFC 3261 모두 2.0이다

Via: SIP/2.0/UDP 4.3.2.1:5060

; branch=z9hG4bk765d

Via헤더는 SIP 버전(2.0), 전송 프로토콜(UDP), 발신자의 IP주소 또는 호스트 이름,

포트 번호로 구성된다. Proxy 서버는 자신의 주소와 포트 번호를 새로운 Via 헤더

로 추가함으로써 향후의 응답 메시지들을 해당 주소로 받을 수 있다.

branch 는 트랜잭션 구분자로써 앞의 7개 문자로 구성되는 쿠기(z9hG4bk) 할당.

To: User B <sip:userb@there.com>

To 헤더는 수신자의 이름과 <> 안에 표시되는 수신자 URI 로 구성된다.

From: User A <sip:usera@there.com>

From 헤더는 Request 요청자의 이름과 <> 안에 표시되는 요청자의 URI 담음.

Call-ID: 4r59899D8g19c3414

tag=34kd92kfs

Call-ID 헤더는 해당 호, 즉 세션에 대한 식별자(난수). 같은 세션의 모든 요청 및

응답 메시지는 동일한 Call-ID를 갖는다.

Max-Forwards: 70

홉 수이며 Proxy 서버를 한 번 거칠 때마다 1씩 감소한다.

'0' 되면 "483 Too Many Hops" 응답 메시지가 보내진다.

CSeq: 1 INVITE

CSeq는 메시지 순서로써 번호(여기서는 1)와 현재 메소드이름(여기는 INVITE)

으로 구성. 송신측과 수신측은 서로 독립적으로 개별 순서를 갖는 CSeq 사용.

Contact: sip:usera@4.3.2.1

Contact 헤더는 발신자 자신(User A)의 연락 가능한 하나 이상의 연락처 담음.

Content-Length: 126

메시지 본문의 byte 수. 본문은 SIP 헤더를 뒤에 나타나며 그 수에 SIP 헤더들은

포함되지 않는다. Content-Length 가 '0' 이면 본문이 없는 메시지이다.

   

   

[SIP 네트워크 구성 요소]

유저 에이전트 : SIP UA는 http 와 달리 SIP UA가 서버도 되고 클라이언트도 된다.

서버(RFC3261) : Proxy, Redirect, Registrar

- Outbound Proxy : UAC가 invite를 보낼 때 경유하는 Proxy 서버

- Incoming Proxy : SIP URI에 포함된 domain 주소로부터 해당 domain 의 Proxy 서버 IP가 추출된다.

이 경우 Proxy 서버는 걸려오는 호를 해당 도메인으로 유도하는 데 사용되기 때문에 Incoming Proxy 로 불린다.

   

SIP Registrar 서버는 UA에 수동 설정하거나 IP 멀티캐스팅을 통해 접근 될 수 있다.

또 UA는 자신의 1차 Proxy 서버에 등록 메시지를 보낼 수 있는데, Proxy 서버가 등록 요청을 Registrar 서버로 전달한다.

   

위치지정 서비스(Location Service)는 곧 DB라 할 수 있다. DB에는 URI, IP주소, Script, 사용자 취향 등 사용자 정보,

SIP 네트워크 라우팅 정보도 포함 된다.

   

[SIP 기능들]

주소 결정, 세션 관련 기능들, 호 중간 시그널링, 호 제어, QoS 호 설정, 세션 외 기능

   

[주소 결정]

Addrss Resolution 은 SIP 의 중요 기능. SIP주소 결정은 보통 URI로 시작하여 IP주소와 사용자명을 파악 하는 것.

주소 결정은 UA, Server 모두 수행 가능.

주소 결정 과정 절차

- DNS NAPTR 문의 : RFC 3263에 의거, 전송 프로토콜을(TCP, UDP, SCTP) 결정

- DNS SRV 문의 : RFC 3263에 의거, 서버 호스트 이름과 포트 번호를 결정

- DNS 문의 : 호스트의 IP 주소를 결정

- ENUM 문의 : 전화번호라면 그 번호를 찾음

- 위치지정 서비스 문의 : 주소 문의가 Proxy 서버로 미뤄질 때에는 RFC 3261 에 의거, 위치지정 서비스를 참조

   

주소 결정 과정의 request 메시지는 UA나 Proxy 의 Hop 별로 DNS나 라우팅 테이블에 문의하여 목적지 까지 전달된다.

반면 response 는 역으로 보내기 때문에(Via 헤더 기록 참고) 주소 결정 과정이 필요 없다.

   

SIP의 주소 결정 절차는 dynamic 하다. Proxy 는 request 메시지 내의 여러 정보와 다양한 헤더를 경로 설정에 할용

(timestamp 시간정보, From 헤더, 자동 호 분배 ACD 나 부하 분산을 위한 여러 헤더)

   

이런 주소 결정 과정은 세션 시작 시점에 단 한번만 수행된다. 한번 파악된 주소들은 저장되어 이후 메시지 전송 시 사용.

   

   

[* IP의 SIP 메시지 전송]

IP-TCP(TLS SSL), UDP(Datagram TLS-DTLS, 일반), SCTP 를 통해 전달.

SIP는 자체 신뢰 보장 체계를 가지고 있어서 UDP 처럼 보장 체계가 없는 'best effort' 전송 프로토콜도 사용 가능.

하나의 SIP 메시지가 여러 hop 으로 전달 되는 경우 각각의 홉 구간은 UDP or TCP가 될 수 있다. 사용된 전송 프로토콜은

메시지 IP 주소 및 Port 번호와 함께 Via 헤더에 기록된다.

UDP는 SIP 전화기 처럼 간단한 User Agent 가 주로 사용

TCP는 Proxy 서버 간, 또는 장시간 연결이 필요한 경우 주로 사용

SCTP 는 대용량의 트래픽 처리와 낮은 지연시간을 요하는 대용량 PSTN GW와 Proxy 간 연결 설정의 위해 주로 사용.

   

   

[세션 관련 기능들]

   

[세션 설정]

UAC는 세션을 시작하면서 (To,From,Call-ID) 헤더를 설정하는데, 이 3가지 정보를 "dialog" 라고 부르며 하나 세션 구분.

한 세션 동안 변경 되지 않는다. 이 정보와 기타 미디어 정보를 추가한 것을 '호 상태' 라고 하며 UAC는 반드시 이 호 상태

를 기억하고 있어야 한다. ( UAS는 UAC의 Call-ID, UAC의 To 값을=>From, UCA의 From 값을=>To 사용한다 )

인터넷 철학이 그러하듯 SIP 호 상태는 네트워크 내부가 아닌 SIP 단말에서 유지된다. 물론 SIP Proxy 서버도 세션 설정

과정을 기록 할 수 있지만 SIP 호 상태를 단말이 기억하게 함으로써 호 설정을 망에 독립적으로 관리할 수 있다.

   

성공 : INVITE/200/ACK

실패 : INVITE/4xx, 5xx 또는 6XX/ACK

   

INVITE는 ACK를 동반하는 유일한 메시지. 나머지 요청의 메시지들은 Request/200, Request/4xx, 5xx , 6xx 로 응답 한다.

설정과정에서 100, 180 진행 응답(1xx, provisional message)메시지가 있을 수 있다.

호 성립 되면 더 이상의 SIP signal 메시지 없이 미디어 세션이 진행된다. 그러나 'SIP Session Timer' 를 사용하면

일정 시간 이후 미디어 세션의 종료, 즉 통화시간을 제한할 수 있다. 세션 성립 과정 중에 forking 기능 가능

   

   

[미디어 협상]

SIP 자체로 media 협상 지원 하지 않기 때문에 협상은 SDP 를 통해 이루어진다.

INVITE(with SDP)/200ok(응답) or INVITE/200ok(SDP)/ACK(응답) -> RFC 4317(SDP 제안/응답 모델)

추가적인 media 협상은 re-INVITE 메시지를 통해 가능.

하지만 SDP를 이용한 media 협상은 다소 제한적일 수 밖에 없어 SDPng 로 불리는 SDP 보안할 새로운 표준 검토 중

   

------------SDP 제안 예------------

항목

내용

v=0

Version - SDP의 현재 버전(0) - SIP 사용 안함

o=usera 2890844526 2890844526

IN IP4 client.example.com

Origin - SIP에서는 버전번호(2890844526)만 사용

s=Subject

제목

c=IN IP4 128.2.3.1

Connection - 네트워크(IN은 인터넷 나타냄), 주소 형식

(IPv4는 IP version 4를 나타냄), IP 주소(128.2.3.1)

t=0 0

Time - 시작 시간과 종료 시각 - SIP 사용 안함

m=video 51327 RTP/AVP 34 98

Media - 미디어 형식(Video), 포트 번호(51372),

형식(RTP/AVP profile), profile 번호(34 or 98)

a=rtpmap:34 H263/90000

Attribute - rtpmap 으로 RTP/AVP profile 34의 규격 나열

: 코덱(H.263), 샘플링 주기(90000Hz)

a=rtpmap:98 H264/90000

Attribute - rtpmap 으로 RTP/AVP profile 98의 규격 나열

: 코덱(H.264), 샘플링 주기(90000Hz)

m=audio 4006 RTP/AVP 0 97

Media - 두번째 미디어 형식(audio), 포트 번호(4006),

형식(RTP/AVP profile), 프로파일 번호(0 or 97)

a=rtpmap:0 PCMU/8000

Attribute - rtpmap 으로 RTP/AVP audio profile 0의 규격 나열

: 코덱(PCMU: PCM u-law), 샘플링 주기(8000Hz)

   

------------SDP 응답 예------------

항목

내용

v=0

Version - SDP의 현재 버전(0) - SIP 사용 안함

o=usera 2890844342 2890844543

Origin - SIP에서는 사용 안함

IN IP4 client.example.com

  

s= -

제목

c=IN IP4 16.22.33.1

Connection - 네트워크(IN은 인터넷 나타냄), 주소 형식

(IPv4는 IP version 4를 나타냄), IP 주소(16.22.33.1)

t=0 0

Time - 시작 시간과 종료 시각 - SIP 사용 안함

m=video 0 RTP/AVP 34 98

Media - 미디어 형식(Video), 포트 번호(0)은 해당 미디어 세션 거절을 의미

m=audio 6002 RTP/AVP 97

Media - 두번째 미디어 형식(audio), 포트 번호(6002),

형식(RTP/AVP profile), 포트번호 (0)이 아니면 해당 미디어 세션을 수용

a=rtpmap:97 iLBC/8000

Attribute - rtpmap 으로 RTP/AVP audio profile 97의 규격 나열

: 코덱(iLBC), 샘플링 주기(8000Hz)

   

   

[세션 변경]

세션은 INVITE/200/ACK 과정을 통해 설정. 세션 변경은 re-INVITE/200/ACk 과정으로 이루어 진다.

세션 당사자 어느 쪽에서든 요청될 수 있다. 이전 INVITE와 동일한 To, From, Call-ID 를 사용한다.

re-INVITE가 거절되어도 기존 미디어 세션에는 아무런 영향을 끼치기 않는다.

re-INVITE가 수락되면 기존 미디어 세션은 새로운 미디어 세션으로 대체된다.(새로운 SDP의 내용 수정 가능)

   

[세션 종료BYE 및 취소CANCEL]

CANCEL 은 INVITE 후 최종 응답 메시지(2xx,3xx,4xx,5xx,6xx)를 받기 전에 CANCEL 메시지를 보내는 경우.

Forking 과정에서 Proxy 가 여러 수신 단말에 동시에 CANCEL 을 보내 호 취소를 한다.

   

INVITE와 BYE는 단말 대 단말 메소드인 반면 CANCEL은 홉 단위 메소드이다. CANCEL을 받은 Proxy 는

200ok 응답을 보내고, 해당 INVITE를 보냈던 원래 목적지에 CANCEL 메시지를 전달.

CANCEL 을 받은 UA는 해당 INVITE에 대한 최종 응답 메시지를 아직 보내지 않았다면 200ok 를 보내고

이어서 486 Request Cancelled 로 정상 호 취소 상태가 된다

하지만 이미 INVITE에 대한 응답 메시지를 보낸 후라면 481 Transaction Unknown 메시지로 응답한다.

   

[통화중 시그널링]

통화중 시그널링(Mid-call signaling)이란 두 UA 사이에 설정된 현재 세션 파라미터를 변경하지 않는 시그널링 메시지의

교환을 의미. 만약 현재 세션 파라미터를 변경한다면 re-INVITE를 사용한다. 그 외의 경우 SIP INFO 메소드가 사용.

즉 교환 정보는 INFO 의 메시지의 본문으로 전달된다. ISUP(ISDN User Part)망의 경우, ISDN USR(User to User Message)

에 포함된 통화중 시그널링 정보는 INFO 메소드를 통해 전송된다.

   

[호 제어]

SIP는 BYE는 단대단으로 이루어 진다. 하지만 두 UA간 호 제어 및 관리를 제3자가 하면 훨씬 다양한 서비스 가능.

제3자가 호 제어 구현 방법 2가지. 첫번째 제어기가 발신자의 SIP INVITE 요청에 중간에 직접 응답하고 원래 수신자를

제3자로 INVITE 하는 방식이다. 제어기는 발신자와 제 3자간 시그널링의 중간에 위치하며 SDP를 중계하는 등

드러나지 않게 호를 제어할 수 있다.(결국, MiTM 같은 원리 인가 보다) 두번째는 REFER 메소드를 사용하는 방법.

A와 B가 세션을 설정하고, REFER 요청을 통해 B로 하여금 C와 호를 맺도록 하는 예.

   

REFER를 이용한 호 제어 예

아래는 Originator<-->Recipient 통화 중 Originator 이 콜 트랜스퍼 해서 Recipient<-->Final-recipient 통화

 

사용자 삽입 이미지

   

또는 Click to call 에서 활용

user1@sip 계정 권한을 가진 유저가 웹(또는 프로그램에서)에서 user2@sip 로 전화 걸게 되면

Web Server 가 Invite 를 자신의 user1@sip 로 보내어 전화를 걸게 됩니다. 이후 REFER 를 보내어

user1@sip 이 user2@sip 와 통신을 하게끔 합니다. 이후 Web Server 가 BYE를 보내게 되고

user1@sip 는 user2@sip 로 전화를 걸게 됩니다.

http://level7systems.co.uk/en/blog/Click+to+Call+with+PHP-SIP

 

사용자 삽입 이미지

   

REFER 의 메시지의 Refer-TO 헤더는 A가 호를 설정해야 할 상대방의 URI를 나타내고 Referred-By 헤더는 호 설정을

요청하는 제3자인 자신을 나타낸다. Referred-By 헤더는 B의 INVITE 메시지에도 포함되어 C로 하여금 호를 요청한

주체가 누구인지 알 수 있게 한다.

   

[호 설정 전제 조건]

SIP 확장 부분에서 QoS 알아보자. re-INVITE 를 이용할 수 있다. 먼저 'best-effort' 철학에 근거하여 세션을 설정 한 후,

조건에 만족되지 않으면 re-INVITE를 통해 세션을 변경하는 것이다. 하지만 SIP 메세지는 미디어로 부터 독립적이므로

새로운 세션의 설정은 기본 세션이 실패하였을 경우, 즉 미디어 전송에 필요한 대역폭의 절대부족으로 세션이 중단되는

경유에 가능하다. 따라서 re-INVITE 방식으로는 원하는 QoS 를 항상 보장할 수 없다. 다른 방법은 PSTN 방식을 따라하는

것으로 수신측에서 판단하기에 세센에 필요한 충분한 대역폭이 준비되어있지 않으면 아예 벨을 울리지 않도록 하는

것이다. 이 방식은 Voice over Cable Modem 프로젝트를 목적으로 하는 PacketCable 컨소시움에서 개발되었있다.

Prack, Update 를 사용하는 Call Flow 로 설명 진행 <- 아쉽게 그림이 없음 --;

   

세 가지 SIP 확장

1. Early Media 로써 183 Session Progress 진행 메시지에 SDP를 실을 수 있게 확장한 것이다.

이를 통해 두 UA는 호 요청이 응답되기 전에 QoS 관련 협의를 SDP를 통해 서로 주고받을 수 있다.

2. 신뢰성있는 진행 메시지(Reliable Provisional Response)로의 확장으로써 183 응답과 같은 진행메시지가 제대로

전송되지 않았을 경우 이를 발견하여 재전송하도록 한 것이다. 183 응답의 수신을 확인하는 메시지가 바로

PRACK(Provisional Response ACKnowledgement)이다.

3. COMET(preCOnditions MET) 메소드이다. UAS 는 COMET 을 받고 나서 QoS 협의가 수락되었음을 알고 벨을 울린다.

이후는 이랍ㄴ 호 처리과정과 동일하다. 현재는 COMET 대신에 동일한 의미로써 UPDATE 메소드가 사용된다.

위 3가지 확장은 첫 INVITE 메시지의 SDP의 마지막 줄의 qos:mandatory 항목에 의해 유발된다.

   

a=qos:mandatory

   

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

[SIP의 메시지 재전송]

SIP는 request, response 가 분실되었을 경우 거의 대부분 자동으로 재전송 한다. 발신측이 메시지 전송과 동시에

타이머를 작동시킨다. 이 첫 번째 타이머를 T1이라 하며 초기 설정값은 보통 500ms 이다. 이 시간동안 응답 메시지가

전혀 오지 않으면 원래 요청 메시지를 재전송하고, 타이머 시간내에 진행 메시지(1xx)가 오면 발신측은 보다 긴 타이머인

T2(초기값은 4초)를 작동시킨다. 만약 발신측의 요청 메시지 자체가 분실되었다면 수신측은 요청 메시지를 받지 못할

것이고 응답 메시지 또한 생성하지 않을 것이다. 이 경우에는 수신측 T1 타이머의 시간이 다하게 되고 발신측은 요청

메시지를 재전송한다. 재전송된 요청 메시지를 받은 수신측은 자신이 보낸 응답 메시지가 분실되었음을 알게 되고

그 응답 메시지를 재전송한다.

INVITE 요청 메시지의 경우는 다른 요청 메시지의 경우와 그 처리 방식이 다르다.

INVITE 요청의 최종 응답은 수신측 사용자가 수화기를 들어야만 가능하므로 그 시간이 상대적으로 길다.

따라서 발신측은 INVITE 요청에 대한 진행 응답(Provisional Response)을 수신하더라도 타이머 T2를 작동시키지 않고

대신에 더 이상의 INVITE 요청 메시지 재전송을 중단한다. 수신측에서는 INVITE 메시지를 수신하고 나서 최종 응답

메시지를 전송할 때 비로소 T1 타이머를 작동시킨다. 만약 발신측으로부터 타이머 시간내에 ACK를 보내오지 않으면

그 응답 메시지를 재전송한다. 이러한 절차를 통해 분실된 INVITE나 최종 응답 메시지, 즉 ACK의 확실한 전송을 보장하게

된다. 이와 같은 재전송 규칙의 예외는 진행 메시지이다. 진행 메시지는 ACK를 요구하지 않기 때문에 그 메시지가

분실되었는지 잘 수신되었는지 확인할 방법이 없다. 그래서 PRACK 라는 신뢰성 있는 진행 응답

(Reliable Provisinal Responese) 메시지 확장이 개발되었으며 이를 통해 SIP의 모든 요청 및 응답 메시지에 대한 신뢰성을

보장 할 수 있게 된다.

   

GK#sh sip-ua timers

SIP UA Timer Values (millisecs unless noted)

trying 500, expires 180000, connect 500, disconnect 500

prack 500, rel1xx 500, notify 500, update 500

refer 500, register 500, info 500, options 500, hold 2880 minutes

tcp/udp aging 5 minutes

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

   

   

   

[세션 외 기능들]

   

[이동성]

SIP의 등록 기능은 이동전화에서의 등록과 유사하다. 사용자는 Proxy로 보내는 등록 메시지에 수신 가능한 URI을 실어

보낸다. 등록 서버(registrar server 는 위치 서버(Location Server)에 있는 사용자 레코드를 갱신하고 등록 확인 메시지인

200ok 응답을 보낸다. 사용자가 사무실을 떠나 집에 도착하면 집전화를 새로 등록하면 사무실 SIP 전화기의 등록은

취소한다. 전화기와 등록서버 간에 SIP를 사용하지만 등록서버와 위치서버는 다른 프로토콜을 사용 할 수 있다.

또한 집 전화기도 반드시 SIP단말일 필요는 없고, PSTN 전화기이더라도 웹이나, 이메일, 또는 다른 등록 프로그램을

통해 등록할 수 있다.

다수의 URI를 함께 등록할 수 있으며 선호하는 순서로 우선순위가 주어진다.

아래 처럼 우선순위의 3가지 URI를 등록 할 수 있다.

   

<SIP client to Registrar>

REGISTER

...

Contact: sip:usera@4.3.2.1;class=personal

Contact: tel:+1-314-555-1212

Contact: mailto:usera@here.com

   

<Registrar to SIP client>

200 OK

...

Contact: sip:usera@4.3.2.1;class=personal

Contact: tel:+1-314-555-1212

Contact: mailto:usera@here.com

   

Contact 헤더의 SIP URI 에 확장된 파라미터들이 추가될 수 있다. 통화자 취향(Caller Preferences) 표준에서 볼 수 있는

확장 파라미터들은 통해 사용자는 URI 단말에 대한 부가정보를 지정할 수 있다. 즉 첫번째 URI는 개인 URI, 둘째는

음성메일, 셋째는 업무용, 넷째는 이동전화로 지정할 수 있다. 순서대로 호 시도를 하게 된다.

비슷한 예로 Reject-Contact 헤더도 있는데 특정 단말이나 방식으로의 연결은 원치 않음을 지정할 수 있다.

   

Proxy가 SIP 메시지를 처리할 때, 해당 메시지를 Proxy 방식으로 처리 할 지, 다른 서버로 대처 할 지, 다수 단말을

순차적으로 시도할지 아니면 동시에(forking) 시도할지에 대한 결정은 서버의 재량이다.

하지만 Request-Disposition 헤더를 사용하면 그 처리방식을 발신자가 직접 지정할 수 있다.

예를 들어 Request-Disposition: proxy, sequential 헤더는 해당 호 연결이 대체(redirect) 방식이 아닌 Proxy 방식 방식으로,

수신 단말들을 동시에 시도하지 않고 순차적으로 시도하도록 지정한다. 통화자 취향 표준에 기술되어 있다.

UA는 Requires:prefs 헤더를 추가하여 등록서버가 사용자 취향 정보를 처리하도록 요청할 수 있다.

   

   

[메시지 전달]

MESSAGE 메소드는 해당 URI로 메시지를 전달할 때 사용된다. MESSAGE 메소드 전달은 해당 세션의 내외 모두에서

가능하다. URI가 SIP 가 아니라 IM URI를 사용한다. A가 보낸 것을 받으면 B는 200 ok 응답을 보내게 된다.

INFO 메소드는 두 UA 간에 세션이 설정되어 있어야만 전달될 수 있는 반면에 MESSAGE 메소드는 세션 설정에

관계없이 아무 때나 전달될 수 있다.

   

To: User B <im:userb@there.com>

From: User A <im:uesra@here.com>;tag=4541232ds

   

   

[이벤트 알림요청 및 알림]

SUBSCRIBE(알림요청), NOTIFY(알림)는 특정 이벤트에 대한 알림을 요청하고 정보를 제공하는 기능이다.

수신자가 통화중일 때 통화가 끝나는 즉시 발신자에게 전화를 걸어주는 자동 콜백 기능을 들 수 있다.

아래 처럼 A->B로 전화 시 B가 통화 중이면 486으로 통화 중이라는 응답을 받는다.

A는 B에게 통화를 마치면 알려달라는 신호로 Subscribe 메시지를 보내고 B가 통화를 끝낸 후 Notify 메시지를 보내면

A는 세션을 설정한다.

   

사용자 삽입 이미지
 

   

알림요청 메시지의 Event 헤더는 요청하는 이벤트가 무엇인지를 나타낸다 만약 B가 해당 이벤트의 알림을 원치 않을

경우에는 603 Decline 응답으로 거부할 수 있다. Subscribe, Notify 는 서버 없이 구현될 수도 있고, PUBLISH 메소드를

통해 서버를 사용하는 구현도 가능하다.

   

   

[상태정보 알림]

SIP PUBLISH 메소드를 통해 UA는 자신의 상태정보를 상태정보 서버에 저장하거나 공개할 수 있다.

상태정보 서버는 저장된 정보를 원하는 사용자들에게 보낸다.

   

[인증]

두 가지 인증 제공(UA간, UA와 Server간) , 서버와 서버간은 SIP 자체로는 제공하지 않고 다른 프로토콜(ex. IPSec)로 제공.

SIP 인증은 대부분 http 에서 가지고 왔으며 대표적인 예가 SIP Digest 인증 이다. 어떤 SIP 메시지도 인증을 요구 받을 수

있다. SIP와 Proxy 간 인증은 407 응답 사용. 단 Proxy 와 Proxy 간 인증은 없다. 대신 IPSec 등을 사용 한다.

   

[확장성]

SIP 확장이 쉽다. 기존의 서버나 Proxy 변경 없이 개별 UA들은 메시지 본문이나 새로운 헤더를 이용하여 확장된 기능을

구현할 수 있다. 메시지에 잘 모르는 헤더나 요청이 포함되어 있더라도 수정없이 전달한다. 요청자는 Supported 헤더에

새로운 확장이 포함되어 있다는 정보를 실어 망과 사용자에게 알려주며 이를 어떻게 처리할 지에 대한 안내를 제공한다.

만약 확장된 기능이 반드시 처리되어야 할 사항이라면 Require 헤더를 이용하여 명시한다. 이 메시지를 받은 UA가 추가된

기능에 대해 모르거나 지원할 수 없으면 오류 응답을 보낸다. 또한 Proxy-Require 헤더를 통해 메시지가 전달되는 과정에

위치한 Proxy들이 처리해야 할 확장 기능임을 명시할 수 있다. 하지만 이러한 헤더의 사용은 호 성공률을 낮추고 원활한

상호 연동을 제한할 수 있기 때문에 가급적이면 사용하지 않는 것이 좋다.

또한 UA는 Allow, Supported, Allow-Events 및 Accept-Content 헤더를 통해 자신이 지원 가능한 기능과 메소드들을

분명하게 명시하는 것이 바람직하다.

Posted by hjlee
:
프로그램은 보통 vi 에서 작성하는데 vi 의 한글 코드는 KSC5601 이지만 qt 는 유니코드를 사용합니다. 이런 이유로 한글을 바로 출력하면 qt 에서는 깨져서 출력이됩니다.
한글을 출력하기 위해서는 3가지 방법이 있습니다.
  1. 매크로를 이용하는 방법

    #include <qstring.h>

    #define kor(str) QString::fromLocal8Bit(str)

    QString str = "안녕하세요!!";
    setCaption( toUniString( str));

  2. 코덱을 이용하는 방법

    #include <qstring.h>
    #include <qtextcodec.h>

    QString toUniString(QString str)
    {
      QTextCodec * codec = QTextCodec::codecForName("eucKR");
      QString localeStr = codec->toUnicode(str);
      return localeStr;
    }

    QString str = "Hello Word!! 안녕하세요!!";
    setCaption( toUniString( str));
  3. QEucKrCodec 객체 사용
    이 객체를 처음 보았을 때에는 야~ 우리나라 언어를 위한 코덱이 다있네하고 놀랬습니다. 모든 함수를 확인은 못했지만 일본어 코덱도 있더군요.

    #include <qstring.h>
    #include <qeuckrcodec.h>

    QEucKrCodec* codec = new QEucKrCodec();
    char* string="안녕하세요!!";
    QString str = codec->toUnicode(string, strlen(string));
    setCaption( str);



출처 : http://postpub.tistory.com/94

Posted by hjlee
:
http://cafe.naver.com/ygaribi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=60
Posted by hjlee
:

윈도우 어플리케이션이 실행 중 크래쉬가 발생하는 경우 덤프를 남기로 프로그래밍 할 수 있다.
이렇게 해서 남겨진 덤프파일을 분석하려면 WinDbg를 이용해서 분석할 수 있다.

WinDbg 명령어
1. !analyze -v
읽어들인 덤프파일을 분석한다. pdb 파일들을 로딩하고 스택정보 등을 출력해준다.

2. lm
현재 로딩된 심볼파일(pdb)의 현황을 보여준다.

3. .reload -f
심볼파일을 다시 읽어들인다.

윈도우 프로그래밍 중 ntdll.dll 등의 심볼 파일이 있는 경우가 있는데 이런 때에 다음을 사용하면 된다.

1. Microsoft® Symbol Server
http://msdl.microsoft.com/download/symbols

2. 심볼파일 설치
심볼파일 설치파일을 다운로드 받아 설치하여 사용하는 방법도 있다.
http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx



출처: http://bitna415.godohosting.com/link/index.php?item_no=8198122&httplink=http://taekgeun.tistory.com/84

Posted by hjlee
:

* OpenVPN 통한 VPN 구현
 - Linux - Windows


@ 시스템 구성
 
VPN클라이언트 끼리도 통신 또한 가능해야 만들어보자. (서버측 server.conf로 설정)
  - VPN
서버 : Centos 4.7 (Vmware 브릿지)
  - VPN
클라이언트 : Windows XP
  - VPN
네트워크 : 10.100.0.0 (10.100.0.1 ~ 10.100.0.255) (서버측 server.conf로 설정)
  - VPN
사용포트 : 1194/UDP (서버측 server.conf로 설정)

@ 서버 Centos 4.7에서 OpenVPN설치
@lzo
설치 ( 실시간 압축 전송 라이브러리)
#http://dag.wieers.com/packages/lzo/
에서 적당한 버전의 rpm 받거나,

#wget 을 사용해 아래처럼 다운받을수있다.

@devel 버전이랑 2개를 받는 이유는? 잘은 모르지만 서로간의 의존성때문이라고한다.

#wget http://dag.wieers.com/packages/lzo/lzo-1.08-4.2.el4.rf.i386.rpm

사용자 삽입 이미지


#wget http://dag.wieers.com/packages/lzo/lzo-devel-1.08-4.2.el4.rf.i386.rpm

사용자 삽입 이미지

#rpm -Uvh lzo.. 명령으로 rpm을 설치하자.

사용자 삽입 이미지

 

@openvpn 받아서 rpm 으로 만들어 rpm형식으로 설치하자.
 wget http://openvpn.net/release/openvpn-2.0.9.tar.gz

: 안된다면 DNS가 제대로 작동하는 지 확인하자.

사용자 삽입 이미지


@ rpmbuild -tb openvpn-2.0.9.tar.gz

- 압축파일을 rpm형식으로 만들어주는 명령이다.(lzo가 깔려있지않으면 실행되지않음)

- rpm으로 만들면 아래경로에 만들어진다. 경로를 적어주고 설치하자.

 

@rpm -Uvh  /usr/src/redhat/RPMS/i386/openvpn-2.0.9-1.i386.rpm

사용자 삽입 이미지


@Rpm으로 설치되는 파일 디렉토리들을 한번봐두자.

#rpm -ql openvpn 으로 확인해보자.  대충 중요한 디렉토리위치는 아래에 적어놨다.
  /etc/openvpn //openvpn 설정
  /etc/rc.d/init.d/openvpn //openvpn데몬 위치
  /usr/sbin/openvpn //관리자권한의 openvpn명령
  /usr/share/doc/openvpn-2.0.9/*
  /usr/share/man/man8/openvpn.8.gz
  /usr/share/openvpn
  /usr/share/openvpn/plugin/* //openvpn의 plugin이 있는 디렉토리


3.
인증서 생성 - 서버
 
인증서 생성은 필수이다.
 1) CA
생성 (상위 인증기관)
  먼저
 인증서를 관리하는 /usr/share/doc/openvpn-2.0.9/easy-rsa/ 디렉토리로 이동하자.
 @vars
파일은 인증서 생성시 넣어야할 정보를 미리넣어두어서 나중에 인증서생성시 간단하게 생성할수있게 참조시켜주는 파일이다.

vars파일을 열어 젤 아래쪽에 간단한 정보를 기입하자.

사용자 삽입 이미지

< /usr/share/doc/openvpn-2.0.9/easy-rsa/vars>


@mkdir /usr/share/doc/openvpn-2.0.9/easy-rsa/keys

: 인증키를 보관할수있는 keys디렉토리를 생성해주자.

사용자 삽입 이미지


   . ./vars
  : vars내용을 include한다는 명령
  ./clean-all
  :
기존에 생성 인증서가 있으면 모두 삭제
  @./build-ca
 - CA
인증서를 생성한다. 생성시 vars파일을 참조하기때문에 기본설정이 내가 설정된값이

되어있기 때문에 간단하게 넘어갈수있다.

 - 하지만 Common Name에서 server & hostnme 에서 반드시 server를 적어두자.

 - 실수로 Enter로 넘어갔다면 다시 ./build-ca를 실행하면 된다.
 -
이렇게하면 keys라는 폴더에 ca.key(개인키), ca.crt(공개인증서) 생성된것을 확인한다.
 -  ca.crt
파일은 모든 클라이언트에 배포. ca.key 서버만 가지고 있음.


사용자 삽입 이미지


 2) 서버키 생성 (서버에 사용될 인증서 개인키)
   ./build-key-server server

 -  위와 똑같이 넘어간다.

 - Sever설정이기때문에 Common Name에선 sever라고 넣어주자.

 - 나머지 설정은 중요하지 않기때문에 변경안하고 Enter로 넘어가고 Y/N이 나오면 Y만 누르면된다.

 - 설정이 끝나면 keys 디렉토리에 서버의 인증서(server.crt) 및 개인키(server.key) 등이 생긴것을 확인할수 있다.
 -
키들은 CA 의해 사인된 인증서이다.
  -
모두 서버에만 사용된다. 클라이언트용은 따로 만들어준다.

사용자 삽입 이미지


 3) 클라이언트키 생성 (클라이언트에 사용될 인증서)
   ./build-key client
- 서버설정과 동일하다 다만 Common Name 설정에 Client라고만 설정하자.

사용자 삽입 이미지


- keys 디렉토리에서 생성된 클라언트 인증서/키 확인하자.

- keys 디렉토리에 생성된 모든 인증서는 CA에서 검증받은것이니 신뢰할수있다.

사용자 삽입 이미지

 


 4) Diffie Hellman
파라메터 생성

:암호화에 필요하다.
  ./build-dh
  - keys
디렉토리에 dh1024.pem 파일이 생긴것을 확인할 있다.
  - dh1024.pem
서버에만 가지고 있는다.

@dh1024.pem 은 1024bit로 dh방식으로 암호화

사용자 삽입 이미지


@클라이언트용 파일을 Windows Xp에서 받을수있게 압축한뒤 /var/ftp/pub 안에 넣자.

@pub디렉토리는 ftp접속시 보여주는 기본 디렉토리이므로 윈도즈에서 ftp 주소를 넣었을때 바로 파일을 찾기위해서 하는것이다.

# mkdir -p /root/client-keys 후 /usr/share/doc/openvpn-2.0.9/easy-rsa/keys 디렉토리안의 ca.crt, client.crt, client.csr, client.key를 만들어준 /root/client-keys디렉토리에 복사하여 아래와같이 압축후 /var/ftp/pub안에 넣어주자.

사용자 삽입 이미지

 

@이제 설정이 끝났으니 openvpn데몬을 시작시켜 tun 이라는 vpn통신을 하기 위한 이더넷카드가 생성되는 지 확인해본다.

@ /etc/rc.d/init.d/openvpn restart 실행후

 ifconfig 명령을 실행 tun0 정보가 올라와 있나 확인해 본다.

@ 없다면 /dev/net/tun 이 있는지 확인하고 없으면 /dev/net 디렉토리에서 net/tun c 10 200이라고 써서 생성시켜준다.

그래도 tun카드가 올라오지 않을경우  /var/log/messages 목록을 보면 무엇때문에 동작이 안되었는지를 알수있다. 실시간으로 보기위해서 터미널창을 한개 더 열어서 #tail -f 옵션으로 메세지를 확인해보자.

@나는 여기까지 했지만 tun이 올라오지 않았다. 그러면 /etc/openvpn디렉토리에서 다시 설정을 해줬다. 그러면 우리가 설정 했던 디렉토리에서 파일들을 /etc/openvpn으로 복사를 해야한다.

#현재 Centos 4.7을 Vpn서버로만 사용할거기 때문에 server.* 무조건 복사하고 나머지 기본 인증서 / 키 들을 복사한다.

아래는 /etc/openvpn으로 복사할 파일들을 나열했다.
-  먼저 파일이 있는  /usr/share/doc/openvpn-2.0.9/ 들어가서 작업을 해주자.
- cp sample-config-flies/server.conf /etc/openvpn/
- cp easy-rsa/keys/server.* /etc/openvpn/
- cp easy-rsa/keys/dh1024.pem /etc/openvpn/  
- cp easy-rsa/keys/ca.* /etc/openvpn/


사용자 삽입 이미지

<복사후 /etc/openvpn>    


@ 그럼이제 서버설정파일을 수정해보자.(/etc/openvpn/server.conf)

사용자 삽입 이미지

<server.conf안의 내가 설정한 부분>

@ 주의할점 구문앞에 붙어있는 세미콜론(;)은 주석을 뜻하므로 사용하고자하는 설정 앞에 세미콜론이 있다면 제거한후 입맛에 맛게 다시 설정해주면된다.


   - vpn sever 네트워크 대역을 10.100.0.0 netmask 255.255.255.0으로 설정
   - client-to-client : vpn
클라이언트 끼리 통신 가능하게 해주게 한다.
   - duplicate-cn : client
인증서 하나로 여러대의 PC에서 사용할 있게한다.
   - max-clients 100 : 최대
연결수를 100으로 제한한다.
   - plugin .... : user/pass
인증을 받는다. (접속시 서버시스템안의 계정을 넣어야 접속가능)

:@주의 할점 plugin 띄워쓰기를 잘해주자~! 참고로 전 띄워쓰기때문에 오류가 났었다.

위와같이 설정후 다시 #service openvpn restart 를 해보자.

/etc/rc.d/init.d 안의 데몬과 /etc/services 같다. 그래서 난 간단하게 #service명령으로 다시 데몬프로세스를 동작시켰다.


그럼 아래와 같이 Vpn 장치가 올라오는 것을 ifconfig로 확인할수있다.

자 그럼 이제 서버설정은 끝났다.


사용자 삽입 이미지

<tun0:vpn용 가상카드>
 

@ 그럼이제 클라이언트 windows XP에 설치하기로 했었다. 그러기 위해선 서버시스템에서 생성한 클라이언트용 인증서 // 키 그리고 ca인증서가 필요하다. 그러므로 윈도우로 복사를 해줘야하는 파일들이다. 아래그림처럼 4개의 파일을 압축시키자.

사용자 삽입 이미지


@윈도우 브라우저에서 ftp centos 4.7을 열었을때 기본제공 디렉토리가 /var/ftp/pub이다. . 즉 브라우저에선 pub밖에 보이지 않는다. 그러므로 압축파일을 바로 찾을수있게 pub디렉토리에 복사를 해준다.

사용자 삽입 이미지

@아참! 그리고 중요한것은 ftp서버를 동작시키는 거다. ^^
# service vsftpd start 를 해주자.
그리고 만약 ftp사용계정이나 기타 설정을 하려면 /etc/vsftpd/vsftpd.conf파일을 수정하면된다.

@ Windows XP 클라이언트 세팅!

먼저 아래 사이트에서 openvpn 윈도우용 패키지를 다운받아서 설치하자
http://www.openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe

사용자 삽입 이미지

< openvpn install.exe 실행시 >


 

@ 서버측에 만들어 놓았던 압축파일을 다운받자.

사용자 삽입 이미지

@ 파일 받아서. 압축해제  시 -> 프로그램 -> OpenVPN -> Open VPN configuration file directory 누르면 폴더가열리는 데 이곳에다. 압축푼 4개파일을 넣어주자. *다른 압축파일등은 넣지말자. 그리고 이 디렉토리에 하나의 파일을 더 복사를 해줘야한다. 그파일은 아래 그림을 참조하자.

@그림을 과 같이 sample configuration files알의 Client.ovpn도 위의 디렉토리에 복사(중요)

: 접속할 서버의 정보를 세팅을 해줄수있는 파일이기때문

사용자 삽입 이미지
사용자 삽입 이미지



@복사를 하고 configuration file directory폴더를 확인 해서 아래와 같이 파일들이 존재해야한다.

사용자 삽입 이미지


@여기서 client.ovpn을 열어 원격접속할 서버의 주소와 포트를 넣어준다.

사용자 삽입 이미지


@이제 설정이 끝났다. 그럼이제 서버에서 작업한것과 마찬가지로 vpn 이더넷 카드 를 아래의 메뉴를 클릭하여 만들어주자.(제대로 동작되지 않으면 아래의 Delete ... 로 지운후 다시 ADD 해주면된다)

사용자 삽입 이미지


@위의 작업을 하셧다면 작업표시줄에 새로운 네트워크가 생긴다. 이것을 Connect 해주자.

사용자 삽입 이미지


@만약 생성하고도 작업표시줄에 뜨지 않았다면 Openvpn메뉴에서 GUI를 실행시키면 된다.

사용자 삽입 이미지


@Connect화면

: 서버시스템안에 생성된 계정중의 한개를 넣어주자 전 test/1234로 미리 설정해두었음.

사용자 삽입 이미지


@만약제대로 접속이 되었다면 기본설정으로 자동Ip를 받는다.

:현재 10.100.0.6 ip가 배당된것을 작업표시줄에서 실시간으로 확인가능하다.

사용자 삽입 이미지


@ 아니면 cmd창에서 ipconfig로도 확인가능하다.

사용자 삽입 이미지


@ 그럼이제 vpn끼리 통신이 되는지 또 어떻게 동작하는지를 알아보자.

: vpn서버주소로 ping으로 icmp프로토콜을 날려보자.

서로 그럼 vpn으로 통신이 연결된것을 확인할수 있게 된다.

사용자 삽입 이미지


@ Putty로 ssh 로도 접속을 해보자.(서버측에 sshd가 동작되고있어야함)

: 그럼 아래의 그림과 같이 동작은 잘되는 것을 확인할수있다.

사용자 삽입 이미지


@그럼이제 이것들이 통신할때 어떤 식으로 동작하길래 VPN이 신뢰성이 있는 지 Wire Shark(패킷 분석기)로 확인해보자.

@@@@@@ 아래 그림은 패킷분석기로 port 1194 를 스니핑한 그림이다. @@@@@

udp 라고 나오는 것은 서버측 /etc/openvpn/server.conf 안에 udp 와 포트 1194로 설정되어있기문에 설정된것으로만 보여지는 것이다. .

즉 Vpn으로 통신하고 있는 경우 어떤 통신을 하고있는지 조차 알수가 없다

SSh랑 다른점은 ssh은 그냥 원격접속시 암호화를 제공한다는 것이고 접속이 된 상태에선 암호화를 제공하지 않는다.

사용자 삽입 이미지

 <port 1194만 스니핑 한 패킷분석기 화면 >

Posted by hjlee
:
"프로모션 전략 조율 안돼"… 계획보다 3개월 늦춰

일부선 '제품개발 지연' 의문


올해 티맥스소프트의 최대 전략 제품인 PC용 국산 운영체제(OS) 공개 일정이 예정됐던 4월에서 7월로 3개월 연기됐다. 제품명은 `티맥스윈도'가 유력한 것으로 알려졌다.

티맥스소프트(대표 문진일)는 올해 티맥스데이를 7월로 연기한다고 밝혔다. 이 행사는 회사의 연중 최대 행사로, 특히 올해는 마이크로소프트(MS) 윈도에 대응한 국산 OS `티맥스윈도'가 첫선을 보일 예정이어서 주목을 받았다.

티맥스소프트는 제품 개발에 4년간 200여명 이상의 인력을 투입하는 등 연구개발 역량을 집중해 왔다. 윈도용 소프트웨어(SW)와의 호환성, 윈도보다 강화된 보안 등을 차별점으로 내세웠고 브라우저와 오피스 프로그램 등도 자체 개발해 탑재하겠다고 밝힌 바 있다. 그러나 공개를 한달 앞둔 최근까지 개발 상황에 대한 정보가 전혀 공개되지 않아 관심이 집중됐었다.

이번 제품 공개 연기에 대해 회사측은 프로모션 측면의 조율 때문이라고 설명했다. 기존의 티맥스소프트 제품이 주로 기업용 SW였던 반면 `티맥스윈도'는 일반 소비자 대상 제품이기 때문에 시장 전략 마련에 시간이 더 필요하다는 것이다.

아직 확정되지 않았지만 티맥스윈도의 초기 프로모션은 기존 윈도용 SW와의 호환성을 보여주는데 집중될 전망이다. 워드프로세서, 안티바이러스 등 국산 SW 제품과 오픈소스 SW와의 호환성을 집중 검증하고 있다. 온라인을 통한 홍보는 조만간 시작된다. 티맥스소프트는 현재 티맥스윈도 전용 웹사이트를 제작, 이르면 내달 오픈할 예정이다.

김대영 티맥스소프트 전략마케팅본부 팀장은 "처음부터 MS 윈도와의 경쟁 구도를 만들 수는 없겠지만 제품의 강점을 효과적으로 부각할 수 있는 포지셔닝에 대해 고민하고 있다"고 말했다.

그러나 일부에서는 일정 변경이 개발 지연에 따른 것이 아니냐는 의문을 제기하고 있다. 올 초까지만 해도 4월에 티맥스데이 개최하기로 하고 내용을 티맥스윈도 단일 행사로 할 것인지 아닌지에 대해 의견을 조율해왔다. 또 지난 4년간 정해진 일정대로 개발을 추진해왔다는 점에서 마지막 단계에서 프로모션을 이유로 일정을 변경한 것은 석연치 않다는 분석이다.

개발 과정에 대한 정보가 전혀 공개되지 않는 것도 논란이다. 티맥스윈도는 이미 공개된 윈32 API를 이용하고 1000여개에 이르는 라이브러리를 직접 개발하는 방식으로 윈도SW와의 호환성을 구현한다. 그러나 이 방대한 개발작업의 중간 과정에 대해 알려진 것이 거의 없고 내부적으로도 일부 스크린샷과 설치화면을 제외하면 정보가 거의 공유되지 않는 것으로 알려졌다.

김대영 팀장은 "사내 PC와 노트북을 대상으로 티맥스윈도 알파 테스트 계획을 마련하고 있다"며 "제품 공개가 늦어지는 만큼 7월에 공개하는 티맥스윈도 완성도는 더 높아질 것"이라고 말했다.


http://www.dt.co.kr/contents.html?article_no=2009031002010960744004&ref=naver
Posted by hjlee
:

인터뷰

2009. 3. 3. 15:11






21~22분 사이 -0-
왤케 졸린 눈이냐...
Posted by hjlee
:

Google
 
BLOG main image
http://hjoo.org by hjlee

공지사항

카테고리

분류 전체보기 (154)
연구실생활 (9)
여 행 (8)
영어공부 (4)
취미생활 (7)
논 문 (2)
My Stories (31)
기 사 (11)
Computer (15)
즐길거리 (15)
스크랩 (3)
Web Progmming (0)
유용한 정보 (21)
KISANTEL (5)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :