Tor Proxy 포트 9050을 원격에서 접속 하는 방법

netstat 로 특정 포트를 확인 하면 2개의 IP:PORT가 표출 되는데, 첫번째 IP가 127.0.0.1 일 경우, 오직 로컬(localhost-loopback interface)에서만 접근 이 가능하다.

$ sudo netstat -ntlup | grep 9050
tcp        0      0 127.0.0.1:9050          0.0.0.0:*               LISTEN      683/tor

Tor에서 제공되는 Proxy 9050 port는 socks5 protocol로 로컬에서만 서비스 된다. 

DeleGate 설정

일본에서 제작된 것으로 보이며, 2014년 10월에 9.9.13으로 마지막 UPDATE 된 프로그램이다. 

기초 사용법은 Delegate 사이트에 잘 나와있다. 

설치는 BINARY 형식을 다운받아 압축을 풀면 추가 설치할 필요는 없다. 

# download 9.9.13
$ wget ftp://delegate.hpcc.jp/pub/DeleGate/bin/linux/latest/linux2.6-dg9_9_13.tar.gz
# 압축 해제
$ tar xvzf linux2.6-dg9_9_13.tar.gz

실행은 설치된 디렉터리의 bin/dg9_9_13 을 실행 하면된다.

# 설치된 디렉터리로 이동
$ cd DGROOT/bin/
# 메일 정보를 작성하지 않을 경우 다음의 오류 발생
# ERROR! ADMIN="your_mail_address" must be specified.
$ vim dg9_9_13.conf
# ADMIN 찾아 주석 제거후, 메일 주소 작성
ADMIN=Email.address
# 저장 후 종료
# 실행 -P제공PORT SERVER=서버타입(HTTP,FTP,SSH ETC..) SOCKS=포워딩대상정보
./dg9_9_13 -P8890 SERVER=socks5 SOCKS=localhost:9050

처리된 결과를 확인하면 다음과 같다.

tcp        0      0 0.0.0.0:8890            0.0.0.0:*               LISTEN      6069/./dg9_9_13

외부에서 8890 포트로 Proxy요청을 보내면 tor proxy를 사용 할 수 있다.

참고 자료


Posted by lahuman

virualenv 와 virtualenvwrapper

virualenv

여러개의 Python 프로젝트를 진행할때 의존성 문제를 해결 하기 위하여 가상환경을 구성하는 모듈 이다.

virtualenvwrapper

virualenv 를 감싸서 쉽게 관리 하기 위한 모듈이다.

설치

pip install virtualenv virtualenvwrapper

virtualenvwrapper 설정

~/.bash_profile 에 설정

# Create a backup of your .bash_profile
cp ~/.bash_profile ~/.bash_profile-org

# Be careful with this command
printf '\n%s\n%s\n%s' '# virtualenv' 'export WORKON_HOME=~/virtualenvs' \
'source /usr/local/bin/virtualenvwrapper.sh' >> ~/.bash_profile

virtual 환경 사용

source ~/.bash_profile

mkdir -p $WORKON_HOME

mkvirtualenv api

# Exit the 'api' virtual environment
deactivate

virtualenv 사용 팁

구성된 가상 환경 실행 방법

workon api

가상환경 종료 방법

deactivate

가상 환경에 설치된 모듈 정보 저장

우서 requests 모듈을 설치 한다.

pip install requests

가상 환경에 필요한 모듈을 모두 설치 한 이후, 다음 명령으로 환경에 대한 정보를 저장한다.

pip freeze > requirements.txt

다른 곳에서 해당 환경에 대한 설치는 다음과 같다.

pip install -r requirements.txt

참고 자료

Install virtualenv and virtualenvwrapper on Mac OS X Pipenv & Virtual Environments

Posted by lahuman

Elasticdump를 이용한 데이터 백업과 리스토어

elasticsearch의 데이터를 다른 곳으로 이관 하는 작업을 해야 한다. 
이때 사용 가능한 프로그램이 elasticdump 이다. 
elasticdump는 현재 3.3.1 버젼으로 Elasticsearch 5.x 버젼을 지원하고 있다. 
지금 사용하는 elasticsearch 버젼이 2.x여서 해당 버젼을 지원하는 elsticdump 2.4.2를 설치 해야 한다.

설치

설치는 가이드에 나온 것과 같이 npm 을 설치 하고 elasticdump 모듈을 설치 해야 한다.

# npm은 설치 되어 있다고 가정 한다.
npm install elasticdump

# git 에서 코드 download
git clone https://github.com/taskrabbit/elasticsearch-dump.git
cd elasticsearch-dump
# v2.4.2 으로 변경
git checkout tags/v2.4.2
# 버전 확인
./bin/elasticdump --version
2.4.2

데이터 백업

백업되는 데이터 타입은 크게 3가지로 나누어 진다.

  • analyzer
  • mapping
  • data

기본적으로 데이터를 넣기 위해서는 최소한의 데이터 맵핑이 있어야 한다. 

elasticdump 는 Elasticsearch to Ealsticsearch 를 지원하며, File 로 저장 리스토어도 가능하다.

# Copy an index from production to staging with analyzer and mapping:
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=analyzer
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=mapping
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=data

# Backup index data to a file:
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=/data/my_index_mapping.json \
  --type=mapping
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=/data/my_index.json \
  --type=data

# Backup and index to a gzip using stdout:
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=$ \
  | gzip > /data/my_index.json.gz

# Backup the results of a query to a file
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=query.json \
  --searchBody '{"query":{"term":{"username": "admin"}}}'

# Copy a single shard data:
elasticdump \
  --input=http://es.com:9200/api \
  --output=http://es.com:9200/api2 \
  --params='{"preference" : "_shards:0"}'

searchBody를 이용하면 원하는 목록 가져올 수 있다.

2017.12.07 테스트 결과 추가

원본데이터를 파일로 저장

1. 원본 데이터 매핑 저장

./elasticdump \
--input=http://10.10.10.202:9200 \
--input-index=elastic_data/elastic_data \
--output=elastic_data_mapping.json \
--type=mapping

2. 원본 데이터 백업

sample로 searchBody를 이용하여 1분 동안의 데이터만 가져오도록 함

./elasticdump \
--input=http://10.10.10.202:9200 \
--input-index=elastic_data/elastic_data \
--output=elastic_data.json \
--type=data \
--searchBody '{
  "query":{
      "range":{
      "log_dttm":{
          "gte":"2017-11-01T00:00:00",
            "lte":"2017-11-01T00:00:59"
        }
        }
    }
}'

파일로 저장된 데이터를 서버에 저장

1. 인덱스 추가 & 데이터 형식 저장

./elasticdump \
--input=elastic_data_mapping.json \
--output=http://10.10.10.180:9201/elastic_data \
--type=mapping

2. 데이터 import 처리

이미 등록된 데이터를 다시 등록 할 경우 _version 의 값이 +1 처리 된다.

./elasticdump \
--input=elastic_data.json \
--output=http://10.10.10.180:9201/elastic_data \
--type=data

참고자료


Posted by lahuman