20100427 :: 플래시 플레이어 10.1로 업그레이드 하기

Flash on Linux

리눅스에서 가장 신경이 많이 쓰이는 부분 중 하나는 바로 플래시가 사용된 웹사이트를 이용하는 순간입니다. 윈도 플랫폼에서는 비교적 성능도 나쁘지 않고 많이 안정된 상태이지만 리눅스 버전의 플래시 플레이어가 돌기 시작하면 대부분의 웹사이트에서는 CPU 사용률이 VirtualBox를 통해 윈도를 실행했을 때 보다도 더욱 미친 듯이 뛰어 오르기 시작합니다. 그러다 뻗어버리기도 하지요. 다행히 파이어폭스 3.6.3(4?)에서부터는 플러그인을 독립적인 프로세스로 실행하여 플래시가 죽더라도 웹 브라우저를 다시 시작해야 하는 불상사는 발생하지 않습니다만, 여전히 불안정하지요.

최신 버전 플래시로 업그레이드하기

게다가 요즘은 많은 웹사이트에서 파일 업로드 기능을 플래시로 제공하는 곳이 많습니다. 비교적 대용량의 파일을 업로드 하도록 한다거나, 혹은 여러 개의 파일을 동시에 업로드하는데는 기존의 웹 브라우저의 기능으로는 어려움이 많기 때문입니다.1 그런데 아무래도 불안정하다보니 파일을 업로드 하는 중간에 플러그인이 죽어버리거나, 파일 업로드가 완료되지 못하고 계속 멈추거나 하는 증상이 발생하곤 합니다.

그래서 한 번 모험을 시도해보기로 했습니다. 플래시를 최신 버전으로 업그레이드 해보는 것입니다. * 주의 : 이 방법으로 제 경우에는 비교적 안정적인 동작을 보입니다만, 시스템의 상태에 따라서는 저와 반대되는 결과가 나타날 수 있습니다.

설치된 플래시 버전 확인

먼저 시스템에 설치된 플래시의 버전을 확인해 봅니다. 아마 패키지 형태로 설치가 되었을 것입니다. 제 기억이 맞다면 파이어폭스 설치 후 플래시 플러그인 설치 화면에서 더나은 버전이 저장소에 있다고 하여 apt-get 명령으로 설치했던 것 같습니다. 2 패키지 상의 버전을 확인하기 위해서는 dpkg 명령을 사용합니다.

dpkg -l | grep flash

그럼 결과가 아래와 비슷하게 보입니다.

ii        adobe-flashplugin                                        10.0.45.2-1karmic1

현재 플래시 플레이어의 최신 버전은 10.1 입니다. 지금 설치되어 있는 버전보다는 최신 버전이군요. 최신 버전이긴하지만 아직 공식적으로 배포된 버전은 아닙니다.  다운로드는 adobe labs 사이트에서 내려 받을 수 있습니다. 리눅스용 파일은 tar.gz 포맷으로 압축되어 있는 파일입니다. 해당 파일을 다운로드 받아 압축을 풀어 놓습니다. (여기서는 홈 폴더 아래에 downloads 라는 폴더에 압축을 풀어 두었다고 가정합니다.) 압축을 푸니 눈에 익은 .deb 파일이 아니라 .so 파일입니다. 예전에 아파치 서버 같은 거 보면 .so 라는 확장자를 가진 파일을 종종 본 듯도 합니다만, 이거 어떻게 설치해야 하는지 난감합니다. 어쩌면 그냥 파일만 교체하면 될 듯도 합니다. 그래서 한 번 찾아보기로 합니다.

find / -name “libflashplayer.so” (/ 슬래시를 빼먹지 않도록 주의. 빼 먹으면 현재 디렉토리에서부터 찾게 됩니다.)

이렇게 찾으면 결과 중에 ‘/usr/lib/adobe-flashplugin/libflashplayer.so‘라는 항목이 보입니다. 이 곳이 플래시 플레이어 플러그인 파일이 존재하는 곳입니다. 해당 디렉터리로 이동하여, 혹시 모르니 기존 파일을 백업해 놓습니다.

