[[TableOfContents]] == 진보된 환경설정 == === 진보된 환경설정 === (역자 주 : 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://wiki.kldp.org/wiki.php/GentooX86Handbook_Ko_4-3#s-1.5 APIPA]와 [http://wiki.kldp.org/wiki.php/GentooX86Handbook_Ko_4-3#s-1.3 DHCP]는 뒤에서 논의하게 될 것입니다.''' === 네트워크 의존성 === /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.[[BR]]This can be used by notebook users that have a WIFI and a static NIC,[[BR]] 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.[[BR]] 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://wiki.kldp.org/wiki.php/GentooX86Handbook_Ko_2-4#s-1.4 Init Script 작성]을 참조하세요. === 변수 이름과 값들 === 변수 이름은 동적입니다. 보통 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) }}} [http://wiki.kldp.org/wiki.php/GentooX86Handbook_Ko 이전으로 가기]