ssh socks 터널링을 이용한 방화벽 탈출

이곳 저곳 파견을 다니다 보니 네트웍 환경에 따라 메신져를 사용할 수 없다던가,
WEB 서핑을 할 수 없다던가 하는 불편한 점이 있다.

ssh socks 터널링을 이용해 방화벽에 구애 받지 않고, 메신져나 웹서핑을 자유롭게 할 수 있다.

단, 이 방법은 아래와 같은 제약이 있다.


[ 제약 ]
1)  ssh 접속이 가능해야 한다.

2) 접속 가능한 ssh 계정이 있어야 한다.

ssh socks 터널링을 이용한 방법으므로 당연한 얘기다 ^^


[ 적용 방법 ]

1. http://nemesis2.qx.net/software-myentunnel.php 에서 프로그램을 다운 받아 설치한다.
   이 프로그램은 ssh socks 터널링을 간단하게 도와주는 프로그램이다.


2. MyEntunnel 설정

사용자 삽입 이미지

  여기서 [Enable Dynamic SOCKS Port] 설정을 꼭 해주어야 한다.
  설정을 마치고, 접속 한 후 [ Hide ] 버튼을 누르면 TrayBox로 보낼 수 있다.


3. WEB 설정
   Internet Explorer의 경우 [도구] / [인터넷 옵션] / [연결] / [LAN 설정] 화면을 열어 [프록시 서버] 항목을 체크하고, 활성화된 [고급] 버튼을 누르면 프록시 설정을 할 수 있다. 여기서 Socks 항목의 서버 주소를 "localhost"로, 포트를 MyEntunnel에서 지정한 "7070" 포트로 설정 한다.


4. NATEON 설정
   [설정] / [연결(방화벽)] 메뉴에서 [프록시 서버 사용]을 체크하고 아래와 같이 설정한다.
    종류: SOCKS 버전 4
    서버: localhost
    포트: 7070



이렇게만 해주면 해당 네트웍의 방화벽 설정에 상관없이 웹서핑과 메신져 활동을 누릴 수 있다.

이 방법은 장점은 또 있다.
ssh 프로토콜을 이용해 암호화 되어 패킷이 전송되기 때문에 패킷 감시를 할 수 없다는 점이다.

패킷 캡쳐 프로그램을 이용해 네이트온 로긴을 했을때 패킷을 잡아 봤다.

먼저, 평소 로긴을 하게 되면 아래 그림과 같은 패킷이 잡힌다.

사용자 삽입 이미지

그림과 같이 전송 되는 패킷 내용을 눈으로 확인할 수 있다.
(색칠된 부분은 필자의 친구 목록이다)

이제 ssh socks 터널링을 설정한 후의 패킷을 잡아보자
사용자 삽입 이미지

보는 것처럼 패킷이 암호화 되어 눈으로는 확인이 불가능 해진다.
물론 ssh 프로토콜을 사용하기 때문에 눈으로만 확인 불가능 한것이 아니다. ^^

ssh 서버를 거치게 되므로 속도가 느릴 수 있고, 서버 부하에 일조하게 되지만
방화벽 탈출이라는 혜택(?)을 누리게 된다.
하지만, 기업에서 보안 정책상 정해 놓은 룰을 어기는 것은 당연히 좋은 않다.
너무 남용하지는 말고 꼭 필요할 때만 사용 할 것이다.

Vista 에서 볼륨 조절

사용자 삽입 이미지

Vista 에서 볼륨 믹서를 열면 Application 별로 볼륨을 조절 할 수 있다는 사실을 알았다.
멋진 기능이다

아, vista에서는 볼륨 크기를 [Windows] + [+] 키로 키우거나, [Windows] + [+] 키로 줄일 수 있다.

오늘따라 Vista가 멋저 보인다 ^^

3G iPhone 에는 한글 키보드가 기본으로??

3G iPhone 개봉 UCC가 올라왔길래 보는데..
한글 키보드가 들어가 있네요 @.@
한국 출시 기대해도 될까봐요.

아래 인증 샷 입니다.
사용자 삽입 이미지

아.. 뽐뿌가.. ㅡㅡ;

core 파일 분석


- 생성 정보 확인
$ file core


- callstack 정보 확인
$ pstack core


- 전체 메모리 맵 확인
$ pmap core


- 시그널 정보 확인
$ pflags core


- core 발생 Lib 확인
$ mdb core
>
$C
> $q


- 링크한 동적 Lib 확인
$ pldd core