cd /usr/lib/adobe-flashplugin

sudo mv libflashplayer.so libflashplayer.so.backup 3

그리고 아까 압축을 풀어놓은 파일을 이 곳으로 가져옵니다.

sudo cp ~/downloads/libflashplayer.so ./

이렇게 파일 이름이 길 때는 탭 신공이 큰 위력을 발휘합니다. 이제 브라우저를 재시작하면 됩니다.

복구방법

문제가 발생한 경우에는 아래와 같이 원상 복구하면 됩니다.

cd /usr/lib/adobe-flashplugin

sudo rm libflashplayer.so

sudo mv libflashplayer.so.backup libflashplayer.so

혹은 다음과 같이 apt-get 명령을 통해서 삭제 후 재설치 하는 방법도 있겠네요

sudo apt-get remove adobe-flashplugin; sudo apt-get install adobe-flashplugin4

  1. HTML5에서는 멀티 파일 업로드가 지원되며, 파일 탐색기에서 끌어다 놓는 것도 지원됩니다. 이미 구글 크롬과 파이어폭스 3.6 이상을 사용하면 Gmail에서 이 기능을 사용할 수 있습니다.
  2. 플래시 플러그인 패키지의 이름은 adobe-flashplugin입니다. 따라서 sudo apt-get install adobe-flashplugin이라는 명령으로 터미널에서 설치가 가능합니다.
  3. 팁: 파일 이름이 긴 경우에는 앞에 몇 글자만 입력하고 tab 키를 누르면 자동 완성 됩니다.
  4. 팁2 : 패키지 이름의 경우에도 자동완성이 됩니다. 그리고 세미 콜론은 두 줄로 나눠쓸 명령어를 한 줄로 합쳐주는 기능입니다

20100404 :: 심볼릭 링크에 대하여

리눅스를 쓰게 되면서 가장 많이 접하는 단어 중의 하나가 바로 ‘심볼릭 링크’라는 말이죠. 복사하기 귀찮거나 그러면 그냥 심볼릭 링크를 만들면 된다는 이야기는 참 많이 들었던 것 같습니다. 대충 앞뒤 상황을 보아하니 윈도의 ‘바로가기(shortcut)’와 같은 개념인 듯 합니다만… 그렇게 대충 알고 지내다가 오늘은 ‘하드 링크’라는 걸 또 알게 되어…. 아… 링크면 링크지 심볼릭은 뭐고 하드 링크는 또 뭐다냐…

윈도의 바로가기와 차이점

리눅스에서의 링크는 윈도의 ‘바로가기’와 비슷하면서도 또 많이 다릅니다. 정확하게는 ‘데이터 혹은 파일의 실체가 아닌 그 곳에 다다르는 통로’라는 개념으로 이해하면 되는데, 실제적으로는 이게 ‘바로가기’와 다를 바가 없다는 거죠. 차이가 있다면 ‘바로가기’는 결국 윈도의 파일 탐색기가 제공하는 경로 데이터 파일임에 반해, 링크는 리눅스의 파일 시스템 자체가 제공하는 기능이라는 이랄까요? 즉 무슨 말인고 하니 윈도 탐색기에서 어떤 프로그램이나 디렉터리의 바로가기를 바탕화면에 생성했다고 하면, 윈도의 바탕화면 폴더에는 해당 바로가기의 ‘파일’이 생성됩니다. 그리고 이 파일 안에는 어떤 아이콘을 표시해야하고, 가리키고 있는 대상의 경로는 무엇인지 따위의 정보가 기록되는 거죠. 우리는 실제로 이 바로가기 파일을 편집해서 참조하는 위치를 바꿀 수도 있어요. 그런데 리눅스에서 어떤 디렉터리에서 링크를 생성하면, 해당 디렉터리에는 목표지점(target)의 이름만이 생성됩니다. 만약 그 대상이 어떤 텍스트 파일이라 하고 cat somelink 라는 명령을 준다면, 링크의 내용이 아닌 목표 지점인 텍스트 파일의 내용이 그대로 출력된다는 이야기입니다. 한마디로 말해, 리눅스의 링크는 그 실체가 없다고 할까요.해당 링크에 접근하는 것은 원본 파일에 접근하는 것일 뿐, 링크 그 자체를 손볼 수 있는 방법은 없는 것처럼 보입니다.

