CentOS7에 와서 완전해진 NetworkManager 를 기본으로 제공한다.
nmtui 와 nmcli를 기반으로  TUI/CUI 환경에서 설정할 수 있다.

nmtui => 콘솔에서 사용 가능한  TUI   N/W 설정 프로그램
nmcli  => 콘솔에서 사용 가능한 명령어 기반 CUI  N/W 설정 프로그램

 ※  네트워크 디바이스 이름.
   eno1 → 펌웨어 또는  bios에서 온보드(on-board) 네트워크 디바이스에 대해 인덱스 번호를 제공한 이름.
   ens1 → 펌웨어 또는  bios 에서  PCI 인스프레스 핫 플러그 슬롯 인덱스 번호를 제공한 이름(핫 플러그 술롯 인덱스)
   enp2s0 → 하으뒈어 커넥터의 물리적 위치에 따람 명명한 이름.
   enxbx5ff41dfaa9 → 네트워크 인터페이스  MAC 주소에 따라 명명한 이름.
      ( *   en → 이더넷 , 
   wl   무선LAN ,    ww → 무선WAN )


NMTUI 를  이용한 네트워크 설정.
1.  nmtui  를  실행한다.
2.  Edit a connection  메뉴를 통해  네트웍 정보를 입력한다.
3.  Activate a connection 으로 변경된 값을 적용한다.
  ※ 원격 작업시 접속 끊김 상황을 피하려면  systemctl restart network   또는 nmcli 명령으로  변경값을 적용하기 바란다.

nmcli를 이용한 네그워트 인터페이스 작동시키기.
    [root@vm-colt357 ~]# nmcli  c  reload
  --> 전체 이더넷 인터페이스에 적용된다. 하나의 인터페이스만 적용하려면 경로를 함께 지정한다.
    [root@vm-colt357 ~]# nmcli  c  reload  /etc/sysconfig/network-scripts/ifcfg-ens33








여러 인터페이스를 묶어 하나의 본딩(bonding)된 채널(channel)로 만들 수 있다.
1G 네트웍크 인터페이스 4개를 묶어 4G의 대역폭을 확보할 수 있고, 묶여진 네트워크 인터페이스, 케이블, 스위치등의 장애에 대비할 수 있다.
네트웍크 본딩은 어더넷 본딩(Ethernet bonding), 포트 트렁킹(port trunking), 채널 티밍(channel teaming), NIC 티밍(teaming), 링크통합(link aggregation) 등의 용어로 다양한 네트워크 장비 및 운영체제에서 제공한다.
대부분 대역폭을 확장하기 위함 보다는 장애 대비용으로 많이 사용된다.

두개의 스위치 중 하나는  Active   다른 하나는 Standby 로 이중화 하였을 경우, CentOS에서는
본딩 설정을 하게되고 본딩의 여러 모드 중에서 active-backup(mode :1)을 사용하여 본딩을 구성한다.
만약 Active Switch와 연결된 NIC가  eth0 이고, Standby Switch와 연결된  NIC가 eth1 이라면  eth0을 primary로 지정해야 원활한 통신이 된다.

1. 본딩 모드(bonding mode)
본딩 모드는 본딩으로 묶여질 여러 slave 인터페이스들을 효율적으로 묶기 위한 여러가지 방법들이라고 보면 된다. 여러 상황에 따라 효율적인 방법을 선택하겠지만 일반적으로 Round-robin 모드와  Active backup 모드를 사용하며 네트워크 스위치가 802.3ad를 제공하고 스위치를 컨트롤 가능한 경우  802.3ad를 사용한다.

- mode 0 (balance-rr) - Round-robin --> 기본값 
- mode 1 (active-backup) - Active backup --> 빈번히 사용된
- mode 2 (balace-xor) - XOR --> 해시방석
- mode 3 (broadcast) - Broadcast 
- mode 4 (802.3ad) - 802.3ad  --> 스위치 802.3ad 요구
- mode 5 (balancd-tlb) - Adaptive transmit load balancing
- mode 6 (balancd-alb) - Adaptive load balancing

