Apache Traffic Server 시작오류

Apache Traffic Server를 apt로 설치하고

systemctl start trafficserver로 시작하려면 정상적으로 시작을 하지 않는 경우가 있다.

 

이런경우 아래처럼 디렉토리를 생성시켜주면 정상적으로 시작이 된다

$ mkdir /var/run/trafficserver

$ chown trafficserver:trafficserver /var/run/trafficserver

 

systemctl status trafficserver로 확인해보면

/var/run/trafficserver 를 생성시켜주지 못해서 오류가 나면서 종료되는 문제이다.

 

서버 시작시 서비스가 실행되도록 하려면 아래처럼 한다

$ systemctl enable trafficserver

 

이렇게 시작 서비스에 등록을 하더라도 재부팅하면 /var/run/trafficserver 디렉토리가 없어지면서

서비스가 정상적으로 시작되지 않는다.

 

서비스 시작 스크립트를 수정해서 해결한다

$ vim /lib/systemd/system/trafficserver.service

 

아래코드를 삽입해준다.

서비스 시작전에 실행하는 커맨드를 이용해서 폴더를 생성시켜준다.

ExecStartPre=/bin/mkdir /var/run/trafficserver
ExecStartPre=/bin/chown trafficserver:trafficserver /var/run/trafficserver

 

전체파일내용은 아래와 같다

[Unit]
Description=Apache Traffic Server is a fast, scalable and extensible caching proxy server.
Documentation=man:traffic_server(8)
After=network.target

[Service]
Type=simple
EnvironmentFile=-/etc/default/trafficserver
PIDFile=/var/run/trafficserver/cop.pid
ExecStartPre=/bin/mkdir /var/run/trafficserver
ExecStartPre=/bin/chown trafficserver:trafficserver /var/run/trafficserver
ExecStart=/usr/bin/traffic_cop $TC_DAEMON_ARGS
ExecReload=/usr/bin/traffic_ctl config reload

[Install]
WantedBy=multi-user.target

우분투 12.04 iptables + geoip

우분투 12.04에서 iptables와 geoip를 이용해서 국가단위로 접근을 제한하는 방법을 안내합니다.

 

설치

필요한 패키지 설치

# sudo apt-get install xtables-addons-common
# sudo apt-get install libtext-csv-xs-perl

 

GEOIP 데이터베이스 다운로드

# sudo /usr/lib/xtables-addons/xt_geoip_dl

 

다운로드한 데이터베이스 압축해제

# sudo mkdir /usr/share/xt_geoip
# sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

 

사용방법

특정 국가만 차단

# iptables -A INPUT -m geoip –src-cc CN,IN,RU,JP -j DROP

 

특정 국가를 제외한 나머지 차단

# iptables -A INPUT -m geoip ! –src-cc KR -j DROP

 

오류처리

상황

-m geoip 사용시 아래와 같은 오류발생

iptables: No chain/target/match by that name.

 

처리

xtables-addons-1.47.1 소스코드 다운로드

최신버전인 3.x는 우분투 12.04의 커널버전이 낮아서 사용할 수 없으니 1.x  버전을 사용해야 한다

 

# wget https://sourceforge.net/projects/xtables-addons/files/Xtables-addons/xtables-addons-1.47.1.tar.xz/download
# xz -d xtables-addons-1.47.1.tar.xz
# tar xf xtables-addons-1.47.1.tar
# cd xtables-addons-1.47
# ./configure
# make && make install

 

확인

아래명령을 실행해서 ‘geoip’ 가 있는지 확인

#cat /proc/net/ip_tables_matches

conntrack
conntrack
conntrack
state
geoip
udplite
udp
tcp
multiport
icmp

 

Asterisk 수신거부 코드 – DB연동

asterisk 11 버전에서 특정번호를 수신거부하는 코드입니다.

수신거부하는 번호를 DB테이블에 저장하고 관리합니다.

 

테이블스키마

CREATE TABLE `ban` (
`phone` VARCHAR(32) NOT NULL COMMENT '전화번호',
`reg_date` DATETIME NOT NULL COMMENT '등록일',
INDEX `phone` (`phone`)
)
COMMENT='수신거부 전화번호'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

 

extensions.conf

