5/21/2007

openbsd NAT설정

=============================================

작성자 : aMper
기타 : 2002. 5 . 27
xbit@orgio.net
http://drgod.codesum.org
OpenBSD-Crew!
BSD license 적용
구성 : NAT 설정법.. (부제 : 외계인들이여 나 다시 부활 하였도다..)

수정 & 첨부 : l1nefeed
Date : 2002. 6 . 18
l1nefeed@codesum.org
http://l1nefeed.codesum.org
OpenBSD-Crew!
BSD license 적용
첨부내용 : NAT환경 밑에서 DHCP 설정.
==============================================

aMper님께서 보내주신 문서를 이제야 올리게 되었습니다.
시험기간이고 그래서.. 시간이 없었습니다.. 너그러이 양해를... ^^;;

## NAT 설정 ##

나의 시스템 상황
컴퓨터 두대 한대는 OpenBSD , 다른 한대는 WINDOWS98
이다.
이두대의 컴퓨터를 OpenBSD 를 이용하여 NAT 설정을 해보겠다.

ifconfig -a 를 이용하여 자신의 랜카드를 확인하자

# ifconfig -a
rl0: flags=8843 mtu 1500
media: Ethernet autoselect (none)
status: active
inet6 fe80::202:2aff:fed6:a967%rl0 prefixlen 64 scopeid 0x1
inet 211.239.204.14 netmask 0xffffff00 broadcast 211.239.204.255
rl1: flags=8843 mtu 1500
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::2a0:b0ff:fe00:10bc%rl1 prefixlen 64 scopeid 0x2

이결과 로 보면 rl0,rl1 로 랜카드두개가 잡혀있는것을 볼수있을것이다..
나의 경우 리얼텍8139 랜카드를 두개 설치하고 NAT 설정을 시작하였다..
자신의 랜카드에 맞게 바꾸어 설정하라.

1. /etc/pf.conf 설정

vi /etc/pf.conf (편집)

pass in all
pass out all

이렇게 하면 이제 들어오는 패킷과 나가는 패킷전부를 통과 시켜준다.

2. /etc/hostname.rl1 을 만들고 설정하자

echo "inet 192.168.0.1 255.255.255.0 192.168.0.255" > hostname.rl1

rl1의 랜카드 설정이 끝났다..
참고 : rl0 의 경우 이미 설정돼어있을것이다.
cat hostname.rl0 을 해보니 다음과 같은 부분이 나온다
(단 이설정은 dhcp 를 이용한 인터넷 ISP 서비스를 받는 사람에 한함)
dhcp NONE NONE NONE

3. /etc/rc.conf 설정
rc.conf 에서 찾아보면

pf=NO # Packet filter / NAT

이부분을

pf=YES # Packet filter / NAT

이렇게 수정하라..

4. /etc/nat.conf 설정
nat.conf 에 다음 을 삽입 하라

nat on rl0 from 192.168.0.1/24 to any -> rl0

이제 이 머신을 dhcp 서버로 만들어 보겠다.
dhcpd 설정역시 openbsd는 매우 깔끔하다.
다음 두가지 파일의 수정이 필요하다.

/etc/dhcpd.conf
/etc/dhcpd.interfaces

## dhcpd 설정 ##

1. dhcpd.conf 수정

일단 vi로 dhcpd.conf를 열어보자.

vi /etc/dhcpd.conf

아래와 같은 디폴트 값을 볼수 있다.

# $OpenBSD: dhcpd.conf,v 1.1 1998/08/19 04:25:45 form Exp $
#
# DHCP server options.
# See dhcpd.conf(5) and dhcpd(8) for more information.
#

# Network: 192.168.1.0/255.255.255.0
# Domain name: my.domain
# Name servers: 192.168.1.3 and 192.168.1.5
# Default router: 192.168.1.1
# Addresses: 192.168.1.32 - 192.168.1.127
#
shared-network LOCAL-NET {
option domain-name "my.domain";
option domain-name-servers 192.168.1.3, 192.168.1.5;

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;

range 192.168.1.32 192.168.1.127;
}
}

자 이제 이걸 수정해 보자.

아래는 필자(l1nefeed)의 dhcpd.conf 내용이다. 주석을 참조하면 쉽게 이해가 갈것이다.

# $OpenBSD: dhcpd.conf,v 1.1 1998/08/19 04:25:45 form Exp $
#
# DHCP server options.
# See dhcpd.conf(5) and dhcpd(8) for more information.
#