그리고 또 재밌는 것은 링크를 통해 특정 지점에 접근하더라도, 사용자가 바라보는 경로는 마치 링크가 실제로 존재하는 것처럼 보인다는 것입니다. 아니 방금 전까지만 해도 리눅스의 링크는 실체가 없다고 해 놓고서는 무슨 소리냐고 할 수 있는데 사실은 이런거죠.

결국 파일 시스템 내의 어떤 지점이 여러 곳에서 여러 개의 이름을 갖는 것과 똑같다고 생각하면 됩니다. 너무 추상적이라 예를 들자면, 만약 /some/path/source 라는 디렉터리가 존재해서, /usr/local/links 라는 디렉터리에서 해당 지점으로 링크를 만들었다고 합시다. 링크의 이름은 타이핑하기 귀찮으니 s 로 하구요. 그래서 links 디렉터리에서 s로 이동한다면

/usr/local/links$ cd s
/usr/local/links/s$ ls

{실제로 /some/path/source 에 들어있는 파일 리스트가 쫙 뿌려집니다.}

이렇게 됩니다. 즉 링크는 목표지점을 완전히 직접적으로 연결하는 장치이고, 이를 통해 접근하는 경우 사용자는 원본의 경로로 직접 접근하는 것과 ‘아무런 차이점이 없이’ 특정 경로를 바로 액세스하는 효과를 누릴 수 있게되는 것이죠. 사실 이것은 좀 혼란스럽게 느껴질 수 있지만, 단일 자원의 무분별한 중복(복사본으로 넘쳐나는 불행!)을 방지하고 또한 변경 사항이 생기는 경우 모든 것이 동기화되는 개념이기 때문에 (왜냐면 원본은 하나 밖에 없으니까) 상당히 효율적이고 멋진 기능이라 할 수 있다.

하드 링크와 심볼릭 링크

그럼 이제 하드링크와 심볼릭 링크의 차이점에 대해 살펴보겠습니다. 먼저 보통 ‘링크’라고 이야기하면 일반적으로는 심볼릭 링크를 이야기하는 듯 합니다. 하드 링크는 하드 링크라고 별도로 명시하는 듯 하네요. 심볼릭 링크는 말 그대로 이름으로만 존재하는 링크에요. 만약 어떤 파일에 대해 다른 위치에서 심볼릭 링크를 만들었다고 하면, 해당 심볼릭 링크는 파일의 경로+파일이름과 완전히 동일하게 취급됩니다. 마치 링크가 존재하는 그 디렉토리에 텍스트 파일이 있는 것과 똑같은 효과가 있지요.(실제로도 그렇습니다. 링크는 원본 파일이 가진 파일 이름과 같이 또  다른 ‘이름’이니까요) 이 때 원본 파일을 에디터로 수정한 다음, 링크를 통해 해당 파일의 내용을 들여다보면 당연히 수정된 내용이 반영되어 보입니다. 만약 vi와 같은 에디터를 통해 링크를 수정한다면, 그것은 결국 ‘링크의 이름을 가진 원본 텍스트 파일’을 수정하는 것이므로 나중에 원본을 확인해보면 수정된 내용이 반영되어 있기도 하구요. 우리는 그저 “똑같은 파일이 요기잉네”와 같이 취급하면 됩니다.

