티스토리 뷰

CentOS 강좌 PART 1. 7 네트워크 구성


[ 일반 네트워크 구성 ]

CentOS7에서는 기존 하위 버전과 달리 ifconfig,netstat 등 네트워크 관리 유틸리티 도구를 기본 탑재하여 제공하지 않는다.
대신 RedHat에서 제공하는 nmcli 가 메인이며, 수동 설정방법 또는 nmtui 와 같은 도구로 설정 관리를 할 수 있다.
하위버전의 ifconfig, netstat 등을 사용하기 위해서는 "net-tools"를 yum을 통해 다운로드 설치하면 된다.

여기에서는 수동설정 방법, nmcli 명령어 기반 구성 방법과 모니터링, nmtui 기반의 구성방법등을 소개한다.



[수동 설정방법 - /etc/sysconfig/network-script/ifcfg ]

network-scripts 파일을 수정하여, 네트워크를 설정하는 방법이다.
/etc/sysconfig/network-scripts/ifcfg-eth 에 네트워크 구성 파일들이 위치해 있다.
아래 예제와 같이 수동으로 IP 주소와 Gateway 주소, DNS, Netmask등을 설정할 수 있으며, 필요에 따라 옵션들을 수정할 수 있다.
만약 DHCP를 설정한다면, BOOTPROTO 값을 dhcp 로 설정하면 된다.

[whchoi@CentOS154 ~]$ ls /etc/sysconfig/network-scripts/
ifcfg-ens192  ifdown-eth   ifdown-post    ifdown-Team      ifup-aliases  ifup-ipv6   ifup-post    ifup-Team      init.ipv6-global
ifcfg-lo      ifdown-ippp  ifdown-ppp     ifdown-TeamPort  ifup-bnep     ifup-isdn   ifup-ppp     ifup-TeamPort  network-functions
ifdown        ifdown-ipv6  ifdown-routes  ifdown-tunnel    ifup-eth      ifup-plip   ifup-routes  ifup-tunnel    network-functions-ipv6
ifdown-bnep   ifdown-isdn  ifdown-sit     ifup             ifup-ippp     ifup-plusb  ifup-sit     ifup-wireless

# network-scripts 파일과 디렉토리들
# ens 로 표기되어 있는것이 NIC Card

[whchoi@CentOS154 ~]$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens192  ethernet  connected  ens192     
lo      loopback  unmanaged  --    

# ens192가 정상적으로 연결되었고, Ethernet Type임을 확인

[whchoi@CentOS154 ~]$ sudo -s vi /etc/sysconfig/network-scripts/ifcfg-ens192

HWADDR=00:50:56:8f:0a:74
NAME=ens192
GATEWAY=10.72.78.129
DNS1=8.8.8.8
DOMAIN="8.8.8.8"
DEVICE=ens192
ONBOOT=yes
USERCTL=no
BOOTPROTO=static
NETMASK=255.255.255.128
IPADDR=10.72.78.154
PEERDNS=no
IPV6INIT=yes
IPV6_AUTOCONF=yes

check_link_down() {
return 1;
}

# HWADDR : 이더넷 카드의 MAC 주속
# NAME : 이더넷 카드의 이름
# GATEWAY : Gateway IP 주소
# DNS1 : DNS IP 주소
# DOMAIN : 도메인 주소
# DEVICE : 이더넷 카드의 장치명
# ONBOOT : yes , no / 이더넷 카드가 시스템 부팅시 Enable 시킬 것인지 설정
# USERCTL : yes , no / 일반 사용자계정이 이더넷 카드 제어를 허용할 것인지 설정
# BOOTPROTO : static,none,DHCP 설정 여부 , static과 none은 동일하게 static ip 주소설정으로 사용
# NETMASK : 넷마스크 주소
# IPADDR : 이더넷 카드의 IP 주소
# PEERDNS :yes, no / DNS resolution에 사용되는 etc/resolv.conf 파일이 DHCP 서버로 부터 정보를 얻는 것을 허용할지에 대한 여부
# IPV6INIT : yes, no / IPV6 사용여부
# IPV6_AUTOCONF : yes , no / IPV6 자동 구성여부
# NM_CONTROLLED : 이더넷카드가 Network Manager로 부터 제어될 것인지 여부
# PEERROUTES : 이더넷 카드에 Default Gateway를 정의하는 라우팅 테이블 정보를 DHCP로 부터 수신 할 것인지에 대한 여부.




[nmtui를 사용하는 방법 ]

