Post List

Showing posts with label 네트워크. Show all posts
Showing posts with label 네트워크. Show all posts

2014/07/06

Network Booting OS 설치 #끝 - Mikrotik Router 설정


Network Booting 을 위한 CentOS Server 는 준비되었다.

1. TFTP 서버 : 파일을 전송하기 위한 서버
2. Syslinux : 부트로더
3. PXE 설정 : Preboot eXecution Environment
4. OS 설치 파일


마지막으로 필요한 것은 DHCP 서버에서 PXE 를 실행하기 위한 설정을 해 주는 것이다.

DHCP 서버는 CentOS 나 다른 OS 에서 설정할 수도 있지만 여기서는 Router (Mikrotik Router OS VM) 를 사용한다고 가정하므로 Router 에서 설정한다.


Winbox 를 실행시키고 / IP / DHCP Servers 로 들어간다.




현재 설정되어 있는 DHCP Server 를 더블 클릭한다.






Next Server : 부분에는 PXE 가 실행되고 있는 CentOS IP 를 입력하고
Boot File Name : 부분에는 부트로더 이름을 입력한다.


이제 또 다른 VM 을 하나 생성하고 Network Booting 이 가능한지 테스트 해 보자.

새로 생성하는 VM (혹인 Real Machine) 은 Mikrotik Router 와 같은 Network 을 사용하고 있어야 한다. (DHCP Server 가 인식 가능한 상태여야 한다.)




vSphere Host / 구성 / 네트워킹을 선택해서 확인해 보면
Mikrotik 과 New Virtual Machine 이 같은 vSwitch1 에 묶여 있음을 알 수 있다.



새 VM 의 전원을 넣으면...




위에서 설정했던 메뉴 화면이 나타나고 사용자의 선택을 기다린다.






Install CentOS ... 를 선택하니 뭔가 파일을 로딩하기 시작한다.





CentOS 설치 화면이 나타났다.


알아서 진행...








이제 필요한 파일들이 모두 로딩되고 GUI 환경의 설치 화면이 나타났다.

Next 를 눌러서 진행...


자세한 CentOS 설치 방법은 아래 post 참조..



vSphere 에 CentOS 6.5 설치




드.디.어.

Network Booting 을 이용한 CentOS 최종 설치 완료.

Congratulatin !!!









2014/07/03

Network Booting OS 설치 #2 - syslinux


부트로더인 syslinux 를 설치한다.
[root@localhost tftpboot]# rpm -qa syslinux
[root@localhost tftpboot]# yum install syslinux

... ...

================================================================================
 Package                 Arch         Version               Repository     Size
================================================================================
Installing:
 syslinux                x86_64       4.02-16.el6_5         updates       331 k
Installing for dependencies:
 syslinux-nonlinux       i686         4.02-16.el6_5         updates       513 k

Transaction Summary
================================================================================
Install       2 Package(s)

Total download size: 844 k
Installed size: 2.0 M
Is this ok [y/N]: y

... ...

Running Transaction
  Installing : syslinux-4.02-16.el6_5.x86_64                                1/2 
  Installing : syslinux-nonlinux-4.02-16.el6_5.i686                         2/2 
  Verifying  : syslinux-nonlinux-4.02-16.el6_5.i686                         1/2 
  Verifying  : syslinux-4.02-16.el6_5.x86_64                                2/2 

Installed:
  syslinux.x86_64 0:4.02-16.el6_5                                               

Dependency Installed:
  syslinux-nonlinux.i686 0:4.02-16.el6_5                                        

Complete!
[root@localhost tftpboot]# 

설치 완료.




TFTP에 필요한 Directory 를 만들고 부트로더를 카피한다.


mkdir /tftpboot  # 이미 있으면 무시
mkdir /tftpboot/pxelinux.cfg

cp /usr/share/syslinux/pxelinux.0 /tftpboot/
cp /usr/share/syslinux/menu.c32 /tftpboot/
cp /usr/share/syslinux/memdisk /tftpboot/
cp /usr/share/syslinux/mboot.c32 /tftpboot/
cp /usr/share/syslinux/chain.c32 /tftpboot/



파일 확인



[root@localhost tftpboot]# ll /tftpboot
total 180
-rw-r--r--  1 root root 20448 Jul  3 16:00 chain.c32
-rw-r--r--  1 root root 35676 Jul  3 16:00 mboot.c32
-rw-r--r--  1 root root 24988 Jul  3 16:00 memdisk
-rw-r--r--  1 root root 61056 Jul  3 16:00 menu.c32
-rw-r--r--  1 root root 26595 Jul  3 16:00 pxelinux.0
drwxr-xr-x  2 root root  4096 Jul  3 15:55 pxelinux.cfg
-rw-r--r--. 1 root root     8 Jul  3 05:48 testme
[root@localhost tftpboot]# 