여기까지는 어려울 것이 없어요. 그럼 하드 링크는 어떻게 동작할까요? 하드링크의 동작도 마찬가지 입니다. 링크를 만들어서 마치 해당 디렉터리에 파일이 위치하는 것처럼 액세스 할 수 있지요. 원본을 수정하면 링크를 통해 확인한 내용이 즉시 바뀐 것을 볼 수 있는 것도 똑같습니다. 그런데 만약, 원본을 지워버리면 어떻게 될까요? 하드 링크의 경우, 원본을 지우더라도 링크를 통해 확인해보면 해당 파일이 그대로 존재하는 것처럼 보입니다. 어이쿠야. 하드링크는 원본이 삭제되더라도 그 내용이 없어지지 않는다는 것이지요. 중요한 것은 원본이 삭제되기 전까지는 하드링크는 일반적인 링크의 역할만 하게 되지만 원본이 지워지게되면 하드 링크는 복사본의 역할을 수행하게 됩니다. 사실 이러한 동작은 거꾸로 특정 파일이 삭제될 때 실제로 파일 시스템 내에서 소멸되지 않고 어딘가에 숨어있으며, 그 위치는 여전히 하드 링크들에 의해 접근이 가능해진다는 이야기가 됩니다. 이건 대용량의 동영상 파일이나 iso 파일로 실험해 볼 수도 있어요. 수 백 메가바이트짜리 대용량 파일에 대해 링크를 생성하더라도 파일 시스템의 사용량은 거의 변화가 없습니다. 단순히 이름만 더 생겼단 의미겠지요. 그런데 원본을 삭제해도 역시 변화가 없다. 변화가 발생하는 것은 원본을 삭제한 후 하드 링크를 (두 개 이상의 하드링크가 존재했다면 모두 다)삭제하였을 때 그렇게 됩니다.

하드 링크 자체는 원본과 동기화된 파일이라고 생각해도 무방하기 때문에 ls -al를 통해 데이터의 유형을 살폈을 때도 그냥 파일과 다름없습니다만, 심볼릭 링크는 l이라고 당당히 링크의 신분을 밝힙니다.

심볼릭 링크는 원래 위치만을 참조하기 때문에 원본을 삭제하면 해당 링크는 그저 허공을 가리킬 뿐, 해당 파일이나 디렉터리가 없다는 에러 메시지를 뿜어내게 됩니다. 이것이 하드 링크와 심볼릭 링크의 차이점입니다. 아, 이제야 왜 하드링크와 소프트링크가 아닌 하드 링크와 심볼릭 링크의 차이점을 알 수 있겠네요. 그것은 ‘소프트링크’라고 쓰면 ‘소프트드링크’처럼 들리기 때문입니다!

링크 만들기

링크를 만드는 명령은 ln입니다. 이 명령은 다음과 같이 사용됩니다.

  1. ln {타겟의 위치} [링크의 이름]
  2. ln -s {타겟의 위치} [링크의 이름]

1번 방법은 하드 링크를 생성합니다. 링크 이름을 별도로 주지 않으면 원본과 같은 이름의 링크가 생성됩니다. 2번처럼 -s 옵션을 주면 심볼릭 링크가 생성됩니다. 역시 링크 이름을 주지 않으면 원본과 같은 이름으로 링크가 생성됩니다. 하드 링크는 원본의 변화나 삭제시 기존 데이터를 보존하는 역할을 합니다. 그것과 관련되어 조금 복잡한 사연을 가지고 있어서 디렉터리 자체는 하드 링크의 생성이 불가능합니다. 파일만 가능하지요. 하지만 심볼릭 링크는 파일이나 디렉터리 모두에 사용될 수 있습니다.

정리. 그리고 하드링크까지 한번에 삭제하기

이렇게 살펴보고 나니 링크라는 게 대단한 건줄 알았는데 별거 아니었구나 하는 생각이 듭니다. 그런데 여기서 한 가지 의문이 드는데, 만약에 어떤 파일이 하드 링크를 여러 곳에 두고 있다면 그 파일을 지운다 한들 실질적으로는 파일시스템 내에 다른 이름으로 살아남아있을 확률이 크다는 이야기입니다. 결국 특정 파일을 완전히 삭제하고 싶다면 참조하고 있는 모든 링크를 찾아보아야 한다는 이야긴데, 특정한 파일을 참조하는 하드 링크를 찾는 방법을 알아보야겠지요?