network-scripts 파일을 수정하여, 네트워크를 설정하는 방법이다.
/etc/sysconfig/network-scripts/ifcfg-eth 에 네트워크 구성 파일들이 위치해 있다.
아래 예제와 같이 수동으로 IP 주소와 Gateway 주소, DNS, Netmask등을 설정할 수 있으며, 필요에 따라 옵션들을 수정할 수 있다.
만약 DHCP를 설정한다면, BOOTPROTO 값을 dhcp 로 설정하면 된다.
[root@CentOS154 whchoi]# nmtui
# nmtui 유틸리티를 통해 이더넷 카드, 네트워크 정보 설정


Network Manager TUI를 설정하는 첫 화면이다.
이더넷 카드에 대한 구성 및 정보 변경과 연결에 대한 설정, HostName 설정등을 할 수 있다.
  • Edit a Connection - /etc/sysconfig/network-scripts/ifcfg 에 대한 설정 변경과 동일
  • Activate a Connection - 이더넷 카드 연결 또는 비활성화
  • Set system hostname - 호스트 네임 설정



Edit a Connection 선택을 통해서, 이더넷 카드의 구성 정보를 변경 할 수 있다.
메뉴 이동은 [Tab] Key를 통해 이동 가능하다.



[nmcli 기반의 네트워크 설정]

nmcli (Network Manager CLI)는 다양한 네트워크 설정 정보를 출력하기도 하지만, 네트워크 설정도 가능하다.
네트워크 설정은 개인적으로는 /etc/sysconfig/network-scripts/ifcfg 또는 nmtui 유틸리티로 변경하는 것을 권고한다.
다만 nmcli는 모니터링 도구로는 매우 유용하기 때문에 , 주로 네트워크 설정 정보를 보는 데 사용하는 것이 좋다.

[명령어 요약]

nmcli conn show
이더넷 카드 연결 정보 출력
nmcli dev status
이더넷 카드 상태 출력
nmcli dev show
이더넷 카드 상세 정보 출력
nmcli con mod ens192 ipv4.method manual ipv4.addr "10.72.78.155/25"
이더넷 IP 주소 설정
systemctl restart network
네트워크 서비스 재구동
/etc/rc.d/init.d/network restart
네트워크 서비스 재구동
nmcli con down device
이더넷 카드 down
nmcli con up device
이더넷 카드 up
ifdown device
이더넷 카드 down
ifup device
이더넷 카드 up
ip a
ip 주소 출력

[whchoi@CentOS154 ~]$ nmcli -h                                                                                                                     
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
  -o[verview]                                    overview mode (hide default values)
  -t[erse]                                       terse output
  -p[retty]                                      pretty output
  -m[ode] tabular|multiline                      output mode
  -c[olors] auto|yes|no                          whether to use colors in output
  -f[ields] <field1,field2,...>|all|common       specify fields to output
  -g[et-values] <field1,field2,...>|all|common   shortcut for -m tabular -t -f
  -e[scape] yes|no                               escape columns separators in values
  -a[sk]                                         ask for missing parameters
  -s[how-secrets]                                allow displaying passwords
  -w[ait] <seconds>                              set timeout waiting for finishing operations
  -v[ersion]                                     show program version
  -h[elp]                                        print this help

OBJECT
  g[eneral]       NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]         NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager
  a[gent]         NetworkManager secret agent or polkit agent
  m[onitor]       monitor NetworkManager changes

# nmcli 명령어들에 대한 정보출력

[whchoi@CentOS154 ~]$ nmcli c --help
Usage: nmcli connection { COMMAND | help }

COMMAND := { show | up | down | add | modify | clone | edit | delete | monitor | reload | load | import | export }

[whchoi@CentOS154 ~]$ nmcli c s
NAME    UUID                                  TYPE      DEVICE
ens192  03da7500-2101-c722-2438-d0d006c28c73  ethernet  ens192

# nmcli connection 명령을 통해 현재 네트워크 연결 정보들을 확인할 수 있다.

[whchoi@CentOS154 ~]$ nmcli device --help
Usage: nmcli device { COMMAND | help }

COMMAND := { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp }

[whchoi@CentOS154 ~]$ nmcli device show
GENERAL.DEVICE:                         ens192
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:50:56:8F:0A:74
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ens192
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         10.72.78.154/25
IP4.GATEWAY:                            10.72.78.129
IP4.ROUTE[1]:                           dst = 10.72.78.128/25, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 10.72.78.129, mt = 100
IP4.DNS[1]:                             8.8.8.8
IP6.ADDRESS[1]:                         fe80::250:56ff:fe8f:a74/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          10 (unmanaged)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            --