[inbound]
exten => 07010002000,1,Answer
exten => 07010002000,n,NoOp("caller id: ${CALLERID(number)}")
exten => 07010002000,n,MYSQL(Connect connid 호스트 유저 비밀번호 데이터베이스명)
exten => 07010002000,n,MYSQL(Query resultid ${connid} SELECT COUNT(*) AS cnt_blockcaller FROM ban WHERE phone='${CALLERID(number)}')
exten => 07010002000,n,MYSQL(Fetch fetchid ${resultid} cnt_blockcaller)
exten => 07010002000,n,MYSQL(Clear ${resultid})
exten => 07010002000,n,MYSQL(Disconnect ${connid});

exten => 07010002000,n,GotoIf($["${cnt_blockcaller}" != "0"]?inbound,07010002000,blockcaller)

.
.
.

exten => 07010002000,n(blockcaller),NoOp("blockcaller!!!")
exten => 07010002000,n,Hangup()

 

 

교토 첫째날 1/2

오사카 여행 두번째날 오전일찍
도톤보리에서 후시미이나리 신사로 이동한다.

도톤보리 숙소에서 후시미이나리까지 이동은
지하철이 가장 편하고 그렇게 안내를 한다.

신사이바시나 난바에서 요도야바시역으로 간다.
일본은 환승개념이 없기에 일단 역에서 나간 다음
게이한본선을 타기위해 붉은 라인을 따라간다.

자판기에서 400엔을 넣고 내려가보면
게이한 본선(붉은색)이 있다.
특급, 완행이 있는데 결국 같은 곳을 간다.
(우리나라 지하철 직통같은 개념인 듯?)

주의할 것이 있다면 특급의 경우 단바바시에서 완행으로 갈아타야 하고
완행을 탔다면 그냥 후시미이나리역까지 쭉 가면 된다.

오전 9시에 도착했는데도 사람이 꽤나 많았다.
7시까지 오라고 했는데 후회가..
정상까지 찍고 내려오면 두시간 소요되니 참고하자

후시미이나리신사는 다른말로 ‘여우신사’라고 불린다.

오사카 단풍여행

11월중순부터 12월초의 오사카-교토는 단풍이 절경이라하여 여행을 가보았다.

오전 8시 비행기여서 새벽에 출발

인천공항 사진은 건너뛰고 바로 간사이 국제공항 도착

라피트 왕복권을 한국에서 미리 구매해서 왔기에

HIS를 찾아 교환권을 구해야 한다.

터미널을 나오자마자 왼쪽에는 스타벅스가 있고,

오른쪽으로 30미터쯤 가면 HIS의 파란부스가 보이니 여기서 QR코드를 보여주고 교환하자.

교환권은 아래

교환권을 받아서 2층으로 올라가서 기차.. 트래인으로 표기되어 있던가??

가보면 승차권을 구매하는 곳이 있는데

오른쪽은 바로 승차권을 구매하는 곳 왼쪽은 교환권으로 승차권을 받는 곳이니

왼쪽에 보여주면 된다.

라피트 특급은 30분마다 있고 시간표를 직원이 확인해 준다.

이렇게 생긴놈을 타면 된다

좌석은 지정좌석이다

난카이 난바역은 금방이다

오늘은 도착해보니 교통을 통제하고 마라톤 대회가 있었다.

도톤보리에 있는 돈키호테

그 옆에 있는 이치란 라멘..

줄이 어마어마 하다. 생각보다 맛있는지는 모르겠더라

대충 둘러보고 오사카성으로 이동

오사카 주유패스 1일권을 이용한다

천수각이 보이는군..

아래 보이는 다리가 유명한 다리인데, “고구라구바시” 라고 구글맵이 알려줬다.

주유패스로 저 금빛나는 배를 탈 수 있는 것 같았는데

시간이 없어서 패스

천수각 입장은 주유패스로 해결이 가능하다

해질무렵 우메다역으로 이동

다시 걸어서 공중정원에 들어갔다.

역시나 이곳도 주유패스로 입장

크리스마스 전이라서 그런지 엄청 큰 트리가..

도톤보리 야경을 구경하러 이동

도톤보리에서 제일 유명한 아저씨..

5월 오키나와 여행

여름이 오기전 5월

일본 오키나와로 가족여행을 떠났다.

출발은 인천공항, 일요일 출발이어서 그런지

공항에 사람은 많이 없어서 편했네

