::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2004-06-16 11:22:49, Hit : 11583, Vote : 2807
 http://www.howto.pe.kr
 [강좌] 유무선 공유기 제작: NAT, firewall, DHCP 설치 [3]

// 제  목: 유무선 공유기 제작: NAT, firewall, DHCP 설치 [3]
// 작성자: 김영대( http://www.howto.pe.kr )

이 강좌에서는 NAT(Network Address Translation), 브릿지 방화벽, DHCP 를 설치하여 실제 유무선 공유기를
제작하겠다. 이를 위하여 두가지 소프트웨어를 설치해야 하는데 iptables 와 DHCP 이다.
iptables는 크게 4가지 기능이 있는데 IP 공유(IP masquerade), 서버 부하분산(port forwarding), 투명
프락시(redirection), packet filtering 이다. NAT(보통 masquerade 으로 부르기도 하지만 NAT 가 더 큰
의미이다)는 패킷의 내용 즉 주소, 포트번호 등을 변경한다. 즉 한 개의 IP 주소를 여러 대의 PC에서 공유하여
인터넷을 사용하는데 NAT 기능을 사용 한다. 또한 한 개의 도메인 네임에 대해 여러 대의 서버가 서비스를
제공하는 서버 부하분산(port forwarding 기능)에도 역시 NAT가 사용된다.
그리고 ebtables 라는 새로운 툴이 등장하였는데 iptables 은 OSI 3~4 계층에서 주로 동작한다면 ebtables 는
2계층 링크 레이어에서 동작하여 MAC 수준의 고수준 프래임 필터링이나 NAT 를 MAC 수준으로 끌어 내리는
기능도 있다. 아래 참고 사이트에를 참고하여 읽어 보는것도 좋을것이다.

DHCP(Dynamic Host Configuration Protocol) 프로토콜은 TCP/IP 네트워크에서 호스트 컴퓨터가 IP 주소의
할당을 요청할 경우 이를 할당해 주며 동시에 호스트가 속한 네트워크에 대한 다른 정보(예: DNS 서버 주소)를
알려주는 역할을 한다. 보통의 유무선 공유기에 연결된 클라이언트 PC 들은 유무선 공유기에서 제공하는 DHCP
를 통하여 IP 등의 네트워크 정보를 받게되어 zero-configuration 을 가능하게 한다.

참고 사이트:
  - http://www.linuxlab.co.kr/docs/01-03-2.htm
  - http://www.tldp.org/HOWTO/Ethernet-Bridge-netfilter-HOWTO.html
  - http://chunmok.hihome.com/publish/bridge-iptable/index.html
  - http://www.superuser.co.kr/open_lecture/linux_lab/page72.htm
  - http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html

설치할 파일 다운:
  - iptables (iptables-1.2.tar.bz2)
      http://www.netfilter.org
  - DHCP (dhcp-3.0pl2.tar.gz)
      http://www.isc.org

구축하고자 하는 네트워크 환경:
  유무선 공유기의 패킷 흐름은 보통 "내부 네트워크"<->"브릿지(bridge)"<->"NAT"<->"인터넷" 의 순서를
  거친다. 이때 내부 네트워크는 다시 유선 네트워크(eth1)와 무선 네트워크(wlan0) 로 구분된다. bridge 는
  무선 랜과 유선 랜을 논리 포트(port) 로 인식하여 하나의 가상 랜(br0) 으로 구성해 준다. 하지만 브릿지
  br0 로 들어오는 유/무선 패킷은 전부 내부 IP(192.168.0.100~255)를 가지므로 브릿지 br0 에 IP(192.168.0.1)
  를 할당하고 여기에 iptables 를 적용하여 NAT(masquerading)를 구현하여 내부IP를 eth0의 공인IP로 바꾸어
  (SNAT) 외부 인터넷으로 나가는 것이며 그 역도 마찬가지이다.
  즉 eth0 는 인터넷과 연결된 공인IP를 가지고 있다. wlan0 은 무선랜 내부 네트워크와 연결된 AP 로 사용
  되고 eth1 은 허브와 같이 유선랜 내부 네트워크와 연결된다. 그러므로 wlan0와 eth1 간의 내부 네트워크는
  통신은 bridge 에 의해 상호 통신이 가능하고 wlan0 또는 eth1 에서 외부 인터넷으로 나가는 페킷은 bridge의
  SNAT 를 거쳐 eth0 로 나가는것이다.


