본문 바로가기

교육/Netwrok

Day 7

반응형

시작은 어제도 언급했던 네트워크 추상도에서 조금 더 나아가 봅시다.

서버에 포트가 여러가지 있습니다. 포트는 고정값을 가지구요.

먼저 웹서버 부터 얘기하면 windows에서 사용하는 iiserver나 apache같은 프로그램이 있습니다. 이러한 프로그램은 http로 분류되며 80번 포트를 부여 받았습니다. 다른 프로그램은 usftp로 21번 포트를 사용하며, PuTTY에서 사용하는 openssh프로그램은 22번을 사용합니다. 이와 같이 1023번 이하의 포트는 표준/공인 포트넘버로서 rfc문서의 규격을 따릅니다. 또한 각 포트번호는 정해진 값이라 변경이 불가능합니다. 이러한 내용에서 알수있듯이 포트넘버는 서버프로그램을 구별하기 위해 존재합니다.

반면 클라이언트 포트넘버는 난수로 자동할당받게 됩니다.

 

Socket은 APP과TCP 사이의 문같은 역할로써 멀티플렉싱에 관여는 하지 않고 데이터를 전송하는 부분입니다.

네트워크가 연결되고 처음으로 데이터 전송을 할때 frame을 구성하게 됩니다. 이때 사용자는 IP는 아는데 MAC을 모릅니다. 사용자는 네트워크에 MAC주소가 아닌 IP주소로 접속하기 때문입니다. 이때 이더넷은 ARM 브로드캐스트패킷을 보내게 됩니다. ARM 브로드캐스트 패킷은 특정 IP주소를 가진 네트워크가 응답을 하게 하는 패킷입니다. 예를들면,  'IP 11은 A 인 나한테 보내줘'라는 내용의 패킷을 연결된 모든 네트워크에 송신합니다. 그러면 그 응답으로 MAC주소를 알게되어 frame을 구성하고 그 MAC주소로 데이터를 보낼 수 있게 되는것입니다. 이를 이용해서 중간에 맥 어드레스를 속여 패킷을 가로채는 'ARP 스푸핑'이라는 네트워크 공격방식이 존재합니다.

 

 

 

IP aliases에 대해 알아보겠습니다. 원칙상으로는 하나의 랜카드에는 하나의 IP가 주어져야 합니다. 하지만 IP aliases를 이용하면 하나의 랜카드에 여러 IP 사용이 가능합니다.

방식은 두가지 있습니다.

1. '/etc/sysconfig/network-scripts/ifcfg-파일'을 이용해서 복사하고 수정하는 방법

2. ifconfig명령어로 명령하는 방식

네트워크 이름을 확인하고 그 이름으로 vi편집기로 이용해서 IP alias설정합니다.
vi편집기를 이용한 IP alias 설정화면 입니다.
vi편집기로 IP alias를 설정완료한 화면입니다.
vi를 이용해서 설정하고나면 파일이 생성됩니다.
ifconfig로도 IP alias가 설정됩니다.

여기서 주의해야 할 점은 IP alias를 설정하면서 vi편집기로 변경할때 네트워크 호스트 네임과 파일안의 네트워크이름이 같은지 확인해야 합니다. 또한 실습에서 보이는 것 처럼  network변경 사항이 적용되려면 network를 재시작 해야 합니다. 원래는 설정사항이 변경되었을때 바로 적용되지 않고 Day 4에서도 언급했듯이 시스템을 재시작해야 적용됩니다. 하지만 네트워크 변경을 하는데 PC를 재부팅하는것은 번거롭기때문에 systemctl restart network를 이용해서 네트워크만 재부팅합니다.

여기서 다시 주의해야할 사항이 생깁니다. vi편집기를 이용한 IP alias의 경우 파일이 생성되는 것이기 때문에 재부팅해도 변경 사항이 저장되어 있지만 ifconfig로 변경한 IP alias같은 경우는 명령으로 상태만 주어진것이기 때문에 리부트시 사라집니다. 이를 해결하기위해 rc.local에 저장하여 부팅시마다 유지되게 할 수 있습니다.

 

