· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/IP-Masquerade

Linux IP Masquerade mini HOWTO

Linux IP Masquerade mini HOWTO

Ambrose Au, ambrose@writeme.com

v1.20, 10 November 1997 김도석 doseok@ix.netcom.com , 김병찬 redhands@linux.sarang.net , 황성민 smhwang@turing.korea.ac.kr
이 문서는 당신의 리눅스 컴퓨터를 통하여 등록된 인터넷 IP 주소가 없는 컴퓨터를 인터넷에 연결시키는 리눅스 호스트상에서 IP Masquerade 기능을 사용하는 방법을 서술한다

1. Introduction 서론

1.1 Introduction 서론

이 문서는 당신의 리눅스 컴퓨터를 통하여 등록된 인터넷 IP 주소가 없는 컴퓨터를 인터넷에 연결시키는 리눅스 호스트상에서 IP Masquerade 기능을 사용하는 방법을 서술한다. 전화선을 이용한 ppp를 연결하는 것들과 마찬가지로 당신의 컴퓨터를 이떠넷을 통하여 리눅스 컴퓨터에 연결하는 것도 가능하다. 이 문서는 이떠넷 연결에 중점을 둘 것이다. 왜냐면 그것이 가장 일반적인 경우이기 때문이다.

This document is intended for users using kernels 2.0.x. Development kernels 2.1.x are NOT covered. 이 문서는 2.0.x 커널의 사용자를 위한 것이다. 개발커널인 2.1.x에 관한 것은 여기서 취급되지 않는다.

1.2 머리말, 의견 & 공로

나는 많은 초보자들이 2.x 커널과같은 새로운 커널에서 IP Masquerade를 설치하는데 매우 혼동되고 있다는 것을 발견했다. 비록 FAQ와 메일링 리스트가 있지만 이것을 전적으로 다룬 문서가 없고 HOWTO같은 것을 만들라는 요구가 메일링리스트 상에 있었다. 그래서 나는 초보자를 위한 출발점으로 문서를 만들고자 하는 이들을 위한 토대로 이 글을 쓰기를 결정했다. 만일 내가 이것을 잘 하지 못한다면 기탄없이 말하라 그래서 내가 더 잘 할 수 있게 해달라.

이문서는 Ken Eves가 지은 FAQ와 IP Masquerade 메일링 리스트의 많은 도움되는 내용에 많은 것을 바탕으로 하고 있다. 그리고 메일링 리스트에서 나에게 IP Masquerade를 설치하고 이글을 쓰게끔 영감을 준 Matthew Driver씨에게 특별히 감사를 드린다.

만일 잘못된 내용이나 빠진 내용이 있다면 나에게 ambrose@writeme.com으로 제언이나 의견을 보내주기 바란다. 당신의 중요한 제언들이 나중에 이 하우투에 반영될 것이다.

이 하우투는 가장 짧은 시간에 IP Masquerade를 작동시키는 빠른 안내를 의미한다. 나는 전문적인 필자가 아니므로 일반적이지 않고 목적에 벗어난 내용 발견할수 있을 것이다. 최근의 뉴스와 정보는 내가 관리하고 있는 IP Masquerade Resource 웹페이지에서 발견할수 있을 것이다. 만일 만일 IP Masquerade에 관해 기술적인 질문이 있으면 시간이 모자라는 내게 email을 보내기 보다는 IP Masquerade의 개발자들이 당신의 질문에 답할 수 있는 메일링 리스트에 참여하기 바란다.

이문서의 최근판은 IP Masquerade Resource에서 HTML판과 Postscript판을 구할 수 있다.

1.3 판권과 포기

이 문서는 Ambrose Au에게 판권이 있고 자유문서이며 GNU 일반공공면허 아래서 마음대로 재배부할수 있다.

이문서의 정보와 다른 내용들은 내 지식으로 최선을 다한 것이다. 그러나 IP Masqurade는 실험적이고 내가 잘못을 범할 수 도 있으므로 이 문서의 내용에 따를 것인가를 당신이 결정해야한다.

이문서의 내용의 사용으로 인한 손해나 컴퓨터의 손상에 대해 책임질 사람은 아무도 없다.

이 문서의 정보에 의해 행해진 행위 때문에 발생된 어떤 손상도 저자는 책임지지 않는다.

2. 기초지식

2.1 IP Masquerade란 무엇인가?

IP Masquerade는 리눅스 안의 개발되는 네트웍 기능중의 하나이다. 만일 한 리눅스 호스트가 가능한 IP Masquerade를 가지고 인터넷에 연결되었다면 그 호스트에 이떠넷이나 모뎀으로 연결된 다른 컴퓨터들도 공식적으로 할당된 IP주소를 가지지 않더라도 인터넷에 연결될 수 있다.

