Home | 문태준 | 시스템어드민 메일링 | Sys Admin 세미나

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

문서소개

Ubuntu 16.04 를 테스팅 하면서 확인하는 정보를 정리함.

일반정보

http://www.ubuntu.com/download/server 에서 에서 다운로드 받음
release note :   https://wiki.ubuntu.com/XenialXerus/ReleaseNotes?_ga=1.216370518.1908988187.1467092736

lts server guide :   https://help.ubuntu.com/lts/serverguide/


 

패키지 비교 :

 

http://packages.ubuntu.com/

 

Linux kernel 4.4

Python 3

OpenSSH 7.2p2

 

 

CentOS6 의 경우 bash가 4.1.2 인데 Ubuntu 16.04은 4.3.42임.

 


ubuntu command

 

상세한 자료는 자료는 https://help.ubuntu.com/community/SwitchingToUbuntu/FromLinux/RedHatEnterpriseLinuxAndFedora 참고참고

COMMAND DETAILS

RPM COMMAND

DPKG COMMAND

Install a package

rpm -i {package.rpm}

dpkg -i {file.deb}

Update package

rpm -U {file.rpm}

dpkg -i {file.deb}

Remove an installed package

rpm -e {package}

dpkg -r {package}

List all installed packages

rpm -qa

dpkg -l

List files in an installed package

rpm -ql {package}

dpkg -L {package}

Show information about installed package

rpm -qi

dpkg -p {package}

Show information about package file

rpm -qpi {file.rpm}

dpkg -I {file.deb}

List files in a package file

rpm -qpl {file.rpm}

dpkg -c {file.deb}

Verify all installed packages

rpm -Va

N/A

Verify installed package

rpm -V {package}

N/A

 

 특정 파일이 어디에 속하나 찾기

Code Block
$ dpkg -S /bin/bash
bash: /bin/bash

 

dep 패키지에서 스크립트 실행은 실행은 (rpm 에서 –scripts 명령)은 잘 모르겠다.  http://packages.ubuntu.com/xenial/slapd  에서 dep 패키지를 다운로드 받아서  dpkg 받아서 dpkg -e slapd_2.4.42+dfsg-2ubuntu3_amd64.deb 명령을 실행하면 DEBIAN 실행하면 DEBIAN 디렉로리에  파일들이 파일들이 풀린다. (dpkg man page 에서 -e 옵션은  Extract 옵션은 Extract control-information from a package 라고 설명이 되어 있음) preinsta, postinsta 등이 설치 할때 전후에 실행되는 스크립트로 보인다. 

 

시간 동기화

다른 부분 점검을 하다가 확인을 한 것인데요. 현재 우리가 사용하는 Ubuntu 16.04를 보니 systemd-timesyncd 라는 서비스가 활성화되어 있습니다.
그런데 systemd-timesyncd 서비스가 ntp를 이용하여 시간을 동기화하는데 사용을 하는 프로그램이네요.

아래 문서를 보시면 최근 Ubuntu 에서는 ntpd의 클라이언 클 이언 프로그램으로 ntpdate 대신 timedatectl 을 사용을 한다고 합니다. (CoreOS에서도 최근에는 기본 NTP client 로 ntpd 대신 systemd-timesyncd 사용) 기본적으로 timedatectl은 부팅시 시간을 동기화하고 시간 정보를 로컬에 저장하여 재부팅시에도 활용을 한다고 하네요.
https://help.ubuntu.com/lts/serverguide/NTP.html

시간 동기화 관련해서는 기본 설정파일이 /etc/systemd/timesyncd.conf 인데 ntp 서버가 지정되어 있지 않은데도 systemctl status systemd-timesyncd 명령을 보면 보면 ntp.ubuntu.com 에서 에서 시간을 동기화하고 있네요.

Code Block
{code}
root@ip-10-210-200-183:/etc/systemd# timedatectl status
      Local time: Thu 2016-08-18 15:28:52 KST
  Universal time: Thu 2016-08-18 06:28:52 UTC
        RTC time: Thu 2016-08-18 06:28:52
       Time zone: Asia/Seoul (KST, +0900)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

root@ip-10-210-200-183:/etc/systemd#  systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
           └─disable-with-time-daemon.conf
   Active: active (running) since Thu 2016-08-18 14:38:32 KST; 50min ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 515 (systemd-timesyn)
   Status: "Synchronized to time server 91.189.89.199:123 (ntp.ubuntu.com)."
    Tasks: 2 (limit: 512)
   Memory: 680.0K
      CPU: 9ms
   CGroup: /system.slice/systemd-timesyncd.service
           └─515 /lib/systemd/systemd-timesyncd

