[네트워크] ipchains 를 이용한 마스커레이딩…

IP 마스커레이드(masquerade)는 IP chains에서 제공하는 체인(chain)의 하나

입니다. 네트워크 하나에 공인(public) IP 하나만 할당되어 있을 경우 다른 호스트가

IP 마스커레이드를 지원하는 호스트를 통해 네트워킹이 가능하게 하는 기능입니다.

또 이것은 리눅스 박스가 IP 주소를 masquerade/demasquerade 해주는 기능

입니다.

공인 IP 하나를 리눅스 박스가 사용하는 일반적인 형태로, 리눅스 서버를 네트워크

가 가능한 형태로 설정합니다.

이후 랜카드를 추가로 장착(마스커레이드를 IP aliasing을 이용하여 하나의 랜카드

로 이용할 수 이씾만 랜카드 두 장을 사용할 것을 권장합니다)하고,

둘째 랜카드에 IP 주소를 192.168.0.1 로, 넷마스크를 255.255.255.0으로 설정

합니다.

이때 둘째 랜카드에서 허브까지 랜케이블을 연결하고 네트워킹을 원하는 나머지

호스트 역시 랜케이블을 이용하여 허브까지 연결합니다.

그런 다음 나머지 컴퓨터는 192.168.0.0 네트워크에 포함되는 클라이언트로 구성

하기 위해 IP 주소는 192.168.0.2~192.168.0.254 사이의 값을 할당합니다.

이때 넷마스크는 255.255.255.0 값을 적용합니다. 이러한 클라이언트가 사용할

게이트웨이는 마스커레이드를 지원하고 리눅스 박스의 둘째 랜카드 IP 주소인

192.168.0.1을 설정합니다.

리눅스 박스의 마스커레이드

이제 리눅스 박스가 마스커레이드를 지원해야 하는데, 3가지 단계를 거쳐 설정합니다.

1단계: 먼저 리눅스 박스가 패킷 포워드를 할 수 있는 상태여야 합니다.

2단계: 커널 차원에서 마스커레이드를 지원해야 하고 모듈로 설정되어 있을 경우에는

해당 모듈이 메모리에 적재해야 합니다.

3단계: 마지막으로 마스커레이드를 적용할 룰셋(ruleset)을 설정합니다.

지원 과정의 단계별 설명

패킷을 포워드 가능 여부 점검 및 설정

[ root@neo /root]# cat /proc/sys/net/ipv4/ip_forward

위의 명령어를 수행했을 때 0이 나오면 포워드를 할 수 없는 상태이고, 1이 나오면

포워드를 할 수 있는 상태가 됩니다.

만일 0이 나온다면 /etc/sysctl.conf 파일을 통해 해당 시스템을 포워드할 수 있게

변경해야 합니다.

다시 말해 /etc/sysctl.conf 파일에서 net.ipv4_forward = 1 로 설정한 후 이값을

시스템에 적용합니다.

[ root@neo /root]# sysctl -p

이제 리눅스 박스는 포워드를 할 수 있는 시스템으로 설정되었고 시스템 재부팅 이후

에도 같은 값이 설정됩니다.

이것은 둘째 커널에서 기능을 지원해야 하고 이 영역은 커널을 컴파일할 때 설정해야

합니다.

커널 컴파일 할 때 설정해야 할 부분

Code maturity level options 부분

-> Prompt for development and/or incomplete code/driver (y)

Loadable modle support 영역

-> Enable loadable module support (y)

-> Set version information on all module symbols (y)

-> Kernel module loader (y)

General setup 영역

-> Networking support (y)

Networking options 영역

-> TCP/IP networking (y)

-> Network packet filtering (replace ipchains) (y)

IP : Netfilter Configuration 영역 내부 모드 (m)

Network device support 영역

-> Dummy net driver support (m)

일반적으로 배포판은 마스커레이드 기능이 모듈로 처리되어 있습니다.

과거의 ipchains에서 사용하던 기능은 모두 ipchains.o 모듈에 포함되어 있어서

iptables와 호환하여 모든 기능을 수행합니다.

/lib/modules//kernel/net/ipv4/netfilter/ipchains.o

모듈을 메모리에 적재

modprobe ipchains

이것으로 리눅스 박스가 마스커레이드를 처리할 능력이 생기게 됩니다.

부팅할 때 자동으로 모듈을 메모리로 적재하려면

/etc/rc.local 파일의 마지막 행에 해당 명령어를 추가합니다.

패킷 처리에 대한 규칙 설정(IP chains 사용)

ipchains -P forward DENY

ipchains -A forward -s 192.168.0.0/24 -d! 192.168.0.0/24 -j MASQ

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.