VirtualBox CentOS와 OSX 공유폴더 설정

리눅스계열의 게스트 OS와 호스트 OS와의 공유폴더 설정입니다.
게스트OS가 Windows라면 Virtualbox의 게스트확장 설치 메뉴에서 간단하게 설정이 가능하지만 OSX 맥 에서는 VirtualBoxGuestAdditionsois.iso를 마운트 하여 게스트확장을 설치해야 합니다.

설정 순서

  1. VirtualBoxGuestAdditionsois.iso 를 가상CD로 지정해 줍니다.
  2. 게스트 OS에서 CD를 마운트합니다.
  3. 게스트확장을 설치합니다.
  4. VirtualBox의 게스트 OS에서 호스트 OS 와의 공유폴더를 지정합니다.
  5. 재부팅 합니다.
  6. 지정한 공유폴더가 자동으로 마운트 된 것을 확인합니다.

명령어 일람

[root@vm ~]# yum install gcc kernel-devel kernel-headers dkms make bzip2
[root@vm ~]# mkdir /media/VirtualBoxGuestAdditions
[root@vm ~]# mount -r /dev/cdrom /media/VirtualBoxGuestAdditions
[root@vm ~]# cd /media/VirtualBoxGuestAdditions/
[root@vm ~]# ./VBoxLinuxAdditions.run
[root@vm ~]# reboot
[root@vm ~]#
[root@vm ~]#

1. 게스트확장에 필요한 라이브러리를 먼저 설치합니다.

yum install gcc kernel-devel kernel-headers dkms make bzip2

2. 게스트확장 설치 CD(iso 이미지)를 찾아서 준비합니다.

게스트확장 설치 iso 이미지 파일은 /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso 의 위치에 있습니다.

  1. OSX에서 게스트확장 설치 iso이미지는 Finder를 실행합니다.
  2. Finder에서 응용프로그램 > VirtualBox.app 를 선택 후 마우스 오른쪽 버튼을 클릭하여 팝업 메뉴를 표시합니다.
  3. 팝업 메뉴에서 패키지 내용 보기를 선택합니다.
  4. 나중에 가상 머신에서 cd 이미지로 마운트 하기 위해 새로 표시된 Finder에서 Contents/MacOS/VBoxGuestAdditions.iso 파일을 적당한 위치에 복사해 둡니다.

3. 게스트확장 설치 CD(iso 이미지) 마운트

가상 머신을 부팅한 후 설정 메뉴의 저장소 부분에 CD를 선택하고 CD 아이콘 버튼을 클릭하여 가상 CD/DVD 디스크 파일 선택 메뉴를 클릭하여 위에서 복사해둔 VBoxGuestAdditions.iso 파일을 선택합니다.

4. CD를 마운트하여 게스트확장을 설치합니다.

터미널에서 가상머신에 접속하거나 Virtualbox터미널 창에서 cd를 마운트 할 디렉토리를 만들어 마운트한후에 VBoxLinuxAdditions.run를 실행하여 게스트 확장을 설치 하고 재부팅합니다.

[root@vm ~]# mkdir /media/VirtualBoxGuestAdditions
[root@vm ~]# mount -r /dev/cdrom /media/VirtualBoxGuestAdditions

5. 공유 폴더 마운트

가상머신의 설정메뉴에서 공유폴더 설정창에서 공유할 폴더를 지정하고 가상머신에서 보여질 폴더 이름을 지정합니다.
자동 마운트를 선택하면 매번 커맨드 명령으로 마운트할 필요 없이 재부팅시 자동으로 마운트가 됩니다.
다음 마운트 명령으로 mount -t vboxsf {설정에서 지정한 공유 폴더 이름} {마운트할 가상 머신의 위치} 설정한 공유 폴더를 마운트 가능합니다.
아래 예제는 공유폴더 설정에서 설정한 virtualbox_share 폴더 이름을 가상 머신의 /work 에 마운트 하는 예제입니다.

[root@vm ~]# mkdir /work
[root@vm ~]# mount -t vboxsf virtualbox_share /work