이것은 컴퓨터들이 인터넷에 사용되는 오직 하나의 컴퓨터로 나타나게 되는 출입로(Gateway) 컴퓨터 뒤에 숨어서 인터넷으로 보이지 않게 접속하는 것을 가능하게 한다. 잘 설치된 Masquerading 컴퓨터의 보안을 깨는 것은 패킷 필터 방식의 방호벽을 깨는 것보다 더 어렵다. (둘다 버그가 없다고 가정할 때)

2.2 현황

IP Masqurade는 아직 실험적인 단계이다. 그러나 1.3.x 이후 커널은 이미 커널 자체에서 지원하고 있다. 많은 사람들과 심지어는 회사들도 그것을 사용하고 결과에 만족하고 있다

웹페이지 보기와 텔넷은 IP Masquerade 상에서 잘 작동한다고 보고 되었다. FTP, IRC 와 리얼오디오 듣기는 적절한 모듈이 있으면 작동한다. 트루 스피치와 인터넷 웨이브와 같은 다른 네트웍 흐름 오디오들도 역시 잘 작동한다. 심지어 메일링 리스트의 몇몇 동료 사용자들은 화상회의 소프트웨어도 시도하고 있다. Ping도 새롭게 사용 가능가능하게 된 ICMP 짜집기(패치)를 사용하면 작동한다.

4.3절에 있는 지원되는 소프트웨어의 전체목록을 참조하기 바란다.

IP Masquerade는 여러 다른 운영체계와 컴퓨터 기종에서 사용자 컴퓨터(Client Machines)으로 잘 작동하고 있다. 유닉스, 윈도우즈 95, 윈도우즈 NT, TCP/IP를 사용한 윈도우즈 웍그룹, OS/2, Mac TCP, Mac Open Transport를 사용한 맥킨토시, NCSA 텔넷을 이용한 도스, VAX, 리눅스를 사용한 알파, 심지어는 AmiTCP 혹은 AS225-stack을 사용한 아미가 등을 사용한 많은 성공한 예가 있다.

2.3 누가 IP Masquerade로부터 이득을 보는가?

  • 당신의 리눅스 호스트가 인터넷에 연결되어 있으면서
  • 당신이 국부적인 네트웍상에서 리눅스에 연결시키기 위해 TCP/IP를 사용하는 몇몇의 컴퓨터를 가지고 있으면서 혹은
  • 당신의 리눅스 호스트가 다른 것들과 연결하는 PPP 혹은 SLIP 서버로서 작동하고 하나 이상의 모뎀을 가지고 있으면서
  • 다른 컴퓨터들이 정식 등록된 IP 주소를 가지지 않으면서(이들 컴퓨터들은 여기서 다른 컴퓨터라고 표현된다.)
  • 그리고 물론 당신이 이들 다른 컴퓨터들을 인터넷에 연결시키기 위하여 추가 비용을 들이기를 원치 않는다면 :)

2.4 누가 IP Masquerade를 필요로 하지 않는가?

  • 당신의 리눅스 호스트가 단독으로 인터넷에 연결된다면 IP Masquerade를 돌린다는 것은 의미없다.
  • 당신의 다른 컴퓨터들이 정식 등록된 IP 주소를 가지고 있다면 IP Masquerade가 필요없을 것이다.
  • 그리고 물론 당신이 '무임승차'라는 발상을 좋아하지 않으면.

2.5 어떻게 IP Masquerade가 작동하는가?

켄 이브스의 IP Masquerade FAQ로 부터

여기에 가장 단순한 설치의 그림이 있다.
      SLIP/PPP         +------------+                         +-------------+
      인터넷으로        |   리눅스     |       SLIP/PPP          | 다른 컴퓨터    |
    <---------- 모뎀1|               | 모뎀2 ----------- 모뎀 |                 |
      111.222.333.444    |              |           192.168.1.100    |                |
                       +------------+                          +-------------+