# Network: 192.168.1.0/255.255.255.0
# Domain name: my.domain
# Name servers: 192.168.1.3 and 192.168.1.5
# Default router: 192.168.1.1
# Addresses: 192.168.1.32 - 192.168.1.127
#
shared-network LOCAL-NET {
option domain-name "codesum.org"; # 서버의 도메인 네임을 넣어준다. 없으면 localhost로 처리하면 되겠다.
option domain-name-servers 218.146.247.14; # 자신이 사용하는 name server를 넣어준다.

subnet 192.168.100.0 netmask 255.255.255.0 { #external address가 아닌 internal address의 정보를 넣어준다.
#왜 그런지는 말안해도 알것이다... -_-;;
option routers 192.168.100.150; #external interface의 ip address. 즉 NAT client가 사용할 gateway 주소를 넣어준다.

range 192.168.100.2 192.168.100.254; #할당할 ip address의 범위를 정해준다.
default-lease-time 10; #기본 lease-time을 정해준다. (옵션)
max-lease-time 100; #최대 lease-time을 정해준다. (옵션)
}


이젠 dhcpd가 돌아갈 interface를 정해줘야 한다.
이것은 /etc/dhcpd.interfaces에서 정해주면 된다.

2. dhcpd.interfaces 수정.

간단하게 이렇게 한줄 쳐 준다.

echo "rl1" > /etc/dhcpd.interfaces

이제 설정은 끝났다. 마지막으로 부팅할때 마다 dhcpd를 돌리기 위해 /etc/rc.conf를 열어 플래그를 정해주자.

dhcpd_flags=NO # for normal use: "-q"



dhcpd_flags="-q" # for normal use: "-q"

로 바꿔주자. -q 옵션은 눈치빠른 사람이라면 데몬 활성화시 나오는 메세지를 없애는 옵션이란걸 알수 있을것이다.

자세한 내용은 dhcpd.conf(5), dhcpd(8) 을 참조하자.

reboot을 한다..

이제 OpenBSD-NAT & DHCP 설정 부분은 이것으로 끝났다

클라이언트인 윈도우에서의 설정은 그냥 dhcp 설정 하나로 끝난다.
만약 name server 자동으로 내려받기 옵션을 켠다면, dhcpd.conf에 정해준 네임서버를 받아간다.
굉장히 스마트 하지 않은가...



아래는 필자(l1nefeed)의 /var/log/daemon에 있는 dhcpd 로그 중 일부이다.

Jun 18 12:00:05 f0rc3 dhcpd: DHCPREQUEST for 192.168.100.2 from 00:10:4b:7f:8a:a
e via dc0
Jun 18 12:00:05 f0rc3 dhcpd: DHCPACK on 192.168.100.2 to 00:10:4b:7f:8a:ae via d
c0
Jun 18 12:00:10 f0rc3 dhcpd: DHCPREQUEST for 192.168.100.2 from 00:10:4b:7f:8a:a
e via dc0
Jun 18 12:00:10 f0rc3 dhcpd: DHCPACK on 192.168.100.2 to 00:10:4b:7f:8a:ae via d
c0
Jun 18 12:00:15 f0rc3 dhcpd: DHCPREQUEST for 192.168.100.2 from 00:10:4b:7f:8a:a
e via dc0
Jun 18 12:00:15 f0rc3 dhcpd: DHCPACK on 192.168.100.2 to 00:10:4b:7f:8a:ae via d
c0

.....

5초 간격으로 request와 ack를 주고 받는것을 눈으로 볼수 있다.

몇가지 테스트를 해본 결과를 적겠다.

개인 네트웍에선 컴퓨터가 많아봤자 10대 미만이겠지만, 실제 사업장(ISP 업체) 에선 실제로 ip가 부팅할때 마다
바뀌는것을 눈으로 목격할수 있다. 필자의 홈 네트웍엔 서버를 포함한 컴퓨터가 3대 밖에 없어서 dhcp-cache에 있는 자신의 아이피
를 다른 pc에서 받아서 쓰고 있어, dhcpd에서 새로운 아이피를 부여하는 그런 실질적은 모습을 보기는 힘들다.
그래서 약간의 트릭으로 그런 상황을 만들어 준 다음, 아래와 같은 결과를 얻을수 있었다.

Jun 18 11:31:04 f0rc3 dhcpd: DHCPREQUEST for 192.168.100.10 from 00:10:4b:7f:8a:ae via dc0
Jun 18 11:31:04 f0rc3 dhcpd: DHCPACK on 192.168.100.10 to 00:10:4b:7f:8a:ae via dc0
Jun 18 11:34:10 f0rc3 dhcpd: DHCPDISCOVER from 00:10:4b:7f:8a:ae via dc0
Jun 18 11:34:10 f0rc3 dhcpd: Abandoning IP address 192.168.100.10 for 10 seconds: pinged before offer
Jun 18 11:34:14 f0rc3 dhcpd: DHCPDISCOVER from 00:10:4b:7f:8a:ae via dc0
Jun 18 11:34:15 f0rc3 dhcpd: DHCPOFFER on 192.168.100.5 to 00:10:4b:7f:8a:ae via dc0
Jun 18 11:34:22 f0rc3 dhcpd: DHCPDISCOVER from 00:10:4b:7f:8a:ae via dc0
Jun 18 11:34:23 f0rc3 dhcpd: DHCPOFFER on 192.168.100.2 to 00:10:4b:7f:8a:ae v address 192.168.100.5ia dc0
Jun 18 11:34:23 f0rc3 dhcpd: client 00:10:4b:7f:8a:ae has duplicate leases on LOCAL-NET
Jun 18 11:34:23 f0rc3 dhcpd: Released lease for IP

원래 A 컴퓨터는 192.168.100.10을 쓰고 있었다. 하지만 이 컴퓨터가 shutdown 되어 있는 동안 B 컴퓨터가 이 주소를 할당받아
쓰고 있다고 가정해 보자.
나중에 A 컴퓨터가 부팅되었을때 dhcp-cache를 적용해 다시 192.168.100.10을 부여해 주려 하지만 이미 쓰고 있는 주소이다.
그래서 dhcpd에 부여된 아이피중 쓰지 않고 있는 잔여 주소를 검색하여 부여해 준다.

그리고 나서 기존에 있던 dhcp-cache들을 업데이트 한다.

이상 이다.

졸필의 글을 끝까지 읽어준 여러분들께 진심으로 감사드린다.

======================================================================================================================================================

OpenBSD- NAT & DHCPD 설정 문서를 급하게 쓰느라 충분한 설명이 못된거 같습니다.
틀린부분이나 지적해주실 부분, 그리고 좀더 보충해야 하는 내용이 있으면
http://openbsdkorea.org 의 게시판에 글을 남겨 주십시오.

openbsd 한글문서의 발전에 도움이 되는 피드백은 언제나 대 환영! 입니다!!! :^)

댓글 없음: