Solaris 10 영역 네트워크 구성

Solaris 10 영역 네트워크 구성

Generic_142901-04 커널을 사용하여 Solaris 10, 릴리스 10/09(s10x_u8wos_08a)에서 영역을 테스트하고 있습니다.

호스트 서버에는 두 개의 물리적 NIC(bnx0 및 bnx1)가 있으며 여러(세 개 이상) 영역을 실행하려고 하므로 영역에 NIC를 전용으로 할당하는 것은 불가능합니다. 현재 이 영역에 할당된 "전용" IP 주소가 없으므로 DHCP에서 임대를 받고 있습니다.

현재 설정을 보여드린 후 다시 답변해 드리겠습니다. 질문은 주로 이 네트워크 구성에 관한 것입니다.

영역을 설정하기 위해 수행한 단계(몇 가지 추가 정보 포함)는 다음과 같습니다.

erikn@global:~ $ zpool status zpool1
  pool: zpool1
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zpool1      ONLINE       0     0     0
          c1t1d0    ONLINE       0     0     0

errors: No known data errors

erikn@global:~ $ zfs list zpool1
NAME     USED  AVAIL  REFER  MOUNTPOINT
zpool1  84.1G   183G  6.14G  /zpool1

erikn@global:~ $ pfexec zfs create zpool1/zones

erikn@global:~ $ pfexec zfs set mountpoint=/zones zpool1/zones

erikn@global:~ $ pfexec zonecfg -z test \
> 'create -b ;
> set zonepath=/zones/test ;
> verify ;
> commit'

erikn@global:~ $ zoneadm list -vic
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              native   shared
   - test             configured /zones/test                    native   shared

존 설치를 진행했어요

erikn@global:~ $ pfexec zoneadm -z test install
A ZFS file system has been created for this zone.
Preparing to install zone <test>.
Creating list of files to copy from the global zone.
Copying <196614> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1595> packages on the zone.
Initialized <1595> packages on zone.
Zone <test> is initialized.
Installation of these packages generated errors: <SUNWvbox SUNWpostgr-83-server-data-root CSWcacertificates CSKmysql32 SUNWpostgr-82-libs SUNWpostgr-82-server SUNWpostgr-82-client SUNWpostgr-82-devel CSKphp5 SUNWpostgr-82-contrib CSKapache2 SUNWpostgr-82-server-data-root>
Installation of <1> packages was skipped.
The file </zones/test/root/var/sadm/system/logs/install_log> contains a log of the zone installation.

따라서 일부 패키지에서는 오류가 발생했지만 어쨌든 이 영역 내에서는 필요하지 않기 때문에 크게 걱정하지 않습니다.

어쨌든 설치가 0으로 종료되었습니다.

erikn@global:~ $ echo $?
0

영역을 부팅했습니다.

erikn@global:~ $ pfexec zoneadm -z test boot

그리고 "콘솔"에 연결되었습니다.

erikn@global:~ $ pfexec zlogin -C test