만약 서비스 설정에서 NetworkManager를 꺼놓게 되면 네트워크 연결 불가합니다. 하지만 모든 LinuxOS에 있는 설정은 아니기 때문에 네트워크 연결이 되지 않을때는 OS에 맞게 설정된 서비스를 찾아서 확인해봐야 합니다.

 

추가적인 네트워크 설정으로 /etc/hosts파일을 알아보도록 합시다. 원래는 IP를 DNS에 송신해서 응답을 받는 방식이 있습니다. 하지만 그 작업을 /etc/hosts를 이용해서 호스트명과 IP를 저장하는 파일을 생성하여 수행할 수 있습니다. 이 파일은 DNS보다 우선시됩니다. 따라서 이를 이용한 공격방식이 있는데, /etc/hosts파일의 내용을 변경해 사용자가 도메인 이름으로 접근하면 다른 주소로 연결되도록 유도해서 정보를 가져가는 방식입니다.

 

 



-------------------------------------------------------------------------------------------------------

 

 

CentOS 5.7의 설치 메뉴얼을 PDF로 작성했습니다.(17MB라서 분할압축되었습니다.)

CentOS5.7_Install_Manual.z01
10.00MB
CentOS5.7_Install_Manual.zip
1.60MB

 

 

 

-------------------------------------------------------------------------------------------------------



이번에는 파일 시스템과 파티션에 대해 알아보겠습니다.

파티션은 물리적 디스크를 논리영역으로 나누어 저장한 것입니다.

파일시스템은 파일을 저장하기위한 운영체제의 논리적 구조로써 운영체제 마다 다릅니다.

MBR는 부팅시 OS를 어떻게 메모리로 옮기는가에서 하는 개념이 만들어졌습니다. 이것은 디스크의 앞쪽에 사용되지 않는 공간으로서 HDD를 처음 생산할때부터 할당되고 이곳에 부트로더가 저장됩니다.

 

파티션은 크게 primary파티션, extended파티션두가지 존재합니다. 보통 하나의 물리적인 디스크 안에서는 두가지 파티션들을 최대 4개까지만 분할이 가능합니다. 독특한 파티션으로 extended파티션 안에 logical파티션이 존재합니다. extended파티션은 사용자가 사용 불가능하지만 대신 안에 logical파티션을 할당해서 사용합니다. logical파티션은 엄청 많이 분할이 가능 하지만 파티션을 나누지 않고 사용할때 extended파티션을 사용하지 못하니 하나의 logical파티션으로 지정해서 사용합니다. 이 생각은 물리적디스크와 primary파티션의 관계와 유사합니다. 물리적 디스크도 파티션으로 지정은 해야 하지만 파티션을 하나만 사용한다면 primary파티션으로 하나 지정하여 사용합니다.

 

디스크 장치 파일은 IDE와 SCSI,SATA 방식이 있는데 IDE는 근래에 사용하지 않기 때문에 제외하고 SCSI는 사용하지만 대용량의 DB용 디스크 처럼 고액의 장비이기때문에 많이 사용하지는 않습니다. 따라서 SATA방식이 가장 보편적으로 사용된다고 할수있습니다. Linux시스템 안에서 디스크 자체 파일은 /dev/sd*의 형식으로 사용됩니다. 따라서 디스크안의 파티션은 /dev/sd*1, /dev/sd*2, /dev/sd*3, ... 입니다. 또 디스크 장치파일은 사용자가 직접적으로 작성이 불가합니다. 사용자가 사용하려면 포멧후 디렉토리에 연결(마운트)을 해야 사용이 가능합니다.

 

디스크를 확인하는 명령어는 df입니다. 구성은 'df -옵션'으로 이루어지는데 디스크의 마운트 상태와 용량 확인할수 있습니다. 옵션에는 -T, -h가 있습니다. -T는 파일의 시스템 타입까지 출력하는 옵션, -h는 읽기 쉬운 단위(KB, MB, GB)로 출력하는 옵션입니다.

