▶ route CMD
리눅스 커널에 설정된 IP 라우팅테이블(Routing Table)을 보여준다.
<명령어위치> : /sbin/route
<옵션>
man route

route<- 라우팅 정보가 나온다.

# route add default gw 192.168.10.3 /* GW IP 추가 */
<사용예제>
# route add -net 127.0.0.0
# route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
# route add default gw mango-gw
# route add ipx4 sl0
# route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
# route add -net 10.0.0.0 netmask 255.0.0.0 reject

▶ 리눅스시스템의 라우팅테이블 확인 및 이해
아래 두 가지 방법으로 리눅스시스템의 라우팅테이블을 확인할 수 있다.

# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.10.2 0.0.0.0 UG 0 0 0 eth0


# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
172.16.0.0 * 255.255.0.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
default 192.168.10.2 0.0.0.0 UG 0 0 0 eth0

① 첫번째행부터 시작하여 행단위로 한 행씩 차례대로 읽어서, 처리할 패킷을 어디로 보낼것인가를 결정한다.

② default 라는 것은 시스템의 기본 게이트웨이 설정행을 의미하며, 그 행의 Gateway 항목값이 기본게이트웨이의 IP 주소이다. (default는 0.0.0.0 을 의미한다.)

③ 보낼 데이터(패킷)의 목적지 IP 주소와 Genmask 값(Subnet Mask)과의 AND 연산을 해서 그 결과가 해당행의 Destination 항목과 동일 할 경우에 해당행의 Iface 항목에 있는 인터페이스로 해당 패킷을 보낸다.

④ Iface 항목의 값이 lo 인 행(Destination 값이 127.0.0.1인 행)은 이 시스템의 루프백(loopback) 데이터를 처리하기 위한 설정이다. 즉, 자기 자신에게로 데이터를 보낼 때에 처리를 담당하는 인터페이스이다.
※ 가장 윗줄의 행부터 차례대로 패킷을 보내고 맞는다면 Iface 로 패킷을 보낸다.

[02] 리눅스 시스템의 네트워크 파일들
■ 기본 게이트웨이(Default Gateway) 설정파일
# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=localhost.localdomain GATEWAY=192.168.10.X

<항목설명>
NETWORKING=yes
- 통신이 되도록 지원할 것인가의 설정(yes or no)

NETWORKING_IPV6=no
- IPv6를 사용할 것인지를 설정(yes or no)

HOSTNAME=localhost.localdomain
- 서버의 호스트네임(hostname)을 설정

GATEWAY=192.168.10.X
- 시스템전체에 대한 Global 한 기본게이트웨이 IP 주소

# cat /etc/sysconfig/network-scripts/ifcfg-eth1

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.8.250
NETMASK=255.255.0.0
ONBOOT=yes
HWADDR=00:0c:29:a4:5b:92


<항목설명>
DEVICE=eth1
- 네트워크디바이스 장치명을 말한다.
리눅스에서 첫번째 NIC : eth0
리눅스에서 첫번째 NIC : eth1
리눅스에서 첫번째 NIC : eth2


BOOTPROTO=static
- 정적(static)한 고정 IP 주소 할당
동적(dhcp)로 한다면 dhcp로 설정


IPADDR=172.16.8.250
- 시스템의 IP 주소


NETMASK=255.255.0.0
- 넷마스크값(NetMask)값을 의미


ONBOOT=yes
- 부팅시 활동화하여 사용할 것인가를 설정(yes or no)


HWADDR=00:0c:29:a4:5b:92
- 현재 이더넷의 하드웨어주소를 의미


MAC 주소를 의미하는 것으로 유일한 값을 가지는 물리적인 주소값이다.


GATEWAY
- 이더넷에 대한 게이트웨이 IP 주소를 설정
eth0,eth1 등에 대한 게이트웨이 설정이 없으면 /etc/sysconfig/network 설정이 우선


BROADCAST
- 브로드캐스트 IP 주소를 설정


NETWORK
- 호스트가 속한 네트워크의 IP 주소