1.iptables 설치
  다운받은 소스의 압축을 푼 후 디렉토리로 이동하여 Makefile 을 수정한다.
  "KERNEL_PATH" 에는 커널 소스가 있는 디렉토리를, "DESTDIR" 는 호스트 장비에서 타켓 장비로 NFS 를 통하여
  전달해줄 디렉토리(타겟 장비의 NFS Root 디렉토리)의 root 를 의미한다.
    [root@cozylinux temp]# bunzip2 iptables-1.2.tar.bz2
    [root@cozylinux temp]# tar xvf iptables-1.2.tar
    [root@cozylinux temp]# cd iptables-1.2
    [root@cozylinux iptables-1.2]# vi Makefile
    KERNEL_DIR=/home/LDS/LDS2000/kernel-2.4.18
    CC:=arm-linux-gcc
    LD:=arm-linux-ld
    AR:=arm-linux-ar
    DESTDIR:=/home/LDS/LDS2000/External/RootFS/image

  그런 후 컴파일하고 설치 한다
    [root@cozylinux iptables-1.2]# make clean
    [root@cozylinux iptables-1.2]# make
    [root@cozylinux iptables-1.2]# make install

  설치가 완료되면 DESTDIR 에 명시한 디렉토리의 /usr/local/sbin 에 iptables 실행파일이 생성된다.
  이 iptables 파일을 이용하여 거의 모든 NAT 와 방화벽 설정 작업을 하지만 먼저 커널의 환경을 변경하고
  커널을 컴파일 해야 한다.
  커널 소스가 있는 디릭토리(Linux 의 경우는 보통 /usr/src/linux) 로 이동하여 make menuconfig 한다.
    [root@cozylinux /]# cd /home/LDS/LDS2000/kernel-2.4.18
    [root@cozylinux /]# make menuconfig

  먼저 설정의 메인 메뉴에서 "Code maturity level options" 메뉴를 선택한 후, "[*] Prompt for development
  and/or incomplete code/drivers" 를 선택하여 브릿지와 넷필터를 함께 사용할 수 있도록 한다.
  다시 메인 메뉴에서 "Networking options" 서브 메뉴 항목으로 이동하여 나타나는 메뉴중 아래 항목들을
  선택한다. iptables 도 각각의 기능(masq, conntrack, nat, ...)들을 모듈로 올리는 방법과 커널에 전부
  추가하여 커널 기능으로 컴파일 하는 방법이 있는데 여기서는 후자를 사용한다.
    <*> Packet socket
         - 패킷 프로토콜로 네트워크가 연결된 경우 설정
    [*] Network packet filtering (replaces ipchains)
         - iptables, 넷필터는 이전 커널에서 방화벽, 혹은 매스커레이딩이란 이름으로 불리던 옵션들의
           새 이름으로 넷필터는 리눅스 박스를 지나가는 네트워크 패킷을 걸러내고(filtering) 조작하기
           (mangling) 위한 구조(체제)이다. 패킷 필터링의 일반적인 용도는 여러분의 리눅스 박스를
           방화벽으로 만들어 로컬 네트워크를 인터넷으로부터 보호하며 방화벽으로 쓰일 때 이 기능을
           "패킷 필터"라 부르며, 네트워크 패킷을 형태(type), 근원 혹은 출발지(source), 목적지
           (destination) 등을 기초로 거절/거부할 수 있다.
           이 옵션은 또 하나 공인 IP 주소가 없는 로컬 네트워크 머신들을 인터넷에 연결할 때 여러분의
           리눅스 박스를 게이트웨이(gateway)로 만들기 위해 쓰이며. "매스커레이딩(masquerading)"이라
           부르는데: 로컬 네트워크에 물려 있는 컴퓨터들 가운데 하나가 외부로 전송을 하려고 한다면
           공인 IP 주소를 가지고 있는 여러분의 게이트웨이 박스는 그 컴퓨터를 "가장(masquerade)"해서
           대신 주고 받을 수 있다. 다시 말하면 외부 목적지로 트래픽을 보내지만, 패킷이 방화벽 박스
           자신으로부터 나온 것처럼 보이게 하려고 패킷을 조금 손보게된다
    [*] Socket Filtering
         - 리눅스 소켓 필터는 버클리의 패킷 필터로부터 파생된 것으로 사용자-공간 프로그램들이 아무
           소켓에나 필터를 붙일 수 있고 소켓을 통해 얻은 데이터에 대해 형식을 정하고 허가/불허 정책을
           커널에 알릴 수 있다. 리눅스 소켓 필터링은 현재 TCP를 제외한 모든 소켓에서 동작한다
    <*> Unix domain sockets
         - 표준 유닉스 메카니즘으로 X윈도우 시스템이나 syslog와 같은 프로그램들은 이소켓을 이용한다
    [*] TCP/IP networking
         - 반드시 선택
    [*]   IP: multicasting
         - 네트워크상의 여러컴퓨터에 동시에 같은자료를 전송할수 있도록 하는 서비스
    <*> 802.1d Ethernet Bridging
         - 다양한 NIC 사이의 브릿지 기능

  그 다음 "IP : Netfilter Configuration" 선택하여 서브 메뉴로 이동한다.
  아래 항목들을 선택한다.
    <*> Connection tracking (required for masq/NAT)
        - 연결 추적(Connection tracking)은 어떤 패킷이 여러분의 머신을 거쳐 갔는지, 그들이 얼마나 연결
          되었는지 그 기록을 유지하는 것을 말하며, 이 옵션은 매스커레이딩 혹은 다른 종류의 네트워크 주소
          변환(Fast NAT는 빼고)에 필요하다 네트워크 장비를 만든다면 반드시 필요
    <*>   FTP protocol support
        - FTP 서비스에 대한 접속추적기능 사용시 설정
    < >   IRC protocol support
        - 인터넷 채팅인 IRC에 대해서 접속 추적 기능을 사용할때 설정
    < > Userspace queueing via NETLINK (EXPERIMENTAL)
    <*> IP tables support (required for filtering/masq/NAT)
        - iptable은 일반적이며, 확장할 수 있는 패킷 식별 체제이며 패킷 필터링과 full NAT
          (masquerading, port forwarding, etc) 서브시스템은 이제 iptalbes를 사용한다. 패킷 필터링,
          NAT의 모든 기능, 확장된 라우팅 서비스 가운데 하나라도 쓰려면 이 옵션에서 체크가 필수
    <*>   limit match support
        - 방화벽 규칙의 일치율을 조절할수 있게하는 옵션
    <*>   MAC address match support
        - 이더넷 카드의 맥 주소 일치성은 패킷의 이더넷 주소에 따라서 패킷들을 일치시켜 주는 기능
    <*>   netfilter MARK match support
        - 패킷 내에 있는 'nfmark'값에 따라서 패킷들이 일치되도록 해주는 옵션
    <*>   Multiple port match support
        - 멀티포트 매칭은 출발지나 목적지 포트의 시리즈에 기반한 TCP나 UDP 패킷 매치를 다룬다.
          일반적으로 규칙 하나는 한 가지 포트 범위를 매치할 수 있지만 이 기능을 활성화하면 규칙 하나에
          여러 포트를 매치 가능
    <*>   TOS match support
        - TOS 매칭은 IP 패킷의 서비스 필드의 형식에(Type Of Services) 기반한 패킷 매치를 다룸
    <*>   AH/ESP match support
    <*>   LENGTH match support
    <*>   TTL match support
    <*>   tcpmss match support
        - TCP SYN패킷의 MSS값을 검사할수 있도록 해주며 그러한 접속에 있어서 최대 패킷 크기를 조절해 주는
          'tcpmss' 일치성을 부여한다
    <*>   Connection state match support
        - 연결 상태 에서 추적한 커넥션의 관계에 기반한(예를 들어 이전 패킷들) 패킷 매치를 다룸
    <*>   Unclean match support (EXPERIMENTAL)
    <*>   Owner match support (EXPERIMENTAL)
    <*>   Packet filtering
        - 패킷 필터링은 로컬 input, 포워딩과 로컬 output에서, 심플 패킷 필터링을 위한 연속된 룰을 담는
          '필터' 테이블을 규정
    <*>     REJECT target support
        - REJECT 타깃은 들어오는 패킷에 대해 규칙을 검사해서 아무 출력 없이 버리는(DROP) 대신 ICMP 에러
          메시지로 응답하는 필터링 규칙을 다룸
    < >     MIRROR target support (EXPERIMENTAL)
    <*>   Full NAT
        - 마스커레이딩, 포트 포워딩, 그리고 다른 형태의 완전한 네트워크 주소 포트변환 기능을 허용한다.
          이는 iptables에서 'nat' 테이블로 조정된다
    <*>     MASQUERADE target support
        - 매스커레이딩은 NAT의 특별한 케이스로 나가는 연결들이 모두 특정한 인터페이스의 주소로부터
          나간 것처럼 보이도록 바뀐다. 그 인터페이스를 내리면, 연결된 체인들을 잃어버게 된다. 여기까지는
          SNAT와 다를게 없어 보이지만 매스커레이딩은 옵션은 다이나믹 IP 주소를 사용하는 다이얼업 계정
          에만 유용하다. (여러분의 IP 주소가 접속할 때마다 달라지는 ADSL, Cable, Modem 등) 전용선, MyIP
          등 고정된 IP 주소를 가지고 있다면 SNAT을 사용
    <*>     REDIRECT target support
        - 투명프락시 사용시 필요하다. REDIRECT는 NAT의 특별한 케이스로 모든 들어오는 연결들은 들어오는
          인터페이스의 주소에 매핑되므로, 패킷들은 리눅스 박스를 지나서 다른 머신에 직접 연결되는 대신
          로컬 머신으로 오게 된다. 이 옵션은 투명한 프록시에서 유용하다
    < >     Basic SNMP-ALG support (EXPERIMENTAL)
    <*>   Packet mangling
        - iptables에 패킷이 어떻게 라우트되는가에 영향을 주는 다양한 패킷변환에 이용되는 'mangle'
          테이블에 부여함
    < >     TOS target support
        - 이 옵션은 라우팅에 앞서 'mangle' 테이블 안에 IP 패킷의 Type Of Service 필드를 바꾸는 규칙
          들을 만들도록 'TOS' 타깃을 추가
    < >     MARK target support
        - 이 옵션은 라우팅에 앞서 'mangle' 테이블 안에 패킷 패킷과 관련된 netfilter mark(nfmark)
          필드를 바꾸는 규칙들을 만드는 'MARK' 타깃을 추가하며 이 기능은 라우팅 메쏘드를 바꿀 수 있고
          다른 서브시스템에 의해 그들을 행태(behavior)를 바꾸도록 이용될 수도 있다. 예를 들어 LBS에서
          마크 값이 7 인 패킷들은 ADSL 라인을 통해 소통하도록 라우팅 테이블에서 지정할 수 있다
    <*>   LOG target support
        - iptables내에서 패킷 헤더를 syslog 에 기록하도록 하는 규칙을 만들수 있도록 'LOG'타켓을 제공
    < >   ULOG target support
    <*>   TCPMSS target support
        - 연결의 최대 크기를 제어하기 위해 TCP SYN 패킷의 MSS 값을 변경할 수 있는 'TCPMSS' 타깃을
          추가한다. (대개 나가는 인터페이스의 MTU보다 40 작게 제한). 이 기능은 ISP를 뇌사시키는 범죄를
          막아내거나 ICMP 프래그먼테이션이 필요한 패킷들을 막는 서버에 사용되며 특히 야후 등 이전에
          호되게 당한 적이 있는 곳에서는 TCPMSS에 민감해서 그런 사이트에 접근하려면 이 기능을 사용해야
          할지도 모른다. 여러분의 리눅스 방화벽/라우터로부터 잘 동작하지만 이 뒤에 있는 머신들은 큰
          패킷들을 절대로 교환할 수 없게 된다.