### 마운트 되었는지 확인 ####
[root@vm ~]# mount    
/dev/mapper/vg_avatar-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
work on /work type vboxsf (rw)`

설정에서 자동 마운트에 체크하여 재부팅 하였을 경우는 /media/sf_{설정한 폴더 이름}으로 자동적으로 마운트 됩니다.

Posted by dewnine
,

CentOS, Red Hat 에서 EPEL 저장소 설치

공식 CentOS와 Red Hat Enterprise Linux의 저장소에 포함되지 않은 패키지를 설치하기 위해 Fedora Extra Packages for Enterprise Linux (EPEL) repository를 설치합니다.

EPEL 저장소 설치

레드햇 계열은 호환성에서 거의 문제가 없습니다.현재 사용하고 있는 해당 OS버전에 맞는 RPM을 다운로드하고 설치합니다. 64비트 패키지를 기준으로 설명합니다.
64비트이외의 OS에서는 wget으로 다운 받고 있는 url에서 OS 버전, 비트, rpm파일 이름 부분을 삭제, 변경해 가며 브라우저에서 확인하여 설치된 OS에 맞는 RPM을 다운로드 하여 설치합니다.
RPM이 다운로드 되지 않을 경우 브라우저에서 해당 페이지를 방문하여 최신 버전을 확인 해 주세요.

CentOS에 Extras 저장소

CentOS에 엑스트라 저장소는 EPEL을 설치하는 패키지를 포함하고 있으며 기본적으로 활성화 되어 있습니다. EPEL 패키지를 설치하기 위해서는 yum으로 간단하게 설치 할 수 있습니다.

sudo yum install epel-release

가장 간단한 방법입니다만 제대로 설치되지 않는다면 CentOS에서 엑스트라 저장소를 사용할 수 없는 경우일 수있으니 다음의 RPM 버전을 다운 받아 수동으로 설치하도록 합니다.

CentOS, Red Hat Enterprise Linux 5.x

cd /usr/local/src
wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
sudo rpm -Uvh epel-release-5*.rpm

CentOS, Red Hat Enterprise Linux 6.x

cd /usr/local/src
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh epel-release-6*.rpm

CentOS, Red Hat Enterprise Linux 7.x

cd /usr/local/src
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
sudo rpm -Uvh epel-release-7*.rpm

IUS 저장소 설치

IUS 저장소는 엔터프라이즈 환경을 위한 몇몇 패키지(Php, Python, Mysql 등)의 최신 버전을 제공하고 있습니다.
패키지 이름은 다른 공식 저장소에서 사용되는 패키지 이름과 달리 하여 충돌이나 소프트웨어 버전 업데이트를 방지하고 있습니다.

CentOS 5.x

wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/5/x86_64/ius-release-1.0-13.ius.centos5.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

CentOS 6.x

wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-13.ius.centos6.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

CentOS 7.x

wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-13.ius.centos7.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

Red Hat 5.x

wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-13.ius.el5.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

Red Hat 6.x

wget http://dl.iuscommunity.org/pub/ius/stable/RedHat/6/x86_64/ius-release-1.0-13.ius.el6.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

Red Hat 7.x

wget http://dl.iuscommunity.org/pub/ius/stable/RedHat/7/x86_64/ius-release-1.0-13.ius.el7.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

RPM이 다운로드 되지 않을 경우는 IUS Release Packages Page를 방문하여 릴즈된 최신 버전을 확인해 주세요.

기존 패키지 IUS 버전으로 업데이트

이미 설치되어 있는 패키지를 IUS 저장소의 최신 버전으로 업데이트 할 수 있는 간단한 방법(plugin)도 제공하고 있습니다.

sudo yum install yum-plugin-replace

이 플러그인은 yum에 지정된 패키지를 대체하고 필요한 종속성 설치 명령을 교체합니다. 예를 들어 PHP 패키지를 IUS 저장소의 PHP5.3 패키지로 교체할 경우는 아래와 같이 실행 가능합니다.

sudo yum replace php --replace-with php53

좀더 자세한 내용은 IUS Client Usage Guide.를 참고하세요.


Remi 저장소 설치

core CentOS와 Red Hat Enterprise Linux의 최신 버전의 소프트웨어를 제공하고있습니다.
LAMP(오픈소스 기반의 기업용 SW개발 플랫폼)기반의 최신 패키지를 제공하고 있는 저장소입니다.

Remi 저장소의 패키지 이름은 공식 저장소에서 사용되는 패키지명과 동일 합니다. 이로 인해 yum 업데이트시에 의도하지 않게 패키지의 버전 업데이트가 이루어 질 수 있으니 주의 해야 합니다.

CentOS 와 Red Hat Enterprise Linux 5.x

wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
sudo rpm -Uvh remi-release-5*.rpm

CentOS 와 Red Hat Enterprise Linux 6.x

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm

CentOS 와 Red Hat Enterprise Linux 7.x

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm -Uvh remi-release-7*.rpm

Remi 저장소의 활성화

Remi저장소는 기본적으로 비활성화 되어 있습니다. 패키지를 설치할때 다음과 같이 필요에 의해 --enablerepo=remi 옵션을 사용 하여 활성화 할수 있습니다.

sudo yum --enablerepo=remi install php-tcpdf

매번 사용 할 때만다 옵션을 지정하지 않고 평상시에 Remi 저장소가 사용되도록 하기 위해서는 yum 설정 파일을 수정하면 됩니다.

sudo vi /etc/yum.repos.d/remi.repo

Edit the [remi] portion of the file to set the enabled option to 1. This action enables the Remi repository by default.
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

사용 가능한 저장소 확인

필요한 저장소를 설치하고 아래 명령으로 설치된 저장소가 어떤 것이 있는지 확인 할 수 있습니다.

yum repolist
[root@3b5d0e97178d /]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.oasis.onnetcorp.com
 * epel: mirror.premi.st
 * extras: mirror.oasis.onnetcorp.com
 * updates: mirror.oasis.onnetcorp.com
repo id                                                            repo name                                                                                                  status
base                                                               CentOS-6 - Base                                                                                             6,518
epel                                                               Extra Packages for Enterprise Linux 6 - x86_64                                                             11,588
extras                                                             CentOS-6 - Extras                                                                                              38
updates                                                            CentOS-6 - Updates                                                                                          1,147
repolist: 19,291

제 테스트용 vm에는 epel 저장소가 설치되어 있네요.

Remi와 같은 일부 저장소는 기본적으로 비활성화 되어 있습니다. 비활성화된 저장소를 확인 하기위해서는 disabled를 추가하면 비활성화된 저장소도 확인 가능합니다.

yum repolist disabled
Posted by dewnine
,

OS 확인

[root@vm ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@vm ~]# yum install ppp

pptpd 패키지 설치

http://poptop.sourceforge.net/yum/beta/packages/ 를 방문하여 최신 버전을 확인 하여 사용하세요.

[root@vm ~]# cd /usr/local/src
[root@vm ~]# 
[root@vm ~]# wget http://poptop.sourceforge.net/yum/beta/packages/ppp-2.4.5-33.0.rhel6.x86_64.rpm
[root@vm ~]# rpm -Uvh ppp-2.4.5-33.0.rhel6.x86_64.rpm
[root@vm ~]# 
[root@vm ~]# wget http://poptop.sourceforge.net/yum/beta/packages/pptpd-1.4.0-1.rhel5.1.x86_64.rpm
[root@vm ~]# rpm -Uvh pptpd-1.4.0-1.rhel5.1.x86_64.rpm

설정

  • /etc/pptpd.conf
  • /etc/ppp/options.pptpd
  • /etc/ppp/chap-secrets
  • /etc/sysctl.conf

/etc/pptpd.conf 설정

/etc/pptpd.conf 설정 파일에 파일에서 아이피 정보를 설정합니다.

connections 10
localip 192.168.99.1
remoteip 192.168.99.100-200
  • connections : 접속할 클라이언트 수를 지정합니다.
  • localip : pptp vpn상에서의 현재 서버에 할당하고 싶은 아이피를 설정합니다.
  • remoteip : 접속한 클라이언트에 할당할 아이피의 범위를 설정합니다. 위 예제에서는 192.168.99.100 에서부터 200번 사이의 아이피를 순차적으로 접속 클라이언트에 할당합니다.

etc/ppp/options.pptpd 설정

etc/ppp/options.pptpd 설정 파일에 DNS와 mtu(패킷을 한번에 보낼 수 있는 최대크기)등을 설정합니다. 아래의 설정을 추가하지 않고 디폴트 설정 그대로 운영하도 무방합니다.

ms-dns 8.8.8.8
ms-dns 8.8.4.4
mtu 1400

/etc/ppp/chap-secrets 설정

/etc/ppp/chap-secrets 파일에 접속 클라이언트의 인증 계정에 대해 설정합니다.
아래 예제에서는 접속 클라이언트의 인증 아이디로는 user1로 비밀번호로는 password1를 설정하였습니다. 실제 서버에서는 로그인 아이디와 복잡한 비밀번호로 설정할 필요가 있습니다.

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
user1  *  password1 *

/etc/sysctl.conf 설정

/etc/sysctl.conf 에서 ipv4의 포워딩을 허용하도록 설정합니다.

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

설정을 변경한 후에서 sysctl -p 커맨드를 실행하여 설정을 리로드합니다.

[root@docker-vm ~]# sysctl -p
net.ipv4.ip_forward = 1

pptpd 프로세스 기동

[root@vm ~]# /etc/init.d/pptpd restart
Shutting down pptpd:                                       [  OK  ]
Starting pptpd:                                            [  OK  ]
Warning: a pptpd restart does not terminate existing
connections, so new connections may be assigned the same IP
address and cause unexpected results.  Use restart-kill to
destroy existing connections during a restart.

기타 사항

SELinux의 무효화

/etc/selinux/config 파일을 열어 SELINUX=disabled 로 설정을 변경합니다. /etc/selinux/config 파일에는 SELINUXSELINUXTYPE가 기술되어 있으니 SELINUXTYPE에 disabled 설정 하지 않도록 주의 합니다.

[root@vm ~]# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

설정을 변경한 후에는 재부팅이 필요합니다. 혹여 잘못하여 SELINUXTYPE에 disabled 로 설정하여 재부팅하게되면 커널 패닉으로 재부팅 되지 않아 패닉상태가 될 수도 있습니다. 혹여 SELINUXTYPE에 disabled 설정하여 커널 패닉 화면을 보게 되신다면 SELinux 무효화 설정 후 kernel panic 복구 을 참고하여 복구하세요.

로그 출력

로그를 출력하여 접속을 확인할 경우 /etc/pptpd.conf 의 debug를 활성화 하여 로그를 출력할 수 있습니다.

[root@vm ~]# vi /etc/pptpd.conf

# TAG: debug
#       Turns on (more) debugging to syslog
#
debug

debug설정후 아래와 같이 rsyslog.conf(syslog.conf)에 debug를 추가하여 /var/log/pptpd에 로그를 출력하도록 합니다.

[root@vm ~]# vi /etc/rsyslog.conf

 *.=debug;\
        news.none;mail.none     -/var/log/pptpd

iptable 설정

혹시 iptable를 설정하였을 경우는 아래를 참조해 주세요.
pptp vpn에서 사용하는 포트인 1723 포트 개방과 위에서 ppp0에서 사용할 192.168.99.0/24에 포워딩 설정한 내용입니다.아래 예제에서는 sshd의 기본 포트 22번도 열어 놓고 있습니다.

[root@vm ~]# cat /etc/sysconfig/iptalbes
# Generated by iptables-save v1.4.7 on Fri May 29 16:53:48 2015
*nat
:PREROUTING ACCEPT [17:1691]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [4:289]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri May 29 16:53:48 2015
# Generated by iptables-save v1.4.7 on Fri May 29 16:53:48 2015
*filter
:INPUT ACCEPT [39:4272]
:FORWARD ACCEPT [6:466]
:OUTPUT ACCEPT [45:5831]
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -i eth0 -p gre -j ACCEPT
-A FORWARD -s 192.168.99.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356
COMMIT
# Completed on Fri May 29 16:53:48 2015

Windows 에서 VPN 클라이언트 접속

윈도우 8.1 에서 위에서 설정한 VPN서버에 접속하는 방법입니다.

새연결 네트워크 설정 을 클릭하여 새로운 네트워크 연결을 생성합니다.


회사에 연결(VPN)을 선택합니다.


내 인터넷 연결 사용(VPN) 을 선택합니다.


인터넷 주소에 위 서버의 아이피를 입력하고 대상 이름 부분에서 알아보기 쉬운 별칭 이름을 입력하고 만들기 버튼을 클릭하면 대상 이름에 설정한 이름으로 네트워크 연결이 생성됩니다.


제어판\네트워크 및 인터넷\네트워크 연결에서 확인 하면 위에서 생성한 네트워크 연결이 생성 되어 있는 것을 확인 할 수 있습니다.

그림


새로 생성한 내트워크 연결을 선택하고 마우스 오른쪽 버튼을 클릭하면 속성을 클릭합니다.

그림


Internet Protocol Version 4(TCP/IPv4) 를 선택하고 속성 버튼을 클릭하여 세부 설정 창을 표시합니다.


(TCP/IPv4)의 세부 설청 창에서 고급 버튼을 클릭합니다.


IP설정 탭에서 원격 네트워크에 기본 게이트웨이 사용이 선택되어 있는지 확인하고 확인 버튼을 클릭합니다.



새로 생성된 네트워크 연결에서 마우스 오른쪽 클릭으로 연결/연결 끊기 를 선택합니다.


윈도우 8 버전에서는 오른쪽에 연결 창이 포시되면 윈도우 7이나 다른 버전에서는 연결 창이 표시됩니다. 생성한 연결을 선택하면 연결 이라는 버튼이 표시되면 클릭하여 서버에 연결 합니다.

그림


VPN서버 접속에 필요한 인증 창이 표시 되면 위 서버에서 설정한 아이디와 비빌번호를 입력합니다.


VPN 서버에 연결 되었습니다.


정상적으로 연결되었을 경우 PC의 아이피가 외부에서는 VPN서버의 아이피로 표시되게 됩니다. 네이버나 다음에서 아이피 확인 이라고 검색하면 PC의 아이피를 확인 할 수 있습니다. VPN서버의 아이피가 표시되면 정상 적으로 작동하고 있는 것입니다.


Posted by dewnine
,

SELinux 무효화 설정 후 kernel panic

로컬에 설치한 VM에서 어이 없게도 SELinux를 무효화 설정 하고 재기동을 했더니 kernel panic 으로 재기동이 안되었다. 실서버나 실제 상황이라면 정말 패닉상태로 손에 땀좀 나겠지만 테스트용 로컬 PC에서의 가상화 서버인 관계로 나의 부주의에 대해 살짝 짜증이 … ^^

kernel panic - not syncing: Attempted to kill inint !
PId: 1, comm: init not tainted 2.6.32.-279-5.2.e16.x86_64 #1

몰려드는 짜증에 VM을 확 지워버리고 싶은 충동이 물리왔지만 마음을 진정시키고 복구.

SELinux 무효 설정시 있을법한 실수

SELinux 무효화 설정시 /etc/selinux/config 파일을 설정합니다만 이 파일에는 SELINUX, SELINUXTYPE 설정 파라메터가 2개있습니다.

1
2  # This file controls the state of SELinux on the system.
3  # SELINUX= can take one of these three values:
4  #     enforcing - SELinux security policy is enforced.
5  #     permissive - SELinux prints warnings instead of enforcing.
6  #     disabled - No SELinux policy is loaded.
7  SELINUX=enforcing
8  # SELINUXTYPE= can take one of these two values:
9  #     targeted - Targeted processes are protected,
10 #     mls - Multi Level Security protection.
11 SELINUXTYPE=targeted

7번째 라인의 SELINUX를 disabled 변경하려다가 잘못하여 11번째 라인의 SELINUXTYPE에 disabled 를 설정한 후 재기동 하게 되면 재기동이 되지 않고 커널 패닉 에러를 보게 됩니다. 중요한 실서버라면 잠깐동안 지옥을 보게 되겠지요. ^^

복구 방법

  1. 재기동시 OS부팅시 가운트다운 화면에서 아무 키를 누릅니다.
  2. GRUB 메뉴에서 기동 OS를 위, 아래 방향키로 선택하여 키보드의e 키를 누릅니다.
  3. 위, 아래 방향키로 조정하여kernel 행을 선택하여 키보드의 e키를 누릅니다.
  4. 편집 모드가 표시되면 마지막 부분에 한칸 띄우고 enforcing=0 라고 입력하여 추가합니다. enforcing앞에 공백을 넣어야 합니다. = 가 입력이 안될 경우 ^키를 누르면 =가 입력됩니다.
  5. 편집후 엔터키를 누르면 설정이 저장 되고 이전의 kernel을 선택했던 화면으로 되돌아 가게됩니다.
  6. b키를 눌러 OS를 부팅합니다.
  7. 부팅후 /etc/selinux/config파일을 이번에는 제대로 확인하여 7번째 라인 SELINUX을 desabled로 설정 하고 재부팅합니다.
Posted by dewnine
,