특정 파일에 대한 하드 링크를 검색하는 것은 결국 ‘똑같은 파일에 대한 다른 이름’을 찾는 것이므로 find 명령의 -samefile 옵션을 사용하면 됩니다. 예를 들면 다음과 같겠지요.

$ find /home -samefile file_that_has_many_hardlinks.mp3

그리고 이들을 한 번에 지워버리고 싶다면 다음과 같은 명령을 사용합니다.

$ find /home -samefile file_that_has_many_hardlinks.mp3 | xargs rm

(xargs는 표준입력으로 받은 항목들을 나누어 뒤에 이어지는 명령에 인수로 넘기는 역할을 한다고 합니다.)

오늘은 여기까지입니다. 이틀 연속 외박을 할 순 없으니까, 이제 집에 가야겠어요. 요즘 일교차가 유난히 큰 듯 한데, 다들 감기 조심하세요. 여러분 안녕~

20091204 :: Gparted를 대신할 명령줄 명령어

기록차원에서 남겨둡니다.

0. Following Steps need ‘ntfsresize’ which is able to be installed with “sudo apt-get install ntfsprogs“. And MUST UNMOUNT partition to be resized.

1. Check file system on /dev/sdaX for errors and (if possible) fix them

ntfsresize -P -l -f -v /dev/sda6 (sda6은 변경할 장치 디스크의 id)

2. Shirink file system (simulate)

ntfsresize -P -force /dev/sda6 -s 76585549823 -no-actionㅠ  (빨간 숫자는 용량)

3. Real resize

ntfsresize -P -force /dev/sda6 -s 76585549823

4. Check file system on /dev/sdaX for errors and (if possible) fix them once again.

ntfsresize -P -l -f -v /dev/sda6

5. Now move EXT4 partition to the left. First, check EXT4 journaling system. At this time you use ‘e2fsck’

e2fsck -f -y -v /dev/sda7

하지만 root 파티션을 변경하기 위해서는 unmount해야 하고 결국은 라이브 시디가 있어야 한다는 소리 ㅠㅠ. 티스토리 분점에서 이어진 글임.

20091107 :: 서울남산체를 우분투에서 사용하기

런던이나 브리스톨, 프랑스의 파리 등의 도시들은 각 도시의 ‘지정 서체’가 있습니다. 따라쟁이 우리 나라 공무원 나릿님들이 그런 걸 간과할리가 없지요. 그래서 서울시도 2007년 가을부터 서울시의  지정 서체 개발을 준비해왔습니다. 그리고 지난 2008년 여름에 명조 계열의 폰트와 고딕 계열의 폰트를 일반에 공개했습니다. 그것이 바로 서울한강체(명조)와 서울남산체(고딕)입니다.

서울시는 이를 단순히 선전용에 그치지 않고 이들 서체를 공공 디자인 부문에 적극 도입합니다. 덕분에 ‘혐오스럽고 더럽다’는 느낌까지 주었던 각 관공서들의 현판 및 보행자용 이정표, 지하철의 각종 안내 디자인 등에 서울 남산체가 도입됩니다. (공문의 서식에도 도입되었는지는 모르겠네요) 개인적으로는 그런 사실을 첨에는 모르고 있다가 나중에 알았습니다. 어쨌거나 서울시가 발표한 서울서체는 서울에서 10년간 살아오면서 서울시가 가장 잘한 업적 중의 하나라고 생각되네요. 특히 서울남산체는 공공 시설물의 적용을 염두에 두고 설계된 서체라, 글자 자체가 고딕 계열이지만 비대칭과 약한 곡선, 열림 등의 요소가 적절히 적용되어 깔끔한 외관에 못지 않게 놀라운 가독성을 보여줍니다.

