단순히 Ethernet card를 여러 개 있는 것 처럼 하는 거나 loopback 장치를 여러 개 만드는 것은 "ifconfig" 명령 만으로 간단히 할 수 있지만 내가 원하는 것은 진짜로 여러 개의 인터페이스가 있는 것 처럼 동작하게 하는 것이다. 시나리오는 이렇다. 특정한 고정 포트에서 수신을 기다리는 데몬 프로세스가 있는데 이런 데몬 프로세스가 컴퓨터마나 한 개씩 떠 있고 이들 간의 통신을 통해서 뭔가 일을 처리하는 프로그램을 만들었다고 하자. 그것을 여러 대의 컴퓨터가 아니라 한대의 컴퓨터에서 실험을 하고 싶은데 한 컴퓨터에서 띄우면 두번 째 데몬부터는 해당 포트를 잡을 수가 없다. (이미 처음의 데몬이 그 포트를 잡고 있으니까.)

네트워크 카드가 여러 개 있다면 각 네트워크 카드를 지정해서 데몬을 띄우게 함으로써(자바의 경우 NetworkInterface.getByName 메쏘드로 이것을 구현할 수 있다.) 해결이 되지만 컴퓨터에 네트워크 카드도 하나 뿐이다. 그럼 어떻게 해야 하나?

자세히 알지도 못하고 자세히 쓸 힘도 안 남아 있으므로 간단히 요약한다. 리눅스에서는 가짜 인터페이스를 만드는 기능이 있는데 이를 tap 이라 한다. tap을 하나 만들고 또 브리지를 만들고 이 브리지에 tap과 진짜 네트워크 카드를 연결한 뒤 한 데몬은 tap 인터페이스에서 다른 데몬은 진짜 네트워크 카드 위에서 실행하면 된다. 설정하는 과정은 다음과 같다. (tap은 여러 개 만들 수 있으므로 여러 개의 데몬으로도 가능할 것 같다. 안해봤음.)
$ sudo tunctl -u newcat -t tap0
Set 'tap0' persistent and owned by uid 1000
$ sudo ifconfig eth0 <주소> up promisc
$ sudo ifconfig tap0 <주소> up promisc
$ sudo brctl addbr br0
$ sudo brctl addif br0 eth0
$ sudo brctl addif br0 tap0
eth0 (진짜 네트워크 카드)의 주소를 DHCP로 받아온다면 ifconfig에서 주소를 주지말고 대신
$ sudo dhclient eth0
라고 해주면 된다. 이 상태에서 만약 데몬이 자신이 동작할 네트워크 인터페이스 이름을 인자로 가지고 실행된다고 하면 다음고 같이 실행하면 된다.
$ daemon eth0
$ daemon tap0
(주의: 무슨 이유에서인지 이렇게 해 놓으면 외부 네트워크와는 연결이 안되는 증세가 나타났다. 뭘 잘못 한건지... 실험이 끝나면 다음과 같이 브리지에서 인터페이스를 떼내어 주면 되살아 난다.)
$ sudo brctl delif br0 eth0
신고
posted by 신묘군
세상을 얘기한다 2008.09.27 11:33
교양 입문 서적의 베스트 셀러 "철학 에세이"는 "바람이 불면 통장수가 돈을 번다"는 일본의 속담으로 시작한다. 바람이 많이 불면 눈에 먼지가 들어가서 장님이 늘어나고 장님들은 샤미센(일본 전통 현악기)들고 노래하는 일을 많이한다. 샤미센을 만드는데는 고양이 가죽이 필요하고 고양이를 많이 잡으니 쥐가 늘어나고 늘어난 쥐가 상자를 갉아 먹으니 상자를 파는 통장수가 돈을 번다는 얘기다. 물론, 이 얘기 자체는 별로 신빙성이 없지만 세상에 모든 것이 연결되어있다는 철학의 명제를 설명하는데는 적절하다.

중국발 멜라민 분유 파동이 일파만파로 퍼지고 있다. 오늘 아침 뉴스에 보니 자판기 커피도 먹으면 안되겠다. 어제 저녁에는 유럽 연합에서 중국은 물론이고 한국을 포함한 일부 나라에서 생산된 유유가 들어간 과자를 수입 금지 한댄다. 하긴, 지금의 원재료 표기 방법이나 그 표기의 신빙성에 비춰 볼 때 어느 나라에서 생산된 무

성분을 잘 보라구

