구축환경: Ubuntu 14.04 LTS (VirtualBox)


NFS 서버는 apt-get 명령어로는 아주 쉽게 설치할 수 있는 것에 비해

소스패키지로 설치하는 것은 생각보다 매우 복잡했다.

그래서 일단은 apt-get 명령어로 서버를 구축해보았다. 


(서버용 가상머신 IP 10.0.2.100,

클라이언트용 가상머신은 서버용 가상머신의 DHCP 서버에서 할당해준 유동 IP 10.0.2.55~99 사이

두 가상머신은 같은 NAT Network 상에 존재함 - VirtualBox에 소스패키지로 DHCP 서버 구축하기 (Ubuntu) 참고)



1.

서버용 가상머신에

apt-get install nfs-common nfs-kernel-server rpcbind

명령어로 필요한 패키지들을 설치한다.


2.

/etc/exports 다음 내용 추가(책 '이것이 우분투 리눅스다' 참고)

/share 10.0.2.*(rw,sync)

10.0.2.0/24 네트워크의 컴퓨터가 /share에 접근할 수 있도록 설정

sync: NFS가 쓰기 작업을 완료할 때마다 디스크 동기화 - async보다는 노림.

옵션 - http://www.whatwant.com/509 참고


3.

mkdir /share

chmod 707 /share

exports 파일에 추가해둔 /share 디렉터리를 만들고,

접근 권한을 변경한다. (일반 사용자에게 읽기, 쓰기, 실행 권한 부여)

service nfs-kernel-server restart

NFS 서버 재시작


exportfs -v 명령 사용하면 서비스 가동 여부 확인 가능

여기서 root-squash는 NFS 클라이언트가 root라는 이름으로 NFS 서버에 접속해도

NFS 서버의 root 사용자 권한은 얻을 수 없도록 방지하는 옵션기본값이 root-squash.

no-root-squash를 사용하면 시스템보안이 매우 약해진다.


4.

클라이언트용 가상머신에

install apt-get nfs-common

명령어로 패키지 설치한다.


5.

showmount -e 10.0.2.100

다음 명령어로 NFS 서버에 공유된 디렉터리 확인

myShare 디렉터리를 만든 후,

mount -t nfs 10.0.2.100:/share myShare

명령어로 디렉터리를 마운트한다.

목록 조회, 파일 복사 등으로 공유 디렉터리를 정상적으로 사용할 수 있는 지 확인한다.



+ Port Forwarding을 위한 포트 번호 설정

원래는 클라이언트로 윈도우를 사용하려고 했기 때문에, (Windows 10 Home에서는 NFS가 안된다고 해서 실패..)

VirtualBox에 Squid 소스패키지로 Proxy 서버 구축하기 (Ubuntu) 에서처럼

가상머신의 네트워크 설정에서 포트 포워딩 규칙을 만들어줬다.

(가상머신 설정 - 네트워크 - 고급 - 포트 포워딩)

(kpcinfo -p 명령어로 조회한 포트 번호)

NFS 서버는 portmapper 서비스의 111/tcp,udp, nfs 서비스의 2049/tcp,udp 포트를 사용하고..

또, mountd 서비스의 포트도 사용하는데, 이건 무작위 포트를 사용하기 때문에 서버를 재시작할 때마다 계속 바뀐다.

포트포워딩 규칙을 매번 바꿔줄 수 없기 때문에

mountd 60066/tcp

mountd 60066/udp

위와 같은 내용을 /etc/services 파일에 추가해줘서 서비스가 사용할 포트 번호를 정해줬다.

그러면 아래와 같이 mountd가 사용하는 포트 번호가 고정된다.

고정된 포트 번호로 포트 포워딩 규칙을 만들어준다.

구축환경: Ubuntu 14.04 LTS (VirtualBox)


VirtualBox에 프록시 서버를 구축했다.

내 PC의 사설 주소가 192.168.0.x라서,

가상머신 설정 - 네트워크 - NAT - 고급 - 포트포워딩에 다음과 같은 규칙을 추가했다.

Squid 프록시 서버가 TCP/UDP 3128 포트를 사용한다고 해서 두개 다 추가했다. 


https://packages.ubuntu.com/source/trusty/squid3 에서 소스 패키지를 다운 받아, 압축을 풀고

./configure -> make -> make install 명령어를 차례로 사용하여 설치한다.


/usr/local/squid/etc/squid.conf 파일에 다음과 같은 내용을 추가한다. (책 '이것이 우분투 리눅스다' 참고)

acl myserver src 192.168.0.0/255.255.255.0    #Access Control List에 myserver라는 이름의 192.168.0.0 네트워크를 추가

http_access allow myserver                        #myserver라는 이름의 네트워크 접근 허용

cache_dir ufs /var/spool/squid 1000 16 256    #캐시할 디스크 지정. ufs: 스퀴드용 파일 시스템으로 지정

#10000: MB 단위로 캐시할 데이터공간 지정 16: 캐시에서 사용할 하부 디렉터리 개수 지정

