· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
GentooX86 Handbook_Ko_4-2

1. 진보된 환경설정

1.1. 진보된 환경설정

(역자 주 : command와 instruction은 둘다 명령으로 번역할 수 있는데 차이를 두기 위해 각각 명령과지침으로 달리 번역했습니다.)

config_eth0 변수는 인터페이스 환경설정의 중심입니다. 인터페이스를 설정하기 위해서 존재하는 상위수준 지침목록입니다.(이 경우에는 eth0가 인터페이스입니다). 지침목록에 포함된 각각의 명령들은 순차적으로 수행됩니다. 인터페이스는 마지막 명령이 동작하면 OK로 간주합니다.

여기 내장지침 목록이 있습니다.

Command Description
null Do nothing
noop If the interface is up and there is an address then abort configuration successfully
an IPv4 or IPv6 address Add the address to the interface
dhcp, adsl or apipa (or a custom command from a 3rd party module) Run the module which provides the command. For example dhcp will run a module that provides DHCP which can be one of either dhcpcd, udhcpc, dhclient or pump.

명령이 실패하면 폴백 명령을 지정할 수 있습니다. 폴백은 설정구조와 정확히 맞아야 합니다.

이 명령들을 같이 엮을 수도 있습니다. 여기 약간의 실제 예제가 있습니다.

예제 1-1 : 환경설정 예제
# Adding three IPv4 addresses
config_eth0=(
  "192.168.0.2/24"
  "192.168.0.3/24"
  "192.168.0.4/24"
)

# Adding an IPv4 address and two IPv6 addresses
config_eth0=(
  "192.168.0.2/24"
  "4321:0:1:2:3:4:567:89ab"
  "4321:0:1:2:3:4:567:89ac"
)

# Keep our kernel assigned address, unless the interface goes
# down so assign another via DHCP. If DHCP fails then add a
# static address determined by APIPA
config_eth0=(
  "noop"
  "dhcp"
)
fallback_eth0=(
  "null"
  "apipa"
)

유의사항: ifconfig모듈을 사용하고 있고 하나 이상의 주소를 추가하려 한다면 인터페이스 별칭은 각각의 별도주소를 위해 만들어집니다. 따라서 두가지 위의 예제를 통해 독자여러분께서는 eth0. eth0:1 eth0:2와 같은 인터페이스를 얻게 될 것입니다. 이런 특별한 인터페이스들은 커널에서 다루는 것이 아니라 다른 프로그램에서 eth0:1, eth0:2, eth0으로 다루게 될 것입니다.

중요: 폴백 순서는 중요합니다. 널 선택사항요소를 지정하지 않았다면 apipa 명령은 noop 명령이 실패했을때만 실행될 것입니다.

유의사항: [http]APIPA[http]DHCP는 뒤에서 논의하게 될 것입니다.

1.2. 네트워크 의존성

/etc/init.d의 Init 스크립트들은 설정한 네트워크 인터페이스나 net에 의존할 수 있습니다. net 은 /etc/conf.d/rc에 RC_NET_STRICT_CHECKING 변수를 사용하여 다른 의미로 정의될 수 있습니다.

Value Description
none The net service is always considered up
no This basically means that at least one net.* service besides net.lo must be up.
This can be used by notebook users that have a WIFI and a static NIC,
and only wants one up at any given time to have the net service seen as up.
lo This is the same as the no option, but net.lo is also counted.
This should be useful to people that do not care about any specific interface being up at boot.
yes For this ALL network interfaces MUST be up for the net service to be considered up.

그러나 net.eth0과 net.eth1에 대해 의존하는 net.br0은 어떨까요? net.eth1아마 브릿지를 추가할 수 있기 전에 환경설정이 필요한 무선 혹은 PPP장치 일 것입니다. 이는 net.lo의 심볼릭 링크인 /etc/init.d/net.br0에서 할 수 있는일이 아닙니다.

이는 /etc/conf.d/net에서 depend() 함수를 만드는게 답이 될 수 있습니다.

예제 2-1 : /etc/conf.d/net에서 net.br0의 의존성
# You can use any dependency (use, after, before) as found in current scripts
depend_br0() {
  need net.eth0 net.eth1
}

의존성에 대한 자세한 내용을 위해서 젠투 핸드북 내의 [http]Init Script 작성을 참조하세요.

1.3. 변수 이름과 값들

변수 이름은 동적입니다. 보통 variable_${interface|mac|essid|apmac}와 같은 구조를 따릅니다. 예를 들어, dhcpcd_eth0 변수는 dhcpcd의 eth0에 대한 옵션에 대한 값을 갖고, dhcpcd_essid 는 dhcpcd에서 어떤 인터페이스를 통해 ESSID "essid"로 연결할때 주는 옵션을 갖습니다.

그러나 이건 어려운 것이 아니며 ethx으로 되어야 하는 이름을 지넨 인터페이스의 상태를 표시하는 규칙을 신속하게 작성할 수 있습니다. 사실 많은 무선 인터페이스는 ethx만큼 wlanx,rax와 같은 이름들을 가집니다. 또한 어떤 사용자는 foo와 같은 어떤 이름이 주어질 수 있는 브릿지 인터페이스를 정의합니다. 이걸 좀 더 재밌게 하고 싶으면 무선 액세스 포인트가 영숫자가 아닌 문자를 포함할 수 있어야 합니다. 이것이 중요한 이유는 ESSID에 대응하는 네트워킹 파라메터를 설정할 수 있기 때문입니다.

이 모든 것의 단점으로, 젠투가 네트워킹을 수행하기 위해 배시 변수를 사용하고 배시 변수는 영어 영숫자 이외에는 사용할 수 없음을 볼 수 있습니다. 이런 제한조건 테두리에서 우리는 모든 문자들을 영어 영숫자가 아닌 다른 모든 문자는 _ 문자로 바꿉니다.

배시에서의 다른 단점이 있다면 변수의 내용입니다. 어떤 문자는 Escape가 필요합니다. 이는 모든 Escape가 필요한 문자들앞에 \를 놓음을 통해 해낼 수 있습니다. 다음 문자 목록은 ",',\와 같은 Escape가 필요한 문자들의 목록입니다.

이 예제를 통해 우리는 넓은 범위의 문자가 포함된 무선 ESSID를 사용할 수 있습니다. 우리는 My "\ NET 이라는 ESSID를 사용할 것입니다.

예제 3-1 : 변수 이름 보기(예시)
(This does work, but the domain is invalid)
dns_domain_My____NET="My \"\\ NET"

(The above sets the dns domain to My "\ NET when a wireless card
connects to an AP whose ESSID is My "\ NET)




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-02-22 22:50:53
Processing time 0.0068 sec