Skip to content

Maskrading

조회 수 61982 추천 수 0 2008.11.11 07:32:18

Maskrading


 

랜카드 모드 활성화 되어 있다고 생각하고
eth0 --> 인터넷 연결 랜카드
eth1 --> 클라이언트 연결 랜카드.

eth1 리눅스 설치시 저는 ip 를 잡아 주었습니다.
ip : 192.168.x.x (저는 192.168.10.1 로 하였습니다)
서브넷 마스크는 (255.255.255.0)

(클라이언트 pc 설정은 아시겠죠? IP : 192.168.10.2
N/M : 255.255.255.0
G/W :192.168.10.1 :

모든게 활성화가 되었다고 생각하고 설명 하겠습니다.

1 - network 파일 수정
vi /etc/sysconfig/network
NETWORKING=yes
GATEWAYDEV=eth0(외부연결용 랜카드)
FORWARD_IPV4=yes    // 이 부분이 없을 겁니다. 저 부분을 아무 데나 추가해주세요.
(또는
#netcfg 하셔서 routing쪽을 셋팅하시면 위와 같은 설정이 /etc/sysconfig/network에 저장됩니다.)

2 - sysctl.conf 파일 수정
vi /etc/sysctl.conf

net.ipv4.ip_forward = 1   //이부분은 1이 아닌 0으로 되어 있을건데요 저부분을 1로 바꿔주세요.

( 1. 리눅스에서 하나의 랜카드로 네트워크를 사용하도록 구현한다.
-->eht0 장치에 대한 정보가 저장되어 있는 파일(/etc/sysconfig-network-scripts/ifcfg-eth0)의
BOOTPROTO 값을 dhcp를 설정한 후 네트워크 초기화 스크립트(/etc/init.d/network)를 재구동할 경우
바로 네트워크를 사용할 수 있습니다.

 2. 두번째 랜카드를 추가하여 사설IP주소를 할당한다.
--> /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=192.168.0.1
NETMASK=255.255.255.0
ONBOOT=yes
)

3 - network 재시동

설정한 내용을 적용하기 위해 네트워크 초기화 스크립트를 다시 실행합니다.
/etc/rc.d/init.d/network restart

4 - ip forward 확인

cat /proc/sys/net/ipv4/ip_forward

이걸 타이핑 했을 경우.. 숫자가 1이라고 출력이 된다면 우선적으론 모든게 된겁니다.
0이란 숫자가 나오는것 아직 한번도 보지 못했지만 혹시 0이라고 출력된다면.
1~3 번 과적을 재 확인 해주세요...


5 - iptables masquerade 구동 부분

iptables 명령어를 이용하여 192.168.0.0 네트워크에서 출발하는 패킷이 eth0 장치를 사용하여 전송될 경우
매스커레이드를 적용하는 룰셋을 지정합니다.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables로 설정한 룰셋은 iptables -L -t nat 명령어를 사용하여 확인할 수 있습니다.

iptables -L -t nat

6 - 클라이언트 확인

win2000 이상계열 은 아이피만 바꿔주면 바로 아무 이상 없이 될겁니다.

7 - rc.local
컴퓨터 부팅 될때 자동으로 masquerade 적용하기..

vi /etc/rc.d/rc.local 파일 수정

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

위 문구 추가 해주시고 나면 됩니다..

( iptables로 설정한 룰셋은 재부팅할 때 적용되지 않습니다.
  iptables 패키지는 설정한 룰셋을 저장하여 시스템 부팅할 때 자동으로 적용하기 위해
  /etc/init.d/iptables 및 /etc/sysconfig/iptables 파일을 제공하고 있습니다.
  /etc/sysconfig/iptables 파일은 iptables로 설정한 룰셋을 저장하는 파일로 다음 명령어를 이용하여
  현재 시스템에 적용된 룰셋을 저장하실 수 있습니다.
#/etc/init.d/iptables save
현 규칙들을 /etc/sysconfig/iptables:로 저장하고 있습니다: [ 확인 ]
#cat /etc/sysconfig/iptables
....
[0:0] -A POSTROUTING -o eth0 -j MASQUERADE
....

)

Linux IP setting

 # hostname, gateway
 vi  /etc/sysconfig/network

 # ip, hostname
 vi  /etc/hosts

 # ip, hostname, net, broadcast
 vi  /etc/sysconfig/network-scripts/ifcfg-eth0

 # nameserver
 vi  /etc/resolv.conf

( vi  /etc/sysconfig/i18n               LANG="ko_KR"    // language selection   )

 /etc/rc.d/init.d/network  stop(start/restart)

 

1. NAT(Network Address Translation)란?
 (1) 개요: 컴퓨터에서 인터넷을 사용하려면 IP주소를 부여받아야 한다. 보통 이러한 IP를 공인 IP라
          부른다. 그러나 IP주소는 폭발적인 인터넷 사용인구의 증가로 IP가 부족해지는 현상이 나
          타났다. 이러한 부족현상을 해결하는 방안중의 한 기술이 NAT이다.
 (2) 정의: NAT란 말 그대로 네트워크의 주소를 변환하여 주는 역할을 하는 것이다. 즉 한개의 공인
          IP주소를 가지고 있는데 여러개의 컴퓨터를 사용하려는 경우처럼 한대의 컴퓨터에 공인
          IP를 부여하고 나머지는 사설 IP를 부여하여 인터넷사용시에는 공인IP를 공유하여 사용할
          수 있도록 해주는 기술이다.

2. NAT의 사용예
 (1) 여러 대의 피시에서 한 개의 IP를 공유하여 인터넷을 사용하는 경우
      => 공인된 IP가 부여된 컴퓨터에는 랜카드를 두개를 장착하여 하나는 공인IP를 부여하고 다른
        하나는 사설IP가 부여된 사설네트워크 연결을 위해 사설IP를 부여하여 인터넷을 공유할 수
        있다.
 (2) 한 개의 IP주소(도메인네임)에 여러 대의 서버를 연결하는 경우
      => 부하분산을 위해 한 개의 도메인네임(FQDN)에 대해 여러 대의 서버를 운영하는 경우에도 
        NAT를 사용한다. 즉, www.linux.ac.kr 도메인 한개에 웹서버, 메일서버, FTP서버를 따로 
        운영하는 경우 부하평준하(Load Balance) 기능도 구현이 가능하다. 예를 들면 웹서버는
        192.168.0.1, 메일서버는 192.168.0.2 등 이런 방법으로 구현이 가능하다.
 (3) 투명프락시
      => 학원에서 인터넷을 강의하는 경우처럼 동일 네트워크에 연결된 여러 대의 PC에서 동시에 
        같은 사이트를 연결한다. 이 경우 프록시 서버를 이용하면 그 해당사이트를 프록시서버에서
        참조해 보다 빠른 접속을 할 수 있다. 이런 프록시 서버를 이용하려면 각 컴퓨터에 설치된
        웹브라우저에서 프록시서버를 지정해 주어야 한다. 리눅스에 프록시서버를 설정하면 리눅스
        를 통과하는 패킷은 자동으로 리눅스에 설치된 프록시서버 프로그램(SQUID 같은)으로 연결
        된다.

3. iptables에서 NAT의 분류
 (1) 개요: iptables에서는 크게 두 부류의 NAT로 분류한다. 위 (1)의 경우를 SNAT(Source NAT)라 
          하고 (2)와 (3)의 경우를 DNAT(Destination NAT)라 분류한다. 
 (2) 종류
   1) SNAT: 패킷의 소스 어드레스를 변경한다는 의미이다. 즉 내부 어드레스인 192.168.1.2인 컴
           퓨터가 다른 웹사이트(예를 들면 www.debian.org)를 접속하면 203.247.XX.XXX 처럼 공인
           IP로 나타나기 때문이다. SNAT는 라우팅(경로) 결정 이후에 이루어진다.(Post-routing)
           패킷의 목적지주소는 이미 정해져 있으므로(www.debian.org) 라우팅 경로는 결정되어 
           있고 패킷의 소스 주소가 리눅스를 떠나기 직전에 변경된다.(192.168.1.1 => 203.247.xx
          .xxx)
   2) DNAT: 위의 개념과 반대되는 것으로 NAT를 시행하는 리눅스에서 패킷의 목적지 주소를 변경한
           다. 패킷의 목적지 주소가 먼저 변경되고 그 변경된 주소에 의거하여 새로운 라우팅 경로
           를 찾는다. 즉 DNAT는 라우팅 이전 단계에서 작용한다.(pre-routing)

4. iptables를 이용한 설정
 (1) SNAT(Source NAT): 기존의 IP Masquerade를 말한다.
   1) 사용법
     iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.50.3
     iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.50.3-203.247.50.7
     iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.50.3:1-1023
       => -o는 패킷을 보내는 인터페이스 장치를 지정한다. SNAT에서는 패킷을 내보내는 장치를 
         지정할 수 있다. --to 는 나가는 패킷에 부여할 소스 주소이다. IP공유라면 --to는 인터넷
         쪽의 공인 IP를 지정하면 된다.(지정하지 않아도 상관없다.)
   2) 사용예
    ㄱ. 한국통신 ADSL을 리눅스에 연결해 인터넷을 공유(IP MASQUERADING)하는 경우
       iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    ㄴ. 고정 IP를 사용하는 리눅스에서 인터넷을 공유하는 경우
       iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 203.247.50.3
         => 참고로 192.168.0.0/24는 지정하지 않아도 된다.
    ㄷ. 유동 IP를 사용하여 인터넷을 공유하는 경우
       iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   3) 설정의 확인
     iptables -t nat -L 
  (참고) 위 설정이외에도 다음과 같은 명령을 내려서 포워딩이 가능하게 해야 한다.
       echo 1 > /proc/sys/net/ipv4/ip_forward
 (2) DNAT(Destination NAT)
   1) 개요: DNAT는 부하분산이나 평준화에만 사용하는 것은 아니다. 간단한 방화벽으로도 유용하다.
           리눅스A(203.247.50.3)에 DNAT를 설정하여 웹서버와 메일서버를 각각 내부주소인 리눅스B
           (192.168.1.11)와 리눅스C(192.168.1.12)에서 서비스 하도록 지정하고 인터넷에서 다른 
           연결은 리눅스A로 지정하면 리눅스A는 간단한 방화벽과 같은 구실을 한다.
   2) 사용예
    ㄱ. 웹서버(192.168.1.11) 분산
     iptables -A PREROUTING -t nat -p tcp -d 203.247.50.3 --dport 80 -j DNAT \
     --to 192.168.1.11:80
       => (설명)
         - -A PREROUTING: DNAT는 먼저 목적지 주소를 변경하고 (203.247.50.3을 192.168.1.11로) 
          다음에 라우팅이 이루어진다.
         - -t nat: 부하분산도 nat기능이다.
         - -p tcp: 웹(www)은 tcp를 사용한다.
         - -d 203.247.50.3 --dport 80: 들어오는 패킷의 목적지 주소가 203.247.50.3이고 포트번호
          가 www(80번)인 경우만 이 규칙을 적용한다.
         - j DNAT: destination NAT
         - --to 192.168.1.11:80 => 패킷의 목적지 주소를 192.168.1.11 포트번호를 80번으로 설정
          하라는 뜻이다. 192.168.1.11 서버에서는 80번 포트에서 웹서버 프로그램을 가동해야 한
          다.
    ㄴ. 메일서버(192.168.1.12)
       iptables -A PREROUTING -t nat -p tcp -d 203.247.50.3 --dport 25 -j DNAT 192.168.1.12:
       25
    ㄷ. DNS서버를 192.168.1.10으로 변경하려면 다음과 같이 지정한다.
       iptables -A PREROUTING -t nat -p udp -d 203.247.50.3 --dport 53 -j DNAT --to 192.168.\
       1.10:53
        => DNS는 UDP를 사용한다.
   3) 설정의 확인
     iptables -t nat -L
      => 설정을 보통 포트이름등으로 보여준다.
     iptables -t nat -nL
      => 설정을 포트넘버등 숫자로 보여준다.
   4) 설정의 해제
     iptables -t nat -F

