Handbook:Parts/Networking/Advanced/ko

고급 설정
config_eth0 변수는 인터페이스 설정의 핵심입니다. 인터페이스(eth0) 설정의 하이 레벨 명령 모음입니다. 명령 목록의 각 명령은 순서대로 처리합니다. 인터페이스는 최소한 명령 한개가 동작하면 문제가 없는걸로 간주합니다.

내부 명령 목록은 아래와 같습니다.

명령 처리를 실패하면, 대체 명령을 정의합니다. 대체 명령은 설정 구조와 정확하게 일치합니다.

이 명령을 한데 묶을 수도 있습니다. 실제 사용하는 예제는 다음과 같습니다.

네트워크 의존성
의 초기화 스크립트는 특정 네트워크 인터페이스 또는 "net"에 의존할 수 있습니다. 젠투 init 시스템의 모든 네트워크 인터페이스를 "net"이라고 합니다.

에서 rc_depent_strict 변수를 "YES"로 설정하면, "net"으로 제공하는 모든 네트워크 인터페이스는 "반드시" "net"에 의존하는 조건을 만나기 전에 활성화해야합니다. 다시 말해 시스템에 net.eth0과 net.eth1, "net"에 의존하는 초기화 스크립트가 있다면 net.eth0과 net.eth1을 활성화해야합니다.

반면에 rc_depend_strict="NO" 설정값이 있다면, 최소한 하나의 네트워크 인터페이스를 띄웠을 때 "net" 의존성을 해결한 것으로 봅니다.

그러나 net.eth0과 net.eth1에 의존하는 net.br0는 어떨까요? net.eth1은 브릿지에 추가할 수 있기 전에 설정이 필필요한 무선 네트워크 또는 PPP 장치일 수도 있습니다. net.lo로 연결하는 심볼릭 링크이기 때문에 에선 처리가 불가능합니다.

의  설정을 지정하는 것이 해결책이 될 수 있습니다:

그러나 위의 절차를 따르는 것으로는 충분하지 않습니다. 젠투 네트워크 초기화 스크립트는 네트워크를 사용할 수 있을때 시스템에 알려주는 "net" 가상 의존성을 사용합니다. 분명하게 발하자면, 위와 같은 경우 다른 인터페이스를 띄울때가 아니라, net.br0을 띄웠을 때 네트워크를 사용할 수 있는 상태로 나타나야합니다. 따라서 에 다음과 같이 알려야합니다:

의존성에 대해 언급한 더 자세한 이야기는 젠투 핸드북의 초기화 스크립트(Initscript) 관련 절을 참고하십시오. 에 대한 더 많은 내용은 파일 자체에 적어놓은 주석에 있습니다.

변수 이름 및 값
변수 이름은 언제든 바뀝니다. 보통 의 구조를 따릅니다. 변수는 eth0의 dhdpcd 옵션 값을 가지고 있으며,  변수는 essid ESSID로 연결할 때의 dhcpcd 옵션 값을 가지고 있습니다.

그러나 이름이 ethx여야 하는 인터페이스에 대한 규칙이 어렵거나 고정된것은 아닙니다. 사실 대부분의 무선 네트워크 인터페이스에는 wlanx, rax, ethx와 같은 이름이 붙으며, 브릿지 같은 사용자 지정 인터페이스에도 어떤 이름이든 붙을 수 있습니다. 좀 더 즐기는 인생을 만들려 한다면 무슨 액세스 포인트에 알파벳-숫자를 써서 이름을 붙일 수 있습니다. 사용자는 ESSID로 네트워크 매개 변수를 설정할 수 있기 때문에 이 점은 중요합니다.

The downside of all this is that Gentoo uses bash variables for networking - and bash cannot use anything outside of English alpha-numerics. To get around this limitation we change every character that is not an English alpha-numeric into an _ (underscore) character.

Another downside of bash is the content of variables - some characters need to be escaped. This can be achieved by placing the \ character in front of the character that needs to be escaped. The following list of characters needs to be escaped in this way:, and.

In this example we use wireless ESSID as they can contain the widest scope of characters. We shall use the ESSID My "\ NET:

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

동작 방법
네트워크 인터페이스 이름은 순차적으로 부여하지 않습니다. 리눅스 커널과 장치 관리자(다른 장치 관리자도 있지만 대부분의 시스템에서는 udev를 장치 관리자로 지니고 있음)는 고정 규칙을 기반으로 인터페이스 이름을 선택합니다.

인터페이스 카드를 시스템에서 발견하면, 리눅스 커널에서는 이 카드에 대해 필요한 데이터를 가져옵니다. 가져오는 데이터에는 다음 내용이 들어있습니다:
 * ID_NET_NAME_ONBOARD 매개변수로 볼 네트워크 카드의 내장(인터페이스 자체) 등록 이름
 * ID_NET_NAME_SLOT 매개변수로 볼 수 있는 네트워크 카드가 붙은 슬롯
 * ID_NET_NAME_PATH 매개변수로 볼 수 있는, 접근 가능 네트워크 카드 장치 경로
 * ID_NET_NAME_MAC 매개변수로 볼 수 있는 카드의 (제조사 제공) MAC 주소

이 정보를 기반으로 장치관리자에서는 시스템의 인터페이스 이름을 어떻게 부여할지 결정합니다. 기본적으로 위에 언급한 세가지 매개변수(ID_NET_NAME_ONBOARD, _SLOT 또는 _PATH) 중 첫번째로 만나는 항목을 사용합니다. ID_NET_NAME_ONBOARD를 찾고 eno1으로 설정하면, 인터페이스는 eno1이 됩니다.

를 사용하면 활성 인터페이스의 이름으로 제공 매개변수의 값을 확인할 수 있습니다:

ID_NET_NAME_PATH 매개 변수 값이 최상위 3개 매개변수중 제일 처음(실제로도)에 위치했으므로, 이 값을 인터페이스 이름으로 사용합니다. 매개변수값이 없으면, 시스템에서는 커널에서 제공하는 이름으로 되돌립니다.

구형 방식 커널 이름 사용
설정을 바꾸기 전에 네트워크 인터페이스 커널은 리눅스 커널에서 드라이버를 불러온 순서에 따라 자체적으로 이름을 부여합니다(다른 경우는 알 수 없는 이유 때문일 수도 있음). 이 동작은 부트로더에서 net.ifnames=0 부팅 옵션을 설정하여 활성화할 수 있습니다.

개별 이름 사용
이름 부여 방식을 바꾸기 이전의 모든 아이디어는 햇갈릴 일이 없겠지만 이름을 바꾸는 것 자체는 쉽습니다. 시스템에 eth0과 eth1 인터페이스 두개를 달았다고 치겠습니다. 하나는 무선으로 네트워크에 연결하며, 다른 하나는 무선 네트워크 접근 방식으로 연결합니다. 이런 인터페이스 이름 부여 방식에 대해 lan0(유선)과 wifi0(무선 - eth*과 wlan*같이 충돌할 가능성이 흔히 사용하는 이름을 제안 이름 부여 방식으로 피하는게 좋음)으로 바꿀 수 있습니다.

카드에 해당하는 매개 변수를 찾아보시고 개별 자체 이름 규칙에 이 정보로 설정하십시오:

기본 규칙 이전에(철자순으로 규칙을 처리하므로 70을 80보다 먼저 처리) 처리하는 규칙이 있으므로 규칙 파일에서 제공한 이름을 기본 이름대신 사용합니다. 파일에 부여한 숫자는 76번과 79번 사이여야합니다(환경 변수는 75번부터 시작하며 대체 이름은 80번에서 끝납니다).