'오픈솔라리스'에 해당되는 글 2건

  1. 2009.12.29 솔라리스 및 오픈솔라리스에서 DHCP 서버 설정하기
  2. 2009.02.17 오픈 솔라리스에서 존 설치 ( zone install on opensolaris )
2009. 12. 29. 18:50

솔라리스 및 오픈솔라리스에서 DHCP 서버 설정하기

Jeppe Toustrup, 2009년 6월  

유저들이 유닉스 혹은 리눅스 시스템에서 DHCP 서버를 설정하려고 할때 일반적으로는 많은 배포판안에 포함되어 있는 ISC DHCP 서버를 사용할 것입니다. 그러나 이 것은 솔라리스나 오픈솔라리스에는 포함되어 있지 않습니다. 그러므로 솔라리스의 경우 유저들은 설정하는 방법이 아주 많이 다른 그들 만의 DHCP 서버를 사용하게 될것입니다.

이 테크 팁은 여러분이 솔라리스 혹은 오픈솔라리스의 SUNWdhcs 패키지 내에 포함된 번들 DHCP 서버를 사용하여 DHCP 를 설정하는 방법에 대해 설명 합니다. 이 글에서는 몇개의 정적인 특정 호스트들과 랜덤 유저들을 위한 몇가지 작은 주소 풀들을 설정할 것입니다.

참고: 이 글은 솔라리스10 과 오픈솔라리스에서 모두 잘 동작할 것입니다. 솔라리스 버전 10 이외에 버전에서는 테스트해 보지 않았습니다.

DHCP 서버는 솔라리스에서 SUNWdhcsrSUNWdhcsu 패키지로써 찾으실 수 있습니다.

그러나 오픈솔라리스에서는 SUNWdhcs 패키지를 설치해야 합니다. 이것은 다음의 커맨드를 이용해서 수행할 수 있습니다:

 
$ pfexec pkg install SUNWdhcs

설치 이후에, 여러분은 dhcpconfig 커맨드를 이용해서 DHCP 서버가 사용할 설정들을 포함할 설정 디렉토리들을 설정 합니다:

 
$ pfexec dhcpconfig -D -r SUNWfiles -p /var/dhcp -a 192.168.0.1 \
-d office.lan -h files -l 86400

파라미터들은 다음과 같습니다:

  • -D: 새로운 DHCP 서비스 인스턴스를 설정한다고 가르킴.
  • -r SUNWfiles: 일반적인 단순-텍스트 파일 저장소를 사용할 것이라고 가르킴. 다른 옵션들은 SUNWbinfiles 혹은 SUNWnisplus 이 있지만 이 글에서는 다루지 않음.
  • -p /var/dhcp: 설정 파일들이 저장될 절대 경로들을 가르킴.
  • -a 192.168.0.1:랜 환경에서 사용할 DNS 서버를 가르킴. 콤마를 이용해서 복수개의 서버를 지정할 수 있음.
  • -d office.lan: 네트워크에서 사용할 도메인 이름을 지정함.
  • -h files: 호스트 정보가 저장될 곳을 지정함. 다른 값들 로는 nisplusdns 가 있음.
  • -l 86400: 대여 시간을 초 단위로 지정함. 86400 초 = 24 시간

이후에 여러분은 설정할 네트워크를 생성해야 합니다. 이것은 다음의 커맨드를 이용해서 수행할 수 있습니다:

 
$ pfexec dhcpconfig -N 192.168.0.0 -m 255.255.255.0 -t 192.168.0.1

파라미터들은 다음과 같습니다:

  • -N 192.168.0.0: 지정된 네트워크 주소를 이용해서 새로운 네트워크 생성
  • -m 255.255.255.0: 네트워크에 사용할 네트워크 마스크를 지정
  • -t 192.168.0.1: 기본 게이트웨이 지정

이전에 입력되었던 모든 네트워크 설정들은 매크로로써 저장되고, 각각은 작은 설정 옵션들의 집합으로 구성 됩니다. 매크로들은 특정 호스트에 대한 설정 그룹을 지정하는 것을 용이하게 해 줍니다. 다음의 커맨드를 수행 함으로써 현재 생성된 매크로들의 목록을 보실 수 있습니다:

 
$ dhtadm -P

여러분은 총 3개의 매크로가 생성되어 있음을 보실 것입니다. 하나의 매크로는 여러분의 호스트 이름을 따라서 만들어 졌고 첫번째 dhcpconfig 커맨드에 의해 설정된 시스템 레벨에 지정된 설정을 포함하고 있습니다.