Round-robin (0  또는 balance-rr)
Round-robin 정책은 장애 대비와 트래픽 분산을 위해 설정한다. 데이터 송/수신은 살아있는 Slave 인터페이스를 통해 분산되어 순차적으로 발송된다. 이모드는 이중화된 스위치 구성에서는 잘 작동되지 않기 때문에 단일 스위치의 여러 포트에  Slave 인터페이스들을 연결해야 한다.

Active-backup (1  또는 active-backup)
Active-backup 정책은 가장 많이 사용되며 장애 대비를 위해 설정한다. 여러개의  Slave  인테페이스로 구성할 수 있지만, 구성된 여러개의 Slave 인터페이스 중 오직 하나의  Slave 인터페이스만  전송에 사용된다. 즉 4개의 Slave 인터페이스를 사용하더라도 오직 1개의 Slave 인터페이스만 사용된다는 것이다.
Slave 를 많이 둔다고 성능이 향상되는 것은 아니다. 이 모드는 스위치의 어떠한 설정을 하지 않아도 된다.  이 모드는 추가 설정으로 주가 되는 디바이스를 설정할 수 있다. Active 스위치와  Standby 스위치로 구성했을 때 유용하다. 이 모드는 infiniBand를 본딩할 수 있는 유일한 모드이다.

기타 모드 생략...



2. 본딩 설정(TUI  환경)

이미 설정된 네트워크 디바이스 설정 삭제
먼저 본딩에서 슬레이브(slaver)로 사용하여 묶을 네트워크 디바이스가 다른 용도로 사용되거나 통신을 휘해 설정되었다면 본딩 굿어 후에 문제가 될 수 있다. 다음과 같이 nmcli 명령으로 확인하고 연결된 것이 있는지 확인한다.

[root@vm-colt357 ~]# nmcli  connection
이름   UUID                                  유형            장치 
eth1  0ef567f5-53e6-4fd2-b417-18be0f2d2ed3  802-3-ethernet  eth1
eth0  0ef567f5-53e6-4fd2-b417-18be0f2d2ed3  802-3-ethernet  eth0

만약 위와 같이 eth0, eth1에 해나 설정이 있다면, 다음과 같이 삭제한다.
[root@vm-colt357 ~]# nmcli  connection  delete eth0
[root@vm-colt357 ~]# nmcli  connection  delete eth1

콘솔화면에  nmtui를 인력한다  -->  Edit a connection을 선택한다  -->  우측에 <Add>를 선택한다  -
-> 
화면에서 Bond를 선택한다  -->  Profile name(연결이름)을 bone0로 한다. 고전적으로 본딩을 하게되면  bond0를 기본으로 하였다. 만약 2개의 본딩을 구성한다면 두 번째 이름은 bond1이 된다.(이름은 자유롭게 할수 있다.) Device 이름은 GUI에서는 자동으로 정해지지만, nmtui는 임력해 주어야 한다. 동일하게 입력한다.  -->  다음으로 <Add>를  선택하여 본딩에 사용될 네트워크 인터페이스(Slave)를 추가한다.  -->  연결 종류를 선택한다. 이더넷 또는 인피니밴드를 선택할 수 있다.  이더넷을 선택한다. 이더넷 추가 화면이 나타나며, Profile name(연결이름)을  eth0 (디바이스 이름)으로 한다.  물론 이 또한 다른 이름으로 할 수 있으나 설정 후에는 /etc/sysconfig/network-scripts/ifcfg-이름  형태로 저장되기 때문에 혼란스러울 수 있다. 장치명과 동일한 이름으로 연결 이름을 입력한다. 다음으로  Device에 eth0을 입력한다. --> OK를 선택한다. -->  동일한 방법으로 eth1에 대해 이더넷 설정을 한다. --> 설정이 완료되면 Slaves에 2개의 장치가 추가 되어 있을 것이다.  -->  다음으로 Mode를 선택한다. 기본은 라운드 Round-robin인데 앞에서 소개한 여러 모두 중에 Active backup으로 설정한다. 액티브 백업으로 선택하면  Primary 인터페이스를 입력하는 항목이 나타나는데 여기서 기본을고 지정할 즉  Active 스위치에 연결될 디바이스 이름( eth0)을 입력한다. 연결 감시는 MII 로 두고   Monotioring frequency(감시주기) 는 네트웍크 상황에 ㄸ라 다르지만 100 또는 200 으로 설정한다. 나머지는 기본으로 둔다.
-->  다음으로 
IPv4 CONFIGURATION 부분에 Manual 로 변경하여 IP정보를 입력해 준다.
-->  
NetworkManager를 재실행 한다.


1. ip
    커널 2.4이후 리눅스 고급 네트워킹 기능을 사용하기 위한 유틸리티로 ip를 많이 사용한다. 
    ip는 iproute 패키지로 기본 제공된다.
    많은 기능들이 ip 유틸리티로 통합되었다.

[네트워크 연결 확인 : ip link]
[root@vm-colt357 /]# ip link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 
    link/ether 00:0c:29:a3:5b:8c brd ff:ff:ff:ff:ff:ff


위와 같이 ip link 라고 입력하면 네트워크 연결상태를 알려준다. 여기서 중요한 것은 state UP이다. 네트워크에 연결되지 않았다면 state DOWN으로 나타난다.  여러 링크관련 고급 설정을 할 수 있는데 이 방법은 멘페이지(man ip-link)에서 확인할 수 있다.

[네트워크 연결 확인 : ip addr]
[root@vm-colt357 /]# ip -4 addr 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 
    inet 127.0.0.1/8 scope host lo 
       valid_lft forever preferred_lft forever 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
    inet 192.168.0.20/24 brd 192.168.0.255 scope global ens33 
       valid_lft forever preferred_lft forever


위 결과는 네트워크 인터페이스에 할당된 IP 주소와 서브넷마스크, 브로드케스트 IP, 연결상태를 한눈으로 볼수 있는 결과이다. “-4”옵션을 사용한 것은 IPv4에 해당되는 내용만 보기 위함이다. ifconfig 명령어로 확인 가능한 정보이지만 좀더 깔끔하게 보여준다. ip 고급설정을 위해 사용할 수 있는데 그 방법은 멘페이지(man ip-address)를 확인하길 바란다. 


2. ifconfig
    ifconfig는 현재 시스템에 장착되어 있는 네트워크 인터페이스를 설정하거나 확인하는 명령어이다. 서버가 통신을 하기 위해서는 네트워크 인터페이스(NIC, 흔히 랜카드)가 있어야 하는데, 이러한 네트워크 인터페이스의 네트워크 정보를 설정, 변경 및 확인하는 명령어가 ifconfig이다.

ifconfig로 확인 가능한 네트워크 인터페이스의 내용은 다음과 같다.

∙MAC 주소
∙eth0에 할당된 IP 주소
∙브로드케스트(BroadCast)
∙서브넷마스크(Subnet Mask)
∙MTU(Maximum Transfer Unit)
∙RX packets(부팅 후 현재까지 받은 패킷수)
∙TX packets(부팅 후 현재까지 보내진 패킷수)
∙Collisions
∙Interrupt 주소
∙현재 UP(사용가능) 되어 있는지 여부

3. netstat : 인터페이스 통계 및 기타 정보 확인
netstat는 현재 연결된 네트워크 연결과 라우팅 테이블, 인터페이스에 대한 통계, 마스커레이딩 연결, 멀티캐스팅 정보 등을 보여준다. 즉, netstat 명령으로 어떤 호스트(또는 서버)들과 어떤 서비스로 연결되어 있는지와 그 연결 상태는 어떠한가에 대한 정보들을 알 수 있다.

① 어떤 클라이언트와 연결되었는가?
② 어떤 서비스(www, ftp, mysql, ssh 등)로 연결되었는가?
③ 어떤 포트(port) 번호로 연결되어 있는가?(②의 서비스에 대한 포트 번호)
④ 연결상태(wait, listen, connect 등)는 어떠한가?
⑤ 네트워크 연결상태가 어떻게 되어 있는가?
⑥ 기본 게이트웨이의 설정이 제대로 되어 있는가?
⑦ route에서처럼 라우팅 경로는 어떠한가?

