RHCSA : 시스템 배포, 구성 및 유지 관리 – 네트워킹 및 호스트명 분석을 정적 또는 동적으로 구성

RHCSA 주제입니다. CertDepot 사이트를 번역 및 내용 추가하였으며, 컨텐츠 관련 모든 권리는 CertDepot에 있습니다.

시작하기 전에

네트워크 설정을 /etc/sysconfig/network-scripts 디렉토리의 파일들을 통해 정의하는 것이 가능하지만, 더 이상 선호하는 방법은 아닐 것이다(만약에 수동으로 파일을 변경하였다면, nmcli con reload 커맨드를 실행하는 것을 잊으면 안된다)

RHEL 7에서는, 모든 네트워크 설정이 NetworkManager를 통해 가능해졌다.

3가지 방법으로 네트워크설정을 할 수 있다.

이 튜토리얼에서는 nmcli위주로 설명할 것이다. 왜냐하면 가장 빠른 방법이고, 에러가 가장 적을 수 있기 때문이다.

nmcli 커맨드로 설정하는 것은 모두 영구적이다.

주의: 이 튜토리얼을 가장 좋은 상태로 하는 방법은 바로 머신을 콘솔을 통해 접속하는 것이다(이 튜토리얼의 작업은 연결을 잃어버리게 할 수 있으므로).

네트워크 설정(by nmcli)

1-1. 현재 네트워크 설정을 보려면, 다음과 같이 입력한다.
# nmcli con show
NAME           UUID                                  TYPE            DEVICE
ethernet-eth0  8d83684f-cd22-42cc-9fff-7704945a5c36  802-3-ethernet  eth0

노트: conconnection의 단축어이다(c만 입력해도 상관없다)

1-2. 대신, 다음과 같이 입력해도 된다.
# nmcli dev status
DEVICE  TYPE      STATE      CONNECTION
eth0    ethernet  connected  ethernet-eth0
lo      loopback  unmanaged  --
2-1. 현재의 연결을 삭제하려면, 다음과 같이 입력한다.
# nmcli con del ethernet-eth0

노트1: 인터페이스명에 띄어쓰기가 있다면, 따옴표("")안에 인터페이스명을 넣어서 입력하여야 한다. 노트2: deldelete의 단축어이다.

2-2. 대신, 다음과 같이 입력하여 삭제할 수도 있다.
# nmcli con del 8d83684f-cd22-42cc-9fff-7704945a5c36
3. 다음과 같이 연결(연결이름은 ethernet-eth0, IPv4 주소는 192.168.1.10/24, 게이트웨이는 192.168.1.1이라고 가정한다)을 생성한다.
# nmcli con add con-name net-eth0 ifname eth0 type ethernet ip4 192.168.1.10/24 gw4 192.168.1.1
Connection 'net-eth0' (441085a4-4155-417b-ad8f-78a888d89988) successfully added.
4. 설정을 확인하려면, 다음과 같이 입력한다.
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::0000:00:0000:0000/64 scope link
       valid_lft forever preferred_lft forever
# ip r
default via 192.168.1.1 dev eth0  proto static  metric 1024
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.10
5-1. 연결에 대한 모든 정보를 출력하고 싶다면, 다음과 같이 입력한다.
# nmcli con show net-eth0
connection.id:                          net-eth0
connection.uuid:                        441085a4-4155-417b-ad8f-78a888d89988
connection.interface-name:              eth0
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.timestamp:                   1427832564
connection.read-only:                   no
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:                 
connection.gateway-ping-timeout:        0
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:   
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            
ipv4.method:                            manual
ipv4.dns:                               
ipv4.dns-search:                        
ipv4.addresses:                         { ip = 192.168.1.10/24, gw = 192.168.1.1 }
ipv4.routes:                            
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv6.method:                            auto
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.routes:                            
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.dhcp-hostname:                     --
GENERAL.NAME:                           net-eth0
GENERAL.UUID:                           441085a4-4155-417b-ad8f-78a888d89988
GENERAL.DEVICES:                        eth0
GENERAL.STATE:                          activated
GENERAL.DEFAULT:                        yes
GENERAL.DEFAULT6:                       no
GENERAL.VPN:                            no
GENERAL.ZONE:                           --
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/0
GENERAL.SPEC-OBJECT:                    --
GENERAL.MASTER-PATH:                    --
IP4.ADDRESS[1]:                         ip = 192.168.1.10/24, gw = 192.168.1.1
IP6.ADDRESS[1]:                         ip = fe80::0000:00:0000:0000/64, gw = ::
5-2. 대신, 다음과 같이 입력할 수도 있다.
# nmcli dev show eth0
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     net-eth0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.1.10/24
IP4.GATEWAY:                            192.168.4.10
IP4.DNS[1]:                             192.168.4.1
IP6.ADDRESS[1]:                         fe80::0000:00:0000:0000/64
IP6.GATEWAY:
6. 작동하고 있는 연결을 중지하려면, 다음과 같이 입력한다.
# nmcli con down net-eth0
# nmcli con show
NAME      UUID                                  TYPE            DEVICE 
net-eth0  441085a4-4155-417b-ad8f-78a888d89988  802-3-ethernet  --    
7. 네트워크 연결을 시작하려면, 다음과 같이 입력한다.
# nmcli con up net-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
8. 연결이 리부팅 이후에 재시작되는 것을 방지하려면, 다음과 같이 입력한다.
# nmcli con mod net-eth0 connection.autoconnect no
9. IP 주소와 기본 게이트웨이를 설정한 것과 다르게 변경하고자 한다면, 다음과 같이 입력한다.
# nmcli con mod net-eth0 ipv4.addresses 192.168.2.10/24
# nmcli con mod net-eth0 ipv4.gateway 192.168.2.1
# nmcli con mod net-eth0 ipv4.method manual
# nmcli con up net-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
10. 현재 연결을 work존에 설정하려면, 다음과 같이 입력한다.
# firewall-cmd --permanent --zone=work --change-interface=eth0
success
# nmcli con mod net-eth0 connection.zone work 
# nmcli con up net-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