슨 제품에 중국의 멜라민 우유가 섞여 들어갔을지는 알 수가 없다. 과자 껍질에 표기된 제품 성분을 꼼꼼이 본 사람들은 알겠지만 정체 불명의 성분들이 많다. 무슨 무슨 베이스, 무슨 무슨 페이스트 이런 것들은 도대체 그 원료가 뭔지 표기가 되어 있지 않고 재료의 국적도 중국산 이런 식으로 쓰지 않고 수입산 이라고 쓰는 경우가 많아 성분 표시만 보고는 멜라민 우유가 들어 갔을 것 같은 제품을 걸러낼 수 없다. 이건 안전한 식품에 관심을 갖고 있는 사람이라면 누구나 다 아는 상식이다. (우리 식약청은 상당히 상식이 부족한 사람들로만 구성되어 있는 모양이다.)

하지만 목하 전세계를 으스스하게 몰아가는 것은 멜라민 우유가 아니라 미국발 금융 위기다. 이제는 기억 속에서도 희미하게 사라져 가려고 하지만 처음 이 사태의 시작은 미국의 주택 담보 대출 그 중에서도 신용 등급이 낮은 사람들을 대상으로 하는 담보 대출 (즉, 서브 프라임 모기지) 이 부실화한 것이었다. 그 때 우리 당국자들은 뭐라고 했나? 우리는 그 쪽으로 돈이 들어간 것이 별로 없어서 괜찮다. 괜찮긴 뭐가 괜찮아. 수조의 돈이 허공으로 날아가고 주가는 바닥을 뚫고 해저 2만리를 향해 달리고 환율이 난동을 부리고 세계에서 제일 잘 나간다는 부실 은행을 되살릴 능력도 없으면서 세금으로 덜컥 인수할 뻔 하기도 했다. 세상은 서로 연결되어 있는 거란다. 만수야.

불과 얼마전까지 한반도를 뒤덮은 촛불은 무엇으로 시작되었나? 광우병. 아직도 과학적으로 완전히 밝혀진 것은 아니지만 초식 동물에게 동물의 찌꺼기로 된 사료를 먹이고 그 과정에서 종간 교차 감염이 일어나면서 독성이 강화되고 이것이 소의 특정 부분에 누적됨으로써 문제를 일으킨다는 것은 대략 맞는 듯 하다. 예컨대, 스크래피에 감염된 양의 사체를 소에게 먹인 것이 화근이 아닌가 생각이 든다. 그저 동물성 사료를 먹이면 고기 질도 좋아지고 소도 쑥쑥 크니까 좋은 줄만 알았지 물질이 종과 종 사이를 옮겨 다니면서 생각지 않은 문제를 일으킬 줄 알았나. 하긴 한 발짝만 물러서서 보자. 수억년의 진화 과정에서 초식 동물은 풀을 먹도록 진화했건만 동물을 먹이고 아무 일 없길 기대한게 오히려 이상한게 아닌가?

종간 장벽을 뛰어 넘는 힘은 이 세상을 만드는 물질이 그것이 생물체이건 무생물이건 상관없이 간단한 몇 가지의 화학적 원리에 의해 동작한다는 점에서 나온다. 지금 돌리고 있는 입자 가속기를 통해서 힉스 입자가 발견되면 빅뱅 이후 물질이 어떻게 조합되었는지 설명할 수 있다고 하던데 결국 빅뱅 이래로 지금까지 이 우주는 그저 몇 개의 간단한 원리의 조합으로 만들어지고 진화해온 것일 뿐이다. 그런 점에서 길 가의 돌멩이와 나는 그 근본을 이루는 물질과 물질을 연결하는 원리에 있어 크게 다르지 않

지구는 하나의 생명이라구요

은 사촌이다. 내가 죽어 썩으면 흙이 되고 그 흙이 뭉치어 돌이 된다. 빗물이 돌에서 녹여낸 미네랄은 땅속을 흘러 배추 뿌리로 흡수되고 내가 먹어 내 몸을 이룬다. 모든 것은 연결되어 있다.

제임스 러브록이 가이아라고 얘기했듯이 지구는 사람, 돌, 상추, 강이라고 불리는 수많은 세포 또는 기관을 가진 거대한 생명체다. 역으로 한 사람은 수많은 세포로 이뤄져 있고 각 세포 안에는 독립된 생명체라 불러도 아무런 문제가 없는 미토콘드리아가 유영을 즐기며 살아간다. 무엇이 부분이고 무엇이 전체인가? 그저 서로 연결된 네트워크 일 뿐 거기에는 부분도 없고 전체도 없다. 작은 네트워크가 연결되어 큰 네트워크를 이루고 큰 네트워크끼리 연결하여 더 큰 네트워크를 이루고 이루고 이루고 이루고 저 우주의 끝까지 또는 그 밖까지 그냥 연결되어 있다. 단지 가까이 연결되어 있으면 더 잘 느껴지고 더 쉽게 영향을 주고 받을 뿐 그것이 전부는 아니다.

