6. 리눅스에서의 설정

이 과정에서 부터 Hauppage WinTV DVB card와 같은 Siemens호환 카드를 사용한다고 가정하겠습니다. 해당 드라이버와 소프트웨어는 다음에서 다운 받을 수 있습니다. LinuxTV or DVB-s PCI cards under Linux

6.1. Drivers 인스톨

드라이버를 다운로드 받은 후에, untar로 푼후, 해당 디렉터리에서 "make" 와 "make insmod"를 입력해야 합니다. 이렇게 하기 위해서는 /usr/src/linux 밑에 있는 리눅스 커널 소스가 필요합니다.

"make insmod"후에 스시템에 DVB 모듈이 로드됩니다. 모듈을 적재하지 않기 위해서는 간단히 "make rmmod"라고 입력하면 됩니다.

6.2. /etc/dvbd.conf 설정

/etc/dvbd.conf 파일은 DVB 카드를 위한 data-link parameters 설정을 하는데 쓰입니다. 다음이 셋팅 방법 입니다.

"Example"

------------------------------------------

# DVB receiver configuration file, (c) 2000 data planet international

# standard location in /etc

# LNB power on=1/off=0

power 1

# symbol rate [symbol/sec]

symbolrate 22000000

# ASTRA TR 114

frequency 12640000

# 22 kHz signal on=1/off=0

ttk 1

# diseqc on=1/off=0

diseqc 0

# AFC on=1/off=0

AFC 1

# polarisation H=1/V=0

polarisation 1

# settings for MPE filter, PID and MAC filtering, valid MAC bytes

filter_0 512

filter_1 785 00:D0:5C:1E:96:01 48

filter_2 786 00:D0:5C:1E:96:01 48

filter_3 1041 00:D0:5C:1E:96:01 48

-----------------------------------------

filter_0 는 MAC와 bitfilter 값을 가지고 있지 않습니다. 왜냐 하면 MAC address는 IP 주소로 부터 구하기 때문 입니다.(자세한 것은 부록 A 참조) 위의 세팅으로 몇몇 ISP를 이용할 수 있겠지만, 만약 안된다면 dvbd.c 파일을 수정해야 합니다.

6.3. Dvbd daemon

/etc/dvbd.conf 설정에 성공 했다면, dvbd 프로그램을 실행해야 합니다. -d 옵션 없이 실행한다면, stdout 신호를 quality level에 써줍니다.

위성으로 부터 신호를 잘 수신하지 못 한다면(케이블과 안테나의 방향을 확인해 보세요)

dvbd.h 파일의 다음 줄을 수정해야 할지도 모릅니다.

#define network_device "eth0"

#define network_device "ppp0" 로

어떤 인터넷 인터페이스를 사용하고 있는지에 따라서 eth0 혹은 ppp0를 결정해야 합니다. 그리고 "make"를 입력하여 파이너리 파일을 다시 업데이트 해주어야 합니다. 그리고 dvbd를 다시 시작합니다.

6.4. EON 서비스 설정하기

좋은 신호를 수신할 수 있다면, 위성 서비스를 이용할 수 있습니다.

EON은 HTTP와 FTP를 이용할 때 "proxy"를 이용합니다.

proxy.xxx.europeonline.net 는 포트 8080 FTP는 프록시로 포트 8090을 이용합니다.

xxx는 transponder number(103,113,114 or 115)입니다. 부록 B 에서 자세히 다룹니다.

이제 인터넷 항해를 할 수 있습니다. 편안하게 하세요.

여러개의 클라이언트에서 EON서비스를 공유하기 위해서는 Squid proxy의 프로그램을 사용하새 보시기 바랍니다. EON 프록시를 여러개 사용할 수 있도록 도와 줍니다.

더 많은 사용자들이 사용하기 위해서는 다음의 EON Linux Masquering FAQ Page 를 방문해 보시기 바랍니다.

6.5. Netsystem 서비스 사용하기

Netsystem은 리눅스 환경에서 사용하기는 EON 보다 좀 복잡합니다.

  1. VPN connection

  2. patch for pppd (needed only if using pppd <= 2.4.0)

  3. patch for dvbd.c

  4. Test it

  5. Get performance better

  6. Sharing Netsystem with many clients

6.5.1. VPN 연결

우선 VPN PPTP client application에서 프로그램을 다운 받으시기 바랍니다.

파일을 푼 후, 컴파일 하고 인스톨 합니다. /etc/ppp/pap-secrets 와 /etc/ppp/chap-secrets 파일에 다음을 추가 시켜야 합니다.

"login" * " password" *

"login" 과 "password"는 Netsystem registration의 것과 일치해야 합니다.

6.5.2. pppd를 위한 패치

