Handbook:SPARC/Networking/Modular/ko
네트워크 모듈
netifrc 스크립트는 모듈러 네트워크 스크립트를 지원하며, 기존 모듈과의 호환성을 유지하면서 새 인터페이스 형식과 설정 모듈을 쉽게 추가할 수 있음을 의미합니다.
모듈이 필요한 꾸러미를 설치했다면 모듈에서 기본적으로 불러옵니다. 설치한 꾸러미에서 지정하지 않은 모듈을 사용자가 지정하면 설치해야 할 꾸러미를 나타내면서 오류를 표시합니다. 모듈 설정은 동일한 서비스를 지닌 둘 이상의 꾸러미를 설치했을 때만 사용하며, 설치한 꾸러미 중 하나를 선호해야합니다.
특별히 다른 부분을 지정하지 않는 이상 여기서 언급하는 모든 설정은 /etc/conf.d/net에 저장합니다.
# 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"
인터페이스 핸들러
현재 인터페이스 처리 프로그램을 두가지로 제공하고 있으며, 하나는 ifconfig, 다른 하나는 iproute2입니다. 어떤 네트워크 설정을 진행하든 둘 중 하나만 필요합니다.
두가지 경우 시스템 프로파일의 기본 요소로 설치합니다. iproute2는 더욱 강력하고 유연한 꾸러미입니다.
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란 네트워크 주소 정보(IP 주소, DNS 서버, 게이트웨이 등)를 DHCP 서버에서 가져옴을 뜻합니다. 네트워크 상에 동작하는 DHCP 서버가 있다면 사용자는 DHCP를 사용하겠다고 각 클라이언트에서 알리고 네트워크를 자체적으로 설정합니다. 물론 사용자는 DHCP를 사용할 수 있기 전에 무선 네트워크, PPP 등 필요한 모든 수단에서 설정해야 합니다.
DHCP는 dhclient, dhcpcd, pump에서 제공합니다. 각각의 DHCP 모듈에는 장단점이 있습니다. 간단하게 내용 진행하고 넘어가겠습니다.
DHCP 모듈 | 꾸러미 | 장점 | 단점 |
---|---|---|---|
dhclient | net-misc/dhcp | BIND DNS 프로그램을 만든 ISC에서 만들었습니다. 상당히 설정편의성이 뛰어납니다 | 전반적으로 설정이 복잡하며, 프로그램이 필요이상 크고 DHCP에서 NTP 서버를 가져올수 없으며, 기본 성정상으론 호스트 이름을 보내지 못합니다 |
dhcpcd | net-misc/dhcpcd | 오랫동안 젠투 기본 프로그램이며, 외부 도구에 의존하지 않고, 젠투에서 현재도 개발 중입니다 | 가끔은 느려질 수 있으며 IP 대여 시간이 한없이 지속되면 데몬 동작이 안됩니다 |
pump | net-misc/pump | 가벼우며, 외부 도구에 의존하지 않습니다. | 업스트림에서 더이상 관리하지 않아 신뢰성이 없으며, 특히 모뎀을 통해서는 DHCP에서 NIS 서버를 가져올 수 없습니다 |
하나 이상의 DHCP 클라이언트를 설치했다면 어떤 클라이언트를 사용할지 지정하십시오. 그렇지 않으면 dhcpcd가 있다고 할 경우 dhcpcd를 기본으로 사용합니다.
DHCP 모듈로 지정 돕션을 보내려면 module_eth0="..."
옵션을 사용하십시오(사용할 DHCP 모듈로 모듈을 바꿈 - 예: dhcpcd_eth0).
DHCP를 어떤 식으로든 쓸 수 있게 해보겠습니다. dhcp_eth0 변수를 사용하여 다음 명령을 지원합니다. 기본값은 다음 어떤 명령도 설정하지 않습니다:
release
- 재사용할 IP 주소를 릴리스
nodns
- /etc/resolv.conf에 덮어쓰기 안함
nontp
- /etc/ntp.conf에 덮어쓰기 안함
nonis
- /etc/yp.conf에 덮어쓰기 안함
# 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
dhcpcd와 pump에서는 기본적으로 현재 호스트 이름을 DHCP서버로 보내므로 별도로 지정할 필요가 없습니다.
# Only needed if more than one DHCP module is installed
modules="dhclient"
config_eth0="dhcpv6"
# To use both DHCPv4 and DHCPv6 on a dual-stack network, remove the above line and uncomment the following lines
#config_eth0="dhcp
#dhcpv6"
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
# To pass runtime arguments to dhclient for DHCPv6
dhclientv6_eth0="-t 10" # Timeout after 10 seconds
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
# Set generic DHCPv6 options
dhcpv6_eth0="release nodns nontp nonis nogateway nosendhost"
PPPoE/PPPoA로 ADSL 연결
우선 ADSL 프로그램을 설치하겠습니다:
root #
emerge --ask net-dialup/ppp
그 다음 PPP net 스크립트를 만들고 PPP에서 사용할 이더넷 인터페이스용 net 스크립트도 만드십시오:
root #
ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
root #
ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
/etc/rc.conf 에서 rc_depend_strict를 YES
로 설정했는지 확인하십시오.
이제 /etc/conf.d/net을 설정해야합니다.
config_eth0=null (이더넷 인터페이스 명시)
config_ppp0="ppp"
link_ppp0="eth0" (이더넷 인터페이스 명시)
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에 암호를 설정할 수도 있습니다.
# The * is important
"username" * "password"
USB 모뎀에 PPPoE를 사용한다면 br2648ctl을 이머지했는지 확인하십시오. 올바르게 설정하는 방법은 /var/db/repos/gentoo/net-dialup/speedtouch-usb/files/README를 읽어보십시오.
/usr/share/doc/netifrc-*/net.example.bz2의 ADSL and PPP절을 주의깊게 읽어보십시오. 필요할지도 모르는 PPP 설정의 각 모든 부분의 자세한 설명이 들어있습니다.
APIPA(자동 개인 IP 주소 지정)
APIPA는 인터페이스의 임의 주소 범위에서 ARP를 수행하여 169.254.0.0-169.254.255.255 범위에서 사용할 수 있는 주소를 찾습니다. 응답이 없으면 인터페이스에 주소를 할당합니다.
This is only useful for LANs where:
- there is no DHCP server;
- the system doesn't connect directly to the Internet; and
- all other computers use APIPA.
APIPA 지원 기능을 활용하려면, arping
USE 플래그를 설정한 후 net-misc/iputils를 이머지하거나 net-analyzer/arping을 이머지하십시오.
# Try DHCP first - if that fails then fallback to APIPA
config_eth0="dhcp"
fallback_eth0="apipa"
# Just use APIPA
config_eth0="apipa"
본딩
본딩은 네트워크 대역폭을 늘리거나 하드웨어 문제에 직면했을 때 탄력적 복구기능을 개선하는 용도로 사용합니다. 시스템에 동일한 네트워크에 연결한 두 네트워크 카드가 붙어있다면 관리자는 이들을 본딩하여 프로그램이 하나의 인터페이스로 간주하여 쓸 수 있습니다만, 이 경우 실제로는 두 네트워크 카드를 다 사용합니다.
본딩을 설정하는 방법은 여러가지가 있습니다. 이 중에서 802.3ad LACP 모드 같은 경우는 네트워크 스위치의 지원과 추가 설정이 필요합니다. 개별 옵션에 대한 참고사항은 로컬 사본 /usr/src/linux/Documentation/networking/bonding.txt를 참고하십시오.
우선 연결할 인터페이스의 설정을 지우겠습니다:
config_eth0="null"
config_eth1="null"
config_eth2="null"
다음, 인터페이스간 본딩을 지정하십시오:
slaves_bond0="eth0 eth1 eth2"
config_bond0="192.168.100.4/24"
# Pick a correct mode and additional configuration options which suit your needs
mode_bond0="balance-alb"
실행 레벨에서 net.eth* 서비스를 제거하고 net.bond0을 만들어 올바른 실행 레벨에 추가하십시오.
브릿징(802.1d 지원)
브릿징은 네트워크를 함께 이을때 사용합니다. ADSL 모뎀으로 인터넷에 연결하는 서버와 다른 컴퓨터가 ADSL 모뎀으로 인터넷에 연결할 수 있도록 하는 무선 액세스 카드를 보유한 시스템이 있다면 두 인터페이스를 브릿지로 한데 묶을 수 있습니다.
# 브릿지 설정 - 상세 정보는 "man brctl" 참조
bridge_forward_delay_br0=0
bridge_hello_time_br0=200
bridge_stp_state_br0=1
# bridge br0에 포트 추가
bridge_br0="eth0 eth1"
# dhcp가 시작되지 않도록 포트를 null로 설정해야 합니다.
config_eth0="null"
config_eth1="null"
# 최종적으로 브릿지에 주소 부여 - DHCP를 사용할 수 있음
config_br0="192.168.0.1/24"
# 추가 설정이 필요할 수 있으므로 eth0과 eth1에 의존
rc_net_br0_need="net.eth0 net.eth1"
일부 브릿지 설정을 활용하려면, 변수 이름 문서를 참고하십시오.
IPv6 브릿징을 할 경우, 위 예제와 같이 SLAAC 에서 STP 를
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"
터널링
터널링은 인터페이스 핸들러가 처리할 수 있으므로 프로그램을 추가로 설치할 필요가 없습니다.
# 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 기능 지원을 사용하려면 sys-apps/iproute2를 설치했는지, ifconfig대신 iproute2를 설정 모듈로 사용중인지 확인하십시오.
가상랜은 각각의 네트워크 장치가 하나의 네트워크 세그먼트에 연결했을 때(설사 그렇지 않더라도)취할 수 있는 네트워크 장치 그룹입니다. VLAN 구성원은 동일한 물리 네트워크를 공유하더라도 동일한 VLAN의 구성원만을 볼 수 있습니다.
VLAN을 설정하려면 우선 다음과 같이 /etc/conf.d/net에 VLAN 번호를 지정하십시오:
vlans_eth0="1 2"
다음 각각 VLAN의 인터페이스를 설정하십시오:
config_eth0_1="172.16.3.1 netmask 255.255.254.0"
routes_eth0_1="default via 172.16.3.254"
config_eth0_2="172.16.2.1 netmask 255.255.254.0"
routes_eth0_2="default via 172.16.2.254"
VLAN별 설정은 다음과 같이 vconfig로 처리합니다:
vlan1_name="vlan1"
vlan1_ingress="2:6 3:5"
eth0_vlan1_egress="1:2"
일부 VLAN 설정을 위해, 변수 이름 문서를 참고하십시오.