이제 OS 를 설치하기 위해 디렉토리를 만들고 파일을 복사한다.

CentOS ISO 파일이 /media/Centos_6.5_Final 에 mount 되어 있다고 가정한다.

[root@localhost CentOS_6.5_Final]# mkdir /tftpboot/centos6
[root@localhost CentOS_6.5_Final]# mkdir /tftpboot/centos6/i386
[root@localhost CentOS_6.5_Final]# cp /media/CentOS_6.5_Final/* -r /tftpboot/centos6/i386/
[root@localhost CentOS_6.5_Final]# 





PXE 환경설정 파일 생성
vi /etc/httpd/conf.d/pxeboot.conf

Alias /centos6/i386 /tftpboot/centos6/i386

<directory /tftpboot/centos6/i386>
 Options Indexes FollowSymLinks
 Order Deny,Allow
 Deny from all
 Allow from 127.0.0.1 192.168.88.0/24
</directory>




PXE Menu 파일 생성



vi /tftpboot/pxelinux.cfg/default


default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
menu title =========== PXE Boot Menu by Jay ===========

label 1
menu label ^1) Install CentOS 6.5 i386
kernel centos6/i386/images/pxeboot/vmlinuz
append initrd=centos6/i386/images/pxeboot/initrd.img method=http://192.168.88.245/centos6/i386 devfs=nomount

label 2
menu label ^2) Boot from local drive localboot


서버를 재시작 한다.

[root@localhost CentOS_6.5_Final]# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[root@localhost CentOS_6.5_Final]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[root@localhost CentOS_6.5_Final]# 


이제 tftp 를 포함해서 CentOS 쪽 설정은 끝났다.

남은 것은 Router 설정과 테스트 뿐이다.





Network Booting OS 설치 #1 - TFTP

Mikrotik RouterOS (x86) 과 CentOS 6.5 를 이용해서 Network Booting 을 구현해 보자.


TFTP (Trivial File Transfer Protocol) 는 파일을 전송하기 위한 프로토콜이다.
구조가 단순하고 구현이 쉽기 때문에 PXE 를 통한 Network Booting 등에서 많이 사용된다.




일단 TFTP 를 설치한다.


root 계정으로 로그인 한다.









tftp 설치 여부 확인



[root@localhost ~]# rpm -qa tftp tftp-server
[root@localhost ~]# 

당연히 없다. 설치하자..


[root@localhost ~]# rpm -qa tftp tftp-server
================================================================================
 Package            Arch          Version                     Repository   Size
================================================================================
Installing:
 tftp               x86_64        0.49-7.el6                  base         32 k
 tftp-server        x86_64        0.49-7.el6                  base         39 k
Installing for dependencies:
 xinetd             x86_64        2:2.3.14-39.el6_4           base        121 k

Transaction Summary
================================================================================
Install       3 Package(s)

Total download size: 192 k
Installed size: 362 k
Is this ok [y/N]: 


tftp 의 홈 디렉토리를 만들고 다운로드 테스트용으로 사용할 간단한 파일을 하나 작성한다.



[root@localhost ~]# rpm -qa tftp tftp-server
[root@localhost ~]#
[root@localhost ~]# mkdir /tftpboot
[root@localhost ~]# echo Test... > /tftpboot/testme
[root@localhost ~]# ll /tftpboot
total 4
-rw-r--r--. 1 root root 8 Jul  3 05:48 testme
[root@localhost ~]#




tftp 환경 설정


vi /etc/xinetd.d/tftp


server_args 와 disabled 부분을 수정한다.



# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

이제 서비스를 띄우고 테스트 해 보자


# default: off
# /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
[root@localhost ~]# tftp local-4 localhost
localhost: bad port number
tftp>
tftp> quit
[root@localhost ~]#


아직 작동이 안된다.

SELinux 설정을 확인해 본다.