호스트네임

호스트네임 설정

RHEL 7에서 호스트네임은 static, pretty, transient의 3가지 종류가 있다. static 호스트네임은 전통적인 호스트네임으로서 사용자에 의해 선택되고, /etc/hostname 파일에 저장된다. transient 호스트네임은 동적 호스트네임으로 커널에 의해 유지된다. 기본적으로 localhost의 값을 가진 정적 호스트네임으로 초기화된다. DHCP 또는 mDNS에 의해 런타임에 변경될 수 있다. pretty 호스트네임은 자유로운 형식의 UTF8 호스트네임으로 사용자에게 보여주기 위한 것이다(참조: RHEL 7 네트워킹 가이드)

1. 서버의 호스트네임을 확인하고 싶다면, 다음과 같이 입력한다.
# hostnamectl
   Static hostname: centos7.example.com
         Icon name: computer
           Chassis: n/a
        Machine ID: 8f56e45764474b668b0db97b4127a01b
           Boot ID: 2ae7e6c78331414b82aa89a0ffcfa9fa
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-123.el7.x86_64
      Architecture: x86_64
2. 대신, hostname 커맨드를 통해 호스트임만을 출력할 수도 있다(이 커맨드는 /etc/hostname파일을 읽어온다).
# hostname
centos7.example.com
3. 영구적으로 rhel7 호스트네임을 서버에 설정하고 싶다면, 다음과 같이 입력한다.
# hostnamectl set-hostname rhel7

호스트네임 해상도(설정 파일)

호스트네임 해상도는 /etc/nsswitch.conf파일에 있는 다음 줄에 의해 연관이 있다.

hosts:      files dns

즉, 호스트네임 해상도가 처음에 파일을 통해 결정되고(정적 해상도), 그 이후에 dns를 통해(동적 해상도) 결정된다는 것을 의미한다.

정적 호스트네임 해상도와 관련하여 /etc/hosts 파일에 정의되어 있다.

192.168.1.10 centos7.example.com centos7

동적 호스트네임 해상도와 관련하여 /etc/resolv.conf 파일에 정의되어 있다.

# Generated by NetworkManager
search example.com
nameserver 192.168.1.1

노트: 최대 3개의 네임서버가 설정가능하다. 네임서버는 언급된 순서대로 요청이 된다. 두번째 입력된 네임서버는 첫 번째 입력된 네임서버가 응답하지 않을 경우 등에 사용된다. 주 네임서버를 리스트의 가장 앞에 쓸 것.

호스트네임 해상도(설정 커맨드)

1. DNS 서버를 연결 설정에 추가하려면, 다음과 같이 입력한다.
# nmcli con mod net-eth0 +ipv4.dns 8.8.8.8
# nmcli con up net-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
# more /etc/resolv.conf
# Generated by NetworkManager
search example.com
nameserver 192.168.1.1
nameserver 8.8.8.8
2. DHCP를 사용하고 있다면, 앞의 커맨드를 사용해 DNS 서버를 제거할 수 없다. 아마 다음 메시지를 확인하게 될 것이다. "Error: failed to remove a value from ipv4.dns: the property doesn't contain DNS server '192.168.1.1'.". 만약에, DNS 설정을 하고자 한다면 다음과 같이 입력한다.
# nmcli con mod net-eth0 ipv4.ignore-auto-dns yes

네트워크 설정(by GUI)

Network Setting with NetworkManager(nm-connection-editor)

네트워크 설정(by nmtui)

Network Setting with NetworkManager(nmtui)

추가 자료

at4am의 프로필 이미지

at4am

2016년 05월 12일

글쓴이의 더 많은 글 읽어보기