Aug 18 14:38:32 ip-10-210-200-183 systemd[1]: Starting Network Time Synchronization...
Aug 18 14:38:32 ip-10-210-200-183 systemd[1]: Started Network Time Synchronization.
Aug 18 14:39:03 ip-10-210-200-183 systemd-timesyncd[515]: Synchronized to time server 91.189.89.199:123 (ntp.ubuntu.com).
{code}

/lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf 파일을 보니 /usr/sbin/ntpd 가 있는 경우에든 timesyncd를 실행하지 않는 것으로 보입니다. 테스팅을 해 본것은 아닙니다.

Code Block
# cat /lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf
[Unit]
# don't run timesyncd if we have another NTP daemon installed
ConditionFileIsExecutable=!/usr/sbin/ntpd
ConditionFileIsExecutable=!/usr/sbin/openntpd
ConditionFileIsExecutable=!/usr/sbin/chronyd
ConditionFileIsExecutable=!/usr/sbin/VBoxService

이 프로그램에 상관없이 ntp 를 설정을 해서 사용을 할 수는 있기는 하지만 어찌되었건 정보 남겨둡니다.
특별한 ntp 설정을 하지 않아도 Ubuntu 16.04를 이용하는 경우 외부로의 트래픽이 막혀 있지 않다면 자동으로 ntp 클라이언트가 작동을 하는 것이겠네요.

 

...   중간 생략..

 

rsyslog 설정 비교

CentOS6 와 Ubuntu 16.04 에서 로그파일을 사용하는 부분이 다르다.

Ubuntu 16.04

Code Block
# cat /etc/rsyslog.conf /etc/rsyslog.d/50-default.conf | egrep -v '^[#$]|^module' |  egrep -v "^[[:space:]]*$"
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
kern.*                          -/var/log/kern.log
mail.*                          -/var/log/mail.log
mail.err                        /var/log/mail.err
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice
*.emerg                                :omusrmsg:*
daemon.*;mail.*;\
        news.err;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       |/dev/xconsole

CentOS6

Code Block
# cat /etc/rsyslog.conf | egrep -v '^[#$]' |  egrep -v "^[[:space:]]*$"
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 *
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

 

 

apt에서 특정한 버전 설치하기

apt-cache madison package

...

Code Block
apt-cache madison ansible

 

 . 

기타

openldap 구성 :

...

https://help.ubuntu.com/lts/serverguide/openldap-server.html
useradd 에서 기본 옵션은 홈디렉토리를 만들지 않는다.

특정 패키지 설치시 GUI에서 설정을 해야 하는 경우가 있다. 이러면 자동으로 설정을 하지 못하기 때문에 비활성화하는 것이 필요하다.

export DEBIAN_FRONTEND=noninteractive 명령을 실행 한 후 apt-get 을 실행하면 된다.

http://serverfault.com/questions/227190/how-do-i-ask-apt-get-to-skip-any-interactive-post-install-configuration-steps 

Code Block
export DEBIAN_FRONTEND=noninteractive
apt-get -y install [packagename]		

Vagrant

vagrant ubuntu 16.04 x86_64 image : https://vagrantcloud.com/ubuntu/boxes/xenial64

vagrant + ubuntu/xenial64 ubunt 16.04  사용시 몇가지 문제가 있음. /vagrant 폴더 공유가 안되고 여러개의 vm을 생성시에도 에러가 남.  

여러 개의 vm 생성시 에러가 나서 검색을 해보니 아래 글에서는  bento/ubuntu-16.04 vagrant box 를 추천하고 있음. bento/ubuntu-16.04 vagrant box 를 이용해다 /vagrant 폴더 공유는 안되지만 여러 개의 VM 생성은 잘 됨.

https://github.com/mitchellh/vagrant/issues/7389

Vagrant 파일에서 private_network 옵션으로 private network 설정을 하는 경우에는 실제 작동을 하지 않는다. 검색을 해보면 ubunt 16.04 에서 아직은 버그가 있는 듯하다.