다른 매크로는 여러분이 방금 만든 네트워크의 이름을 가지고 있고 마지막 커맨드에서 입력한 설정들을 포함하고 있습니다.

마지막 매크로 Locale 은 단순히 타임존에 대한 정보를 가지고 있고, 이것은 UTC 와 여러분의 타임존과의 시간차를 초 단위로 가지고 있습니다.

출력에서 볼 수 있듯이 현재 타임 서버는 127.0.0.1 로 설정되어 있고 DHCP 클라이언트에는 어떠한 영향도 주지 않습니다. 그러므로 우리는 이것을 기본 게이트웨이 및 DNS 서버로써 사용 중인 192.168.0.1 로 정정할 것입니다. 변경은 아래의 절차를 수행함으로써 이루어 집니다:

 
$ pfexec dhtadm -M -m `hostname` -e Timeserv=192.168.0.1

파라미터들은 다음과 같습니다:

  • -M: 수정할 매크로를 지정.
  • -m `hostname`: 수정할 매크로를 지정함. 쉘은 `hostname` 을 여러분의 호스트 이름으로 변경할 것임.
  • -e Timeserv=192.168.0.1: 변경하고자 하는 설정 및 값을 지정함.

다시한번 여러분은 위의 커맨드로 변경된 설정들을 확인하실 수 있습니다:

 
$ dhtadm -P