2.DHCP 설치
  커널에서 DHCP 를 지원하도록 환경을 설정해주어야 한다.
  커널 소스가 있는 디릭토리(Linux 의 경우는 보통 /usr/src/linux) 로 이동하여 make menuconfig 한다.
    [root@cozylinux /]# cd /home/LDS/LDS2000/kernel-2.4.18
    [root@cozylinux /]# make menuconfig

  설정의 메인 메뉴에서 "Networking options" 서브 메뉴 항목으로 이동하여 나타나는 메뉴중 아래 항목들을
  선택한다.
    <*> IP: kernel level autoconfiguration
      [*] IP: DHCP support

  다운받은 DHCP 소스의 압축을 푼 후 디렉토리로 이동한다
    [root@cozylinux temp]# tar xvf dhcp-3.0pl2.tar.gz
    [root@cozylinux temp]# cd dhcp-3.0pl2

  Makefile.conf 파일의 "## Porting::" 아래에 컴파일 환경 정보를 아래처럼 추가한다.
    CC=arm-linux-gcc
    LD=arm-linux-ld
    AR=arm-linux-ar
    RANLIB=arm-linux-ranlib
    DESTDIR=/home/LDS/LDS2000/External/RootFS/image

  그런 후 환경을 적용하고 컴파일하고 설치 한다
    [root@cozylinux dhcp-3.0pl2]# ./configure
    [root@cozylinux dhcp-3.0pl2]# make clean
    [root@cozylinux dhcp-3.0pl2]# make
    [root@cozylinux dhcp-3.0pl2]# make install

  설치가 완료되면 DESTDIR 에 명시한 디렉토리의 /usr/sbin 에 dhcpd DHCP 서버 실행파일이 생성된다.

  설치된 dhcpd DHCP 서버에서는 다음과 같은 dhcpd.conf 설정 파일에 의해 클라이언트에게 할당할 IP의
  범위 및 기본적으로 필요한 네트워크 정보를 작성하여야 한다.
  DESTDIR 에 명시한 디렉토리의 etc 아래에 있는 dhcpd.conf 파일에 아래의 내용을 추가한다.
    ddns-update-style interim;
    default-lease-time 3600;
    max-lease-time 86400;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 164.124.101.2, 211.204.31.1;
    option domain-name "howto.pe.kr";

    subnet 192.168.0.0 netmask 255.255.255.0 {
      range 192.168.0.100 192.168.0.250;
      option broadcast-address 192.168.0.255;
      option routers 192.168.0.1;
    }

  위의 내용은 유선 네트워크(eth1) 또는 무선 네트워크(wlan0)의 브릿지인 br0(192.168.0.1)로 DHCP 요구가
  들어오면(DHCP 요구는 클라이언트에서 broadcasting 으로 요청된다) IP는 192.168.0.100~255, Default
  Gateway 는 192.168.0.1, DNS 는 164.124.101.2 를 할당하라는 의미이다. 2차 DNS 가 있다면 그 뒤에
  콤마를 추가하여 계속 적어주면 된다.

  실제 DHCP 서버를 br0 리스닝 NIC 로 실행하면 다음과 같은 메시지가 보인다.
    [root@cozyLDS etc]$dhcpd br0
    Internet Software Consortium DHCP Server V3.0pl2
    Copyright 1995-2003 Internet Software Consortium.
    All rights reserved.
    For info, please visit http://www.isc.org/products/DHCP
    Wrote 3 leases to leases file.
    Listening on LPF/br0/00:0a:d4:00:31:2c/192.168.0.0/24
    Sending on   LPF/br0/00:0a:d4:00:31:2c/192.168.0.0/24
    Sending on   Socket/fallback/fallback-net

  내부 유선 네트워크와 연결된 eth1 과 내부 무선 네트워크와 연결된 wlan0 은 bridge br0 에 연결되어
  있으므로 일반 PC의 브로드케스팅 DHCP 요청은 br0 에 의해 접수되며 dhcpd.cof 에 명시된 환경을 보고
  br0 가 적당한 IP를 내부 네트워크 PC 들에게 할당해 주게된다.

