Your wish is my command

It’s a long journey

Shazam - 지금 들리는 음악이 궁금할 땐…

아주 낯익은 선율은 흐르는데… 그 노래의 제목이 기억이 안난다면? ㅋㅋ 미칩니다. 미쳐~

그럴때 사용할 수 있는 iPhone용 앱이 있군요. Shazam!!!

사용법은 그냥 간단히 실행하고 화면을 누르면 끝입니다. 알아서 마이크로 들리는 음악을 녹음하고 검색을 하는데 몇곡 해보니 잘 됩니다. 하지만 당연히 우리나라 음악은 하나도 못 찾습니다. ㅡㅡ;

이제 무슨 음악이 궁금하다면 Shazam!!!

Apache on Jailed Environment

유지하고 있는 서비스가 있습니다. 근데 이놈이 문제가 생겼습니다. 포트의 특정한 버전을 요구합니다. 그러나 해당 그 포트는 계속 업그레이드 하고있지만, 그놈의 서비스는 업그레이드가 안되고 있습니다. 결국 현재 서비스되고 있는 현제 그상태로 계속 유지되어야 합니다.

그런데 다른 서비스들은 그렇지 않습니다. 다른 서비스는 계속 업데이트 되고… 골치아픕니다.

생각해보다가 그 문제가 되는 서비스를 jail 안으로 옮겨버리기로 했습니다. ^^; 녜!! 관리 안되는 놈 감옥에 가둘겁니다.

jail?

자세한 것은 Handbook을 참조하시기 바라며, 간단하게 chkroot의 향상된 버전이고 kernel 레벨에서 구현되는 process를 시스템과 완전히 분리하는 가상화 시스템 비슷한 것이다.

또한 커널 레벨이기 때문에 베이스 시스템과 커널을 공유한다.

ezjail 설치

native로 제공된는 jail을 쓰려다가 sysutils/ezjail이 더욱더 좋겠습니다. 이것을 쓰기로 합니다.

$ portmaster sysutils/ezjail

ezjail은 basejail을 만들어야 합니다. 그래서 다음 명령으로 basejail을 만듭니다.

$ ezjail-admin update -b
  • -b: buildworld를 수행합니다. buildworld가 이미 되었다면 대신 -i 옵션을 줍니다.
  • -p: 각각의 jail에 portstree를 제공합니다. 이것 또한 모든 jail에 공유합니다.

-b 옵션을 주었다면 buildworld를 하기 때문에 꽤 걸립니다. ^^;

apache용 jail 만들기

jail 환경을 만드는 건 쉽습니다. 간단히 아래 명령으로

$ ezjail-admin create apache_service 192.168.0.10
  • apache_service: 호스트 이름
  • 192.168.0.10: 만들어질 호스트에 할당할 ip address

대부분의 파일들을 basejail과 공유하기 때문에 금방 만들어 집니다. 아래 명령으로 해당 jail의 console로 들어가서 열심히  작업을 해봅니다.

$ ezjail-admin console apache_service

물론 많은 작업이 안될겁니다. 기본적으로 인터넷 연결이 안되어서 거의 아무것도 할 것이 없습니다. 음.. 아파치 컴파일 해야하는데 인터넷이 연결안되니 할게 없군요.

내부 인터페이스 설정

jail 환경하에서는 보안상 네트웍 카드 설정을 할 수 없습니다. 호스트 환경으로 나와서 아래처럼 내부 내트웍을 구성해줍니다.

[root@host /]# ifconfig lo1 create
[root@host /]# ifconfig lo1 inet 192.168.0.10 netmask 255.255.255.0 alias

이 작업을 부팅시에도 하려면 /etc/rc.con에 다음과 같이 추가해줍니다.

cloned_interfaces="lo1"
ifconfig_lo1="inet 192.168.0.10 netmask 255.255.255.0"

그리고 jail에서 internet에 접근할 수 있도록 NAT 를 pf를 통해서 설정해줍니다.

/etc/pf.conf

nat on re0 from lo1:network to any -> (re0)

이제 다시 ezjail console로 들어가서 인터넷이 되는지 확인해봅시다.

apache_service# nslookup daum.net 8.8.8.8

(8.8.8.8은 google에서 제공하는 dns 서버인데, 주소가 기억하기 쉬어서 씁니다.) 별 문제 없으면 daum.net의 아피 주소들이 주루륵 나올겁니다. 녜.. 이제 jail에서 외부로 연결이 완료되었군요.

apache 띄우기