비행시간은 약 2시간 30분이니 적당히 지겹지 않고 갈만하다.

5월에 중국발 황사, 미세먼지가

오키나와에 도착한 순간 싹 사라지는 마법이..

아래 사진속에 저 멀리 보이는 산이 구글맵으로 보면

20km가 넘는 거리이다

3박 4일간 숙소는 오키나와  온나에 있는

리젠시 파크(Rizzan Sea Park Hotel Tancha Bay)

바로앞이 해변이고

온나가 오키나와 중간에 있어서

츄라우미와 아메리칸 빌리지까지 이동하기

좋을 듯 하여 이곳으로 정했다

만좌모 입구

만좌모에 주차는 무료이니 적당히 주차하고 들어가면 된다.

유명한 곳이라서 오전일찍 도착했음에도 사람이 꽤나 있었다.

만좌모에서 츄라우미 가는 길목에

블루씰 아이스크림

맛있다..

츄라우미 수족관

주차는 북쪽 주차장에 하는게 이동하기 가장 좋다.

돌고래쇼 시간에 맞춰서 도착했다.

수족관 들어가기 전에 보고 가는게 좋을 듯 하다.

시작하기 전에 도착해야 그늘이 있는 곳에 자리를 잡을 수 있다.

세계 3대 수족관이라고 하나??

츄라우미 수족관을 들어가면 볼거리가 참 많다.

그중에 고래상어는 최고~

파인애플파크 근처 우후야 (맵코드 206 745 056*25)

오키나와 도착해서 가장 입맛에 맞은 음식을 찾았다

아메리칸 빌리지

관람차 1층에 있는 100엔샵이 국제거리나 메가돈키호테보다 가격이 저렴했다.

역시나 이곳에도 있는 고래상어 인형

이곳에 오면 관람차를 꼭 타야한다

야경이 참 이쁘다

슈리성은 너무 더운 시간에 도착해서

대충 휙~ 둘러보기

국제거리도 사람이 너무 많아서

그냥 구경만 하다 말았다.

날씨가 덥기는 했지만

운이 좋았던건지 비는 한번도 내리지 않아서 돌아다니기는

참 좋았던 것 같다.

스노클링을 하지 못한게 참 아쉬웠던 오키나와 여행..

다시 간다면 일정 알차게 짤 수 있을 것 같네 😉

도로명주소 API 서비스

도로명 주소 API 서비스

행정자치부에서 제공하는 OPEN API 서비스

 

API 신청페이지

https://www.juso.go.kr/addrlink/devAddrLinkRequestWrite.do?returnFn=write&cntcMenu=URL

 

PHP + Snoopy로 주소찾기 예제

코드

[code lang=”php”]

<?php
require_once ‘Snoopy.class.php’;

$params = array(
‘currentPage’ => 1,
‘countPerPage’ => 5,
‘resultType’ => ‘json’,
‘confmKey’ => ‘{발급받은 키문자열}’,
‘keyword’ => ‘서울시 마포구 합정동 10’
);

$snoopy = new Snoopy();
$snoopy->httpmethod = "POST";
$snoopy->submit("http://www.juso.go.kr/addrlink/addrLinkApiJsonp.do", $params);
$response = $snoopy->results;

// 앞뒤에 ‘(‘, ‘)’ 문자를 제거한 뒤 json_decode()를 이용해 변환
$json = substr($response, 1, -1);
$obj = json_decode($json);

[/code]

 

출력결과

[code]