PPTP description에서 말한 것과 같이 Netsystem VPN server (Microsoft server)를 지원하는 pppd daemon을 패치하여야 합니다.

다음의 방법입니다. So you have to:

  1. recent pppd version 방문합니다.

  2. 여기에서 pppd를 패치를 위한 최신 버젼을 받습니다.

  3. 해당 디렉터리에 풉니다.

  4. 다음을 입력합니다. "patch -p0 < patch_name"

  5. pppd 디렉터리로 이동합니다. enter pppd directory

  6. "make" , "make install" 입력합니다.

Netsystem VPN을 사용할 수 있습니다. 다음을 해 보시기 바랍니다.

"pptp vpn.netsystem.com debug user <login>"

Netsystem의 어카운트로 접근할 수 있는 <login>명은 /var/log/messages 에 있는 로그 파일의pppl connection 정보에서 볼수 있습니다.

모든 것이 정상이라면 "ifconfig" 명령어로 pppl 인턴페이스를 확인 할 수 있습니다.

인증과정에서 계속 문제가 생긴다면 /etc/ppp/options 파일에 "noauth"를 추가 해 보시기 바랍니다.

pppl 인터페이스가 작동하면 다음을 과정으로 넘어 갑니다.

  1. "ifconfig ppp1" 입력합니다. "P-t-P:"의 오른쪽에서 IP 주소를 찾습니다.

  2. "route del IP"로 라우팅 테이블에서 IP 주소를 지웁니다.

  3. "route add IP dev ppp0"로 ppp0 interface에 IP를 추가 합니다.

  4. "route del default"로 기본 게이트웨이를 지웁니다.

  5. "route add default dev ppp1"로 기본 게이트웨이를 추가합니다.

1번 부터 3번 과정은 PPP 인터페이스를 리눅스 환경에서 다루는데 필요합니다. 게이트웨이를 새로운 인터페이스로 추가하는 것은 좋은 아이디어 처럼 보이지 않을 수 있습니다. 무한 루프에 빠지지 않는다면 아마도 패킷이 계속 암호화 된 것입니다.

4번 5번 과정은 pppl 인터페이스로 모은 인터넷 요구가 가도록 만듭니다. 그래서 VPN 연결로 인터넷을 이용할 수 있게 됩니다. (이러한 방법은 가장 좋은 연결 방법은 아닙니다. DNS 쿼리 예를 들자면, 이것은 위성 통신의 응답시간 지연에 관계없이 바로 보내어 질 수 있습니다.)

6.5.3. dvbd.c 패치

PPTP 문제를 해결한 후에 dvbd.c 파일의 라인의 일부분을 수정해야 합니다. (거의 끝부분입니다.)

if (strcmp (v, "filter_0") == 0) { if (s != NULL) { unsigned char ip[4]; dvbcfg[0].status = ON ; dvbcfg[0].filter.data[0] = 0x3eff ; dvbcfg[0].filter.pid = (__u16) atoi (s) ; dvbcfg[0].filter.mode = 0x0c ; if (ipget (ip, network_device)) { fprintf(stderr,"Can't get local ip address. Stop.\n") ; return -1 ; } syslog (LOG_NOTICE, "Local ip is %u:%u:%u:%u\n", ip[0], ip[1], ip[2], ip[3]); dvbcfg[0].filter.data[1] = (ip[3] << 8) | 0x00ff ; dvbcfg[0].filter.data[2] = (ip[2] << 8) | 0x00ff ; dvbcfg[0].filter.data[6] = (ip[1] << 8) | 0x00ff ; dvbcfg[0].filter.data[7] = (ip[0] << 8) | 0x00ff ; dvbcfg[0].filter.data[8] = (0x02 << 8) | 0x00ff ; dvbcfg[0].filter.data[9] = (0x00 << 8) | 0x00ff ; setmac (ip) ; } else { dvbcfg[1].status = OFF ; } }

"다음 줄을"

dvbcfg[0].filter.data[1] = (ip[3] << 8) | 0x00ff ;

dvbcfg[0].filter.data[2] = (ip[2] << 8) | 0x00ff ;

dvbcfg[0].filter.data[6] = (ip[1] << 8) | 0x00ff ;

dvbcfg[0].filter.data[7] = (ip[0] << 8) | 0x00ff ;

dvbcfg[0].filter.data[8] = (0x02 << 8) | 0x00ff ;

dvbcfg[0].filter.data[9] = (0x00 << 8) | 0x00ff ;

"다음으로 바꿔야 합니다. "

dvbcfg[0].filter.data[1] = (MAC[5] << 8) | 0x00ff ;

dvbcfg[0].filter.data[2] = (MAC[4] << 8) | 0x00ff;

