Trans:GentooX86Handbook4-3

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기

모듈러 네트워크

네트워크 모듈

이제부터 모듈러 네트워크 스크립트를 지원합니다. 이는 새로운 인터페이스 형식과 기존 요소와 호환성을 유지하는 모듈 설정의 지원을 쉽게 추가할 수 있음을 의미합니다.

패키지를 설치할 필요가 있을 때 모듈을 기본적으로 불러옵니다. 패키지를 설치하지 않은 모듈을 여기에 지정했다면 설치해야 할 패키지가 무엇인가에 대한 오류를 만나게 될 것입니다. 이상적으로 서비스를 올리기 위해 두 개 이상의 동일한 패키지를 설치했고 둘 중 하나를 우선시해야 할 경우 모듈 설정만을 사용합니다.


참고: 다른 요소를 지정하지 않는 한 모든 설정에 대해서는 /etc/conf.d/net에 언급되어 있습니다.



코드 예제 1.1: 모듈 기본 설정
# Prefer ifconfig over iproute2

modules="ifconfig"


# You can also specify other modules for an interface
# In this case we prefer pump over dhcpcd

modules_eth0="pump"

# You can also specify which modules not to use - for example you may be
# using a supplicant or linux-wlan-ng to control wireless configuration but
# you still want to configure network settings per ESSID associated with.

modules="!iwconfig"


인터페이스 핸들러

현재는 ifconfigiproute2 두 가지의 인터페이스 핸들러를 제공합니다.어떤 방식의 네트워크 설정에서든 둘 중 하나가 필요합니다.

기본적으로 ifconfig를 설치했습니다 (net-tools 패키지가 시스템 프로파일의 일부입니다). iproute2는 좀더 강력하고 유연한 패키지이지만 기본으로 들어있지는 않습니다.


코드 예제 2.1: iproute2 설치하기
# emerge sys-apps/iproute2

# To prefer ifconfig over iproute2 if both are installed as openrc prefers
# to use iproute2 then

modules="ifconfig"


ifconfigiproute2는 서로 매우 유사한 존재이므로 이들 기본 설정을 두 핸들러에서 작업할 수 있도록 할 수 있습니다. 예를 들어 다음 두 코드는 여러분이 어떤 모듈을 쓰든지 관계 없이 동작합니다.


코드 예제 2.1: ifconfig와 iproute2 예제
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"

# We can also specify broadcast
config_eth0="192.168.0.2/24 brd 192.168.0.255"
config_eth0="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"


DHCP

DHCP는 DHCP서버로부터 네트워크 정보(IP 주소, DNS 서버, 게이트웨이 등)를 얻는 서비스를 의미합니다. 이는 여러분이 사용하는 네트워크에 DHCP 서버가 동작중이라면, DHCP를 사용하도록 각각의 클라이언트에게 알리고 클라이언트 자체적으로 모든 네트워크 설정을 알아서 하게 해야 합니다. 물론, DHCP 서비스를 사용하기 전에 필요한 경우 무선, PPP망 등에 대해서도 설정해야 할 것입니다.

DHCP 서비스는 dhclient, dhcpcd, pump 로 이용할 수 있습니다. 각각의 DHCP 모듈에는 장단점이 있습니다. 잠깐동안 빠르게 훑어보십시오.

DHCP 모듈 패키지 장점 단점
dhclient net-
misc/dhcp
BIND DNS 프로그램을 만든 사람들의 모임인 ISC가 만들었습니다. 설정하기가 매우 용이합니다 설정 방식이 복잡하고 프로그램의 규모가 쓸데없이 거져있으며, DHCP로부터 NTP 서버를 가져올 수 없습니다. 그리고 기본적으로 호스트 이름을 보낼 수 없습니다.
dhclient net-
misc/dhcpcd
오랫동안 젠투 기본 클라이언트로 존재해왔으며, 다른 도구에 의존하지 않고, 젠투에서 활발하게 개발중입니다 가끔 느릴 수가 있으며, 정보 가져오기가 끝나지 않으면 데몬 동작이 안됩니다.
dhclient net-
misc/pump
다른 도구에 의존하지 않으며, 가볍습니다. 메인스트림에서 더이상 관리하지 않고, 신뢰성이 없으며, 특히 모뎀을 통해서는 DHCP로부터 NIS서버를 가져올 수 없습니다.