위의 그림에서 IP Masquerading을 가지는 설치 가동중에 있는 리눅스 상자가 모뎀1을 사용하여 SLIP이나 PPP를 통하여 인터넷에 연결되어 있다.  그것은 할당된 111.222.333.444라는 IP 주소를 가진다.  모뎀2는 사용자가 SLIP 혹은 PPP 연결을 하여 로긴하도록 한다.
리눅스를 돌리지 않는 두 번째 시스템이 리눅스 박스 안으로 SLIP 혹은 PPP 연결을 한다.  그것은 인터넷상의 할당된 IP 주소를 가지지 않으므로 192.168.1.100을 사용한다.(아래 참고)
IP Masquerade와 적절히 구성된 경로(Route)를 가지는 다른 컴퓨터는 몇가지 예를 제외하고는 인터넷에 정말로 연결된 것 같이 사용될수 있다.
폴린 미들링크의 인용:
다른 박스는 리눅스 박스를 그것의 출입로(Gateway)로서 설정되야 한다는 것을 잊지 말기 바란다. (기본 경로(default route)혹은 단지 서브넷(subnet)인가는 문제되지 않는다.)
만일 다른 컴퓨터가 이렇게 설정할수 없다면 리눅스 컴퓨터는 모든 지정된 경로의 주소를 위하여 프록시 알프(proxy arp)를 해야만한다.  그러나 그것은 이 문서의 범위를 벗어나는 일이다.
아래는 comp.os.linux.networking에 올라온 글 중에서 발췌한 것이고 위에서 사용된 이름에 맞도록 편집되었다.
   o 나는 SLIP으로 연결된 리눅스 컴퓨터가 출입로(gateway)라고 다른 컴퓨터가 
     알도록 하였다.
   o 다른 컴퓨터로부터 리눅스 컴퓨터로 하나의 패킷(packet)이 올 때 리눅스 컴퓨터는
     새로운 입력폴트번호(source port number)를 할당하고 
     패킷 헤더(packet header)안의 원래의 IP 주소를 거부하고 원래의 것을 저장한다.  
     리눅스 컴퓨터는 SLIP이나 PPP로부터 넘겨받은 변경된 패킷을 인터넷으로 보낸다.
   o 하나의 패킷이 인터넷으로부터 리눅스 컴퓨터로 올 때 만일 포트 번호가 위에서 할당된
     것들 중 하나이면 원래의 포트와 IP 주소를 가져다가 패킷 헤더에 다시 복구하여 
     다른 컴퓨터로 패킷을 보낸다.
   o 패킷을 보내는 호스트는 절대로 구별할 수 없다.

IP Masquerading의 한 예

아래의 그림이 전형적인 예이다.

    +----------+
    |            |  Ethernet
    |   abox     |::::::
    |            |2   :192.168.1.x
    +----------+    :
                      :   +----------+   PPP   
    +----------+     :  1|  Linux     |   link
    |            |     ::::  | masq-gate |:::::::::// Internet
    |   bbox     |::::::     |            |
    |            |3    :   +----------+
    +----------+     :
                       :
    +----------+     :
    |            |     :
    |   cbox     |::::::
    |            |4    
    +----------+  
                
    <-내부 네트웍->
위의 예에서 우리가 생각해야할 4대의 컴퓨터가 있다. 오른쪽 끝에는 인터넷으로 IP 연결되어 있고 더 오른쪽에는 인터넷상에 서로 정보를 교환해야할 어떤 것이 있다고 가정되어져 있다. 리눅스 컴퓨터의 masq-gate는 인터넷에 연결되야 될 abox, bbox 그리고 cbox라는 컴퓨터들의 내부 네트웍을 위한 Masqurade를 하는 출입로(masquerading gateway)이다. 내부 네트웍은 할당된 개인 네트웍 주소중의 하나를 사용한다. 이 경우 클라스 C의 network 주소인 192.168.1.1과 다른 컴퓨터들은 네트웍상의 하나씩의 주소를 가진다. Windows 95, 매킨토시 MacTCP 혹은 다른 리눅스 컴퓨터와 같은 IP를 사용할 수 있는 다른 운영체계를 가질 수 있는 세 컴퓨터인 abox, bbox 그리고 cbox는 인터넷 상의 다른 컴퓨터들과 연결될 수 있다. 그러나 마스큐레이딩 시스템인 masq-gate는 그들의 접속을 모두 변환해서 그들이 masq-gate로부터 시작되는 것처럼 보이게 하고 마스큐레이드된 연결로 되돌아오는 데이터를 원래의 컴퓨터로 되돌려주게 된다. 그래서 내부 네트웍상의 컴퓨터들은 인터넷으로 직접 통할수 있고 그들의 데이터들이 마스큐레이드되었다는 것을 모르게 된다.

2.6 리눅스 2.x상에서 IP Masquerade를 사용하기위한 요구사항

** 이 HOWTO를 자주 갱신하기 어렵기 때문에 최근의 정보를 위하여 IP Masquerade Resource를 참조하기 바란다. **

3. IP Masquerade의 설치

만일 당신의 개인 네트웍에 중요한 정보가 있다면 IP Masquerade를 사용하기 전에 주의 깊게 생각하라. 이것은 인터넷에 들어가는 당신을 위한 출입구가 될 수 있고 역으로 지구상의 다른 곳의 어떤 사람이 역으로 당신의 네트웍으로 들어올 수도 있다.