- process id: effective, real, saved (u/g) 확인
$ pcred core


sun 장비에서 확인 한 내용입니다.

Visual Studio 2008 설치

Visual Studio 로 개발 할 일이 없다보니,
이제야 2008 버전을 설치해봤다.

설치하면서 엄청난 삽질을 했다. ㅎㅎ

먼저, Visual Studio 2008 RTM 설치를 시도했다.
일단, iso를 zip+ v6.99 로 풀었다.

zip+ 는 데몬이나 알콜을 설치하지 않아도 간단하게 가상 CD를 잡을 수 있어서 애용 중이다.
그런데, 이상하게도 Visual Studio 2008 RTM 버전은 가상 CD로 잡히지를 않는다.

iso를 직접 풀어서 설치를 하니,
"baseline 데이터를 찾을 수 없습니다"라는 오류가 발생하면서 설치가 되지 않는다.
여러 가지 방법으로 시도를 해보았지만, 결국 포기..

하지만, 마음속에 불길은 벌써 걷잡을 수 없이 번져 버렸다.
불길을 잡기 위해서는, Visual Studio 2008 설치 뿐!

Visual Studio 2008 평가판을 다운 받았다.
젠장, 용량이 크다고 파일이 7개로 나눠 져있다.
rar로 묶어서 exe로 만들어 놓은 배포본 이다.
전부 받아 압축을 풀어보니 또 iso 파일..
왠지 불안하다..

역시, 가상 CD로는 잡히지 않고...
iso를 풀어 설치를 시도 했지만.. 역시 설치 실패..
이번엔 무슨 파일이 존재하지 않는단다.
엇, 그런데!!
iso 파일 용량은 4기가 넘는데, 풀어 놓은 전체 용량이 더 작은 것이 아닌가!!
혹시 zip+에서 iso 파일을 제대로 지원하지 않는 것일까??
이제까진 이런 경우가 없었는데... 워낙 용량이 크다보니 그럴수도 있겠다는 생각이 들었다.

하드를 뒤져보니, WinRAR 3.4 버전이 있다.
이걸로 풀어서 설치를 해보니, 역시 설치가 제대로 되질 않는다.
이번엔 무슨 파일이 손상되었단다..

웹을 뒤져보니, 영문 버전은 WinRAR 3.8까지, 한글 버전은 WinRAR 3.6까지 있는 듯 하다.
3.6 버전 평가판을 다운로드 받아 설치하고, iso 파일을 풀어서 설치하니..

설치가 잘된다!!

이렇게 Visual Studio 2008 RTM 버전을 무사히 설치했다 ㅡㅡ;


세줄 요약
1. Zip+ v6.99를 이용 Visual Studio 2008 설치 실패.
2. WinRAR 3.4를 이용한 Visual Studio 2008 설치 실패.
3. WinRAR 3.6를 이용한 Visual Studio 2008 설치 성공.

교훈.
압축 프로그램은 인지도 있고 믿을만한 것으로 최신버전을 사용해야 한다.

SUN 장비 route 조회/추가/삭제

Sun 솔라리스 에서 Route 테이블 조회 / 추가 / 삭제 방법

- route 조회
netstat -r


- default Gateway 지정
route add default 192.168.10.1


- 특정 IP(61.211.7.4)에 대한 Gateway 지정
route add 61.211.7.4 192.168.10.1


- class 전체에 대한 Gateway 지정
route add net 61.211.7.0 192.168.10.1


- route 삭제
route delete 61.211.7.4 192.168.10.1
route delete net 61.211.7.0 192.168.10.1





grep로 특수문자 찾기

grep으로 특수문자를 찾고자 한다.

1. 특수문자를 변수로 설정한다.
찾고하 하는 특수문자를 변수로 저장한다.
$ export ht=$'\t'


2. 찾는다
TAB문자 다음에 "AFTER" 문장을 찾기 위해서 아래와 같이 입력한다.
$ grep "${ht}AFTER" my.log


덧글.
bash에서는 되는데,
ksh에서는 안되는 군요.

crontab


일정 주기로 처리하는 배치 프로세스의 경우 시스템 crontab에 등록 하여 자동화 시킬 수 있다.


* crontab 명령
$ crontab [-e | -l | -r]

-e: 등록된 crontab을 편집한다.
-l: 등록된 crontab명령을 출력한다.
-r: 등록된 crontab을 삭제한다.


 * crontab 편집
$ crontab -e

위 명령을 입력하면 vi 환경에서 crontab 편집이 된다