나는 설치를 따랐다. 언어 선택(영어), 로케일 설정(미국(en_US.ISO8859-1)), 터미널 유형(DEC VT100), 호스트 이름 제공(테스트), 시간대 설정(유럽/오슬로), 루트 비밀번호 설정( "password123" - 아니요, 농담입니다.

루트 쉘을 bash로 변경했습니다.

# usermod -s /usr/bin/bash root
UX: usermod: root is currently logged in, some changes may not take effect until next login.

로그아웃했다가 다시 로그인했습니다.

활성화된 서비스(텔넷 및 핑거 포함)가 많이 있었기 때문에 모든 것을 비활성화한 다음 작동하는 시스템이 있을 때까지 서비스를 다시 활성화하는 것이 더 쉬울 것이라고 생각했습니다.

-bash-3.00# svcs | grep " svc:" | sed "s/ \{1,\}/ /g" | cut -d' ' -f3 | \
> xargs svcadm disable

이렇게 하면 예상대로 영역이 시스템 유지 관리 모드로 전환됩니다.

모든 Milstone 서비스를 다시 활성화했습니다.

-bash-3.00# svcs -a | grep " svc:/milestone/" | sed "s/ \{1,\}/ /g" | \
> cut -d' ' -f3 | xargs svcadm enable

sshd 및 syslogd를 활성화했습니다.

-bash-3.00# svcadm enable svc:/network/ssh:default
-bash-3.00# svcadm enable svc:/system/system-log:default

종속성 서비스를 반복하여 활성화합니다.

-bash-3.00# while [ $( svcs -xv | wc -l ) -gt 0 ] ; do
> svcs -xv | grep "^svc" | cut -d' ' -f1 | xargs svcadm enable
> done
Hostname: test
Reading ZFS config: done.

콘솔 로그인을 활성화하고 상태를 확인했습니다.

-bash-3.00# svcadm enable svc:/system/console-login:default

-bash-3.00# svcs -xv
svc:/system/console-login:default (Console login)
 State: offline since August 27, 2012 11:38:04 AM CEST
Reason: Unknown.
   See: http://sun.com/msg/SMF-8000-AR
   See: man -M /usr/share/man -s 1M ttymon
Impact: This service is not running.

영역을 재부팅했습니다.

-bash-3.00# reboot

콘솔 로그인 프롬프트가 표시되었습니다. 로그인되었습니다. 확인된 서비스 상태:

-bash-3.00# svcs -xv

출력이 없으면 좋은 출력입니다.

적절한 측정을 위해 영역을 중지하고 전역 영역에서 스냅샷을 찍었습니다.

-bash-3.00# halt
Aug 27 12:10:08 test halt: halted by root
Aug 27 12:10:09 test syslogd: going down on signal 15

[NOTICE: Zone halted]
~.
[Connection to zone 'test' console closed]

erikn@global:~ $ pfexec zfs snapshot zpool1/zones/test@neat

그런 다음 영역을 다시 부팅하고 설치된 패키지의 종속성 순서를 알아냈습니다(이 "pkgdep" 스크립트 사용).여기에서 발견), 필요하지 않은 일부 항목을 제거했습니다.

다음은 네트워크를 구성하는 차례였습니다. 이것이 바로 이 질문의 내용입니다.

전역 영역에서 논리적 인터페이스를 생성하고 이를 "test" 영역에 할당했습니다.

erikn@global:~ $ pfexec ifconfig bnx1:1 plumb zone test

이것이 영역에 할당되었는지 확인할 수 있습니다.

-bash-3.00# ifconfig bnx1:1
bnx1:1: flags=1100842<BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 5
        inet 0.0.0.0 netmask 0

이제 영역이 IP 유형 "공유"로 구성되었으므로 인터페이스에서 DHCP 요청을 보낼 수 없습니다. 따라서 우리는 전역 영역에서 이를 수행합니다.

erikn@global:~ $ pfexec ifconfig bnx1:1 dhcp start
ifconfig: bnx1:1: wait timed out, operation still pending...

별로 잘 안 됐는데, 이제 됐나요?

erikn@global:~ $ echo $?
4

영역으로 돌아갑니다.

-bash-3.00# ifconfig bnx1:1
bnx1:1: flags=1104843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,ROUTER,IPv4> mtu 1500 index 5
        inet 10.0.6.92 netmask fffffc00 broadcast 10.0.7.255

음, IP 주소가 있습니다... (여기서 네트워크를 10.0.4.0/22로 교체했지만 넷마스크는 동일합니다).

이름 서버를 사용하도록 /etc/nsswitch.conf 및 /etc/resolv.conf를 수정합니다.

우리는 네트워크에서 HTTP 프록시를 사용하고 있으므로 이를 내보내는 것을 기억해야 합니다(보통 ~/.bash_profile에 넣습니다).

-bash-3.00# export http_proxy=http://proxy.example.com:8080

-bash-3.00# /usr/sfw/bin/wget http://www.google.com
--2012-08-27 13:03:30--  http://www.google.com/
Resolving proxy.example.com... 10.0.7.17
Connecting to proxy.example.com|10.0.7.17|:8080... connected.
Proxy request sent, awaiting response... 302 Found
Location: http://www.google.no/ [following]
--2012-08-27 13:03:40--  http://www.google.no/
Connecting to proxy.example.com|10.0.7.17|:8080... connected.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `index.html'

    [ <=>                                   ] 11,343      --.-K/s   in 0s

2012-08-27 13:03:40 (65.3 MB/s) - `index.html' saved [11343]

모든 것이 작동하는 것처럼 보이지만 완벽하지는 않습니다. 전역 영역으로 돌아가 보겠습니다.

먼저 DHCP를 사용하는 실제 bnx1 인터페이스가 있습니다.