DHCP 클라이언트를 하나 이상 설치했다면 어떤 것을 사용할지 지정해야 합니다. 그렇지 않으면 dhcpcd가 있을 경우 기본으로 사용합니다.

DHCP 모듈에 지정 옵션을 보내려면 module_eth0="..."을 사용하십시오(dhcpcd_eth0과 같이 여러분이 사용하는 DHCP 모듈로 바꿔줍니다).

DHCP 서비스를 경우에 따라 불가능하게끔 해보겠습니다. 보통 다음을 dhcp_eth0 변수에 사용하는 명령으로 지원합니다. 기본값은 이들 중 어떤 것도 설정하지 않는 것입니다.

  • release - IP 주소를 재사용하기 위해 릴리즈하지 않습니다.
  • nodns - /etc/resolv.conf를 덮어씌우지 않습니다.
  • nontp - /etc/ntp.conf를 덮어씌우지 않습니다.
  • nonis - /etc/yp.conf를 덮어씌우지 않습니다.


코드 예제 3.1: /etc/conf.d/net의 DHCP 설정 예제
# Only needed if you have more than one DHCP module installed
modules="dhcpcd"

config_eth0="dhcp"
dhcpcd_eth0="-t 10" # Timeout after 10 seconds
dhcp_eth0="release nodns nontp nonis" # Only get an address



참고: dhcpcdpump는 기본적으로 DHCP서버에 현재 호스트 이름을 보내므로 이러한 사항을 지정할 필요가 없습니다.


PPPoE/PPPoA를 통한 ADSL

먼저 ADSL 프로그램을 설치해야 합니다.


코드 예제 4.1: ppp 패키지 설치하기
# emerge net-dialup/ppp


다음, PPP net 스크립트와 PPP로 이더넷 인터페이스를 사용할 net 스크립트를 작성합니다.


코드 예제 4.2: PPP와 이더넷 스크립트 작성
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0


/etc/rc.conf에 rc_depend_strict를 "YES"로 설정했는지 확인하십시오.

이제 /etc/conf.d/net을 설정할 차례입니다.


코드 예제 4.3: 기본 PPPoE 설정
config_eth0=null (Specify your ethernet interface)
config_ppp0="ppp"
link_ppp0="eth0" (Specify your ethernet interface)
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"

rc_need_ppp0="net.eth0"


/etc/ppp/pap-secrets에 암호를 설정할 수도 있습니다.


코드 예제 4.4: /etc/ppp/pap-secrets 예제
# The * is important
"username" * "password"


USB 모뎀을 사용하여 PPPoE 연결을 사용하려면 br2684ctl을 이머지 해야 합니다. 어떻게 설정하는지에 대한 내용을 알아보시려면 /usr/portage/net-dialup/speedtouch-usb/files/README를 읽어보십시오.


중요: /usr/share/doc/openrc-0.8.3-r1/net.example.bz2의 "ADSL and PPP"절을 주의 깊게 읽어보시기 바랍니다. 여기에는 필요할 수도 있는 까다로운 PPP 설정에 대해 자세한 설명이 있습니다.0.8.3-r1 버전 문자열은 여러분의 시스템에 설치한 OpenRC 버전으로 바꾸십시오.


APIPA (자동 개인 IP 주소지정)

APIPA는 인터페이스 자체에서의 임의 주소할당을 통해 169.254.0.0부터 169.254.255.255까지의 범위 내에서 가용 주소를 찾으려고 시도합니다. 반응이 없을 경우 인터페이스에 주소를 할당해야 합니다.

DHCP 서버가 없고 인터넷에 직접 연결할 수 없으며 다른 컴퓨터가 APIPA서비스를 사용하는 경우 LAN 상에서 유용합니다.

APIPA 지원을 설치하려면, net-misc/iputils 또는 net-analyzer/arping을 이머지하십시오.


코드 예제 5.1: /etc/conf.d/net의 APIPA 설정
# Try DHCP first - if that fails then fallback to APIPA
config_eth0="dhcp"
fallback_eth0="apipa"

# Just use APIPA
config_eth0="apipa"


본딩

본딩 또는 트렁킹에 연결하려면 net-misc/ifenslave를 이머지하십시오.