우리는 또한 192.168.0.0 매크로를 변경할 것이고 이것을 `hostname 매크로의 내용을 포함하도록 설정할 것입니다:

 
$ pfexec -M -m 192.168.0.0 -e Include=`hostname`

DHCP 서버를 설정하기 위한 마지막 커맨드는 pntadm 로, 네트워크 상의 각각의 호스트를 설정 하는 커맨드 입니다. 다음의 커맨드는 호스트를 위한 정적인 DHCP 항목을 추가 합니다:

 
$ pfexec pntadm -A 192.168.0.2 -c "Comment" -f MANUAL \
-i 01001BFC92BC10 -m 192.168.0.0 -y 192.168.0.0

파라미터들은 다음과 같습니다:

  • -A 192.168.0.2: IP 주소 192.168.0.2 를 추가함.
  • -c "Comment": 여러분의 편의를 위해서 항목의 커맨드를 지정함.
  • -f MANUAL: 지정된 AMC 주소에 오직 이 IP 주소만을 할당하기 위해서 플래그를 MANUAL 로 지정함.
  • -i 01001BFC92BC10: 이 항목이 가르킬 호스트의 맥 주소 (Client_ID) 를 설정함. 지정한 값이 이더넷 주소라는 것을 가르키기 위해서 앞에 01 이 붙어야 함.
  • -m 192.168.0.0: 이 호스트는 192.168.0.0 매크로를 사용할 것임을 명시함.
  • -y: 입력된 매크로가 실제로 존재하는지를 검사하도록 함.
  • 192.168.0.0: 주소가 지정되는 네트워크를 지정함.

설정을 확인하기 위한 커맨드는 아래와 같습니다:

 
$ pntadm -P 192.168.0.0

이제 네트워크 상의 호스트에 IP 주소를 추가합니다:

 
$ pfexec pntadm -A 192.168.0.10 -m 192.168.0.0 -y 192.168.0.0

동일한 파라미터들이 이전과 같이 적용 됩니다, 그러나 더 많은 옵션들을 그냥 남겨 두었습니다. 어떠한 호스트가 이 주소를 가져갈지 모르기 때문 입니다.

마지막으로 할 일은 변경 사항들을 적용하기 위해서 서버를 재기동 하는 것입니다:

 
$ pfexec svcadm restart dhcp-server

이제 모든 작업이 완료 되었습니다.

참고자료

저자에 관하여

Jeppe Toustrup 는 지난 10년동안 리눅스 솔라리스 등 다양한 운영체제를 다루어 왔습니다. 그리고 지난 5년간 덴마크 ISP 들을 위해서 시스템 관리자로써 일해 오고 있습니다.

이 글의 영문 원본은
Configuring the DHCP Server for the Solaris OS or OpenSolaris OS
에서 보실 수 있습니다.


출처 : blog.sdnkorea.com


Trackback 0 Comment 0
2009. 2. 17. 11:11

오픈 솔라리스에서 존 설치 ( zone install on opensolaris )

오픈 솔라리스에서 컨테이너(존)을 설치해보았습니다.
컨테이너를 설치하려면 일단 컨테이너 구성을 해야 합니다.
#zonecfg -z web
을 이용해서 다음과 같이 구성했습니다.

bhkim@vaio-bhkim:/zone# zonecfg -z web export
create -b
set zonepath=/zone/web
set brand=ipkg
set autoboot=false
set ip-type=shared
add net
set address=10.10.0.1/24
set physical=yukonx0
end
여 기서 흥미로운 것은 brand의 변수가 'native'가 아니라 'ipkg'이라는 점입니다. ipkg는 오픈 솔라리스가 사용하는 인스톨러 방식인 IPS를 위한 패키지를 의미하는데, 이점은 컨테이너 설치시에 필요한 이미지를 인터넷에서 다운로드 받겠다는 것을 의미합니다.

그리고, zonepath=/zone/web 인데, 사전에 만들어져 있다면, 반드시 ACL mode를 700으로 설정해야 합니다. 디렉토리가 없다면, 존 구성시 700을 가진 /zone/web 디렉토리를 자동적으로 구성합니다.

혹시나 해서 brand를 native로 바꾸어 보았습니다.
그리고, 아래 처럼 확인하고
bhkim@vaio-bhkim:~# zoneadm list -cv

ID NAME STATUS PATH BRAND IP
0 global running / native shared
- web configured /zone/web native shared

설치 시도해봅니다.
bhkim@vaio-bhkim:~# zoneadm -z web install

sh[1]: exec: /usr/lib/lu/lucreatezone: not found
안되는 군요. native는 lu(live upgrade)기술을 활용해서 글로벌존에 있는 패키지를 이미지화 해서 컨테이너가 있는 디렉토리로 옮겨주는데 아예 툴이 없습니다.

bhkim@vaio-bhkim:~# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- web incomplete /zone/web native shared
설치시도에서 오류가 밸생해서 존의 상태가 incomplete로 남게됩니다. 따라서, 새로 설치를 다시 하려면 configured 모드로 돌아가야 하는데, 그렇게 만들기 위해서 uninstall을 실행합니다.

bhkim@vaio-bhkim:~# zoneadm -z web uninstall

Are you sure you want to uninstall zone web (y/[n])? y

성공적으로 uninstall 되었으면 다시 설치해봅니다.

bhkim@vaio-bhkim:~# zoneadm -z web install


Image: Preparing at /zone/web/root ... done.
Catalog: Retrieving from http://pkg.opensolaris.org:80/ ... done.
Installing: (output follows)
DOWNLOAD PKGS FILES XFER (MB)
SUNWcsl 22/52 4681/7830 79.66/209.30


설치가 진행되고 있군요. 인터넷이 연결되어 있지 않으면 위 URL에 접속할 수 없으므로, 설치가 되지 않습니다. 좋은 점도 있긴 합니다만 인터넷이 없으면 설치하기가 어려우므로 다소 불편할 수도 있겠습니다.

다음은 설치가 완료된 상태입니다.
bhkim@vaio-bhkim:~# zoneadm -z web install

Image: Preparing at /zone/web/root ... done.
Catalog: Retrieving from http://pkg.opensolaris.org:80/ ... done.
Installing: (output follows)
DOWNLOAD PKGS FILES XFER (MB)
Completed 52/52 7830/7830 209.30/209.30

PHASE ACTIONS
Install Phase 12880/12880

Note: Man pages can be obtained by installing SUNWman
Postinstall: Copying SMF seed repository ... done.
Postinstall: Working around http://defect.opensolaris.org/bz/show_bug.cgi?id=681
Postinstall: Working around http://defect.opensolaris.org/bz/show_bug.cgi?id=741
Done: Installation completed in 648.009 seconds.

Next Steps: Boot the zone, then log into the zone console
(zlogin -C) to complete the configuration process


설치가 끝났으므로, 부팅을 해봅니다. 그리고 콘솔에 로그인해봅니다.

bhkim@vaio-bhkim:~# zoneadm -z web boot
zoneadm: zone 'web': Unable to set route for interface lo0 to ��� ��x�
zoneadm: zone 'web':
bhkim@vaio-bhkim:~# zlogin -C web
[Connected to zone 'web' console]


You did not enter a selection.
What type of terminal are you using?
1) ANSI Standard CRT
2) DEC VT100
3) PC Console
4) Sun Command Tool
5) Sun Workstation
6) X Terminal Emulator (xterms)
7) Other
Type the number of your choice and press Return: 6
Creating new rsa public/private host key pair
Creating new dsa public/private host key pair
Configuring network interface addresses: yukonx0.


─ Host Name for yukonx0:1 ──────────────────────────────────────────────────────

Enter the host name which identifies this system on the network. The name
must be unique within your domain; creating a duplicate host name will cause
problems on the network after you install Solaris.

A host name must have at least one character; it can contain letters,
digits, and minus signs (-).


Host name for yukonx0:1 web











────────────────────────────────────────────────────────────────────────────────
F2_Continue F6_Help

;정상적으로 떴군요. ^_^

매우 흥미로운 것은 컨테이너를 만들기 전에 컨테이너 저장될 디렉토리를 미리 만들어놨었는데(아래)
...
rpool/zone 110K 37.3G 20K /rpool/zone
rpool/zone/mysql-db1 18K 37.3G 18K /zone/mysql-db1
rpool/zone/mysql-db2 18K 37.3G 18K /zone/mysql-db2
rpool/zone/mysql-mgm 18K 37.3G 18K /zone/mysql-mgm
rpool/zone/mysql-sql 18K 37.3G 18K /zone/mysql-sql
rpool/zone/web 18K 37.3G 18K /zone/web


설치하고 나니 /zone/web 디렉토리를 사라져 버리고 안보이는 군요. 정상인 것인지 다소 궁금합니다.
아마도 보안이유로 마운트 포인트에서 없앤것이 아닌가 싶은데, 그렇다고 zfs list에서 조차 보이지 않는 것은 좀 의아하군요.

설치이후
bhkim@vaio-bhkim:/zone# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 39.0G 37.3G 57K /rpool
rpool@install 17K - 55K -
rpool/ROOT 6.67G 39.6G 18K /rpool/ROOT
rpool/ROOT@install 15K - 18K -
rpool/ROOT/opensolaris 6.67G 39.6G 4.04G legacy
rpool/ROOT/opensolaris@install 503M - 2.22G -
rpool/ROOT/opensolaris@091108 102M - 3.87G -
rpool/ROOT/opensolaris@091608 19.6M - 3.80G -
rpool/ROOT/opensolaris/opt 1.96G 39.6G 1.77G /opt
rpool/ROOT/opensolaris/opt@install 112K - 3.60M -
rpool/ROOT/opensolaris/opt@090308 191M - 1.73G -
rpool/ROOT/opensolaris/opt@091608 1009K - 1.77G -
rpool/export 30.0G 37.3G 19K /export
rpool/export@install 15K - 19K -
rpool/export/home 12.2G 55.1G 11.8G /export/home
rpool/export/home@090308 404M - 10.9G -
rpool/zone 90K 37.3G 18K /rpool/zone
rpool/zone/mysql-db1 18K 37.3G 18K /zone/mysql-db1
rpool/zone/mysql-db2 18K 37.3G 18K /zone/mysql-db2
rpool/zone/mysql-mgm 18K 37.3G 18K /zone/mysql-mgm
rpool/zone/mysql-sql 18K 37.3G 18K /zone/mysql-sql

아마도 해달 화일 시스템인 /zone/web을 언마운트하고 /rpool/zone 밑의 서브 디렉토리로 생성한 것처럼 보이는 군요.
왜 그랬을까요 ? 흠...

이 렇게 되도, 작동에는 별 문제 없으나, 가용성에는 매우 불편해질 수 있겠습니다. 만약 rpool/zone/web이 그대로 남아있다면, 모두 설치 이후에 해당 화일 시스템의 스냅샷을 설정하게되면, 클로닝 기능을 이용하여 빠르게 복구할 수 있을텐데요.. 그렇게 안된다는 점이 매우 안타깝네요.

새로 만들어진 존에 로그인해봅니다.
bhkim@vaio-bhkim:~# zlogin -C web
[Connected to zone 'web' console]

web console login: root
Last login: Fri Sep 19 10:32:28 on pts/4
Sep 19 10:40:01 web login: ROOT LOGIN /dev/console
Sun Microsystems Inc.   SunOS 5.11      snv_98  November 2008
-bash-3.2# pwd
/root
-bash-3.2# uname -a
SunOS web 5.11 snv_86 i86pc i386 i86pc

헉.. 무지 놀라운 사실이 보이는 군요. 새로 설치된 존에서의 배너에서는  snv_98로 나타나는 군요. 햐..
글로벌 존은 snv_86이거든요. ipkg 브랜드에 의해서 인터넷에 있는 최신 패키지들이 내려온 것으로 보입니다.
그 러나 uname -a에서는 글로벌존과 같은 넘버가 나타나죠. 글로벌존의 라이브러리로 호출되기 때문인 것으로 예상됩니다. 호환성의 문제만 없다면 괜찮겠습니다만... 서브 존과 글로벌 존이 다른 라이브러리 환경을 가지는 것처럼 보일 수 있어서 고쳐져야 할 것 같습니다.


출처 : http://beautifulos.blogspot.com/

Trackback 0 Comment 0