erikn@global:~ $ ifconfig bnx1 dhcp status
Interface  State         Sent  Recv  Declined  Flags
bnx1       BOUND         2357  1558       778
(Began, Expires, Renew) = (08/27/2012 12:09, 08/31/2012 12:09, 08/29/2012 12:09)

그런 다음 논리적 인터페이스가 있습니다.

erikn@global:~ $ ifconfig bnx1:1 dhcp status
Interface  State         Sent  Recv  Declined  Flags
bnx1:1     PRE_BOUND       20    14         6

또 다른 논리적 인터페이스를 만들어 보겠습니다. 단, 이 인터페이스를 어떤 영역에도 제공하지 않으므로 전역 영역에 속하게 됩니다.

erikn@global:~ $ pfexec ifconfig bnx1:2 plumb

erikn@global:~ $ pfexec ifconfig bnx1:2 dhcp start

erikn@global:~ $ echo $?
0

erikn@global:~ $ ifconfig bnx1:2
bnx1:2: flags=1104843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,ROUTER,IPv4> mtu 1500 index 5
        inet 10.0.6.123 netmask fffffc00 broadcast 10.0.7.255

erikn@global:~ $ ifconfig bnx1:2 dhcp status
Interface  State         Sent  Recv  Declined  Flags
bnx1:2     BOUND            5     4         1
(Began, Expires, Renew) = (08/27/2012 13:11, 08/31/2012 13:11, 08/29/2012 13:11)

그래서 그것은 아주 완벽하게 작동했습니다. 아아, 그것은 우리에게 별로 도움이 되지 않습니다.

나는 해당 인터페이스를 "테스트" 영역에 넘겨주려고 했습니다.

erikn@global:~ $ pfexec ifconfig bnx1:2 zone test
erikn@global:~ $ echo $?
0

그것에 대해 너무 행복하지 않았습니다.

erikn@global:~ $ ifconfig bnx1:2 dhcp status
Interface  State         Sent  Recv  Declined  Flags
bnx1:2     DECLINING        6     4         2

그리고 인터페이스에서 DHCP 클라이언트를 새로 해제하고 시작하면 지난번에 본 것과 동일한 결과가 나타납니다.

erikn@global:~ $ pfexec ifconfig bnx1:2 dhcp release

erikn@global:~ $ pfexec ifconfig bnx1:2 dhcp start
ifconfig: bnx1:2: wait timed out, operation still pending...

마지막으로 절박한 시도로 다음과 같이 시도했습니다.

erikn@global:~ $ pfexec ifconfig bnx1:2 plumb \
> netmask 0xfffffc00 \
> broadcast 10.0.7.255 \
> zone test \
> up

그런 행운은 없습니다.

erikn@global:~ $ pfexec ifconfig bnx1:2 dhcp start
ifconfig: bnx1:2: wait timed out, operation still pending...

내 질문은 기본적으로 다음과 같습니다.

  • 자체 물리적 NIC를 제공하지 않고도 Solaris 10/09 영역에 대해 DHCP 할당 IP를 갖는 것이 가능합니까?

  • 내가 잘못된 방향으로 가고 있는 걸까? 대신 영역에 대한 개인 IP를 갖고 호스트 컴퓨터가 NAT를 수행하도록 해야 합니까? 그게 가능합니까?

저의 최종 목표는 각 영역에서 서로 다른 네트워크 연결 서비스를 실행하는 것입니다.

  • 영역 전체에 걸쳐 일부 네트워크 통신이 이루어지며

  • 그들은 또한 우리 네트워크의 다른 호스트가 사용할 네트워크 접근 가능 서비스를 실행할 것입니다.

답변1

영역 가상 인터페이스에는 일부 기능이 제한되어 있습니다. 일부 상태는 설정할 수 없으며 패킷 필터도 영역에서 작동하지 않습니다. 내 기억이 맞다면 영역 인터페이스는 이더넷 브로드캐스트를 보낼 수 없으므로 DHCP도 없습니다.

그런데 왜 영역 인터페이스 설정에 대해 그렇게 부풀리는 작업을 하고 있나요? 이건 어때?

pfexec zonecfg -z test
> 'create -b ;
> set zonepath=/zones/test ;
> add net ;
> set physica=bnx1 ;
> set address=10.0.6.92 ;
> end ;
> verify ;
> commit'

전역 영역 인터페이스에서 넷마스크를 상속합니다. 물론 더 많은 인터페이스를 설정하거나 '내부' 인터페이스(공용 IP 없음)에만 영역을 설정 ipf하고 NAT.

관련 정보