본딩은 네트워크 대역폭을 확장하는데 사용합니다. 두 개의 네트워크 카드가 같은 네트워크에 연결되어 있다면, 두 카드를 함께 붙일 수 있으며, 따라서 실제 프로그램들은 하나의 인터페이스로 보지만 실제로는 두 개의 네트워크 카드를 사용합니다.


코드 예제 6.1: /etc/conf.d/net의 본딩 설정
# To bond interfaces together

slaves_bond0="eth0 eth1 eth2"

# You may not want to assign an IP to the bonded interface
config_bond0="null"

# Depend on eth0, eth1 and eth2 as they may require extra configuration

rc_need_bond0="net.eth0 net.eth1 net.eth2"


브릿징 (802.1d 지원)

브릿징 지원을 활용하려면 net-misc/bridge-utils를 이머지하십시오.

브릿징은 두 네트워크를 묶을 때 사용합니다. 예를 들어 ADSL 모뎀을 사용한 인터넷에 연결하는 서버가 있고, 다른 컴퓨터들이 ADSL 모뎀을 통해 인터넷에 연결할 수 있도록 하는 무선 액세스 카드가 있다고 가정해봅시다. 이럴 경우 여러분은 두 인터페이스를 연결하는 브릿지를 만들 수 있습니다.


코드 예제 7.1: /etc/conf.d/net의 브릿지 설정
# Configure the bridge - "man brctl" for more details
brctl_br0="setfd 0" "sethello 0" "stp off"

# To add ports to bridge br0
bridge_br0="eth0 eth1"

# You need to configure the ports to null values so dhcp does not get started
config_eth0="null"
config_eth1="null"

# Finally give the bridge an address - you could use DHCP as well
config_br0="192.168.0.1/24"

# Depend on eth0 and eth1 as they may require extra configuration
rc_need_br0="net.eth0 net.eth1"



중요: 일부 브릿지 설정을 사용하시려면, [변수 이름] 문서를 참조하십시오.


MAC 주소

필요한 경우 네트워크 설정 파일을 통해 인터페이스의 MAC 주소를 바꿀수도 있습니다.


코드 예제 8.1: MAC 주소 바꾸기 예제
# To set the MAC address of the interface
mac_eth0="00:11:22:33:44:55"

# To randomize the last 3 bytes only
mac_eth0="random-ending"

# To randomize between the same physical type of connection (e.g. fibre,
# copper, wireless) , all vendors

mac_eth0="random-samekind"

# To randomize between any physical type of connection (e.g. fibre, copper,
# wireless) , all vendors

mac_eth0="random-anykind"

# Full randomization - WARNING: some MAC addresses generated by this may
# NOT act as expected

mac_eth0="random-full"


터널링

인터페이스 핸들러로 터널링을 사용하기 위해 그 어떤 것도 이머지할 필요가 없습니다.


코드 예제 9.1: /etc/conf.d/net의 터널링 설정 예제
# For GRE tunnels
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# For IPIP tunnels
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# To configure the interface
config_vpn0="192.168.0.2 peer 192.168.1.1"


VLAN (802.1q 지원)

VLAN 지원을 사용하려면 net-misc/vconfig를 이머지 하십시오.

가상 LAN은 네트워크 장치들이 하나의 네트워크에 연결되어 있지 않아도 단일 네트워크 부분에 네트워크 장치들을 연결했을 때와 같이 동작하는 네트워크 장치의 모임입니다. VLAN 구성원은 동일한 물리네트워크를 공유하고 있다 할 지라도 같은 VLAN 안의 구성원만 볼 수 있습니다.


코드 예제 10.1: /etc/conf.d/net의 VLAN 설정
# Specify the VLAN numbers for the interface like so
# Please ensure your VLAN IDs are NOT zero-padded

vlans_eth0="1 2"

# You can also configure the VLAN
# see for vconfig man page for more details

vconfig_eth0="set_name_type VLAN_PLUS_VID_NO_PAD"
vconfig_vlan1="set_flag 1" "set_egress_map 2 6"

# Configure the interface as usual
config_vlan1="172.16.3.1 netmask 255.255.254.0"
config_vlan2="172.16.2.1 netmask 255.255.254.0"



중요: 일부 VLAN 설정을 사용하시려면 [변수 이름] 문서를 참조하십시오.