20 13 * * 7 /home/batch/script/backup.sh
0 6 1 3 * /home/batch/script/logdel.sh
0 0 * * * /home/batch/script/daybatch.sh
30 * * * * /home/batch/script/hourbatch.sh
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/batch/script/checksys.sh

위 내용은 vi 환경에서 crontab 샘플이다.
구분자는 공백으로 앞에서 부터 분(0~59), 시(0~23), 일(1~31), 월(1~12), 주(1:월~7:일),  실행명령을 의미한다.  ","(컴마)를 구분자로 복수 시간을 지정할 수 있다.

backup.sh는 매주 일요일 13:20에 기상시간을 알리며 실행된다.
logdel.sh는 매년 3월 1일 06:00에 삼일절을 기념으로 실행된다.
daybatch.sh는 매일 00시 00분에 퇴근시간을 알리며 실행된다.
hourbatch.sh는 매시간 30분에 실행된다.
checksys.sh는 5분마다 실행된다.


* crontab 사용시 주의 사항

crontab 으로 명령이 수행되면 기존 환경변수를 인식 하지 못한다.

crontab에 아래의 프로세스가 등록되어 있다고 가정하자.
0 * * * * /home/batch/bin/run_hourbatch

run_hourbatch는 오라클을 연동하는 Pro-C로 만들어져 있다고 가정하자.
이 프로세스는 1시간 간격으로 수행되는 배치 프로세스이다.

하지만, 이렇게 프로세스를 직접 실행을 하면 수행에 실패한다.
Error while trying to retrieve text for error ORA-12154
로그를 확인해 보면 위와 같은 메시지와 함께 DB 커넥션을 하지 못한다.

이는 crontab에 등록된 프로세스가 실행되면서 .profile에 등록된 오라클 환경변수를 읽어 들이지 않기 때문에 발생하는 것이다.

crontab의 내용을 아래와 같이 수정하자
30 * * * * /home/batch/script/hourbatch.sh

그리고 아래와 같은 hourbatch.sh라는 shell script를 생성한다.
$ vi /home/batch/script/hourbatch.sh
#!/bin/ksh
# 오라클 환경 변수 설정
ORACLE_SID=TESTDB;
export ORACLE_SID
ORACLE_BASE=/home/oracle/app/oracle;
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/9.1.1;
export ORACLE_HOME
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data;
export ORA_NLS33
ORACLE_TERM=vt100;
export ORACLE_TERM
NLS_LANG=American_America.KO16KSC5601;
export NLS_LANG
PATH=$ORACLE_HOME/bin:$PATH;
export PATH
TNS_ADMIN=$ORACLE_HOME/network/admin;
export TNS_ADMIN

# batch 기동 로그 파일
BATCHLOG=`date '+%y%m%d_batch.log'`

# 시간 배치 실행
echo `date '+%H:%M'` + "^Hour Batch START" >> "/home/batch/log/"$BATCHLOG
/home/batch/bin/run_hourbatch
echo `date '+%H:%M'` + "^Hour Batch END" >> "/home/batch/log/"$BATCHLOG

이렇게 하고 hourbatch.sh에 실행 권한을 주면
매시간 30분이 되면 run_hourbatch가 정상적으로 실행된다.




find를 이용해 파일찾기

find 명령을 사용하여 특정 조건에 맞는 파일을 디렉토리와 그 하위 디렉토리에서 찾을 수 있습니다. 찾은 파일에서 명령을 수행할 수 있습니다.

패턴이 일치하는 파일 찾기

find구문이 복잡하기는 하지만, HP-UX를 더욱 생산적으로 사용할 수 있습니다. 강력하고 융통성있는 명령입니다. 그러나, 디렉토리가 많을 경우에는 느리게 실행될 수 있습니다.

현재 디렉토리와 하위 디렉토리에서 d로 시작하는 모든 파일을 찾으려면 다음을 입력하십시오.

find(1)

$ find . -name 'd*'

점(.)은 find 가 현재 디렉토리와 하위 디렉토리를 찾도록 합니다. -name 선택사항 뒤에는 파일 이름이나 파일 이름 패턴(이 경우에는 d*)이 오는데, 패턴이 일치하는 모든 파일의 이름을 찾습니다. 이 보기에서 findd로 시작하는 모든 파일 이름을 찾습니다.

d*는 작은 따옴표 'd*'로 묶습니다 . find 명령에서 파일 이름 패턴을 사용할 경우에는 쉘이 정확하게 해석할 수 있도록 따옴표로 묶어야 합니다.