좀 눈여겨볼 내용중에 tmpfs타입이 있습니다. 이 파일들은 하드드라이브파일이 아니라 메모리파일입니다.  그리고 Mounted on이라는 항목이 있는데 이것은 access하는 폴더간에 이동할때 실제로는 디스크간에 이동인 경우도 있습니다.

예를 들어 디렉토리 이동할때 명령어는 cd /와 cd ~/인데 만약 부트파일이 루트파일과 마운트된 곳이 다르다면 디스크간 이동이 될수 있다는 것 입니다.

 

디스크 할당 순서는 fdisk 파티션 분할, mkfs 파일시스템 생성, mount 파일을 디렉토리에 연결 순으로 진행합니다.

fdisk는 물리적인 디스크에 논리적인 파티션을 생성하는 명령어 입니다. 구성은 'fdisk 디스크명'로 이루어져 있습니다.

 

fdisk 프롬포트에서 사용하는 명령을 한번씩 확인해 보는것이 좋습니다.

 

여기서도 몇가지 확인하면 extended파티션과 logical파티션사이에 용량의 갭이 있는데 그 갭은 extended파티션을 구성하는 크기 입니다.

또 /dev에서 ls했을 때 /sd*디스크 밑에 아무것도 없다면 파티션 지정 안된것이므로 파티션 지정을 해주면 됩니다.

파티션을 생성하게 되면 native 파티션을 따라갑니다.

 

파티션 지정할때 sector의 크기를 보게되면 0~ 2047가 사용이 안되는 것을 알수있는데, 이는 파티션 정보 저장하기 때문에 사용할 수 없는 것 입니다. 여기서 sector는 HDD 물리적 지번이라고 할 수 있습니다. 만약 sector을 건너 뛰고 설정하면 건너뛴 부분은 사용 불가하니 중간에 빈 부분을 생성하면 안되니 주의하여야 합니다.

 

 

mkfs는 파일 시스템을 생성하는 명령어 입니다. 구성은 'mkfs -t  파일시스템타입 파티션명'으로 이루어져 있습니다.

 

 

mount명령어는 파일 시스템을 디렉토리에 연결하여 사용 가능하게 하는것입니다. 이 개념을 들었을때는 커널과 프로그램간에 중간역할인 쉘과 비슷한 역할인가 했는데 관련이 없고 공간확장만이루어 지는것 이라고 합니다.

<참고 쉘의 기능 및 종류>

구성은 'mount -t 파일시스템 장치명 디렉토리'로 구성되어 있습니다. 파일시스템은 운영체제에 따라 다르기 때문에 확인 후 지정하는 것이 좋습니다. 최근 LinuxOS의 경우 xfs시스템을 주로 사용합니다. mount명령어도 시스템을 재부팅하게 되면 마운트했던것들이 해제 되므로 편하게 사용하려면 rc.local에서 자동 마운트 되게하는것이 좋습니다.

umount는 마운트를 해제하는 명령어로 'umount 디렉토리명' 또는 'umount 장치명'으로 실행하면 됩니다. 

 

시스템상 mount하거나 작업하는 폴더, 파일들은 root관리자계정이라면 /var/ 아래나 /root/ 아래에 저장하면 되지만 일반 계정은 /home/ 아래만 저장하는 것이 좋습니다.

 

* VMWare에서 가상의 하드 추가하기

가상의 하드드라이브 추가 구성시 SDD는 단일 저장이든 멀티 저장이든 워낙 빠르기 때문에 상관없습니다. 하지만 멀티저장이 관리도 쉬워서 사용해야 합니다.

설정중에 allocate를 하게되면 통합파일 생성하게 됩니다. 예를들어 20GB로 저장하면 20GB 만큼 실제 드라이브 차지합니다. 만약 선택을 안하게 되면 MAX를 설정한 용량으로 설정하고 공간을 조금씩 stack시키는것입니다.

SCSI방식으로 기본값이 설정되어 있습니다.

 

반응형

'교육 > Netwrok' 카테고리의 다른 글

Day 9  (0) 2019.11.28
Day 8  (0) 2019.11.27
Day 5 (2)  (0) 2019.11.22
Day 5 (1)  (0) 2019.11.22
Day 4  (0) 2019.11.22