5. iptables를 이용한 투명프록시 구현
 (1) 투명프록시란?
  투명프록시는 내부 네트워크의 웹브라우저에서 프록시서버를 지정하지 않아도 강제로 프록시서버를
 사용하게 하는 설정이다. 프록시를 설정하는 경우의 이점은 캐시를 사용하므로 인터넷 접속 속도를
 빠르게 할 수 있다.
 (2) iptables에서 설정
   1) squid 프록시서버를 작동시킨다.
   2) 리눅스 서버의 인터넷쪽에 연결된 랜카드의 인터페이스명이 eth0(203.247.50.3), 내부랜인 
     eth1의 주소가 192.168.2.1이라면 다음과 같이 명령을 내린다.
      iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
        => (설명)
          ㄱ. -t nat: 투명프록시도 패킷의 주소를 변경하는 설정이므로 nat이다.
          ㄴ. -A PREROUTING: 투명프록시는 패킷의 주소를 변경하는 작업이 경로를 찾는 것보다 
                            우선한다.(즉 라우팅보다 우선한다.:Pre Routing)
          ㄷ. -i eth1: 변경할 패킷이 들어오는 장치를 지정한다. 내부랜이 eth1에 연결되어 있고 
                      이 랜에 연결된 내부 네트워크 시스템들은 이 리눅스를 통해 인터넷을 사용\
                      하므로 들어오는 패킷의 장치명은 eth1이다.
          ㄹ. -p tcp: 들어오는 패킷 중 tcp프로토콜만 nat를 적용한다는 뜻이다. www(80)연결은 
                     tcp를 사용한다.
          ㅁ. --dport 80: 들어오는 패킷의 목적지 포트가 80번(www)인 경우에만 nat를 적용한다는
                         뜻이다. 따라서 ftp, telnet등은 적용을 안 받는다.
          ㅂ. -j REDIRECT: 투명프록시는 리눅스 내부에서 패킷의 입력포트번호를 변경해 주는 방법
                          이다.
          ㅅ. --to-port 3128: 들어오는 패킷의 목적지 포트번호를 3128번으로 변경하는 뜻이다. 목
                             적지의 IP주소는 지정하지 않았으므로 모든 인터넷 웹 검색에 대해 
                             투명프록시가 적용된다.
 (3) 확인 
   iptables -t nat -L
 (4) 다른예
   (조건) 투명프록시가 설치된 리눅스 서버에 웹서버를 설치해도 상관없다. 그런데 192.168.2.x네트
        워크에서 자신의 웹서버 데이터를 접근할 때도 프록시 서버를 공유한다는 것은 아무런 의미가
        없다. 웹서버에서 읽을 때는 홈페이지 디렉토리에서 찾고 프록시에서 찾을 때는 프록시서버의
        캐시 디렉토리에서 찾는 차이밖에 없다. 자신의 홈페이지 데이터를 내부랜에서 수시로 변경하
        는 경우는 오히려 프록시서버 캐시 디렉토리에서 찾으면 문제가 된다. 캐시가 지워지지 않는
        한 변경된 홈페이지 데이터를 볼 수가 없다. 그래서 내부랜(192.168.2.x)의 윈도우에서 192.
        168.2.1리눅스 서버의 변경된 홈페이지 데이터를 즉시 확인해야 한다면 http://192.168.2.1
        명령시에는 투명프록시가 작용하지 않아야 한다. 그 방법은 아래와 같다.
         iptables -t nat -A PREROUTING -i eth1 -p tcp -d ! 192.168.2.1 --dport 80 -j REDIRECT
        --to-port 3128
          => 처음의 기본설정에 -d ! 192.168.2.1을 추가하였다.(참고로 !과 192.168.2.1사이에는 
            공백이 필요) 즉 들어오는 패킷의 목적지주소(검색사이트)가 192.168.2.1이면 투명프록
            시를 적용하지 말라는 뜻이다.
 (5) 설정해제
    iptables -t nat -F
 (6) www외의 인터넷 연결에 대한 nat설정
   1) 설명: 주의할 것은 투명프록시는 오직 http 즉 www(80)검색만 해당되고 telnet이나 ftp는 적용
           되지 않으므로 내부랜에서 인터넷의 다른 호스트에 telnet 및 ftp를 사용하려면 추가로
           SNAT를 설정해 주어야 한다. 
   2) 설정
     iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j SNAT --to 203.247.50.3
      => (설명)
        ㄱ. -A ROSTROUTING
        ㄴ. -s 192.168.2.0/24: 192.168.2.0 네트워크로부터의 패킷에만 SNAT를 적용한다.
        ㄷ. -o eth0 : 패킷이 나가는 장치를 말한다. (eth0이 인터넷에 연결되어 있다.)
        ㄹ. -j SNAT: Source NAT를 말한다. 소스 주소(192.168.2.x)를 변경한다는 뜻이다.
        ㅁ. --to 203.247.40.3: 소스 주소를 203.247.50.3으로 변경하라는 뜻이다.
   3) 확인
     iptables -t nat -L
 (7) 참고
    투명프록시가 적용되려면 인터넷에 나가는 패킷이 투명 프록시가 설정되어 있는 리눅스를 통과해
   야 한다. 통과하지 않는 패킷에 대해서는 포트의 방향을 변경할 방법이 없다. 따라서 투명프록시
   를 사용하는 모든 내부 컴퓨터의 디폴트 게이트웨이는 리눅스에 부여된 내부 IP주소이어야 한다.
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/699/e40/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
27 외국 자료실 (Unix Linux Windows) ADMINPLAY 2009-02-04 18930
26 파일시스템 체크 ADMINPLAY 2009-01-22 20163
25 top 명령어 정리 ADMINPLAY 2009-01-10 18652
24 콘솔에서 로그인이 안될때 ADMINPLAY 2008-12-29 21289
23 OS 종류 및 버전확인 ADMINPLAY 2008-12-23 21729
22 마우스 오른쪽 버튼 막기... ADMINPLAY 2008-12-14 19111
21 /var 디렉토리 용량이 갑자기!!! ADMINPLAY 2008-12-14 20270
20 CentOS 5 32bit에서 메모리 4G 지원하기 ADMINPLAY 2008-12-10 20883
19 single mode readonly 파티션 rw로 다시 마운트 ADMINPLAY 2008-12-10 23354
18 실시간 접근정보 확인 ADMINPLAY 2008-12-10 22122
17 kernel panic 발생 시 자동으로 리부팅 설정 ADMIN 2008-12-10 24127
16 서버 점검 : 자원 및 apache, mysql ADMIN 2008-12-10 23513
15 리눅스에서 실수로 삭제한 파일을 복구 ADMIN 2008-12-10 23637
14 각종 데몬 이름 및 설명 ADMIN 2008-11-25 13825
13 리눅스 - 하드디스크 추가, 파티션 및 마운트 ADMIN 2008-11-12 18315
12 리눅스 전원부터 부팅이 되기까지의 과정이해 ADMIN 2008-11-11 60813
» Maskrading ADMIN 2008-11-11 61982
10 강제로 언마운트 하기 ADMIN 2008-11-11 20550
9 부분적으로 yum 업데이트 하고 싶을때 ADMIN 2008-11-10 17118
8 리눅스에서 계정 생성시 자동으로 디렉토리가 생성되게 하... ADMIN 2008-11-04 21658

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234