'Compaq Proliant DL360'에 해당되는 글 2건

  1. 2007/08/23 nat 기반의 가정용 방화벽+공유기 구축
  2. 2007/08/22 Compaq ProLiant DL360에서 dhcp 클라이언트 문제

집에 굴러다니는 장비가

ThinkPad R52 노트북 1대
AMD Sempron 데스크탑 1대
Compaq ProLiant DL360 1u 서버 1대
케이블 모뎀 1대 (내꺼 아님)
zio INB3040SR V2 4포트짜리 공유기 1대

그외 잡다구리한 컴퓨터 부품들...


DL360이 방화벽 겸 공유기 역할을 할 것이고 데스크탑 pc는 가상서버(OpenVZ 기반)를 운영할 것이다.
노트북은 순수하게 데스크탑 용도.

---|모뎀|---|방화벽|---|공유기|(실제 hub 역할을 하게된다)
                                   |    |
                                   |    |
                          |노트북| |데스크탑|


1. 방화벽 서버 세팅
1) gentoo를 설치한다.

2) 네트웍 설정을 한다.
# cat /etc/conf.d/net

# 외부 네트웍을 연결하는 인터페이스
iface_eth0="dhcp"
config_eth0=( "dhcp" )
modules_eth0=( "dhcpcd" )
dhcp_eth0="nodns nontp nonis"

# 내부 네트웍을 연결하는 인터페이스
config_eth1=( "1.1.1.1 netmask 255.255.0.0" )

3) dhcp 서버로부터 유동ip를 제대로 받아오는지 확인한다.
이부분이 가장 시간허비한 부분인데 Compaq ProLiant DL360에서 dhcp 클라이언트 문제 를 참조.
참고로, 모뎀을 끄고 몇분있다 다시 켜도 못받아 오는 경우가 있다.
이럴땐 모든 랜케이블 다 뽑고 컴퓨터 전원 다 뽑고 밖에서 담배한대 피우고 들어와서 다시 작업하자.

4) iptables 설치를 한다.
emerge iptables로 한번에 끝낼 수 있지만 현재 portage tree에 올라온 버전은 1.3.5 인데 netfilter.org에서 1.3.8까지 나왔다.
그리고 무엇보다도 patch-o-matic 으로 특정기능, 이를테면 string matching 이나 특정 국가 접속차단 같은 기능을 추가하려면 커널을 다시 컴파일 해야한다. iptables는 어플리케이션 기반이 아니고 커널기반에서 작동한다. 기억..

# cd /usr/src/linux
# wget http://netfilter.org/어쩌구저쩌구/iptables-1.3.8.tar.bz2
# wget http://netfilter.org/블라블라블라/patch-o-matic-20070821.tar.bz2
# bzip2 -cd iptables-1.3.8.tar.bz2 | tar xvf -
# ln -s iptables-1.3.8 iptables
# bzip2 -cd patch-o-matic-20070821.tar.bz2 | tar xvf -
# cd patch-o-matic-20070821
# ./runme --download
# ./runme all
패치할 항목을 선택한다.
N : 안한다. 다음
y : 선택
b : 이전으로
t : 적합한지 테스트
# cd ../linux
# make menuconfig
이렇게 하면 방금 추가한 항목들이 나타난다.
# make && make modules_install
모듈로 선택한 놈들을 /etc/modules.autoload.d/kernel-2.6 에 추가한다.
mod_insert.sh 스크립트를 이용한다.
grub 수정/재설정하고 재부팅한다.

5) 방화벽 정책을 설정한다.
# cat /root/firewall.sh
#!/bin/sh
..
IPTABLES="/sbin/iptables"
EXTERN_IP=`/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | sed -e "s/.*://"`
..
# iptables의 string matching 기능, 네이트온 접속을 차단한다
$IPTABLES -A FORWARD -p tcp -m string --string "nateon.nate.com" --algo bm --to 65535 -j DROP

# 내부에서 밖으로 빠져나가는 패킷은 eth0에서 받은 유동 ip로 변환한다.
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to $EXTERN_IP

# 패킷의 적합여부 체크
$IPTABLES -A FORWARD -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
...

# cat /etc/conf.d/local.start
/root/firewall.sh &> /dev/null


2. 방화벽에 물리는 노트북, 데스크탑 세팅
간단하다.
네트웍 정보에서 방화벽의 eth1 인터페이스 영역의 정보를 입력한다.
노트북 :
ip 1.1.1.50
mask : 255.255.0.0
gw : 1.1.1.1 (방화벽 eth1 의 ip)