#256: 앞 16개 디렉터리 안에 다시 생성할 디렉터리 개수 지정

visible_hostname myserver                        #네트워크 이름을 외부에 보이도록 설정


바로 서버를 켜려고 하니까 permission 오류가 난다.

Squid는 기본적으로 nobody라는 user로 실행된다고 해서,

/usr/local/squid/var/logs/cache.log를 생성해서 허가권을 모두 줬다.


그 후에도 켜지지 않아서 시스템 로그를 보니, 처음 Squid를 실행하는 경우엔

/usr/local/squid/sbin/squid -z

명령어를 사용해서 swap directory 라는 것을 만들어주라고 한다.

swap directory는 /var/spool/squid/에 만들어지니 이 디렉터리에 대한 허가권도 nobody에게 준다.


그리고서

/usr/local/squid/sbin/squid

명령어로 Squid 서버를 켜니 잘 돌아간다.


테스트를 위해 내 PC의 설정 - 네트워크 및 인터넷 - 프록시에서

자동 프록시 설정은 꺼주고,

수동 프록시를 아래와 같이 설정하고 저장했다.


Squid가 켜져있는 상태에서는 웹 사이트에 잘 접속이 되고,

꺼져있을 때는 접속이 되지 않는 것을 확인하면 프록시 서버가 잘 돌아가는 것이다.


구축환경: Ubuntu 14.04 LTS (VirtualBox)


Ubuntu에 DHCP 서버를 구축했다.

스위치 장비가 없어서 VirtualBox에서 테스트했는데, 네트워크 설정을 할줄 몰라서 많이 헤맸다.

VirtualBox에서 지원하는 네트워크 종류는,

NAT

NAT network

Bridge Adapter

Internal Network

Host-only Network

Generic Driver

이렇게 있는데 이 중에 어떤걸 사용해야 테스트가 제대로 될 지 고민을 많이 했는데,

https://printf.kr/archives/285 이 페이지를 참고한 결과,

NAT network를 사용하면 테스트하기 편할거라는 생각이 들었다.

같은 NAT network를 사용하면 두 가상머신이 같은 네트워크 상에 있게 된다.

또, DHCP 서버 사용 여부를 선택할 수 있어 DHCP 서버 구축 테스트에 적합하다고 판단했다.


먼저, VirtualBox의 네트워크 설정을 하기 전 인터넷이 연결되어있는 상태에서 아래 사이트의 소스 패키지를 다운 받는다.

https://packages.ubuntu.com/source/trusty/isc-dhcp

./configure -> make -> make install

세 명령어를 차례로 입력하면 쉽게 설치가 완료된다.


서버 설정과 테스트를 해보기 전에, VirtualBox의 네트워크 설정을 했다.

환경설정 - 네트워크에서 다음과 같은 NAT 네트워크를 추가해준다.

여기서, 기본으로 체크되어 있던 DHCP 지원은 해제해주어야한다.


각 가상머신의 네트워크 어댑터를  NatNetwork라는 이름의 NAT 네트워크로 설정해준다.

그리고 ifconfig 명령어를 사용하면, IP를 할당받지 못한 것을 알 수 있다.


DHCP 서버로 이용할 가상머신에 다음과 같이 IP를 수동으로 할당해준다.


그 후, /etc/dhcpd.conf 파일을 생성하여 다음과 같은 내용을 추가해준다. (책 '이것이 우분투 리눅스다' 참고)

subnet 10.0.2.0 netmask 255.255.255.0 {                 # 네트워크주소, 서브넷마스크

option routers 10.0.2.2;                                 # 게이트웨이 IP

option subnet-mask 255.255.255.0;                  # 서브넷마스크 

range dynamic-bootp 10.0.2.55 10.0.2.99;          # 클라이언트에게 할당할 IP 주소 범위 MIN, MAX 

option domain-name-servers 168.126.63.1;        # 클라이언트에게 알려줄 네임 서버의 주소

default-lease-time 10000;                              # 클라이언트에게 IP 주소를 임대해 줄 기본적인 초 단위 시간

max-lease-time 10000;                              # 클라이언트가 한 IP 주소를 보유할 수 있는 최대의 초 단위 시간

}


특정 랜카드에 고정된 IP 주소를 할당할 때는 위의 절에 아래와 같은 내용을 추가해주면 된다.

host ns{

harware Ethernet MAC주소;

fixed-address 고정IP주소;

}


바로 데몬 실행을 하니, 

DHCP 클라이언트가 IP 주소를 대여해 간 정보가 기록되는 파일인 dhcpd.leases가 필요하다고 한다.

touch /var/db/dhcpd.leases

명령어로 만들어준다.


dhcpd

위 명령어로 데몬을 실행시켜주면,

IP 주소를 할당받지 못했던 클라이언트 가상머신에 IP가 할당된 것을 확인할 수 있고, (나의 경우 10.0.2.55)

그 기록을 /var/lib/dhcp/dhcpd.leases에서 볼 수 있다.

+ Recent posts