이제 jail 환경에서 www/apache22를 설치하고 서비스를 실행합니다(뭐 여기는 다 알거니깐 자세한건 생략)

그런 다음 호스트에서 jail 환경의 apache를 접근해 보도록 합니다.

[root@host /]# lynx http://192.168.0.10/

친근하게 It works! 라고 뜨지요. 예 host에서는 jail로 잘 연결됩니다. 그럼 외부에서 이 jail 환경의 apache로 접근이 될까요? 물론 안됩니다. 녜 jail 환경은 분리된 네트웍이기 때문이지요.

이걸 해결하는 방법은 2가지가 있습니다. 첫번째는 jail에 NAT 환경을 구성했으니 port forwarding을 설정하면 됩니다. 하지만 이 경우에 같은 포트에 여러 다른 jail을 구성하려면 안되지요. 이런 경우를 위해서 두번째 apache의 mod_proxy를 이용합니다.

port forwarding to jailed apache

port forwarding은 간단합니다. /etc/pf.conf에 다음처럼 추가하면 끝

rdr on re0 proto tcp from any to ${public_ip_address} port http -> 192.168.0.10 port http

mod_proxy

mod_proxy는 www/apache22에서 PROXY, PRXY_HTTP 옵션을 켜고 다시 컴파일하고, 각 모듈을 로드합니다.

httpd.conf

LoadModule proxy_module         libexec/apache22/mod_proxy.so
LoadModule proxy_http_module    libexec/apache22/mod_proxy_http.so

그리고 jailed apache로 서비스할 것을 설정해 줍니다.

<VirtualHost *:80>
  ServerName jail.woosum.net

  ProxyPass / http://192.168.0.10/
</VirtualHost>

이제 아파치를 재시작하고 http://jail.woosum.net/phpinfo.php 로 접속해보면 HTTP_HOST가 192.168.0.10으로 나오는 것을 확인할 수 있다.

결론

  • jails를 이용하면 각각의 서비스를 분리할 수 있다.
  • sysutils/ezjail을 이용하면 jails를 편하게 관리할 수 있다.
  • 원칙적으로 각 jail 마다 하나의 public ip를 가지지만 NAT, port forwarding, mod_proxy 등을 이용하면 내부 내트웍 만으로도 구성할 수 있다.

참고:

ps. 대부분의 jail 관련 예들은 public ip address를 가진 jail을 기준으로 되어있었습니다. 그래서 한참을 해멨네요.

이 블로그가 위치한 서버 사진

호스팅 서비스 받고있는 회사의 facebook 계정에 올라온 이 사이트를 운영하는 서버의 사진..

난.. 어디에 있는거냐? 궁금..

Ss5: Socks Proxy Server for FreeBSD

많은 회사생활하는 분들도 그렇지만 여기 내가 일하고 있는 곳에 막혀있는 사이트가 많고 막혀있는 포트도 많다. 그래서 웹을 위해서는 이 서버에다 squid를 설치해서 우회해서 사용하고 있다.

그런데 말이다 인터넷이라는 것이 항상 웹으로만 되는건 아니라서.. 다른 포트가 필요할 경우가 있지요. 그래서 찾아보다가 socks proxy server를 설치해보기로 했다. 여기의 글을 보고 그중에서 ss5가 가장 낳은것 같아서(아니면 좋은것 소개해 주세요.) 그것으로 해봤다.

설치

$ portmaster net/ss5
$ /usr/local/etc/rc.d/ss5 start

이렇게 해주면 단순히 설치가 끝나고 사용이 가능한다.

물론 /etc/rc.conf에 ss5_enable=“YES” 를 추가하시구요.

우선 모두 다 열어

/usr/local/etc/ss5.conf에 다 열려면 아래 두 줄 확인할 것..

auth 0.0.0.0/0 - -
permit 0 0.0.0/0 - 0.0.0.0/0 - - - - -

기본 포트가 막혔군

socks 서버는 1080 포트를 사용한다. 근데 해보니.. 허걱 연결이 안되는군요. 포트를 바꿔야지요. 설정파일에는 그런게 없고 실행할때 파라미터로 주어집니다.

/etc/rc.d에 ss5_flags="-b 0.0.0.0:<port>"

라고 적어주면 됩니다.

ㅋㅋ 이제 막인것도 다 뚫어! 단… application에서 proxy를 지원한다면 말입니다..

아이폰 앱에서 작성해보기

ㅋㅋ 아이폰 앱에서 작성하는 겁니다.