dvbcfg[0].filter.data[6] = (MAC[3] << 8) | 0x00ff ;

dvbcfg[0].filter.data[7] = (MAC[2] << 8) | 0x00ff ;

dvbcfg[0].filter.data[8] = (MAC[1] << 8) | 0x00ff ;

dvbcfg[0].filter.data[9] = (MAC[0] << 8) | 0x00ff ;

Where MAC[0]:MAC[1]:MAC[2]:MAC[3]:MAC[4]:MAC[5] is our MAC address (according to Netsystem registration).

After, you have to type " make" and use the new dvbd created.

Note: to successfully patch the dvbd.c you need to use dvb driver version >= 0.8.2, cause older versions have some instability problems.

6.5.4. 시험해 보기

마지막으로 리눅스에서 Netsystem을 테스트 해 봅니다. "ping www.somehostpingable.com"으로 응답 시간을 측정해 봅니다. 약 400에서 2000 ms 이어야 합니다.

아직 문제점이 발견 된다면 VPN 연결 부분을 다시 한번 살펴 보시기 바랍니다.

  1. network sniffer (예 Ethereal) 실행하고, "ppp0" interface 검사 합니다. (ppp1이 아니라 ppp0입니다.)

  2. ping 을 합니다.

VPN이 정상이라면 두개 혹은 한개의 GRE-Encapsulated packets을 초당 확인할 수 있을 겁니다. 끝으로 여전히 VPN으로 아무것도 확인할 수 없을 경우 시스템을 정지하고 다시 시작해 보시기 바랍니다.

6.5.5. 최적화 하기

필요한 보든 설정을 다했다면, "download accelerator" 같은 것으로 좀 더 낫은 성능을 얻을 수 있습니다. (자세한 것은 부록 A를 보시기 바랍니다.)

6.5.6. Netsystem을 여러 컴퓨터에서 공유하기

인터넷 연결을 공유하기 위해서는 "IP Masquering"을 가능하게 해 두어야 합니다. 모든 클라이언트 컴퓨터는 VPN 을 정상적인 인터넷 인터페이스로 사용할 수 있게 해 주어야 합니다. 가장 큰 문제는 위성 시스템이 다운 속도는 빠르나 웹 브라우징 부분에서는 나쁜 성능을 가진다는 것입니다.

Squid proxySocks proxy 를 사용하는 방법을 생가해 볼 수 있습니다. 그러나 계속 같은 문제를 격게 된다면, 이유는 모든 인터넷 요구가 같은 인터페이스 즉 VPN으로 보내기지 때문입니다.

해법은 두 개의 라우팅 테이블을 이용하는 것입니다. 하나는 direct line 인터페이스를 이용하는 사용하고, 하는 VPN을 이용하는데 사용합니다. 그래서 다음과 같이 할 수 있습니다.

  1. "iproute2"로 인스톨을 확인합니다. (예를 들면 "ip"라고 입력하고, 정보를 확인합니다.) Linux 2.4 Advanced Routing HOWTO 에서 더 많은 정보를 얻을 수 있습니다.

  2. Netsystem 서비스를 시작합니다. ppp1 interface 를 IP address로 지정합니다. 위의 IP 주소를 LOCALIP라고 부르겠습니다.

  3. type: "echo " 210 sat">> /etc/iproute2/rt_tables", to more comfortable call "sat" rule 210

  4. type: "ip rule add from LOCALIP table sat", to create table "sat" relative to all requests coming from LOCALIP IP address.

  5. type: "ip route add default dev ppp1 table sat", to send all "sat" requests (see above) to ppp1 interface.

  6. Socks proxy을 사용한다면, sockd.conf 파일의 "external"을 LOCALIP로 지정하는 것을 잊지 마시기 바랍니다.

  7. Squid proxy을 사용하다면, squid.conf 파일의 "tcp_outgoing_address"을 LOCALIP로 지정하시기 바랍니다.

모든 설정을 마쳤다면, 프록시를 거치지 않고 바로 유선으로 요청하는 작업과 프록시(squid 또는 sockd)를 거치는 요구는 VPN 인터페이스로 전달되는 작업 두가지를 확인 할 수 있습니다.(명확히 하자면 위성으로 가는 신호 말입니다.)

squid 대신에 sockd을 사용하기를 원할 수 있습니다. 왜냐하면 위성은 다운 받는데 특화되어 있기 때문입니다.

iproute2 명령어를 입력하면 무슨 일이 벌어질까요? sockd 또는 squid에 주소를 확인할 때 프록시 요구는 커널이 전송하는 테이블에 설정된 곳(정확히 pppl 인터페이스)으로 TCP/IP 스택을 입력합니다. 모든 다른 요구는 기본 라우트로 전송 됩니다.