4. route : 라우팅 테이블 확인 및 설정
route는 라우팅 경로(다른 말로 “라우팅 테이블”)를 보거나 변경할 수 있도록 해주는 명령어이다. 주로 이더넷(Ethernet) 카드를 설정할 때 패킷들이 어떠한 경로로 외부로 나가야 하는지 알려주는 역할을 한다. 인터넷은 네트워크들이 게이트웨이를 통해 이리저리 연결되어 있는 커다랗고 복잡한 네트워크이다. 이러한 네트워크에서 지표가 되는 것은 오직 도메인 네임과 IP 주소 밖에는 없다. 따라서 호스트에 설정된 라우팅 테이블은 패킷들이 자유로이 이동할 수 있도록 한다. 

5. traceroute : 라우팅 경로 확인
어느 날 서버에 접속한 상태에서 다른 서버로 ssh 접속이 안 되는 것을 발견했다고 가정해 보자. 즉시 옆에 있는 166.104.50.152로 ping을 보내 보았으나 이것은 아무 문제가 없었다. 내부 네트워크가 잘 작동 중인데 외부로 연결이 안 된다면 외부로 연결된 어느 게이트웨이 중 하나가 잘못 됐을 가능성이 있다. 이를 확인해 보는 방법은 traceroute를 이용하는 것이다.
인터넷은 네트워크 하드웨어들이 게이트웨이를 통해서 서로 연결된 거대하고 복잡한 집합체이다. traceroute는 사용자가 원하는 호스트까지 패킷이 어떠한 경로로 전달이 되는지를 작은 ttl(time-to-live) 값과 돌아오는 'ICMP TIME_EXCEEDED' 응답을 통해 사용자에게 알려준다. 

6. tracepath : 경로 확인
tracepath는 패스를 가지고 있는 MTU를 통해서 목적 시스템까지의 경로를 알아내는 프로그램이다. 이 프로그램은 UDP 포트나 불규칙적으로(random) 몇몇의 다른 포트를 사용한다. 

7. ping : 원격 호스트 응답 테스트
컴퓨터의 네트워크가 정상적으로 동작중인지 확인해 볼 때 사용하는 도구이다. ping은 특정 호스트로 ICMP(Internet Control Message Protocol) 에코 메시지를 사용해서 원격 호스트가 다시 로컬 호스트로 응답하도록 한다.

8. arp : ARP 테이블 관리
arp는 “Address Resolution Protocol”의 약자로서 동일한 네트워크 내에 존재하는 호스트들의 IP 주소와 ethernet 주소(MAC 주소)를 확인하는 명령어이다. 즉, 특정 네트워크 내에 어떤 호스트들이 존재하는지를 확인할 수 있는 것이 바로 arp 명령어이다. arp는 이를 위해 리눅스의 /proc/net/arp에 기록된 ARP 관련 정보를 참조한다.

9. nslookup : 도메인 네임 서버 질의
nslookup은 인터넷 도메인 네임 서버에 사용자가 직접 도메인 이름을 질의할 수 있도록 해주는 프로그램이다. 이 프로그램을 통해 누구나 네임서버에 직접 질의하여 도메인 네임 서버가 가지고 있는 정보를 검색할 수 있는 것이다. 이를 통해 사용자는 도메인 네임 서버가 올바르게 설정되고 동작하고 있는지를 확인할 수 있다.

10. dig : 도메인 네임 서버 질의
dig(Domain Information Groper)는 지정한 DNS 서버의 설정 내용과 특정 도메인의 네임서버 설정 내용을 확인하는 명령이다. 즉, nslookup 명령과 거의 같은 역할을 한다. nslookup 명령과 host 명령과 마찬가지로 /etc/resolv.conf 파일에 정의되어 있는 네임서버를 기본 네임서버로 사용한다. 

11. host : 도메인 네임 서버 질
host는 도메인 네임 서버에서 도메인의 설정 정보를 찾기 위한 간단한 유틸리티이다. 이것은 보통 도메인 이름들을 IP 주소로 바꿔서 정보를 알려 주기 위해 사용된다. host 명령은 nslookup과 dig와 마찬가지로 /etc/resolv.conf 에 설정된 도메인 네임 서버를 기본 네임서버로 인식한다. 



+ Recent posts