USERCTL
- root 사용자뿐 아니라 일반사용자들도 이 네트워크 인터페이스(eth0)를 ON/OFF 할 수 있는가의 권한설정항목이다. (yes = 모두 사용 가능 // no = root 사용자만 사용 가능)

■ DNS 설정파일
기본 DNS 설정파일이다.
# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain <= 반드시 들어가야함
nameserver 192.168.10.2
이 설정파일에는 1차 네임서버, 2차 네임서버를 적어줄수도 있다.


[04] 리눅스 네트워크 실무
(01) ifconfig CMD
네트워크 인터페이스를 설정한다.
<명령어위치> : /sbin/ifconfig

<사용형식> :
ifconfig [interface]
ifconfig interface [aftype] options | address ...

<사용예제>
# ifconfig
# ifconfig eth0
# ifconfig eth1 172.16.8.253 netmask 255.255.0.0 up
# ifconfig eth1


② eth1 네트워크카드 down & up
# ifconfig eth1 down
# ifconfig eth1

# ifconfig eth1 up
# ifconfig eth1

(02) system-config-network CMD
X 윈도우 환경에서 네트워크 설정(리눅스 시스템의 런레벨 확인 # runlevel)
# runlevel
N 5
# who -r
run-level 5 2009-11-02 15:24 last=S
# system-config-network-tui

(03) hostname CMD
리눅스시스템의 HOSTNAME 변경한다.

hostname - show or set the system’s host name
domainname - show or set the system’s NIS/YP domain name
dnsdomainname - show the system’s DNS domain name
nisdomainname - show or set system’s NIS/YP domain name
ypdomainname - show or set the system’s NIS/YP domain name


<명령어위치> : /bin/hostname

① /etc/sysconfig/network 설정내용
# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=arirang
GATEWAY=192.168.10.2


<항목설명>
NETWORKING=yes
- 시스템이 네트워크를 활성화한다.(yes or no)
NETWORKING_IPV6=no
- IPv6 기반의 통신을 사용안한다.(yes or no)
HOSTNAME=arirang
- 호스트네임을 설정한다.(서버명 기입)
GATEWAY=192.168.10.2
- 이 시스템에서 Global 한 기본 게이트웨이 설정한다.


[참고] 호스트네임의 입력은 FQDN(Fully Qualified Domain Name) 형식으로도 할 수 있다.
QDN[에프큐디엔]은 시스템을 지칭하는 완전한 이름으로서, 호스트 이름과 그것의 도메인 이름으로 구성된다. 예를 들어, "www"가 호스트 이름이고, "terms.co.kr"이 도메인 이름이라면, FQDN은 "www.terms.co.kr"가 된다. FQDN은 인터넷상의 특정 호스트를 지칭하기 위한 고유한 인터넷 주소를 가져야한다. 인터넷상에 있지 않지만, 전자우편 주소를 위한 이름공간을 공유하는 일부 호스트를 위해서도, 동일한 이름 구조가 사용된다. FQDN을 가지고 있지 않은 호스트는 뱅 경로를 사용하여 지칭되어야한다.
모든 인터넷 컴퓨터들과 대부분의 UUCP 사이트들은1980년부터 작성된 막후의 많은 량의 소프트웨어 덕분에 이제 FQDN을 해석할 수 있다.


<실습>
# hostname
localhost.localdomain

# hostname www.itclass.com

# hostname
www.itclass.com
/* 이 상태에서 시스템 재부팅하면 원상태로 되돌아 간다. */


② HOSTNAME 쉘변수의 의미 및 변수값 확인 및 재설정
# echo $HOSTNAME
localhost.localdomain


# env | grep HOSTNAME
HOSTNAME=localhost.localdomain
[참고] 리눅스 시스템에서 특정 쉘변수값을 확인할 때에는 echo 명령어를 사용한다.

# export HOSTNAME="www.itclass.com"
/* export 명령어를 이용하여 특정 쉘변수의 값을 변경할 수 있다. */
/* [예제] # export HOSTNAME="변수값"

# echo $HOSTNAME
www.itclass.com

# env | grep HOSTNAME
HOSTNAME=www.itclass.com

(04) 네트워크 설정파일들 활용(IP 설정과 네트워크 재설정)
① /etc/sysconfig/network
② /etc/resolv.conf
③ /etc/sysconfig/network-scripts/ifcfg-lo
④ /etc/sysconfig/network-scripts/ifcfg-eth0
⑤ /etc/sysconfig/network-scripts/ifcfg-eth1
⑥ /etc/sysconfig/network-scripts/ifcfg-eth2
⑦ /etc/sysconfig/network-scripts/ifcfg-ethN (N=갯수)
⑧ 네트워크 콘트롤 스크립트 : /etc/rc.d/init.d/network restart | stat | stop | status
⑨ 변경된 IP 주소 확인 : ifconfig eth0
⑩ 변경된 IP 주소의 통신여부 확인 : ping www.linux.co.kr


① /etc/sysconfig/network
시스템 호스트네임 설정과 기본 게이트웨이를 설정한다.


② /etc/resolv.conf
도메인 네임 쿼리를 위한 DNS 서버를 설정한다.
# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.10.2

 

③ /etc/sysconfig/network-scripts/ifcfg-lo
시스템의 루프백주소에 대한 설정파일이다.
# cat /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

 

④ /etc/sysconfig/network-scripts/ifcfg-eth0
리눅스 시스템에서의 첫번째 물리적인 네트워크카드 설정파일이다.
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
HWADDR=00:0c:29:a4:5b:88


<항목설명>
DEVICE=eth1
- 네트워크디바이스 장치명을 말한다.
리눅스에서 첫번째 NIC : eth0
리눅스에서 첫번째 NIC : eth1
리눅스에서 첫번째 NIC : eth2

BOOTPROTO=static
- 정적(static)한 고정 IP 주소 할당
동적(dhcp)로 한다면 dhcp로 설정

IPADDR=172.16.8.250
- 시스템의 IP 주소

NETMASK=255.255.0.0
- 넷마스크값(NetMask)값을 의미

ONBOOT=yes
- 부팅시 활동화하여 사용할 것인가를 설정(yes or no)

HWADDR=00:0c:29:a4:5b:92
- 현재 이더넷의 하드웨어주소를 의미
MAC 주소를 의미하는 것으로 유일한 값을 가지는 물리적인 주소값이다.

GATEWAY
- 이더넷에 대한 게이트웨이 IP 주소를 설정
eth0,eth1 등에 대한 게이트웨이 설정이 없으면 /etc/sysconfig/network 설정이 우선

BROADCAST
- 브로드캐스트 IP 주소를 설정

NETWORK
- 호스트가 속한 네트워크의 IP 주소

USERCTL
- root 사용자뿐 아니라 일반사용자들도 이 네트워크 인터페이스(eth0)를 ON/OFF 할 수 있는가의 권한설정항목이다. (yes = 모두 사용 가능 // no = root 사용자만 사용 가능)


⑧ 네트워크 콘트롤 스크립트 : /etc/rc.d/init.d/network restart | stat | stop | status
<실습>
리눅스 시스템의 모든 네트워크 인터페이스를 재시작한다.
# /etc/rc.d/init.d/network restart
인터페이스 eth0 (을)를 종료 중: [ OK ]
인터페이스 eth1 (을)를 종료 중: [ OK ]
loopback 인터페이스를 종료 중: [ OK ]
loopback 인터페이스를 활성화 중: [ OK ]
eth0 인터페이스 활성화 중:
eth0에 관한 IP 정보를 얻고 있음... 완료. [ OK ]
eth1 인터페이스 활성화 중: [ OK ]


# service network status
설정된 장치들:
lo eth0 eth1
현재 사용 중인 장치들:
lo eth0 eth1
[주의]
# ifconfig eth0 down & up /* 네트워크카드 1개만 재시작된다. */

# service network restart /* 리눅스 시스템의 모든 네트워크 카드가 재시작된다. */


(05) IP alias 기능
물리적인 하나의 랜카드에 여러개의 IP 주소 할당(IP alias 기능사용)
장점: 돈이 안든다
단점: etho이 고장나면 연결한 eth2도 고장이 난다.

용도: 네트워크 모니터링으로 사용한다.

# cd /etc/sysconfig/network-scripts/

# pwd
/etc/sysconfig/network-scripts

# ls -al ifcfg-eth*
-rw-r--r-- 3 root root 117 10월 21 13:39 ifcfg-eth0
-rw-r--r-- 3 root root 159 10월 21 13:41 ifcfg-eth1

# cp ifcfg-eth1 ifcfg-eth3

# ls -al ifcfg-eth*
-rw-r--r-- 3 root root 117 10월 21 13:39 ifcfg-eth0
-rw-r--r-- 3 root root 159 10월 21 13:41 ifcfg-eth1
-rw-r--r-- 1 root root 117 11월 2 20:28 ifcfg-eth3
※ 추가로 생성한 eth3 설정파일의 내용수정

# vi ifcfg-eth3
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1:1 #<-: 이 가장 중요!!
BOOTPROTO=static
IPADDR=172.16.8.253
NETMASK=255.255.0.0
ONBOOT=yes
HWADDR=00:0c:29:a4:5b:92


# service network restart
인터페이스 eth0 (을)를 종료 중: [ OK ]
인터페이스 eth1 (을)를 종료 중: [ OK ]
loopback 인터페이스를 종료 중: [ OK ]
loopback 인터페이스를 활성화 중: [ OK ]
eth0 인터페이스 활성화 중:
eth0에 관한 IP 정보를 얻고 있음... 완료.
[ OK ]
eth1 인터페이스 활성화 중: [ OK ]
eth3 인터페이스 활성화 중: [ OK ]
※ 추가로 할당한 네트워크카드(eth3) IP 주소로 통신 테스트


# ping 172.16.8.253
PING 172.16.8.253 (172.16.8.253) 56(84) bytes of data.
64 bytes from 172.16.8.253: icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from 172.16.8.253: icmp_seq=2 ttl=64 time=0.124 ms
(중간생략)
--- 172.16.8.253 ping statistics ---
32 packets transmitted, 32 received, 0% packet loss, time 31014ms
rtt min/avg/max/mdev = 0.032/0.113/0.908/0.214 ms
/* <Ctrl> + C 로 작업 종료 */


(06) 네트워크 인터페이스 설정과 설정확인을 위한 ifconfig 명령어
<명령어위치> : /sbin/ifconfig
<자세한 정보> : # man ifconfig
<기능과 역할>
- 시스템에 장착된 이더넷 카드의 설정확인
- 시스템에 장착된 이더넷 카드의 설정변경
- 시스템에 장착된 이더넷 카드의 활성화 또는 비활성화
- 이더넷카드의 MTU 등과 같은 옵션값들 변경
- 이더넷 카드의 네트워크 설정


# ifconfig /* 네트워크의 상황내역 확인 */
eth0 Link encap:Ethernet HWaddr 00:0C:29:A4:5B:88
inet addr:192.168.10.138 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea4:5b88/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7470 errors:0 dropped:0 overruns:0 frame:0
TX packets:4789 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:921505 (899.9 KiB) TX bytes:698706 (682.3 KiB)
Interrupt:75 Base address:0x2000


① MAC 주소 : 00:0C:29:A4:5B:88
② eth0에 할당된 주소 : 192.168.10.138
③ 브로드캐스트(BroadCast) : 192.168.10.255
④ 서브넷마스크(Subnet Mask) : 255.255.255.0
⑤ MTU(Maxium Transfer Unit) : 최대 전송단위
⑥ RX Packets : 부팅후 현재까지 받은 패킷수
⑦ TX Packets : 부팅후 현재까지 보내어진 패킷수
⑧ Collisions : 충돌된 데이타가 있는지 확인
⑨ Interrupt 주소 : 75 번을 사용
⑩ 현재 UP(사용가능) 되어 있는가?


▶ ifconfig로 특정 이더넷 MTU 값 변경
<실습>
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:A4:5B:88
inet addr:192.168.10.138 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea4:5b88/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7662 errors:0 dropped:0 overruns:0 frame:0
TX packets:4916 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:939050 (917.0 KiB) TX bytes:722460 (705.5 KiB)
Interrupt:75 Base address:0x2000


# ifconfig eth0 mtu 1000

# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:A4:5B:88
inet addr:192.168.10.138 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1000 Metric:1
RX packets:7708 errors:0 dropped:0 overruns:0 frame:0
TX packets:4955 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:942780 (920.6 KiB) TX bytes:727314 (710.2 KiB)
Interrupt:75 Base address:0x2000

# ifconfig eth0 mtu 2000
SIOCSIFMTU: 부적절한 인수

# ifconfig eth0 mtu 1500 /* 원상 복구 */


(07) route CMD
현재 사용주인 서버의 라우팅경로를 설정하기 위한 것으로 특정 네트워크 인터페이스에 라우팅 정보를 설정한다.

<명령어 위치> /sbin/route

① 기본 게이트웨이 설정하고 확인하기

<사용 형식> # route add default gw 게이트웨이 IP주소 dev 네트워크인터페이스장치명
# route add default gw 172.16.8.1 dev eth0
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.50.0 * 255.255.255.0 U 0 0 0 eth1
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
default 172.16.8.1 0.0.0.0 UG 0 0 0 eth0
default 192.168.50.2 0.0.0.0 UG 0 0 0 eth1
현재 서버가 외부와 통신을 할 때에는 172.16.8.1 게이트웨이로 보내진다.


[참고] 게이트웨이가 2개일 경우 위에줄부터 우선순위가 된다.
▶ 게이트웨이 설정 삭제
# route del default gw 172.16.8.1 dev eth0
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.50.0 * 255.255.255.0 U 0 0 0 eth1
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.50.2 0.0.0.0 UG 0 0 0 eth1


② 현재 시스템에 네트워크 라우팅경로 추가 설정
# route add -net 192.168.100.0 netmask 255.255.255.0 dev eth1
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 * 255.255.255.0 U 0 0 0 eth1
192.168.50.0 * 255.255.255.0 U 0 0 0 eth1
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.50.2 0.0.0.0 UG 0 0 0 eth1
192.168.100.0 네트워크와의 모든 통신 패킷(데이터)은 eth1 이라는 네트워크 인터페이스를 이용하기 위한 설정이다.


▶ 라우팅 데이블 삭제
# route del -net 192.168.100.0 netmask 255.255.255.0 dev eth1
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.50.0 * 255.255.255.0 U 0 0 0 eth1
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.50.2 0.0.0.0 UG 0 0 0 eth1


③ 시스템 관리자들이 실무에서 route 명령어를 이용하여 주로 하는 작업들과 작업방법
[작업] 라우팅 테이블 확인작업
<사용 형식> # route 또는 route -n
<사용예> # route

[작업] 새로운 라우팅경로 추가작업
<사용 형식> # route add -net 네트워크주소 netmask 넷마스크값 dev 인터페이스
<사용예> # route add -net 192.168.33.0 netmask 255.255.255.0 dev eth1


[작업] 기존 라우팅경로 제거작업
<사용 형식> # route del -net 네트워크주소 netmask 넷마스크값 [dev 인터페이스명]
<사용예> # route del -net 192.168.33.0 netmask 255.255.255.0


[작업] 기본 게이트웨이 추가 작업
<사용 형식> # route add default gw 기본게이트웨이주소 dev 인터페이스명
<사용예> # route add default gw 192.168.33.1 eth1


[작업] 기본 게이트웨이 제거 작업
<사용 형식> # route del default gw 기본게이트웨이주소 [dev 인터페이스명]
<사용예> # route del default gw 192.168.33.1 eth1


[작업] 루프백 인터페이스(loopback interface) 추가 작업
<사용 형식> # ifconfig lo 127.0.0.1
<사용예> # route add -net 127.0.0.1


(08) 네트워크 인터페이스의 설정확인 및 재설정 유틸리티 mii-tool
mii-tool은 리눅스 네트워크 인터페이스(NIC)의 상태를 확인하거나 설정하는 명령어이다.
- mii-tool은 랜카드에 설정된 속도(10M, 100M)를 확인
- Duplex Mode(전이중, 반이중모드)를 확인
- 자동감지설정(autonegotiation)의 ON/OFF 를 확인


<명령어 위치> /sbin/mii-tool


[주의] 현재 mii-tool은 100M급 이하에서 작동됩니다. GB급에서는 작동되지 않습니다.
# mii-tool
SIOCGMIIPHY on 'eth0' failed: Operation not supported
SIOCGMIIPHY on 'eth1' failed: Operation not supported
no MII interfaces found


[참고] 가상머신에서 이용을 할려면 VMWare-Tools를 설치해야 한다.
(주로 사용되는 옵션)
# mii-tool /* 현 시스템에 설정한 이더넷 설정상태 확인 */
# mii-tool -v /* 자세한 정보 출력 */
# mii-tool -R /* 네트워크 인터페이스의 autonegotiaton 재시작 */
# mii-tool -w /* 네트워크 인터페이스를 계속 모니터링하면서 연결 상태 확인 */


(09) 네트워크 인터페이스의 speed와 mode 설정
- 속도설정 문제에 있어서의 10M, 100M, 1G로 설정할 것인가?
- 전송모드에 있어서 half duplex 또는 full duplex로 설정할 것인가?
- 장비간 인식방식을 직업 설정할 것인가? auto 모드(negotiaton)로 할 것인가?


<명령어 위치> /sbin/ethtool
위 3가지를 익혀두면 장비간 속도저하 문제를 해결할 수 있다.


① 랜카드 속도 및 전송모드 확인
# ethtool eth0
Settings for eth0:
Current message level: 0x00000007 (7)
Link detected: yes
# ethtool eth1
Settings for eth1:
Current message level: 0x00000007 (7)
Link detected: yes
[참고] 가상머신에는 정상적으로 표현이 되지 않습니다.
<링크> http://blog.naver.com/goody80?Redirect=Log&logNo=30012554067


▶ ethtool을 이용한 eth0 설정 확인


▶ eth0의 "Duplex : half"를 "Duplex : full" 설정으로 변경
# ethtool -s eth0 speed 1000 duplex full autoneg on
<항목별 설명>
eth0 : 설정을 적용 할 NIC
speed 1000 : 1G Speed로 설정
duplex full : 전이중 모드로 설정
autoneg on : 네트워크 상태에서의 변화를 자동 감지 후 설정
(예) cable On,OFF 자동감지, Switch에서 Speed 및 Duplex 변화에 따른 자동설정
(주의) Switch 설정이 Auto일 경우 autoneg off로 고정 설정
(주의) intel NIC(e1000)을 사용하는 장비에 따라서는 적용안될수 있음


(10) 네트워크 이중화 Bonding 구성(이중화)
여러개의 NIC를 논리적으로 하나로 묶어 NIC 갯수만큼 대역폭을 가장하는 기술로 다른 말로 네트워크의 이중화라고 한다.
- 네트워크를 이중화함으로써 한쪽의 NIC 문제 발생이 서비스 이용 가능
- NIC의 대역폭을 모두 이용 가능
[참고] 이중화 네트워크 카드는 같은 종류가 더욱 안전합니다.

■ 구성 방법
[조건] Network device support 에서 --> Bonding driver support 가 체크되어 있어야 한다.

① # /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=(실제호스트이름적을것)
GATEWAY=(게이트웨이아이피)
GATEDEV=bond0 <--- 라인 추가


② 이중화 인터페이스로 사용할 가상 인터페이스 셋팅(ifcfg-bond0)
# /etc/sysconfig/network-scripts/ifcfg-bond0 <--- vi 명령어로 가상의 bonding NIC 설정
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=(서버아이피)
NETMASK=(서버넷마스크)
NETWORK=(서버네트워크아이피)


③새로운 네트워크 카드(eth1)
# /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
[참고] USERCTL=no
일반 계정이 해당 인터페이스를 비활성화 가능 여부


④ /etc/modprobe.conf
alias bond0 bonding
alias eth0 3c59x <-- 현재 장착되어 있는 이더넷
alias eth1 3c59x <-- 새로 장착할 두번째 이더넷
options bonding max_bonds=2 <--- 두개의 이더넷으로 이용할 경우

---------------------------------------------------------------------------------------------------------------------
[참고] /etc/modprobe.conf 내용
alias bond0 bonding : bond0를 bonding으로 알기 쉽게 별명 정의
Options bonding mode=1 : bonding 1번 모드로 설정
Options bond0 miimon=100 : NIC 상태 체크 시간(1/100 sec)


[참고] bonding 모드 종류 및 특징
0 : balance-round robine : 두개의 NIC를 통한 분배 + Fault Tolerance
1 : active-standby : Active 상태의 NIC에 문제 발생시 standby NIC에서 Fault Tolerance
2 : balance-xor : 0 모드와 비슷하지만 xor 연산을 이용한 목적지 MAC과 근원지 MAC을 이용한 분배
+ Fault Tolerance
3 : broadcast : 두개의 NIC에 어떤 규칙없이 데이터 통신 + Fault Tolerance
4 : 802.3ad : link aggregation switch에 aggregation 그룹생성이 필요
---------------------------------------------------------------------------------------------------------------------

⑤ modprobe 명령어로 bonding 적용
# modprobe bonding


⑥ lsmod 명령어로 bonding 확인
# lsmod | grep bonding


⑦ service network restart 네트워크 재시작
# service network restart


⑧ /proc/net/bonding/bond0 파일에서 구성상태 확인 및 검증
- Bonding Driver Version
- Bonding Mode
- Slave Interface 등의 정보를 확인할 수 있다.


<실습>
네트워크 카드 1개를 더 추가하여 eth1,eth2를 서로 bonding 작업해 보기 바란다.
그리고 각각 네트워크카드를 다운시켜보고 윈도우에서 ping 날려서 확인하기 바란다.


[참고] VMWare에서는 Fail Over가 제공되지 않기 때문에 두개의 카드중 먼저 패킷을 받아들이는 eth0이 죽어버리면 Network 자체가 죽어버린다.
인터넷 유저가 설정한 bonding 예제


[root@Spring Server]# cat ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.10.200
NETMASK=255.255.255.0
NETWORK=
BROADCAST=
USERCTL=no
GATEWAY=192.168.10.1


[root@Spring Server]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.10.200
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
OLDPROTO=static


[root@Spring Server]# cat ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.10.1
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
USERCTL=no
MASTER=bond0
SLAVE=yes
OLDPROTO=static
BONDMODE = 1
MIIMON = 100
BONDOPTIONS = mode=1 miimon=100
mode=0 (balance-rr)
mode=1 (active-backup) (* fail-over)
mode=2 (balance-xor)
mode=3 (broadcast)
mode=4 (802.3ad)
mode=5 (balance-tlb)
mode=6 (balance-alb)
# /sbin/modprobe bonding ${BONDOPTIONS}
# /sbin/service network start
# /sbin/ifenslave bond0 eth0
# /sbin/ifenslave bond0 eth1


[root@Spring Server]# lsmod
Module Size Used by
bonding 86516 0
3개의 MacAddress가 동일한지 확인 HWaddr 00:15:17:50:C1:3D

[root@Spring Server]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:15:17:50:C1:3D
inet addr:192.168.10.200 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::215:17ff:fe50:c13d/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:1452 errors:0 dropped:0 overruns:0 frame:0
TX packets:1545 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:228641 (223.2 KiB) TX bytes:484094 (472.7 KiB)
eth0 Link encap:Ethernet HWaddr 00:15:17:50:C1:3D
UP BROADCAST RUNNING ALLMULTI SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1452 errors:0 dropped:0 overruns:0 frame:0
TX packets:1547 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:228641 (223.2 KiB) TX bytes:484410 (473.0 KiB)
eth1 Link encap:Ethernet HWaddr 00:15:17:50:
UP BROADCAST SLAVE MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:371 errors:0 dropped:0 overruns:0 frame:0
TX packets:371 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:121651 (118.7 KiB) TX bytes:121651 (118.7 KiB)

[2011]_리눅스_네트워크_관리[1].pdf