3.실행 및 동작 확인
  이제 커널을 다시 컴파일한다. 아래에서 "make dep" 는 매번 수행할 필요가 없다. make 는 ELF 형식의 커널
  이미지를 생성하므로 메모리에 제약이 있는 타겟 보드에 올리기 위해 압축된 ELF 를 위해 "make zImage"
  로 컴파일 한다. 만든 커널 이미지를 올리는(flash) 방법은 타겟 보드마다 틀리므로 설명은 생략한다.
    [root@cozylinux /]# cd /home/LDS/LDS2000/kernel-2.4.18
    [root@cozylinux kernel-2.4.18]# make dep
    [root@cozylinux kernel-2.4.18]# make clean
    [root@cozylinux kernel-2.4.18]# make zImage

  지금까지 설치한 파일들이나 환경 설정을 타겟 장비 부팅시 마다 실행하도록 하기 위해 rc.???? 계열을
  파일에 등록해 놓으면 편할것이다. 그래서 본인의 경우는 rc.sysinit 에 아래와 같이 차례대로 등록하여
  부팅시 자동 실행되도록 하였다.

    #### [1] HostAP Card Driver ####
    insmod /lib/modules/2.4.18-rmk7-pxa3/net/hostap_crypt.o
    insmod /lib/modules/2.4.18-rmk7-pxa3/net/hostap_crypt_wep.o
    insmod /lib/modules/2.4.18-rmk7-pxa3/net/hostap.o

    #### [2] Activate NIC ####
    /sbin/ifconfig eth0 211.204.72.60 netmask 255.255.255.0 up
    route add default gw 211.204.72.254
    route add -host 255.255.255.255 dev eth0

    /sbin/ifconfig eth1 0.0.0.0 promisc up
    /sbin/cardmgr -ov
    /sbin/ifconfig wlan0 down
    /sbin/ifconfig wlan0 0.0.0.0 promisc up

    #### [3] bridge utils ####
    /sbin/brctl addbr br0        # add virtual ethernet bridge interface
    /sbin/brctl stp br0 off      # spanning tree protocol off: a loop is highly improbable
    /sbin/brctl addif br0 eth1   # now, physical ethernet interface become a logical bridge port
    /sbin/brctl addif br0 wlan0
    /sbin/ifconfig br0 192.168.0.1 netmask 255.255.255.0 up
    route add -host 255.255.255.255 dev br0

    #### [4] Access Point ####
    /usr/local/sbin/iwconfig wlan0 mode master
    /usr/local/sbin/iwconfig wlan0 essid ssap
    /usr/local/sbin/iwconfig wlan0 nickname "cozykyd's AP (ssap)"
    #/usr/local/sbin/iwconfig wlan0 key s:12345
    #/usr/local/sbin/iwconfig wlan0 key s:1234567891234

    /usr/local/sbin/iwpriv wlan0 prism2_param 3 1
    /usr/local/sbin/iwpriv wlan0 prism2_param 8 2
    /usr/local/sbin/iwpriv wlan0 prism2_param 9 100
    /usr/local/sbin/iwpriv wlan0 prism2_param 10 1
    #/usr/local/sbin/iwpriv wlan0 prism2_param 30 1   # Operation not supported

    ## [5] kernel IP forwarding service between br0 and eth0
    echo 1 > /proc/sys/net/ipv4/ip_forward

    ## [6] iptables
    /usr/local/sbin/iptables -F
    /usr/local/sbin/iptables -t nat -F
    /usr/local/sbin/iptables -P INPUT ACCEPT
    /usr/local/sbin/iptables -F INPUT
    /usr/local/sbin/iptables -P OUTPUT ACCEPT
    /usr/local/sbin/iptables -F OUTPUT
    /usr/local/sbin/iptables -P FORWARD DROP
    /usr/local/sbin/iptables -F FORWARD

    # routing bewteen eth0 and br0(eth1, wlan0)
    /usr/local/sbin/iptables -A FORWARD -i eth0 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    /usr/local/sbin/iptables -A FORWARD -i br0 -o eth0 -j ACCEPT
    #/usr/local/sbin/iptables -A FORWARD -j LOG

    # SNAT
    /usr/local/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
    #/usr/local/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE   # alternate
    #/usr/local/sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 211.204.72.60   # alternate

    # tcp-MSS patch
    /usr/local/sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

    # [7] start DHCP server on br0
    #touch /etc/dhcpd.leases
    /usr/sbin/dhcpd br0

  iptables 의 SNAT 부분을 보면 두번째 세번째줄을 주석으로 만들었는데 그것은 첫번째 줄과 같은 효과를
  내는 다른 옵션을 보여주기 위해서다. 그리고 여기서는 iptables 의 용도를 NAT 로만 주로 사용했는데
  여기에 방화벽 관련 rule 을 추가하여 해킹에 강력한 방화벽을 구축하기 바란다.
  위의 iptables 와 관련된 자세한 설명은 하지 않는다. 워낙 자료가 많아 금방 찾아볼 수 있을것이다.

  이로서 NAT 및 DHCP 를 설치하였다. 실제 내부 네트워크의 PC 들이 DHCP 로 내부 IP를 받아오고 또한
  NAT 를 통하여 외부 인터넷에 연결되는지 테스트하기 바란다.

  실제 유선 랜카드를 사용하는 PC 에서 IP를 받아온다면 다음과 같이 나타날 것이다.
    C:\>ipconfig /all
    Windows 2000 IP Configuration
        Host Name . . . . . . . . . . . . : mawang
        Primary DNS Suffix  . . . . . . . : howto.pe.kr
        Node Type . . . . . . . . . . . . : Broadcast
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No
        DNS Suffix Search List. . . . . . : howto.pe.kr

    Ethernet adapter 로컬 영역 연결:
        Connection-specific DNS Suffix  . : howto.pe.kr
        Description . . . . . . . . . . . : FE574B-3Com 10/100 LAN PCCard-Fast thernet
        Physical Address. . . . . . . . . : 00-50-DA-D0-33-CD
        DHCP Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        IP Address. . . . . . . . . . . . : 192.168.0.248
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.0.1
        DHCP Server . . . . . . . . . . . : 192.168.0.1
        DNS Servers . . . . . . . . . . . : 164.124.101.2
                                            211.204.31.1
        Lease Obtained. . . . . . . . . . : 2004년 6월 13일 일요일 오후 8:49:10
        Lease Expires . . . . . . . . . . : 2004년 6월 13일 일요일 오후 9:49:10

  무선 랜카드를 사용하는 PC 에서 IP를 받아온다면 다음과 같이 나타날 것이다.
    C:\>ipconfig /all
    Windows 2000 IP Configuration
        Host Name . . . . . . . . . . . . : mawang
        Primary DNS Suffix  . . . . . . . : howto.pe.kr
        Node Type . . . . . . . . . . . . : Broadcast
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No
        DNS Suffix Search List. . . . . . : howto.pe.kr

    Ethernet adapter 로컬 영역 연결 3:
        Connection-specific DNS Suffix  . : howto.pe.kr
        Description . . . . . . . . . . . : RoamAbout 802.11 DS
        Physical Address. . . . . . . . . : 00-E0-63-50-9A-9E
        DHCP Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        IP Address. . . . . . . . . . . . : 192.168.0.249
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.0.1
        DHCP Server . . . . . . . . . . . : 192.168.0.1
        DNS Servers . . . . . . . . . . . : 164.124.101.2
                                            211.204.31.1
        Lease Obtained. . . . . . . . . . : 2004년 6월 13일 일요일 오후 9:12:27
        Lease Expires . . . . . . . . . . : 2004년 6월 13일 일요일 오후 10:12:27

          





4   [임베디드] [강좌] 유무선 공유기 제작: 802.1x, RADIUS 설치 [4]  김영대 2004/06/16 16529 2081
  [임베디드] [강좌] 유무선 공유기 제작: NAT, firewall, DHCP 설치 [3]  김영대 2004/06/16 11583 2807
2   [임베디드] [강좌] 유무선 공유기 제작: PCMCIA, HostAP, Bridge 설치 [2]  김영대 2004/06/16 14909 1774
1   [임베디드] [강좌] 유무선 공유기 제작: 제작 환경 [1]  김영대 2004/06/16 11163 1513

1
 

Copyright 1999-2017 Zeroboard / skin by zero