# nmcli device show 명령을 통해 현재 이더넷/무선카드들에 대한 상세 정보를 확인해 볼 수 있다.

[whchoi@CentOS154 ~]$ nmcli device st
DEVICE  TYPE      STATE      CONNECTION
ens192  ethernet  connected  ens192     
lo      loopback  unmanaged  --         

[whchoi@CentOS154 ~]$ nmcli dev sh -a | awk '/IP4/'
IP4.ADDRESS[1]:                         10.72.78.154/25
IP4.GATEWAY:                            10.72.78.129
IP4.ROUTE[1]:                           dst = 10.72.78.128/25, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 10.72.78.129, mt = 100
IP4.DNS[1]:                             8.8.8.8
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --

[whchoi@CentOS154 ~]$ sudo -s nmcli con mod ens192 ipv4.method manual ipv4.addr "10.72.78.155/25"
[whchoi@CentOS154 ~]$ sudo -s systemctl restart network
# nmcli connection mode 명령을 통해 현재 /etc/sysconfig/network-scripts/ifcfg 에 설정된 정보를 변경할 수 있다.
# ip 주소를 변경 10.72.78.154 에서 155를 변경한다.
# network 정보 변경이후 곧바로 적용되지 않으므로, 반드시 systemctl restart network를 통해 network 서비스를 재구동한다.
# /etc/rc.d/init.d/network restart 와 동일한 명령이다.

[whchoi@CentOS154 ~]$ nmcli dev sh -a | awk '/IP4/'
IP4.ADDRESS[1]:                         10.72.78.155/25
IP4.GATEWAY:                            10.72.78.129
IP4.ROUTE[1]:                           dst = 10.72.78.128/25, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 10.72.78.129, mt = 100
IP4.DNS[1]:                             8.8.8.8
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --

# IP 주소가 정상적으로 변경된 것을 확인 할 수 있다.

[whchoi@CentOS154 ~]$ sudo -s nmcli con mod ens192 ipv4.method manual ipv4.addr "10.72.78.154/25"
[whchoi@CentOS154 ~]$ sudo -s nmcli con down ens192
[whchoi@CentOS154 ~]$ sudo -s nmcli con up ens192

# nmcli conn down ens192, nmcli conn up ens192 를 통해서도 IP 변경 이후 적용 시킬 수 있다.
# interface up , down관련 명령이다.




[기타 유용한 명령 팁]

ip add 명령을 통해 기존 ifconfig 와 동일한 정보를 확인 할 수 있다.
[whchoi@CentOS154 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:8f:0a:74 brd ff:ff:ff:ff:ff:ff
    inet 10.72.78.154/25 brd 10.72.78.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe8f:a74/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

# ip add 명령 - 이더넷 카드의 ip 정보 관련 출력

[whchoi@CentOS154 ~]$ ifdown ens192
[whchoi@CentOS154 ~]$ ifup ens192

# nmcli con down/up 과 동일한 효과를 제공해 주는 명령이다.
CentOS7에서 하위버전과 네트워크 관련 명령 중에 가장 크게 변경된 사항은 이더넷 카드의 이름이 eth에서 ens로 변경된 것과, ifconfig , netstat 등과 같은 유틸리티가 기본제공되지 않는 다는 것이다.
ifconfig, netstat 등은 net-tools 라는 패키지로 별도로 제공된다.
yum을 통해 추가로 설치하게 되면 하위버전에서 제공되던 ifconfig, netstat 등을 사용할 수 있다.
ip add 보다는 ifconfig의 출력정보가 가시성 측면에서 뛰어나므로 설치하는 것이 좋다.
[whchoi@CentOS154 ~]$ sudo yum -y install net-tools

[whchoi@CentOS154 ~]$ ifconfig
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.72.78.154  netmask 255.255.255.128  broadcast 10.72.78.255
        inet6 fe80::250:56ff:fe8f:a74  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:8f:0a:74  txqueuelen 1000  (Ethernet)
        RX packets 3516811  bytes 232203923 (221.4 MiB)
        RX errors 0  dropped 1359  overruns 0  frame 0
        TX packets 5146  bytes 827109 (807.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 4  bytes 336 (336.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 336 (336.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[whchoi@CentOS154 ~]$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 CentOS154.centos1:43176 freedom.itsc.cuhk.:http TIME_WAIT  
tcp        0      0 CentOS154.centos1:39650 babylon.castlegem.:http TIME_WAIT  
tcp        0     96 CentOS154.centos154:ssh 10.70.232.173:63498     ESTABLISHED
tcp        0      0 CentOS154.centos1:33034 11310176100.static:http TIME_WAIT


















공지사항