Networks Admin

본문 바로가기

Networks Admin

Networks >> Networks Administration
[목차]
제4장 ip-masquerade를 이용한 인터넷 카페

    3. IP Masquerade 지원을 위한 커널 컴파일하기

2.1 커널 컴파일하기

IP Masquerade 지원을 위해서는 무엇보다도 먼저 버전 2.0.0혹은 그 이상의 안정 커널 소스가 필요하다. 만일 첫 번째 컴파일이면 겁부터 먹지 말고 Linux Kernel HOWTO나 README를 참조하는 것을 잊지말기 바란다. 사실 쉽고 간단하다. 현재 알짜 리눅스 5.2을 설치했다면, 다른 커널 소스를 준비할 필요는 없다. 컴파일할 때 다른 부분은 일반적인 경우와 다름이 없으며, make config에서 아래의 항목에 (Y)es라고 대답해야 한다. 가능하다면 X-Window에서 make xconfig로 설정하고, 설정사항을 저장해 두면 다시 컴파일할 때 간편하다. 커널 컴파일은 다음과 같은 순서로 진행한다.

# cd /usr/src/linux
/usr/src/linux-2.0.36이라는 디렉토리 밑에 커널 소스가있다. 2.0.36는 커널의 버젼을 의미한다. 위의 cd /usr/src/linux는 linux-2.0.36디렉토리를 linux라는 이름으로 링크하였기 때문에 가능하다. 만약 링크가 않됬다면 cd /usr/src/linux-2.0.36 이라고 해야 한다.

# make xconfig
kernel configuration 대화 상자는 여러개의 버튼형식으로 분류된다. 아래의 항목에 맞는 버튼을 누르면, 각 항목의 대화 상자가 나타난다. 대화 상자안에서 아래 내용의 (Y)es 부분을 클릭하여 선택하여야 한다.

Loadable module support
* Enable loadable module support - 모듈을 적재할 수 있게 해준다.

General setup
* Networking support

Networking options
* Network firewalls
* TCP/IP networking
* IP: forwarding/gatewaying
* IP: firewalling
* IP: masquerading (EXPERIMENTAL) - 비록 실험적이지만 반드시 해야 한다.
* IP: ipautofw masquerade support (EXPERIMENTAL) -추천함
* IP: ICMP masquerading - 마스큐페이딩 ICMP 패킷의 지원, 선택사항
* IP: always defragment - 강력히 추천함

Network device support
* Dummy net driver support - 추천함

대화 상자의 아래 부분에 보면, [Save and Exit] 버튼이 있다. 과감히 누르자. 다시 대화 상자가 뜨면 [OK]버튼을 누른다. 이렇게 하면, 커널 컴파일 할 준비가 되었다.

이것들은 단순히 IP Masquerade를 위해 필요한 요소들이다. 당신이 원하는 설치를 위해서는 다른 것들을 선택해야 한다..

# make dep
컴파일에 관련된 의존성(Dependency) 관계를 구축하는 과정이다.

# make clean
이전 컴파일 과정에서 남아 있을지 모르는 오브젝트 파일 .o를 모두 지워준다.

# make zImage
커널 이미지를 만드는 명령이다. 커널 컴파일이 정상적으로 종료하면 /usr/src/linux/arch/i386/boot디렉토리 밑에 zImage라는 이름의 커널 이미지 파일이 생성된다.

# make modules
커널 설정시 모듈로 설정한 기능을 컴파일 하는 명령이다.

# make modules_install
일단 모듈이 만들어지면, 위의 명령으로 모듈을 /lib/modules/2.0.36디렉토리 밑에 복사한다. 일반적으로 같은 버전의 커널을 다시 한번 컴파일하여 설치하는 경우에는 기존의 모듈 디렉토리를 먼저 삭제하여 예전에 만든 모듈과 새롭게 만든 모듈이 섞이지 않도록 하는 것이 좋다. 다시 컴파일한다면, make modules_install명령을 실행하기 전에 아래와 같이 해주면 좋다.

# cd /lib/modules
# rm -rf 2.0.36

# cp arch/i386/boot/zImage /boot
새로 만들어진 리눅스 커널(zImage)을 booting에 사용되는 디렉토리인 /boot디렉토리로 복사한다.

2.2 lilo를 설정하여 멀티부팅하기

# cd /etc
# vi lilo.conf

아래와 같이 추가해주면, 멀티 부팅이되어 이전 리눅스 커널과 새로 컴파일한 커널을 선택하여 부팅할 수 있게 된다.

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/zImage label=linux root=/dev/hda1 read-only
image=/boot/vmlinuz-2.0.36-1kr label=linux1 root=/dev/hda1 read-only

# lilo
lilo를 실행하므로써 방금전에 추가한 멀티부팅 정보가 저장되어 재부팅을 하면, 멀티부팅을 선택할 수 있게 된다. 만약하지 않는다면, 멀티부팅은 되지않고 이전 리눅스 커널로 재부팅이 된다.

2.3 IP-Masquerading 설정하기

ipfwadm(IP Firewall Adminastration)이라는 파이얼월(방화벽) 관장 프로그램을 실행하면 ip-masquerade가 동작하게 된다. 그러나 부팅할 때마다 이명령을 실행할 수 없으므로 부팅시에 반드시 실행하는 rc.local 넣어 부팅할 때마다 이 명령이 실행하도록 한다.

# cd /etc/rc.d

# vi rc.local
ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.10/24 -D 0.0.0.0/0

위의 부분을 rc.local파일 안의 적당한(맨 아래) 부분에 추가한다. 192.168.1.10를 사용하는 클라이언트는 gw.kornux.co.kr(192.168.1.254)의 IP를 사용하는 ip-masq 게이트웨이를 통해 인터넷에 접속하게 된다. 여러대의 클라이언트가 있을 경우에는 ipfwadm -F -a m -S 192.168.1.20/24 -D 0.0.0.0/0부분을 추가하면 된다. 바뀌는 부분은 ip부분뿐이다. ipfwadm 의 사용 방법은 자세히 다루지 않고 몇가지만 요약한다. -S 다음에는 윈도우 클라이언트의 IP Address를 적어주면 된다. ip 뒤에 따라오는 24는 서브넷마스크이며 여기에서 192.168.1.10은 C class 에 속하므로 24대신에 255.255.255.0를 적어주어도 상관없다.

2.4 재부팅하기

자 이제 정상적으로 설정되었는지 확인하기 위해서 재부팅을 하자.

# shutdown -r now

정상적으로 재부팅이 되었다면, 다음장의 PPP 네트워크 설정부분을 진행하자. 오류부분이 발생했다면, 어느부분인가를 확인하고, 앞의 단계를 다시 점검하자.

[목차]

Copyright © LEELAB.CO.KR. All rights reserved.