stdClass Object
(
[results] => stdClass Object
(
[common] => stdClass Object
(
[errorMessage] => 정상
[countPerPage] => 5
[totalCount] => 73
[errorCode] => 0
[currentPage] => 1
)

[juso] => Array
(
[0] => stdClass Object
(
[detBdNmList] =>
[engAddr] => 56, Tojeong-ro, Mapo-gu, Seoul
[rn] => 토정로
[emdNm] => 합정동
[zipNo] => 04082
[roadAddrPart2] => (합정동)
[sggNm] => 마포구
[jibunAddr] => 서울특별시 마포구 합정동 55-1
[siNm] => 서울특별시
[roadAddrPart1] => 서울특별시 마포구 토정로 56
[bdNm] =>
[admCd] => 1144012200
[udrtYn] => 0
[lnbrMnnm] => 55
[roadAddr] => 서울특별시 마포구 토정로 56 (합정동)
[lnbrSlno] => 1
[buldMnnm] => 56
[bdKdcd] => 0
[liNm] =>
[rnMgtSn] => 114403113023
[mtYn] => 0
[bdMgtSn] => 1144011800100010000009632
[buldSlno] => 0
)

[1] => stdClass Object
(
[detBdNmList] =>
[engAddr] => 35, Tojeong-ro 4-gil, Mapo-gu, Seoul
[rn] => 토정로4길
[emdNm] => 합정동
[zipNo] => 04085
[roadAddrPart2] => (합정동, 신성빌라)
[sggNm] => 마포구
[jibunAddr] => 서울특별시 마포구 합정동 75-10 신성빌라
[siNm] => 서울특별시
[roadAddrPart1] => 서울특별시 마포구 토정로4길 35
[bdNm] => 신성빌라
[admCd] => 1144012200
[udrtYn] => 0
[lnbrMnnm] => 75
[roadAddr] => 서울특별시 마포구 토정로4길 35 (합정동, 신성빌라)
[lnbrSlno] => 10
[buldMnnm] => 35
[bdKdcd] => 1
[liNm] =>
[rnMgtSn] => 114404139606
[mtYn] => 0
[bdMgtSn] => 1144012200100750010024923
[buldSlno] => 0
)

[2] => stdClass Object
(
[detBdNmList] =>
[engAddr] => 13-5, Tojeong-ro 4an-gil, Mapo-gu, Seoul
[rn] => 토정로4안길
[emdNm] => 합정동
[zipNo] => 04085
[roadAddrPart2] => (합정동)
[sggNm] => 마포구
[jibunAddr] => 서울특별시 마포구 합정동 82-10
[siNm] => 서울특별시
[roadAddrPart1] => 서울특별시 마포구 토정로4안길 13-5
[bdNm] =>
[admCd] => 1144012200
[udrtYn] => 0
[lnbrMnnm] => 82
[roadAddr] => 서울특별시 마포구 토정로4안길 13-5 (합정동)
[lnbrSlno] => 10
[buldMnnm] => 13
[bdKdcd] => 0
[liNm] =>
[rnMgtSn] => 114404139607
[mtYn] => 0
[bdMgtSn] => 1144012200100820010012210
[buldSlno] => 5
)

[3] => stdClass Object
(
[detBdNmList] =>
[engAddr] => 19, Tojeong-ro 4an-gil, Mapo-gu, Seoul
[rn] => 토정로4안길
[emdNm] => 합정동
[zipNo] => 04085
[roadAddrPart2] => (합정동)
[sggNm] => 마포구
[jibunAddr] => 서울특별시 마포구 합정동 82-10
[siNm] => 서울특별시
[roadAddrPart1] => 서울특별시 마포구 토정로4안길 19
[bdNm] =>
[admCd] => 1144012200
[udrtYn] => 0
[lnbrMnnm] => 82
[roadAddr] => 서울특별시 마포구 토정로4안길 19 (합정동)
[lnbrSlno] => 10
[buldMnnm] => 19
[bdKdcd] => 0
[liNm] =>
[rnMgtSn] => 114404139607
[mtYn] => 0
[bdMgtSn] => 1144012200100820010024925
[buldSlno] => 0
)

[4] => stdClass Object
(
[detBdNmList] =>
[engAddr] => 13-4, Tojeong-ro 4an-gil, Mapo-gu, Seoul
[rn] => 토정로4안길
[emdNm] => 합정동
[zipNo] => 04085
[roadAddrPart2] => (합정동)
[sggNm] => 마포구
[jibunAddr] => 서울특별시 마포구 합정동 82-10
[siNm] => 서울특별시
[roadAddrPart1] => 서울특별시 마포구 토정로4안길 13-4
[bdNm] =>
[admCd] => 1144012200
[udrtYn] => 0
[lnbrMnnm] => 82
[roadAddr] => 서울특별시 마포구 토정로4안길 13-4 (합정동)
[lnbrSlno] => 10
[buldMnnm] => 13
[bdKdcd] => 0
[liNm] =>
[rnMgtSn] => 114404139607
[mtYn] => 0
[bdMgtSn] => 1144012200100820010012213
[buldSlno] => 4
)

)

)

)

[/code]