3.1 IP Masquerade 지원을 위한 커널의 컴파일

** 이 HOWTO를 자주 갱신하기 어렵기 때문에 최근의 정보를 위하여 IP Masquerade Resource를 참조하기 바란다. **

  • 무엇보다도 먼저 버전 2.0.0혹은 그 이상의 안정 커널 소스가 필요하다.
  • 만일 첫 번째 컴파일이면 겁부터 먹지 마라. 사실 쉽고 Linux Kernel HOWTO를 참조하기 바란다..
  • 커널 소스를 /usr/src/에다 tar xvzf linux-2.0.x.tar.gz -C /usr/src명령을 사용해서 압축을 풀라. 여기서 x는 2.0이상의 패치수준 이다.
    (linux라는 디렉토리가 있나 혹은 심볼릭 링크가 되어 있나 확인하라)
  • 적절한 패치를 적용하라. 새로운 패치들이 나오고 있는 관계로 여기에 자세한 내용은 포함시키지 않았다. 최신의 정보는 IP Masquerade Resources를 참고하기 바란다.
  • 커널 컴파일의 지시사항은 커널 소스 디렉토리안의 README 파일이나 커널 HOWTO를 참고하기 바란다.
  • 여기에 컴파일할 때 필요한 몇가지 선택이 있다.

    아래의 항목에YES라고 대답하라.

      * Prompt for development and/or incomplete code/drivers 
        CONFIG_EXPERIMENTAL 
        - 이것은 실험적인 IP Masquerade 코드를 커널 안으로 컴파일되게 해준다.
      * Enable loadable module support 
        CONFIG_MODULES 
        - 모듈을 적재할 수 있게 해준다.
      * Networking support 
        CONFIG_NET 
      * Network firewalls 
        CONFIG_FIREWALL 
      * TCP/IP networking 
        CONFIG_INET 
      * IP: forwarding/gatewaying 
        CONFIG_IP_FORWARD 
      * IP: firewalling 
        CONFIG_IP_FIREWALL 
      * IP: masquerading (EXPERIMENTAL) 
        CONFIG_IP_MASQUERADE 
        - 비록 실험적이지만 *반드시* 해야 한다.
      * IP: ipautofw masquerade support (EXPERIMENTAL) 
        CONFIG_IP_MASQUERADE_IPAUTOFW
        -추천함
      * IP: ICMP masquerading
        CONFIG_IP_MASQUERADE_ICMP
        - 마스큐페이딩 ICMP 패킷의 지원, 선택사항
      * IP: always defragment
        CONFIG_IP_ALWAYS_DEFRAG 
        - 강력히 추천함
      * Dummy net driver support
        CONFIG_DUMMY 
        - 추천함
    
    주목: 이것들은 단순히 IP Masquerade를 위해 필요한 요소들이다. 당신이 원하는 설치를 위해 다른 것들을 선택하라.

  • 커널을 컴파일한후 꼭 모듈을 컴파일하고 인스톨해야 한다.
    make modules; make modules_install
    
  • 그후 매번 다시 부팅할 때 자동적으로 /lib/modules/2.0.x/ipv4/안에 위치한 필요한 모듈들을 불러들이기 위해 /etc/rc.d/rc.local 혹은 당신 생각에 적절하다고 생각되는 파일안에 몇줄을 더 추가해야 한다.
            .
            .
            .
    /sbin/depmod -a
    /sbin/modprobe ip_masq_ftp
    /sbin/modprobe ip_masq_raudio
    /sbin/modprobe ip_masq_irc
    (그리고 당신이 패치를 적용했다면 p_masq_cuseeme, ip_masq_vdolive 같은 다른 모듈들도 포함되야 한다.)
            .
            .
            .
    
주목: ip_masq를 사용하기 전에 수동으로 설치할 수 있으나 이를 위해 kerneld를 사용하지 말라. 그건 작동하지 않는다!

3.2 내부 IP 주소의 할당

모든 다른 컴퓨터들이 공식적으로 할당된 주소를 가지지 않기 때문에 반드시 컴퓨터들에게 적절한 방법으로 주소를 지정해야 한다.

IP Masquerade FAQ로 부터

외부와 연결되지 않은 네트웍에 사용되는 IP 주소는 RFC (#1597)에 나와 있다. 특별히 이런 목적으로 3종류의 주소들이 있다. 내가 사용하고 있는 것은 192.168.1.n에서 192.168.255.n까지의 255개의 Class-C 하부 넷트웍이다.






sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2004-12-27 02:58:14
Processing time 0.0213 sec