이번 지하철 9호선역의 역사들의 내부에는 모두 이 서울 남산체가 적용된 안내 문구들이 배치되어 있습니다. 덕분에 9호선 역 전체에 대한 디자인적 평가는 당연히 높을 수 밖에 없더군요.

그래서 이 서체가 너무 마음에 들기에, 저는 제 컴퓨터의 기본 글꼴로 지정하리라고 마음먹었습니다.  서울 서체는 디자인서울총괄본부(http://design.seoul.go.kr/dscontent/designseoul.php?MenuID=490&pgID=237)에서 다운로드 받을 수 있습니다.

얼씨구나, 그런데 이 서울 서체는 그냥 TTF  파일을 압축해 놓은 것이 아니라, 인스톨러 버전으로 만들어져 있군요. 아 부분에서 서울시가 잠깐이나마 장했던 그 느낌은그냥 좀 실망으로 바뀝니다. 그럼 리눅스 사용자는 쓰지 말란 겁니까 -_ -;; 어지간한 인스톨러들은 사실 파일복사 스크립트와 함께 zip으로 묶여있는 것이 다라서 파일 압축 유틸리티로 열어보면 거의 열리는 경우가 많은데, (특히나 파일의 크기가 크지 않은 프로그램 일 수록 이럴 확률이 큽니다.) 이 인스톨러는 그렇지도 않군요.

어쨌든 WINE으로 인스톨러를 실행해서 TTF파일 추출 성공!

우분투의 글꼴 보기 프로그램은 글꼴을 확인한 후 바로 설치할 수 있도록 글꼴 설치 버튼을 제공합니다. 이렇게 설치해도 좋고, 터미널이나 파일관리자(노틸러스)에서 복사해도 좋지요.

우분투의 폰트 폴더는 /usr/share/fonts/truetype 에 있습니다. 터미널에서는 아래와 같이…

sudo mkdir /usr/share/fonts/truetype/seoul
cd [서울서체파일이 있는 디렉터리]
sudo cp *.ttf /usr/share/fonts/truetype/seoul

그런 다음, 시스템 > 모양새에서 글꼴을 모두 서울남산체로 바꿔주었습니다. 아 정말 좋군요. 글씨들이 시원시원하고 너무 예쁩니다. 내친 김에 윈도에다가도 설치해 봅니다. 아, 그런데 아마도 화면 글꼴에서 안티 앨리어싱을 적용하는 방법이나 그 정도가 윈도와 우분투가 많이 다른 것 같습니다. 윈도에서는 맑은 고딕이나 나눔 고딕까지는 화면 글꼴로 그리 무리가 없었는데, 서울 서체의 경우에는 좀 지저분해 보이네요.

아래 두 장의 이미지는 제 블로그의 예전글을 각각 윈도XP와 우분투에서 파이어폭스로 보았을 때의 모양새입니다.

먼저, 우분투에서의 글자 모양입니다. 작은 글자까지도 그래도 가독성이 나쁘지 않은 수준입니다. 왠지 제가 다 뿌듯한 느낌이 듭니다.

윈도에서의 글자 모양입니다. 중간 중간 가로선이 뭉치거나 뭉개지는 부분들이 발생합니다.

브라우저에서의 기본 고딕 서체도 서울남산체로 만들어놓고 나니 글 읽는 일이 즐거워지네요. 이전에 ‘은 돋움’체도 참 좋았지만, 너무 네모칸에 딱 들어맞는 모양보다는 이렇게 시원시원한 글자체가 글을 많이, 오래 보는데 도움이 되고 실제로 글을 빨리 읽도록 하는 데에도 도움이 됩니다. 윈도에서도 클리어타입 튜너라는 게 있지만, 아무리 조절해보아도 한글 서체가 품질이 나빠 보이는 점은 어찌할 수가 없네요. 다만, 글자 크기가 어느 정도 커지면 상당히 깔끔한 원래의 느낌을 잘 살려 내는 것을 봐서는 시스템 글꼴 수준의 작은 글씨를 렌더링 할 때만 좀 문제가 있는 것 같습니다.

아무튼 어이없이 인스톨러로 묶어 놓은 서울 글꼴은 다시 TTF 만 zip 파일로 묶어서 drop.io/seoulfonts에 올려 두었습니다. 서울 남산체 말고도 뫼비우스라는 한글 서체도 상당히 깔끔하고 예쁩니다. 이런 예쁘고 센스있는 글꼴은 프리젠테이션 같은 데 활용해주면 청중의 센스도 함께 팍팍 올라갈 것 같습니다. (제발 굴림체 72포인트로 PT 맨 마지막에 감사합니다..같은 거 적지 말아주세요 ㅠㅠ)

20090925 :: 리눅스에서 nortel vpn 접속하기

우분투 리눅스를 노트북의 주력 OS로 사용하면 가장 절망(?)적인 것이 한 가지 있다면 그것은 vpn연결이었습니다. 리눅스에서도 여러가지 vpn 클라이언트들을 제공하지만, 제 직장에서는 Nortel Networks Contivity VPN 을 사용합니다. 따라서 기존에 나와 있는 vpn 클라이언트들은 설정도 모르겠고, 구글링을 해봐도 어디에나 방법을 묻거나, “그런 거 없다”는 이야기 뿐이었습니다. (아 정말 이 말을 포럼에서 봤을 땐 보란 듯이 성공해보고 싶었습니다.. ㅠㅠ)

실제로 Nortel Networks에서는 리눅스용 클라이언트를 상용으로 팔고 있다는 소문도 있었고, 평가판을 제공한다는 이야기도 있었지만, 결국은 다 안되더군요. 하지만 피와 눈물과 땀을 엄청나게 투자한 끝에, 오늘 이 밤, 회사 vpn에 성공적으로 접속하여 원격으로 문서를 메일로 전달하는데 성공했습니다. 그럼 이제부터 그 눈물겨운 과정을 함께 하도록 하겠습니다.

사전작업

먼저 윈도우에서 VPN 클라이언트를 실행해서, 프로그램 정보 및 연결 정보 (트레이아이콘에서 Status…)를 확인합니다. 이 모든 정보는 매우 중요하니 모조리 기록해 두도록 합니다. 이제, 우분투로 부팅합니다. 참고로 제 경우에는 회사 vpn은 그룹ID, Password로 인증받는 경우입니다. 다른 설정인 경우에는 vpnc 프로그램의 설정 부분을 주의깊게 읽어보고 해당 항목을 윈도우용 클라이언트에서 찾으면 됩니다.

준비

맨 처음 할 것은 vpnc-nortel을 설치하기 위한 디렉터리로 이동합니다.

cd ~/bin   (이미 만들어두었다고 가정합니다)

먼저 소스를 svn에서 내려받기 위해 subversion을 설치합니다.

sudo apt-get install subversion

그리고 소스를 컴파일하기 위해 필요한 패키지도 설치합니다.

sudo apt-get install build-essential

vpnc-nortel 컴파일을 위해서는 다음 패키지도 필요하다고 합니다.

sudo apt-get install libgcrypt11-dev (혹은 build-essential을 설치하면 같이 설치되기도 합니다.)

그리고 vpnc를 기반으로 하기 때문에 vpnc가 의존하는 패키지도 미리 다운로드 받아둡니다.

sudo apt-get build-dep vpnc

이제 소스를 내려 받습니다. 아래 명령을 실행하면 vpnc-nortel이라는 디렉터리가 생성됩니다.

svn co -r 414 http://svn.unix-ag.uni-kl.de/vpnc/branches/vpnc-nortel

이 때, -r 스위치를 사용하여 버전을 명시했습니다. 저 버전은 되더군요. 최신 버전은 이상하게 안됐습니다.

설치

소스 다운로드가 끝나면 설치를 합니다. 방금 새로 생성된 디렉터리로 이동합니다.

cd vpnc-nortel

Makefile 파일을 조금 수정해야 합니다.

sudo vi Makefile (or sudo gedit Makefile)

그러면 긴 주석문 아래에 PREFIX 라는 값에 다음과 같이

PREFIX=/usr/local

이라고 되어 있는데, 여기를

PREFIX=/usr

로 수정해줍니다.

이제 설치를 진행합니다. 다음의 명령을 순서대로 입력해 줍니다.

make

sudo make install

설정

디폴트로 생성되어 있는 설정 파일은 cisco 장비에 맞게 되어 있습니다. 그러니 이 부분은 그냥 따로 보관합니다.

sudo mv /etc/vpnc/default.conf /etc/vpnc/default.conf.install

이제 설정 파일을 따로 만들어야 합니다. 설정 파일을 만들기 전에 어떤 어떤 항목을 설정할 것인지 미리 알아보기 위해서는

vpnc –long-help

를 입력하여 대략 알아봅니다. 그러면 설정값들이 뭘 의미하고, 설정 파일에서는 어떤 이름으로 설정하는지 나옵니다. 아까 기록해 둔 윈도에서의 설정값과 비교하여 입력할 수 있는 내용들을 골라봅니다.

sudo vi /etc/vpnc/default.conf (익숙치 않으시다면 vi 대신 gedit 를 사용하여, 텍스트 에디터에서 작업하는 것이 정신 건강에 좋을 수도 있습니다)

내용은 대략 다음과 같습니다. 단 아래 내용은 제 경우에 한한 것이니 다를 수도 있습니다. X로 가리거나 붉은 글씨로 표시한 부분이 그렇습니다.

Vendor nortel #Nortel 꺼라고 선언합니다.
Nortel Client ID V06_01
IPSec gateway XXXX.XXX.XXX.XXX
IPSec ID XXXXX (이것이 그룹 ID)
IPSec secret XXXXXXXXX (이건 그룹 Password)
NAT Traversal Mode none
IKE DH Group dh1 (D….. H….. 라는 뭔가 긴 단어의 약어입니다. 윈도용 클라이언트에서는 약어로 표시되지 않습니다.)

IKE Authmode gpassword
Enable Single DES #맨 마지막 줄은 첨에 없이 실행했더니 연결이 안돼서 추가했습니다.
#아이디와 패스워드를 묻지 않으려면 아래를 추가합니다. (전 안했습니다.)
Xauth username <아이디>
Xauth password <패스워드>

다 했습니다. 이제 vpnc를 실행합니다. vpn 설정을 위해 네트워크 설정을 내부적으로 변경하니 관리자 권한이 필요합니다.

sudo vpnc (혹은 sudo ./vpnc)

제 경우에는 아이디와 비밀번호를 묻더군요. 최신 버전을 설치했을 때는 이상하게 게이트웨이 주소를 파싱하지 못하고 연결이 안됐습니다. 계정 정보를 입력하고나면 윈도에서 연결할 때와는 달리 아주 빨리 연결이 돼 버립니다. 그리고는 “VPNC started in background (pid : 0000)”과 같이 잘 실행됐다고 나옵니다.

믿을 수가 없어서 핑도 날려보고, 원격 데스크톱도 연결해봅니다.

원격 데스크톱을 연결하고 싶다면

sudo apt-get install rdesktop 로 설치하고

rdesktop xxx.xxx.xxx.xxx (연결할 컴퓨터의 ip)

그러면 윈도에서 원격 데스크톱 연결을 실행한 것과 동일한 화면이 표시됩니다.

드디어 해냈습니다. 축하합니다!!! 짝짝짝짝

아, vpn 연결을 끊고 싶다면 아까 그 디렉터리로 가서 스크립트를 실행합니다.

sudo ./vpnc-disconnect

정말이지 감개가 무량한 순간입니다. 혹시 vpn 연결에 있어서 저와 비슷한 상황이신 분께 도움이 되었으면 합니다. 그럼 즐거운 하루 되세요!