/etc/network/interfaces.d/ 디렉토리에 해당 이더넷 디바이스에 직접 ip 정보를 입력하여 ifup 실행하면 인터페이스가 올라온다.
Code Block
root@ubuntu-xenial:~# sudo sh -c 'cat > /etc/network/interfaces.d/enp0s8.cfg << EOF
# The primary network interface
auto enp0s8
iface enp0s8 inet static
address 192.168.33.12
netmask 255.255.255.0
EOF
'

# ifup  enp0s8
 
root@ubuntu-xenial:~# dmesg | egrep 'eth|enp'
[   58.191308] e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 02:8e:fe:b7:15:d8
[   59.120717] e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection
[   62.333067] e1000 0000:00:08.0 eth1: (PCI:33MHz:32-bit) 08:00:27:66:62:d5
[   62.333074] e1000 0000:00:08.0 eth1: Intel(R) PRO/1000 Network Connection
[   62.721095] e1000 0000:00:08.0 enp0s8: renamed from eth1
[   63.249171] e1000 0000:00:03.0 enp0s3: renamed from eth0
[  104.809336] IPv6: ADDRCONF(NETDEV_UP): enp0s3: link is not ready
[  104.813105] e1000: enp0s3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[  104.813362] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s3: link becomes ready
[  676.464489] IPv6: ADDRCONF(NETDEV_UP): enp0s8: link is not ready
[  676.468356] e1000: enp0s8 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[  676.468598] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s8: link becomes ready

kernel update

kernel pakcage는  linux-image* 에 들어 있음. 원하는 kernel 버전의 linux-image-<kernel ver>-generic 와  linux-image-extra-<kernel ver>-generic  를 설치하면 됨.

설치하고 재부팅을 하면 됨. linux-image-extra* 는 커널 모듈이 들어있으며 특정 모듈이 필요한 경우 함께 설치를 해주지 않으면 해당 모듈을 못 찾을 수 있다. (dell 서버에서 extra 패키지 설치하지 않은 경우 네트워크 인터페이스가 잡히지 않는 경우가 있었다)

 

Code Block
apt install linux-image-4.4.0-89-generic linux-image-extra-4.4.0-89-generic

 ubuntu 에서 grub은 어떻게 관리를 하는지 아직은 잘 모르겠지만  /boot/grub/grub.cfg 파일에 순서가 지정되어 있는 것 같다.

Code Block
# grep initrd /boot/grub/grub.cfg
	initrd	/boot/initrd.img-4.4.0-89-generic
		initrd	/boot/initrd.img-4.4.0-89-generic
		initrd	/boot/initrd.img-4.4.0-89-generic
		initrd	/boot/initrd.img-4.4.0-87-generic
		initrd	/boot/initrd.img-4.4.0-87-generic

 

ubuntu kernel의 경우 몇가지 종류가 보임. https://help.ubuntu.com/community/UbuntuStudio/RealTimeKernel 등의 자료를 보면  일반적으로 generic 을 쓰면 되며 latency 을 줄일 경우  preempt, lowlatency kernel  등이 사용됨.

AWS-tuned Ubuntu kernel

https://insights.ubuntu.com/2017/04/05/ubuntu-on-aws-gets-serious-performance-boost-with-aws-tuned-kernel/

https://launchpad.net/ubuntu/+source/linux-aws

2017.4 부터 AWS 튜닝이 들어간 Ubuntu kernel이 제공되었음. 아래는 주요 기능.

The kernel itself is provided by the linux-aws kernel package.  The most notable highlights for this kernel include:

  • Up to 30% faster kernel boot speeds, on a 15% smaller kernel package
  • Full support for Elastic Network Adapter (ENA), including the latest driver version 1.1.2, supporting up to 20 Gbps network speeds for ENA instance types(currently I3, P2, R4, X1, and m4.16xlarge)
  • Improved i3 instance class support with NVMe storage disks under high IO load
  • Increased I/O performance for i3 instances
  • Improved instance initialization with NVMe backed storage disks
  • Disabled CONFIG_NO_HZ_FULL to eliminate deadlocks on some instance types
  • Resolved CPU throttling with AWS t2.micro instances

Security

https://wiki.ubuntu.com/Security/Features

Password hashing : Ubuntu 8.10부터는  salted SHA-512 based password hashes (crypt id 6)

Ubuntu 에서는 mkpasswd 프로그램으로 sha-512 password 를 생성할 수 있다. 온라인으로 패스워드 생성해주는 사이트 찾다가 말았다.

Code Block
mkpasswd -m sha-512 linux