만일 당신의 개인 네트웍에 중요한 정보가 있다면 IP Masquerade를 사용하기 전에 주의 깊게 생각하라. 이것은 인터넷에 들어가는 당신을 위한 출입구가 될 수 있고 역으로 지구상의 다른 곳의 어떤 사람이 역으로 당신의 네트웍으로 들어올 수도 있다.
** 이 HOWTO를 자주 갱신하기 어렵기 때문에 최근의 정보를 위하여 IP Masquerade Resource를 참조하기 바란다. **
/usr/src/
에다 tar xvzf linux-2.0.x.tar.gz -C /usr/src
명령을 사용해서 압축을 풀라. 여기서 x는 2.0이상의 패치수준 이다.linux
라는 디렉토리가 있나 혹은 심볼릭 링크가 되어 있나 확인하라)아래의 항목에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 Masquerade FAQ로 부터
외부와 연결되지 않은 네트웍에 사용되는 IP 주소는 RFC (#1597)에 나와 있다. 특별히 이런 목적으로 3종류의 주소들이 있다. 내가 사용하고 있는 것은 192.168.1.n에서 192.168.255.n까지의 255개의 Class-C 하부 넷트웍이다.
RCF 1597로부터:
Section 3: 내부 주소 공간
인터넷 할당 주소 당국(IANA)은 사설 네트웍을 위한 주소 공간을 아래와 같이 3가지 덩어리로 예약해 놓았다.
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
우리는 24비트 블록으로 첫 번째 덩어리를, 20비트 블록으로 두 번째를, 16비트 블록으로 세 번째를 언급한다. 첫 번째 블록은 단 하나의 A 클라스의 주소이고, 두 번째 블록은 16개의 연속된 B 클라스의 주소이고 세 번째는 255개의 연속된 C 클라스 주소들이다.
만일 C 클라스 네트웍을 사용한다면 반드시 192.168.1.1, 1.92.168.1.2, 1.92.168.1.3, ..., 192.168.1.x 와 같이 번호를 지정해야 한다.
192.168.1.1은 일번적으로 인터넷에 연결되는 리눅스 호스트인 출입로 컴퓨터로 사용된다. 예약된 192.168.1.0와 192.168.1.255은 각각이 네트웍 주소와 방송주소로 사용된다. 이들 주소를 당신의 컴퓨터의 주소로 사용하는 것은 피하라. http://www.pi.se/blox/modules/modules-2.0.0.tar.gz로부터 구할수 있는 2.0.0 혹은 최근의 것이 좋다.
(모듈-1.3.57이 최소한의 필요사항이다.)
각각의 컴퓨터를 위한 적절한 IP 주소를 정하는 것 외에도 역시 적절한 출임구를 정해주어야 한다. 일반적으로 그것은 직접적이다. 단순히 출입로 주소로서 당신의 리눅스 호스트(192.168.1.1)의 주소를 넣어주면 된다.
도메인 네임 서비스를 위해 가능한 어떤 DNS에도 추가할수 있다. 가장 명백한 것은 당신의 리눅스가 사용하는 것이 되어야 한다. 당신은 마찬가지로 어떠한 도메인 찾기 접미사(domain search suffix)를 추가할 수 있다.
이들 IP 주소를 재설정한 뒤에는 적절한 서비스를 재실행 하거나 컴퓨터를 다시 실행시키는 것을 기억하라.
아래의 설정 지시는 리눅스 호스트의 주소로서 192.168.1.1의 C 클라스를 사용하는 것을 가정하고 있다. 192.168.1.0과 192.168.1.255는 예약되어 있다는 것을 주목하기 바란다.
/etc/resolv.conf
안에서 발견된다)를 입력하라. 선택적으로 적절한 도메인 찾기 접미사를 추가할수도 있다.Ping
네트웍 연결을 시험하기 위한 리눅스 컴퓨터: 'Start/Run'한 후, ping 192.168.1.1
을 입력하라.ping
을 할 수 없다.)HOSTS
을 만들어서 당신의 LAN상의 컴퓨터의 호스트 이름을 사용할 수 있다. There is an example called 윈도우즈 디렉토리 안에 HOSTS.SAM
이라는 예제 파일이 있다.
Ping
네트웍 연결을 시험하기 위한 리눅스 컴퓨터: 'Start/Run'한 후, ping 192.168.1.1
을 입력하라.ping
을 할 수 없다.)
[1]Novell NE2000 Adapter
등과 같이 적절한 네트웍카드를 선택하라. 그리고나서 IP 주소를 192.168.1.x (1 < x < 255)로 설정하고 서브넷 마스크를 255.255.255.0로 기본 출입로를 192.168.1.1로 설정하라.Ping
네트웍 연결을 시험하기 위한 리눅스 컴퓨터: 'Start/Run'한 후, ping 192.168.1.1
을 입력하라.ping
을 할 수 없다.)
/etc/sysconfig/network-scripts/ifcfg-eth0
을 수정하거나 단순히 제어판을 통하여 이를 할수 있다./etc/resolv.conf
에 추가한다./etc/networks
를 갱신할 필요가 있다.ping
명령을 해본다: 당신의 출입로 컴퓨터와의 연결을 점검하기 위해서 ping 192.168.1.1
을 사용한다.ping
을 할수 없다.
nwpd 0x60 10 0x300
으로 실행시킨다.pkunzip tel2308b.zip
config.tel
을 연다.myip=192.168.1.x
(1 < x < 255), 와 netmask=255.255.255.0을 지정한다.hardware=packet, interrupt=10, ioaddr=60
을 꼭 지정해준다.
name=default
host=yourlinuxhostname
hostip=192.168.1.1
gateway=1
name=dns.domain.com ; hostip=123.123.123.123; nameserver=1
주의: 당신의 리눅스 호스트가 사용하는 DNS에 관련된 적절한 값으로 바꿔라.
Note: substitute the appropriate information about the DNS that your Linux host usesconfig.tel
파일을 저장하라.telnet 192.168.1.1
Hosts
화일을 선택적으로 만들 수 있으므로 당신의 LAN안에서 컴퓨터들이 호스트 이름을 사용할 수 있다. 그 파일은 당신의 시스템 폴더에 이미 있어야 하고 당신의 필요에 따라서 변경될 수 있는 몇가지 (주석표시가 제거된) 예제들을 가져야 한다.
Hosts
화일을 당신의 시스템 폴더에 만들 수 있고 당신은 당신의 LAN상에서 컴퓨터의 호스트네임을 사용할수 있다. 이 파일은 시스템 폴더안에 있을수도 없을수도 있다. 만일 있다면 당신의 필요에 따라 주석표시를 제거하므로 변경할수 있는 예들을 담고 있다.
만일 없다면 MacTCP를 사용하고 있는 컴퓨터로부터 복사하거나 직접 만들 수도 있다.(RFC 1035의 33페이지에 서술된 것과 같이 /etc/hosts
유닉스 화일 형식을 따른다.) 일단 이화일이 만들어지면 TCP/IP control panel을 열고 'Select Hosts File...'버튼을 클릭한 다음 Hosts
화일을 연다.
c:\nwclient\startnet.bat을 편집하라: (아래는 내 것의 사본이다.)
SET NWLANGUAGE=ENGLISH LH LSL.COM LH KTC2000.COM LH IPXODI.COM LH tcpip LH VLM.EXE F:
c:\nwclient\net.cfg을 편집하라: (링크 드라이버를 당신것에 맞게 바꾼다. 예: NE2000)
Link Driver KTC2000 Protocol IPX 0 ETHERNET_802.3 Frame ETHERNET_802.3 Frame Ethernet_II FRAME Ethernet_802.2 NetWare DOS Requester FIRST NETWORK DRIVE = F USE DEFAULTS = OFF VLM = CONN.VLM VLM = IPXNCP.VLM VLM = TRAN.VLM VLM = SECURITY.VLM VLM = NDS.VLM VLM = BIND.VLM VLM = NWP.VLM VLM = FIO.VLM VLM = GENERAL.VLM VLM = REDIR.VLM VLM = PRINT.VLM VLM = NETX.VLM Link Support Buffers 8 1500 MemPool 4096 Protocol TCPIP PATH SCRIPT C:\NET\SCRIPT PATH PROFILE C:\NET\PROFILE PATH LWP_CFG C:\NET\HSTACC PATH TCP_CFG C:\NET\TCP ip_address xxx.xxx.xxx.xxx ip_router xxx.xxx.xxx.xxx
c:\bin\resolv.cfg을 만들라:
SEARCH DNS HOSTS SEQUENTIAL NAMESERVER 207.103.0.2 NAMESERVER 207.103.11.9
'ping 192.168.1.1'
을 입력한다. 핑 패킷이 도착한다면 모든 것이 제대로 된것이다.
설치를 위해서 같은 이론이 따라야 한다. 위의 섹션들을 점검하라. 당신이 이들 시스템에 관하여 흥미를 가지고 있다면 자세한 설치방법을 ambrose@writeme.com으로 보내주세요.
지금 시점에서 당신은 당신의 모듈이 적재되야 함은 물론 당신의 커널과 다른 요구되는 꾸러미들을 설치되었어야 한다. 또한 IP 주소, 출입로 그리고 DNS가 다른컴퓨터에 설치되어 있어야 한다.
지금 오직 해야 할 일은 적절한 컴퓨터로의 적절한 패킷을 전달하기 위해 ipfwa으을 사용하는 것이다.
** 이것은 많은 다른 방법들로 이루어 질수 있다. 따르는 제안이나 예들은 내경우에 작동했지만 당신은 다른 생각을 가질 것이므로 더 자세한 것은 섹션 4.4와 ipfwadm 맨패이지를 참조하라. **
ipfwadm -F -p deny
ipfwadm -F -a m -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0
x는 당신의 서브넷의 클라스에 따르는 숫자들 중에 하나이고 yyy.yyy.yyy.yyy는 네트웍 주소이다.
netmask | x | Subnet
~~~~~~~~~~~~~~~~|~~~~|~~~~~~~~~~~~~~~
255.0.0.0 | 8 | Class A
255.255.0.0 | 16 | Class B
255.255.255.0 | 24 | Class C
255.255.255.255 | 32 | Point-to-point
예를들면 만일 클라스 C 서브넷이면 아래와 같이 입력할 것이다.
ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
bootp는 클라이언트가 모르는 정당한 IP없이 오는 패킷을 요구하기 때문에 마스큐레이드/화이어월 컴퓨터안의 bootp서버를 가진 사람들을 위해서 deny 명령을 사용하기 전에 아래의 내용이 필요하다:
ipfwadm -I -a accept -S 0/0 68 -D 0/0 67 -W bootp_clients_net_if_name -P udp
당신은 또한 컴퓨터당 기분으로 할수도 있다. 예를들면 내가 192.168.1.2와 192.168.1.8을 인터넷에 접속하기를 원하고 다른 것은 못하게 하고자 한다면 나는 아래와 같이 입력해야 한다.
ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0
ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0
선택적으로 당신은 그 값대신에 넷마스크를 사용할수 있다. 예: 192.168.1.0/255.255.255.0
일반적인 실수를 범하게 되는 것이 첫 번째 명령을 다음과 같이 만드는 것이다.
ipfwadm -F -p masquerade
기본 정책으로 마스큐레이드를 만들지 말라. 그렇지 않으면 그들의 루팅을 조절할할 수 있는 이들이 당신의 출입로를 통하여 곧장 터널을 만들어 그들이 누구인가를 가리는데 사용될수도 있다.
다시 당신은 /etc/rc.local
혹운 당신이 선호하는 어떠한 rc화일에 이 명령들을 추가하거나 IP 마스큐레이딩이 필요할 때마다 일일이 수작업으로 할수 있다.
ipfwadm에 대한 자세한 안내는 4.4 섹션을 읽기 바란다.
지금이 모든 힘든 일들을 마치고 시도해볼 때다. 리눅스 호스트가 인터넷에 제대로 연결되어 있는가 확인하라.
당신은 다른 컴퓨터상에서 몇몇 '인터넷!!!' 웹사이트를 보려고 시도할수 있고 만일 제대로 되었다면 볼 것이다. 당신의 DNS 설정이 잘못될 수도 있기 때문에 나는 첫 번째 시도에서 호스트네임보다는 IP 주소를 사용하기를 권한다
예를들면 http://152.2.254.81/mdw/linux.html에 입력으로 리눅스 문서 프로젝트 사이트 http://sunsite.unc.edu/mdw/linux.html에 접속할수 있다.
만일 돗단배를 본다면 축하! 작동합니다. 당신은 무엇이든 IP 마스큐레이딩에 의해 지원되는 호스트이름, 텔넷, ftp, 리얼오디오, 트루 스피치 등으로도 시도해볼수 있다.
지금까지, 위의 설정으로 아무런 문제가 없었다. 이런 훌륭한 기능을 작동하게 만들기 위해 자기의 시간을 소비하는 사람들의 큰 명예이다.