데스크탑 :
ip 1.1.1.100
mask : 255.255.0.0
gw : 1.1.1.1 (방화벽 eth1 의 ip)


issue

a. patch-o-matic 에서 geoip(국가별 필터링) 추가하고 커널 컴파일 했는데 오류가 나옴. 원인을 찾아야 함.

b. string matching 기능이 그다지 신뢰할 만하지 않다는 것이다.
네이트온 접속을 차단하기 위해 ethereal로 패킷분석해 걸러낼 문자열을(예를들어 natoon.nate.com) 추가했지만 이는 네이트온 패킷에서만 나오는 것인지 다른 프로그램에서도 나오는 것인지 확실히 구분하기가 모호하다.
그리고 구글이나 일반 웹페이지에서 검색어로 natoon.nate.com 하면 그냥 거부가 되니 분명 문제가 있다.
L7 filtering 을 연구해봐야 겠다.
http://l7-filter.sourceforge.net/

c. 방화벽 구축후
http://www.netfilter.org/ 접속이 안된다. 다른곳은 이상없는데.. 우째 이런일이 ~~


하루쯤 지나니 이상없이 접속할 수 있다.


집에서 NAT 환경을 구현하기 위해 저사양의 pc를 찾다가 구석탱이에 처박혀 있는 ProLiant DL360(이하 DL360)이 눈에 들어왔다.
예전 IDC에 넣어두고 개인서버를 돌릴때 중고(30만원)로 구매한거 였는데 회선비용이 너무 비싸 1년여 돌리다 빼와서 집구석에 쳐박혀 있던 중...

단지, ethernet adapter 가 2개라는 이유다.

DL360은 Intel EtherExpress 100 모델의 ethernet adapter를 2개 가지고 있다.
헷갈리게시리 nic1, nic2 이런 식으로 되어있다.

nic1 = eth0
nic2 = eth1

그런데, 바뀌는 경우도 봤다(Gentoo 설치시 net-setup 할때)

어쨌든 기존에 깔려있던 CentOS 4.X 버전을 밀어버리고 Gentoo 를 설치했다(이제는 X를 설치하지 않는 Gentoo 설치가 휠씬 쉽게 느껴진다)

외부 ip를 담당하는 eth0에는 유동ip 할당, 내부 ip를 담당하는 eth1에는 고정ip 할당..

문제는 케이블 모뎀의 dhcp 서버를 찾기위해 Gentoo에서 dhcp 클라이언트를 설치했는데도 ip를 받아내지 못한다는 거였다.

모뎀을 껐다가 다시 켜고 시스템을 껐다가 다시 켜도 마찬가지다.
부팅시 이런 메시지가 나온다.
Apr 11 00:09:28 kaylee dhcpcd[2162]: eth0: ignoring packet with xid 605093888 as it's not ours (617566766)
Apr 11 00:09:29 kaylee dhcpcd[2162]: eth0: ignoring packet with xid 1040056063 as it's not ours (617566766)
Apr 11 00:09:29 kaylee dhcpcd[2162]: eth0: ignoring packet with xid 1040056063 as it's not ours (617566766)
Apr 11 00:09:32 kaylee dhcpcd[2162]: eth0: ignoring packet with xid -1031143425 as it's not ours (617566766)

gentoo forum에서 검색해 찾은 문제의 메시지다.

http://forums.gentoo.org/viewtopic-t-552662-highlight-ignoring+packet.html

해결책은 너무나 간단하다.

현재 gentoo 시스템(커널버전 2.6.21)에서  portage 싱크시키고 설치한 dhcpcd 버전이 3.0.16 이었다.
이 버전에서 ip를 받아오는 부분에 문제가 있다는 얘기를 예전에도 들은거 같았는데 깜박 잊었었다.

dhcp로 ip를 받아올때 아무런 문제가 없는 내 노트북의 dhcpcd 버전을 확인해보니 2.0.5 다.

역시나,

dhcpcd를 지우고 다운그레이드한 dhcpcd를 설치했다.

# emerge --unmerge dhcpcd
# emerge dhcpcd-2.0.5-r1.ebuild
# emerge --version
2.0.5
어쩌구 저쩌구...

재부팅하니 이상없이 ip를 받아온다.