잘 되겠지

그럼그럼

근데 시간이 잘못 나오네요. 타임존을 고려하지 못한듯

Crontab에서 Portsnap 수행하기..

0     3     *     *     *     root    portsnap cron update && pkg_version -vIL=

자 이렇게하면 메일 새벽 3시에 ports의 snapshot을 받아서 업데이트 한다.

  • -I : INDEX만 업데이트하고 나머지 포트트리는 건드리지 않는다. ports 빌드중에 portsnap으로 업데이트하면 빌드오류가 발생할 가능성이 높으므로 그때 이 옵션이 필요하다. 하지만 새벽 3시에 포트를 빌드하는 머신은 무슨 머신일까???
  • cron: 1~3600초를 random으로 sleep한 다음 수행한다. 이는 서버의 부하를 분산해주려는 목적임
  • fetch: man page에 따르면 crontab에 적용하려면 fetch는 사용하지 마란다. cron 명령으로 내부적으로 호출된다. 직접  portsnap을 실행할 때만 사용한다.
  • pkg_version: 업데이트 한 후.. ports와 버전이 다른 것 리포팅 한다. 뭐 실험적인 서버에서는 모두 업데이트해 최신 버전을 유지하는 것도 좋지만 portaudit에서 보안 오류가 난 것만 업데이트 해주는 것이 정신 건강에 좋을 수 있다.

폐륜 상암의 팬이 되어가기

제가 나고 자라나곳은 서울이 아닙니다. 전라도 광주입니다. 프로축구가 출범했을 당시 광주에는 프로 축구단이 없었습니다. 물론 야구는 해태라는 명문팀이 있었구요.

그런 지금 패륜 상암의 팬이 되려고 합니다. 아니 되려고가 아니라 되어갑니다.

하필이면 폐륜을….?

K리그에 조금 관심이 있는 사람은.. FC상암? 서울유니이티드 말고? 아니면 페륜을??? 이라고 이야기할 듯 합니다.

예 저도 알고있습니다. FC상암은 섬나라와 더불어서 연고이전의 꼬리표를 달고 다니는 팀이라는 것을요. 그리고 그게 잘못되었다는 사실도 잘 알고 있습니다.

이 사실이 제가 상암의 팬이 되려고 하는데 가장 큰 걸림될이 되었으니깐요. 그렇다고 FC Korea 팬만 할 수 없지 않습니까? K 리그 팬들도 이 또한 싫어하시잖아요. ^^;

저같이 축구(야구도 좋아하지만요)를 좋아하지만 정을 붙일 수 없는 팬들은 어쩌란 말인가요? 비바K리그를 챙겨보면서 언제까지 제 3자의 입장에서 봐야할까요? 이런 사람들은 현실적인 선택이 어딜까요?

서울 유니이티드… 예 좋습니다. 그런데 그 팀이 어디서 경기하는지, 현재 어떤 성적인지 그리고 선수들의 면면은 어떤 것인지 시간내서 찾아보기 전 까지는 알 수가 없습니다. 그렇지요 아주 열열한 팬이 아닌 이상 갈 수 없습니다. 또한 개인적으로 같은 서울안에 사고 있지만 상암구장보다 잠실구장은 너무너무 멀고 험한 길입니다. 올림픽대로 끝에서 끝을 가라는건 너무한거 잖아요(예 열혈 팬은 그럴수 있겠지만요) 백번 양보한도고 처도 저 혼자 거길 간다면 괜찮습니다. 하지만 써포터 석에서 열열히 응원하는 것도 좋겠지만 가정이 있는 사람으로 식구들과 아들과 같이 보고싶습니다. 주말 나들이겸 축구 구경하는 것이 더 좋습니다. 그러기 위해선 잠실은 너무나도 멀어요. 기아가 원정을 와도 목동구장은 가지만, 잠실은 너무 멀어서 못갑니다.

폐륜이지만…

녜.. 패륜 구단이지만 이제는 그 팀을 나의 팀으로 받아들이려고 합니다. K리그 팬으로써 돌을 던지려면 던지세요. 가벼운 한두개 돌은 그냥 무시하겠습니다. 저도 알고 있거든요 폐륜 구단이라는거…. 하지만 너무 많이 던저주지는 말아주세요.

그럼 최소 2명의 K리그 팬을 잃어버립니다. 저랑 제 아들이요.

FC 서울