네트워크 중 제일 고약한 네트워크는 피라미드다. 피라미드는 다수의 희생을 바탕으로 소수가 올라서는 모양을 갖고 있다. 이집트의 피라미드이건 다단계 판매 피라미드이건 생태계의 먹이 사슬 피라미드이

먹이 피라미드

건 다 마찬가지다. 위로 올라갈 수록 돈이 권력이 그리고 모순이 집적된다.

그저 토양에 흩어져 있을 때에는 별 문제가 없던 오염 물질이 풀의 몸에 축적되고 풀을 먹은 소의 몸에 축적되고 그 소를 먹은 사람에게는 치명적인 영향을 줄 수 있다. 멜라민이 들어간 사료를 양식장에 뿌렸다는데 사료 한 톨 한 톨에야 아주 미량의 멜라민이 들어 있어도 몇 날 몇 달을 계속 사료를 먹어 치우면 멜라민은 광어나 우럭 몸속에 차곡차곡 쌓인다. 생선회를 먹는 우리는 한마디로 엑기스를 뽑아 먹는 셈이다. 그게 바다의 영양이건 멜라민이건 오염 물질이건 다 싸잡아서 말이다.

지금 전 지구를 강타하는 금융 위기의 중심에는 금융 파생 상품이 있고 이들 상품은 금융 시장 피라미드의 정점에 서 있다. 가장 쉽게 돈을 벌 수 있지만 가장 치명적인 위험을 내재한 허상.

사실로 믿긴 어렵지만 집안의 족보에 의하면 나는 시조로부터 82대손이란다. 한 대를 내려갈 때마다 두명의 자손을 낳았다고 생각해보자. 한명 - 두명 - 네명 - 여덟명 -... - (10대째) 천명 - 이천명 - ... - (20대째) 백만명 - ... - (30대째) 십억명 - ... - (80대째) 1경명 - (81대째) 2경명 - (82대째) 4경명 즉, 4만조명. 우리 시조 어른의 82대째 손자가 될 가능성이 있었던 4만조명의 자손 중 실제로 태어 나고 살고 있는 사람은 몇이나 될까? 대략 4만명쯤. 4만 나누기 4만조는 ? 1조분의 1. 오~ 럭키. 여기에 한 사람이 만들어질 때 이미 수억 수천억의 정자 전쟁을 겪고 나온다는 점을 곱해준다면 으... 숫자가 너무 커지면 머리가 빙빙... 어쨌든 엄청난 행운이다. 내가 태어난 것도 당신이 태어난 것도 당신이 인터넷의 수많은 글 중에서 이 글을 읽는 것도 거의 일어날 확률이 없는 사건이 일어나고 있는 것이다. 그렇게 해서 만난 당신과 나 우리의 연결 어찌 허투로 볼까?

아... 큰 일이다. 글이 마무리가 안된다. 뭔가 교훈적인 얘기나 명박이를 까는 얘기나 최소한 아포리즘 한 줄 쯤이라도 나와야 되는 장면인데 머리가 혼란스럽다. 애시당초 이런 글은 시작하지 말았어야 하는건가...

신고
posted by 신묘군
ns-2 2.29 all-in-one 버전을 데비안 4.0 환경에서 빌드하면 다음과 같은 에러가 발생합니다.

checking system version (for dynamic loading)... ./configure: line ????: syntax error near unexpected token `('
./configure: line ????: ????


여기서 ???? 라고 표기한 부분은 같은 종류의 에러가 여러군데에서 나는데 각기 줄 번호도 다르고 해당 줄의 내용도 다르기 때문에 그렇게 표기하였습니다.

이는 configure 파일을 쉘 처리기인 /bin/sh (보통은 /bin/bash로 심볼릭 링크가 되어 있지요) 읽어서 처리하는 과정에서 최근 버전의 bash와 이전 버전의 bash가 약간 다르게 동작하기 때문입니다. 에러가 나는 문장의 예는 다음과 같습니다.

system=MP-RAS-`awk '{print }' /etc/.relid'`

꼼꼼이 따옴표의 개수를 세보면 알겠지만 쓸데 없는 따옴표가 하나 더 있습니다. 즉, 맨 뒤에서 두번째 따옴표(')가 필요가 없습니다. (그런데 이전 버전의 bash에서는 이게 필요했다네요. 왜 그랬을까나...) 따라서, 해당 따옴표를 쓱 지워주면 빌드가 잘 됩니다.

문제는 이런 식으로 에러 나는 곳이 여러 곳이라 모두 찾아서 지워줘야 된다는거지요. ㅠㅠ

신고
posted by 신묘군