[root@localhost ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
[root@localhost ~]# 


SELinux 는 Security Enhanced Linux 로 Linux Kernel 의 보안을 획기적으로 높였다고 하는데
나는 아직 정확히 이해할 수 없어 일단은 disable 시키기로 한다.
(대부분의 사용자가 disable 시키고 사용하는 듯...)


[root@localhost ~]# sestatus
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


selinux 설정은 시스템을 리부팅해야 적용된다.


[root@localhost ~]# sestatus
reboot


시스템이 다시 부팅되면 selinux 설정을 다시 확인해 본다.

[root@localhost ~]# sestatus
[root@localhost ~]# sestatus
SELinux status:                 disabled



정상적으로 disable 되어 있다.

이제 다시 tftp 테스트를 해 보자.


[root@localhost ~]# sestatus
[root@localhost ~]# tftp -4 localhost
tftp> get testme
tftp>



아무런 오류 없이 tftp> 프롬프트가 나타났다.

실제로 파일을 받았는지 확인해 보자.





현재 디렉토리에 정상적으로 파일을 받아온 것을 확인할 수 있다.
이제 tftp 서버를 통해 파일을 주고 받는 게 가능하다.


localhost 가 아닌 다른 기기들간에 tftp 전송이 가능하려면 방화벽 설정을 확인해야 한다.

System / Administration / Firewall







Network Booting 을 위해서는 TFTP /  WWW (HTTP) 가 열려 있어야 한다.


이제 이렇게 구성된 TFTP 서버를 이용해서 Network Booting 을 구현해 보자.









2014/06/29

Mikrotik RouterOS Client 고정 IP 설정


할당받은 IP Address 를 확인한다.



DHCP 를 통해 192.168.88.130 을 할당 받은 것을 알 수 있다.



Router 에서 할당 정보를 확인해 보자.

Winbox / IP / DHCP Server / Leases 선택




해당 Client 의 IP 와 Mac Address 정보를 확인할 수 있다.
앞쪽의 'D' 는 Dynamic 을 뜻한다.


변경하고자 하는 Client Doucle Click



Make Static 을 누르고 OK

창이 닫히면 다시 해당하는 Client Double Click



다시 창이 열리면 General Tab 이 활성화 된것을 확인할 수 있다.

General Tab 에서 원하는 IP Address 를 적어준다.

필요하다면 Comment 를 입력할 수도 있다.


OK


아직까지는 Client 의 IP 가 바뀌지 않았다.

DHCP Server 는 IP 를 할당한 후 지정된 시간 동안 해당 IP 를 유지시킨다.


이제 강제로 Client 에서 IP 를 다시 받아오도록 한다.






Windows 인 경우 ipconfig/release 입력

현재 받아온 DHCP IP 를 반환한다.






다시 ipconfig/renew 실행

IP 를 다시 받아온다.

Router 에서 설정한 Static IP 를 정상적으로 할당받았다.





Router 에서 확인해 보면 Active Address 가 바뀌고 앞쪽의 'D' 가 사라졌음을 확인할 수 있다.




2014/06/28

Mikrotik RouterOS SMB 를 이용한 공유폴더 설정


테스트 환경인 vSphere 에서 VM 에 HDD 를 추가한다.




Winbox 를 열고 /System/Store/Disks 선택



primary-slave 라는 HDD 를 확인할 수 있다.
Status 가 invalid 이므로 아직은 사용할 수 없다.




Disk 를 선택하고 Format 진행



포맷이 완료되었다.


/Files 를 열어보자



/primary-slave 가 추가되었다.





Winbox 에서는 직접 폴더를 만들거나 할 수 없으므로 Windows 탐색기 등에서 폴더 구조를 만들고 Drag & Drop 을 이용해서 파일이나 폴더를 복사한다.





이제 추가된 HDD 와 Samba 를 이용해 Windows 공유폴더를 구축해 보자.



/IP/SMB 선택




Enabled 옵션을 켜준다.


공유 폴더를 만들기 위해 Shares 를 선택한다.




+ 버튼을 누르고 공유폴더명과 디렉토리를 지정한다.

새로 추가한 HDD 를 사용할 경우 /primary-slave/samba/setup 식으로 HDD 이름이 경로의 제일 앞에 나와야 한다. (/Files 에서 확인 가능)





몇 개의 공유 폴더가 추가된 모습



이제는 공유폴더를 사용하기 위한 사용자를 설정한다.



SMS Setting 창에서 Users 를 선택한다.



+ 버튼을 눌러 필요한 사용자를 만든다.



읽기 전용 User  생성


이제는 Samba 공유폴더를 사용할 수 있다.


Windows 탐색기에서 \\Mikrotik IP\ 를 탐색해 보면 아래와 같이 공유 폴더가 표시됨을 알 수 있다.






다만, Mikrotik 의 Samba 는 사용자별 폴더별 권한 지정을 할 수는 없다.

전체 사용자가 전체 폴더를 공유하되 특정 사용자에 대해서는 Read Only 설정을 하는 게 전부이다.






2014/06/23

vSphere Network #6 - VM 과 Mikrotik RouterOS Networking


이제 생성된 Windows 7 VM 에 네트워크를 연결해 보자


먼저 이 전에 생성된 VM 들의 네트워크 환경을 확인한다.

Host 선택 - 구성 - 네트워크




위 그림과 같이

Router 는 vSwitch0 과 vSwitch1 에 동시에 연결되어 있고 다른 VM 들은 vSwitch1 에만 연결되어 있어야 한다.

Router 는 NIC 가 두 장, 나머지 VM 들은 NIC 가 한 장임을 확인한다.

현재 상태에서 Router 의 전원이 켜져 있기 때문에 2개 스위치에 녹색 화살표 표시로 링크가 되어 있음을 확인할 수 있다.

만약 Windows 7 VM 이 vSwitch0 에 연결되어 있다고 하면 Windows 7 도 실제 NIC 에 연결되어 있는 DHCP 서버를 통해 IP 를 받아오게 되지만 다른 VM 들과는 네트워크가 연결되지 않는다.






Windows 7 VM 을 선택하고 전원을 켠다.



화면위 '가상시스템 콘솔 시작' 아이콘을 클릭하면 좀 더 편하게 VM 화면을 볼 수 있다.





Windows 7 부팅 화면
네트워크 아이콘을 살펴보면 연결이 안 된것을 볼 수 있다.


네트워크 환경을 확인해 보자.





역시나 IP 를 받아 오지 못해 네트워크를 사용하지 못하는 상태다.


이는 당연한 결과로, Windows 7 VM 연결된 가상 스위치 vSwitch1 에는 IP 를 할당해 줄 수 있는 서버가 한 대도 없는 상태이기 때문이다.


이제 Router 에 DHCP 서버를 설정해서 Windows 7 VM 이 IP 를 받아올 수 있도록 해 보자.



Winbox 를 실행시키고 IP - DHCP Server 를 선택한다.





현재 설정되어 있는 DHCP Server 가 없다.

+ 버튼을 눌러 설정해도 되지만 간단하게 DHCP Setup 버튼을 누른다.




Interface 는 꼭 ether2 (VM Local 네트워크) 를 선택한다.







Router 의 IP 주소이다.
기본적으로 선택이 되어 있다.



DHCP Server 에서 할당할 IP 대역을 입력한다.
기본적으로는 xxx.xxx.xxx.2 ~ 254 이지만 테스트를 위해 101 ~ 130 으로 제한했다.





DNS 설정
기본적으로는 ether1 에서 받아 온 DNS 정보를 보여주지만 DNS 는 구글이 '갑' 이기에 구글 DNS 로 수정했다.
기본 DNS 를 써도 무방하다.




IP 대여 시간 : 이건 걍 놔두든지 제한 하든지...





DHCP 서버가 추가됐다.



그대로 두고 Windows 7 VM 으로 가 보자.



네트워크 아이콘 모양이 바뀌어 있다.

화면상에는 좀 전에 IP 를 못 받아왔던 증거나 남아 있지만
나도 모르는 새에 네트워크 설정이 마무리 되었다.


ipconfig 로 다시 확인해 보자.



정상적으로 IP 를 받아 왔음을 알 수 있다.

Gateway 는 Router 의 IP 를 받아 왔다.

Mikrotik Router 의 DHCP 서버는 기본적으로 IP 를 할당할 때 IP Pool 의 제일 뒤쪽 번호부터 할당을 한다. 아까 설정했던 IP Pool 이 101 ~ 130 번 이었으므로 처음 VM 이 130 번이 되었다.

ipTime 등의 공유기는 대부분 앞쪽 번호부터 할당을 해준다.



Router 에서 할당된 정보를 확인해 보자

Winbox 를 실행시키고 IP - DHCP Server - Leases 를 선택한다.




Windows 7 VM 이 130번 IP 를 할당 받았고 3일 정도 후에 만료가 됨을 알 수 있다.





네트워크 설정이 너무 허무하게 끝나 버린 듯 하니 인터넷 연결을 마저 확인해 보자.

ping google.com




쓰바.... 안된다....


IP 와 Gateway 주소까지 정상적으로 받아왔기 때문에 네트워크 아이콘은 예쁘게 정상 모양이지만 아직 인터넷 연결은 안된다. 왜 그럴까 ?


... ...



답은 '공유기' 기능이 없기 때문이다.

우리가 설정한 Mikrotik Router 는 그야말로 'Router' 이지 '공유기' 가 아니다.


Router 는 서로 다른 네트워크를 연결하는 장비이다.

공유기는 그야말로 하나의 인터넷 라인을 '공유' 할 수 있게 해주는 장치이다.







예를 들어보자.


실제로 일반 가정에서 사용하는 인터넷 회선은 하나이다.

인터넷 통신을 하려면 IP Address 가 필요한데, 인터넷 회선이 하나이므로 IP Address 도 하나밖에 할당받지 못했다. (Dynamic 이든 Static 이든, Multi IP 는 논외로 한다.)

내가 google.com 사이트를 열려고 하면 내 PC 에서 google 서버로 패킷을 보내고 google 서버에서 보내온 응답 패킷을 내 PC 에서 다시 받을 수 있어야 하는데, 이 때 필요한 것은 서로간의 IP Address (인터넷 주소) 이다.

google 서버야 당연히 자신만의 '공인' IP Address 를 가지고 있고, 인터넷 회선을 사용하는 우리는 인터넷 회사에서 할당한 '공인' IP Address 하나를 가지고 있다. (Dynamic도 '공인' IP 이다. '고정' IP가 아닐 뿐이다.)

즉, 집에서 Laptop 하나만을 쓴다면 통신사 인터넷 라인을 그대로 Laptop 에 꽂기만 하면 공유기고 뭐고 필요없이 바로 인터넷을 사용할 수 있다.



문제는 가정이나 사무실에서는 그 하나의 IP 로 여러대의 컴퓨터나 모바일 기기가 모두 인터넷을 사용하고자 하는 것이다.

그럴 때 공유기가 필요하다.

ISP 에서 할당 받은 IP Address 는 공유기 자체가 가지게 되고 공유기 밑단에 붙는 모든 장치들은 '공인' IP Address 가 아닌 192.168.xxx.xxx 하는 식의 '사설 (Local)' IP Address 를 할당받게 된다.

이제 공유기에 연결된 Laptop 에서 google.com 을 열려고 한다면

1. Laptop 은 공유기에게 google 접속 요청을 하고
2. 공유기는 '공인' IP 를 이용해서 google 에 접속한다.
3. google 에서는 응답 요청을 받고 요청측 공유기의 '공인' IP 로 패킷을 전송한다.
4. 공유기는 google 패킷을 받아 다시 '사설' IP 를 이용해 Laptop 에게 패킷을 전송한다.

당연히 공유기는 사설 IP 와 공인 IP 두가지를 모두 가지고 있어야 내부와 외부 통신이 모두 가능해지는 것이다.


그리고 공유기도 내부와 외부라는 서로 다른 네트워크를 연결해야 하기 때문에 'Routing' 이 필요하고 그래서 Router 의 일부 기능을 가지고 있다.



우리가 설정한 Mikrotik Router 는 현재까지는 Routing 기능은 수행하지만 사설 IP 로 들어온 패킷을 공인 IP 로 바꿔서 보내주는 '공유 (실은 ~인 척 하는 가장)' 기능을 가지고 있지 못하다.

그래서 Router 에 '가장' 기능을 설정해 주어야만 Windows 7 VM 에서 Router 를 통해서 외부 인터넷과 통신을 할 수 있게 된다.



다시 Winbox 를 실행시키고 IP - Firewall - NAT 를 선택한다.




NAT 는 Network Address Traslation 으로 오가는 인터넷 패킷에서 Address 부분을 검사해서 여러가지 작업을 한다.









요 General 탭에서는 작업의 '대상' 을 선택한다.

Chain 에서 srcnat 을 선택하고
Out Interface 에서 ether1 (인터넷에 연결된 어댑터) 를 선택한다.

ether1 을 통해 외부로 나가는 모든 패킷에 대해 인터넷 공유기능을 사용해야 하므로 위와 같이 설정하고 'Action' 탭을 선택한다.





요기서는 위 'General' 탭에서 선택된 패킷에 대해 어떤 작업을 할 것인지를 결정한다.

단순히 'masquerade' 를 선택하고 Ok 를 누른다.

masquerade 는 말 그대로 ~인 척 하는 '가장' 이다.







우리의 첫번째 NAT Rule 이 만들어 졌다.

Local IP 를 가지고 있는 모든 패킷은 masquerade 에 의해 '공인' IP Address 로 '가장' 한다.



졸라 복잡하게 설명했는데, Router 에서 설정할 것은 꼴랑 저거 한 줄이다. 쓰바...


너무 간단해서 허무하지만......

당.황.하.지. 말고..... Windows 7 VM 을 확인해 보자.





위에서 google.com ping 실패한 흔적이 고스란히 남아 있다.



cmd 창에서 그냥 위 화살표 한 번 엔터 한번만 눌러보자.





인터넷 연결을 확인하기 위해 IE 를 실행한다.




지금 서식하는 곳이 Jakarta 라서 MSN 페이지가 요따우로 나오긴 했지만...


끝 !!!




Popular Posts