FC 서울이 그런 폐륜을 저질럿지만, 지금 현재 상황에서 그렇게 매도할 순 없잖아요. 지난주 서울에는 120만이 모이는 불꽃축제가 있었지만, 그 시간에 열린 축구에는 3만명이 넘는 사람이 모였습니다. 비바K리그를 보니  가장 많은 관중이 모인 경기였더군요. 또한 지난 5월 5일엔 프로 스포츠 사상 가장 많은 관중인 6만(??)을 동원하기도 했습니다.

단순히 “서울”에 연고를 가진 팀이여서 그럴까요? 그냥 한번만 폐륜이라는 단어를 지우고 생각해보세요. FC 서울이 마케팅과 경기력등등 관중을 끌어들이가 위한 노력들을요…

개인적인 입장으론 전체 K리그의 발전을 위해서 북폐륜, 남폐륜이니 하는 말은 그만하고 이제 서로 상상의 길로 같으면 좋겠습니다. 그래서 저같이 가고 싶지만 다른 사람들의 시선이 두려운 사람들은 막는 장벽을 조금 걷어주면 어떨까요? 그러면 혹시 알아요 제주가 평균관중이 기준 미달이라서 아시아 챔피언스 리그 출전권을 따내도 못나가는 어이없는 일이 안일어날지?

K리그, 축구 그리고 야구

서울의 팬이 되려하기 전부터 여기저기 축구 사이트를 돌아보면 관중을 많이 끌어야하는데, 글쎄 제 사견으론 FC Korea와 야구의 관중을 뺏어와야한다고 생각하는 듯 합니다. 야구랑 싸울 분위기를 만들지요. 맞는 이야기일지도…

대부분이 서포터즈인 사람들은 축구 아니면 스포츠도 아니다. 야구같이 지루한 경기를 어떻게… 축구 박진감 넘치잖아..!! 그러니 축구봐! 이런 관점일지도 모릅니다. 하지만 일반인의 관점에서 보는 건… 축구나 야구나… FC Korea나 하나의 스포츠, 즉 레크레이션 관점에서 접근합니다.

위에 잠깐 나왔지만, 축구를 보러가면서 겸사겸사 가족들과 주변에서 놀다가 들어갑니다. 좋은 사람들과 즐겁게 시간을 보낼 수 있는 그런 장소입니다. 월드컵하면 축구에 열광(까지는 아니여도 챙겨보고)하고, 월드 클래식 야구 하면 챙겨보고 한국 응원하고, 김연아가 나오면 응원하고, 박태환이 잘하면 수영구경도 하는 그런 사람들입니다. 즐기는 것이지요.

요즘 야구장을 보면 그렇죠. 중계할때 캐스터나 해설자가 자주 하는 말이… “경기에 상관없이 즐기는 문화~” 이런 멘트가 많이 나옵니다. 그렇습니다. 즐기는 거죠. 축구 자체만 보고 그러지 말고 주면것도 같이 즐기고 하면 재밌잖아요.

경기전에 경기장 광장에서 관중들과 같이 즐기다가 모두 들어가서 축구경기보고, 다시 나와서 또 즐기고(물론 여기서 중요한 점은 가족들과 같이입니다.) 그런 문화가 있으면 좋겠습니다.

야구도 재밌습니다. 축구도 재밌습니다. 그렇습니다. 스포츠는 즐겁습니다. K리그의 경쟁자는 야구가 아닌 모든 주말시간에 벌어지는 시간 때우기 및 놀기 문화입니다.

가장 큰 경쟁상대는 TV, 대형 마트, 영화관, 각종 지역 축제 그런 것들이 아닐지…

결론…

예.. 이제 폐륜 FC 서울 팬이 되고자 합니다. FC 서울 팬이 되고자 합니다. 최강 FC 서울 팬이 되고자합니다.

주절 주절 쓴 글 읽어주셔서 감사합니다.

Jail

Build Jail

# setenv D /here/is/the/jail
# mkdir -p $D
# cd /usr/src
# make buildworld
# make installworld DESTDIR=$D
# make distribution DESTDIR=$D
# mount -t devfs devfs $D/dev
# du -sh $D
192M    /usr/jail/hello_jail
# adduser test

Run Jail

# jail $D test.jail.woosum.net 192.168.0.1 /bin/sh /etc/rc
  • 여기서 마지막의 command는 jail상의 path임..
  • make distribution으로 만든 jail 디렉토리를 단순 복사하면 jail이 실행 안됨

기타

jail 시스템과 베이스 시스템은 커널을 공유한다.

jail은 process와 그 자식 프로세스를 완전히 분리시킨다.