특정 파일보다 새로운 파일 찾기

특정 파일 이후에 수정된 모든 파일을 찾는다고 가정합시다. /home/leslie디렉토리와 그 하위 디렉토리에 있는 myfile보다 새로운 파일을 나타내려면, 다음을 입력하십시오.

$ find /home/leslie -newer myfile

이 보기는 /home/Lee 디렉토리와 그 하위 디렉토리에서 myfile이후에 수정된 모든 파일을 찾아서 화면에 모두 출력하라는 의미입니다. (파일이 마지막으로 수정된 일자와 시간을 알려면, ll명령을 사용하십시오.)

파일에서 명령 수행

find 명령을 받는 파일에서 다른 명령을 수행할 수 있습니다. 현재 디렉토리와 하위 디렉토리에서 .tmp라는 확장 이름을 가진 모든 파일을 삭제하려면, 다음을 입력하십시오.

$ find . -name '*.tmp' -exec rm {} \;

현재 디렉토리와 하위 디렉토리에서 .tmp로 끝나는 모든 파일을 찾아서 화면에 나타내고 그 파일을 모두 삭제합니다. -exec 선택사항은 다음 명령 (rm)을 실행합니다. { } 는 find 명령이 찾은 파일을 의미합니다. 명령 문자열을 끝내는 세미콜론 (;) 앞에
ESC 문자로 역빗금(\)을 붙입니다.

논리 연산자 사용

find 구문에 NOT, AND, OR같은 논리 연산자를 사용할 수 있습니다.

특정 형식에 일치하지 않는 파일을 찾으려면, 논리 연산자 NOT을 나타내는 !선택사항을 사용하십시오. 이 선택사항 뒤에는 파일 이름과 같이 파일 속성을 정의하는 선택사항을 사용하여야 합니다. 그러면, 지정된 속성이 없는 파일을 찾습니다.

예를 들면, /tmp에서 leslie없는 모든 파일을 찾으려면, 다음 명령을 사용합니다.

$ find /tmp \( ! -user leslie \)

쉘이 괄호를 특수 문자로 해석하지 않도록 ESC 문자인 \을 앞에 붙입니다.

두 개의 속성이 있는 파일을 찾으려면, 논리 연산자 AND인 expression -a
expression
선택사항을 사용하십시오. 예를 들어, /에서 Lee에 있는 모든 디렉토리를 찾으려면 다음 명령을 사용합니다.

$ find / \( -type d -a -user Lee \)

둘 중에서 한 개의 속성이 있는 파일을 찾으려면, 논리 연산자 OR인 expression -o expression 선택사항을 사용하십시오. 예를 들어, 일주일 동안 사용하지 않은 a.out이나 .o인 파일을 삭제하려면 다음 명령을 사용하십시오.

$find / \(-name a.out -o -name '*.o' \)-atime +7 -exec rm {}\;



특정 날짜 이후의 파일 찾기


$ touch -t 200802051720 bingo.tmp
$ find . -newer ./bingo.tmp -name "*.c"

touch를 이용 원하는 시간의 파일을 생성 한다. 생성한 파일보다 나중에 생성된 "*.c" 파일을 찾는다.



특정 날짜 사이에 파일 찾기


$ touch -t 200801010000 start.tmp
$ touch -t 200802050000 end.tmp
$ find . -newer start.tmp -a ! -newer end.tmp

touch를 이용 원하는 시간의 파일을 생성 한다. find의 -newer 옵션과 비교 연산자, 무정 연산자를 이용하여 생성한 임시파일 사이의 파일을 구한다.


특정 크기 이상의 파일 찾기


$ find . -size +10000k -exec ls -al {} \;

10M 이상의 파일을 화면에 찾아 출력 한다..


[출처]
http://docs.hp.com/ko/B2355-90167/ch02s18.html

console 끊어지지 않게 하기

원격지 console에 접속해서 작업을 하다가
잠깐 다른 생각을 하면 접속이 끊어 집니다.

서버 설정에 따라 Timeout 되어 접속 이끊어지는 것인데,

$ export TMOUT=


이렇게만 해주면 접속이 끊어지지 않네요.

/etc/profile

이란 파일에 보면 TMOUT 값이 설정되어 있는데..
이 내용을 변경하는 재설정하는 명령입니다.

영구적으로 변경하려면, 위 파일의 내용을 수정하면 됩니다.

HP 장비에서 확인했습니다.