구축환경: 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에서 볼 수 있다.

구축환경: Ubuntu 14.04 LTS



서버들을 소스패키지를 빌드해 설치하니, apt-get으로 설치했을 때와는 달리 재부팅 시 데몬이 뜨지 않는다.

이 문제를 해결하기 위해 nohup 명령어를 사용해도 안돼서,

Startup Script 추가를 했다.

다른 방법들은 아직 나에게 많이 복잡해서, 정석은 아닌듯 하나 가장 간단한 방법을 사용했다.


소스패키지로 설치한 ftpd가 Ubuntu 시작 시 자동으로 켜지도록 하기 위해,

ftpd --daemon 명령어를 내용으로 한 /etc/init.d/ftpd.sh 파일을 만들었다.

chmod +x ftpd.sh 명령어로 스크립트를 실행가능하게 만들었다.

update-rc.d ftpd.sh defaults

위 명령어를 실행하면 ftpd.sh를 시작 스크립트로 설정한다.

LSB Information이 없다고 Warning이 뜨지만 일단은 패스.


재부팅을 하면 ftpd가 자동으로 켜져있는 것을 확인할 수 있다.

구축환경: Ubuntu 14.04 LTS


1.

http://httpd.apache.org/download.cgi#apache24

위 사이트에서 가장 최신의 Apache HTTP Server(httpd)를 다운 받았다.


2.

tar -xvzf httpd-2.4.29.tar.gz

명령어로 압축을 푼다.


3.

httpd-2.4.29 디렉터리로 이동해서

./configure

명령어를 사용하니 error가 떴다.

apr이 없다고 해서, apt-get 명령어로 관련 패키지를 설치하고 다시 해보니

이번엔 apr-util이 없다고 한다.

INSTALL 문서를 참고해서,

http://apr.apache.org/download.cgi#apr1에서

apr-1.6.3.tar.gz apr-util-1.6.1.tar.gz를 다운받아,

./scrlib/apr와 ./scrlib/apr-util에 각각 압축을 풀고

./configure --with-included-apr 

명령어를 실행했다.

(apr, apr-util 모두 apt-get 명령어로 설치하면 따로 옵션을 줄 필요가 없는데,

그냥 INSTALL 문서를 참고하는게 편해서 이 방식을 택했다. 이게 차후 문제 발생 방지에 좋다는 설명도 함께 있었다.)


4.

이번엔 pcre-config가 필요했다.

INSTALL 문서에 별다른 설명이 없어서 그냥

apt-get install libpcre3

apt-get install libpcre3-dev

두 명령어로 설치를 하고 다시

./configure --with-included-apr 

명령어를 실행했고

configure: summary of build options:


    Server Version: 2.4.29

    Install prefix: /usr/local/apache2

    C compiler:     gcc -std=gnu99

    CFLAGS:          -g -O2 -pthread  

    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE  

    LDFLAGS:           

    LIBS:             

    C preprocessor: gcc -E

다음과 같은 결과가 나왔다. 여기서 prefix는 기본값인데, 이걸 변경해 주려면 --prefix=PREFIX 옵션을 주면 된다.

makemake install 명령어를 차례로 실행해주었다.


5.

/usr/local/apache2/bin/apachectl start

명령어를 사용해 데몬을 켜주면 80번 포트가 열리고,

웹 브라우저에 IP 주소를 입력해서 다음과 같은 창이 뜨면 기본적인 웹서버 구축 완료.



+친구의 요청으로 웹페이지의 첫 화면을 바꿔주었다.

이 웹서버의 DocumentRoot/usr/local/apache2/conf/httpd.conf에 설정되어 있다.

/usr/local/apache2/htdocs가 기본값이여서 수정하지 않고 그냥 사용했다.

이 디렉터리 안에 있는 index.html 파일을 수정하면 된다.


구축환경: Ubuntu 14.04 LTS


1.

https://packages.ubuntu.com/source/trusty/sendmail

위 사이트에서 소스를 다운로드했다.


2.

tar -xvzf sendmail_8.14.4.orig.tar.gz

안에 압축파일이 또 있어서

tar -xvzf sendmail.8.14.4.tar.gz

한번 더 압축을 푼 후,

sendmail-8.14.4 디렉터리를 사용자의 홈 디렉터리로 옮겼다.


3.

sendmail 디렉터리로 이동해,

./Build

위 명령어로 빌드해준다.

이 때, 'undefined reference to~' 오류가 나서

sendmail-8.14.4/ 디렉터리 안의 devtools/Site/에

APPENDDEF(`confLIBS', `-lresolv')

위 내용만을 가진 site.config.m4 파일을 생성하여

./Build -c

명령어로 다시 빌드했다.


4.

cf/cf/ 디렉터리에서

cp generic-linux.mc sendmail.mc

명령어로 sendmail.mc 파일을 만들어준 후,

./Build sendmail.cf

명령어로 sendmail.cf 파일을 생성한다.


5.

mkdir /etc/mail

명령어로 디렉터리를 만들어주고

./Build install-cf

명령어를 입력하면

/etc/mail/sendmail.cf

/etc/mail/submit.cf

두 파일이 생성된다.


6.

sendmail/ 디렉터리 내에서

./Build install

명령어를 이용해 sendmail을 설치한다.

(설치 전, smmsp 그룹과 smmsp 사용자를 생성해야한다고 해서 만들었다.)

위 명령어를 사용하니 /usr/man/man8 디렉터리가 없다고 해서,

mkdir /usr/man/man8 /usr/man/man5 /usr/man/man1

세 디렉터리를 만들고 다시 명령어를 이용했다.


7.

touch /etc/mail/local-host-names

mkdir /var/spool/mqueue

두 명령어로 필요한 파일과 디렉터리 생성


8.

/usr/sbin/sendmail -L sm-mta -bd -q30m

위 명령어로 데몬을 실행하고, 25번 포트가 열려있는지 확인한다.

명령어 옵션은 https://www.computerhope.com/unix/usendmai.htm 참고


9.

sendmail xxx@gmail.com

위 명령어를 사용한 후, 메일 내용을 적고 .을 누르면 메일이 전송된다.

Gmail의 정크 메일함에서 발송한 메일을 확인할 수 있었다.

구축환경: Ubuntu 14.04LTS


Ubuntu에 DNS 서버 구축을 하기 위해, BIND9 소스 패키지를 빌드하여 설치하였다.


https://packages.ubuntu.com/trusty/bind9


먼저, BIND9의 소스 패키지는 위 링크에서 다운 받았다.

다운 받은 압축 파일을

tar -xvzf bind9_9.9.5.dfsg.orig.tar.gz

명령어를 사용해 압축 해제한 후, bind9-9.9.5.dfsg 디렉터리로 이동하여

./configure --without-openssl

명령어를 사용해 빌드에 필요한 프로그램을 확인했다. OpenSSL을 사용하지 않으려고 옵션을 주었다.

따로 필요한 프로그램은 없어 바로 빌드했다.

make

명령어를 이용하여 빌드를 한 후,

make install

명령어로 설치해주었다.


설치가 끝나면 /usr/local/sbin에 named를 비롯한 여러 BIND 9 라이브러리들의 실행파일이 생성되어,

명령어만 입력해도 프로그램들을 실행시킬 수 있다.


named로 DNS 서버를 켜기 전, 먼저 DNS 서버를 설정해야한다.

http://zytrax.com/books/dns/ch7/

위 링크를 참고하여 설정하였다. (configuration 파일과 zone 파일 작성법이 나와있다.)

(이 글은 내 컴퓨터의 IP가 192.168.0.101, 호스트 컴퓨터의 IP가 192.168.0.27이라고 가정하고 작성함)



먼저, /etc/hosts 파일을,

127.0.0.1 my.local localhost

127.0.0.1 ns

위와 같이 수정하였다.


apt-get 명령어로 BIND9를 설치하면 자동으로 /etc/named.conf 파일, /etc/bind/named.conf.options 등이 생성되는 것 같은데,

소스 패키지를 빌드하여 설치한 경우엔 생성되지 않는다. (bind9-9.9.5.dfsg 디렉터리의 FAQ 참고)

그렇기 때문에 디렉터리와 파일을 생성하여 설정해주었다.


/etc/bind/named.conf.options 파일을,

options {

 directory "/var/cache/bind";

 

 forwarders {

 ##KT 네임서버 IP 

 168.126.63.1; 

 168.126.63.2;

 };


 listen-on-v6 { any; };

};

다음과 같이 만들어, 내부 도메인이 아닌 경우 KT 네임서버에 묻게 했다.

여기서, options는 DNS 서버의 전체적인 제어에 대한 설정을 하는 절이며,

listen-on-v6는 BIND가 IPv6 쿼리 listen 여부를 설정하는 문장이다.(IP나 Port 설정도 가능)


/etc/bind/named.conf.local 파일을,

zone "my.local" IN {

 type master;

 file "/etc/bind/zones/my.local.db";

};


zone "0.168.192.in-addr.arpa" {

 type master;

 file "/etc/bind/zones/rev.0.168.192.in-addr.arpa";

};

다음과 같이 만들어, zone을 추가하였다.

여기서, zone은 네임서버가 지원할 zone을 정의하는 절이며,

type은 zone의 type을 설정하는 문장이다. (type에 대한 정의는 위 링크에서 참고)

file은 zone에 의해 사용될 파일을 설정하는 문장이다.


/etc/named.conf 파일은 다음과 같이 간단하게 만들었다.

include "/etc/bind/named.conf.options";

include "/etc/bind/named.conf.local";

보다시피, 위에서 만든 파일들을 include 했다.


그 후, named.conf.options에 정의한 zone에 대한 zone 파일을 생성한다.

/etc/bind/zones라는 디렉터리를 만들어서, 그 안에 zone 파일들을 생성했다.


먼저, my.local.db 파일을 다음과 같이 만들었다.

;

; BIND data file for local loopback interface

;

$ORIGIN my.local.

$TTL 604800

@ IN SOA ns.my.local. master.my.local. (

 10 ; Serial

 604800 ; Refresh

 86400 ; Retry

 2419200 ; Expire

 604800 ) ; Negative Cache TTL

;

; name servers - NS records

my.local. IN NS ns.my.local.


; name servers - A records

localhost IN A 127.0.0.1

gateway IN A 192.168.0.1

ns IN A 192.168.0.101


; hosts - A records

testcom IN A 192.168.0.27

여기서, SOA는 zone에 대한 설정을 하는 레코드고,

NS는 도메인에 대한 네임서버를 정의, A는 호스트에 대한 아이피를 설정하는 레코드다.


rev.0.168.192.in-addr.arpa 파일은 다음과 같이 만들었다.

;

; BIND reverse data file for broadcast zone

;

$TTL 604800

@ IN SOA ns.my.local. master.my.local. (

 14 ; Serial

 604800 ; Refresh

 86400 ; Retry

 2419200 ; Expire

 604800 ) ; Negative Cache TTL

;

; name server

@ IN NS ns.my.local.

; PTR Records

1 IN PTR gateway.my.local.

27 IN PTR testcom.my.local.

101 IN PTR ns.my.local.

여기서 PTR은 아이피에 대한 도메인을 설정하는 레코드다.



설정이 다 끝나면,


named-checkconf 명령어로 configuration에 구문 에러가 있는지 확인하고,

zones 디렉터리로 이동하여, named-checkzone을 사용해 zone 파일이 정확하게 작성되었는지 확인한다.

ex) named-checkzone my.local my.local.db

ex) named-checkzone 0.168.192.in-addr.arpa rev.0.168.192.in-addr.arpa


그 후 named 명령어를 입력하면, DNS 서버가 켜진다.


host 컴퓨터에선, DNS 서버로 192.168.0.101을 사용하게 한 후, DNS 서버가 잘 기능하는 지 테스트했다.

telnet ns.my.local, ftp ns.my.local등의 명령어로 DNS 서버에 등록된 도메인으로 IP를 잘 찾아 접속하는 지 확인했고,

내부 도메인이 아닌 경우를 테스트 하기 위해 google 등의 일반 사이트에 웹 브라우저를 사용해 접속해보았다.

구축 환경 : VirtualBox / ubuntu 14.04 LTS

(17.11.29 VirtualBox가 아닌 환경에서 테스트 완료)


ubuntu에 telnet과 ftp 서버 구축을 하기 위해, 소스 패키지를 빌드하여 설치하였다.

여태 많은 시도를 해봤는데, 항상 같은 소스 패키지를 받았던 게 문제였나보다. 버전은 달리 해봤지만..

계속 netkit-telnet, netkit-ftp를 받아서 시도했는데 항상 이것저것 에러가 뜨면서 빌드가 되지 않았다.

(vsftpd도 시도 했었는 지는 기억이 나지 않음)

그러다가, 마지막이다! 하는 맘으로 inetutils라는 소스 패키지를 받게 되었다.

https://www.gnu.org/software/inetutils/ 에 올라온 설명에 따르면,

inetutils는 telnet client/server, ftp client/server, rsh client/server 등의 보편적인 네트워크 프로그램들의 모음이라고 한다.

그래서, 이 패키지를 설치하면 telnet도 ftp도 설치할 수 있다.

telnet 설치하고 다음에 ftp도 따로 설치하려고 했는데 의도치 않게 한꺼번에 하게 되었다.


inetutils 소스 패키지는 위 링크에서도 받을 수 있지만 나는,

https://packages.ubuntu.com/source/trusty/inetutils

여기서 다운 받았다.


다운 받은 압축 파일을

tar -xvJf inetutils_1.9.2.orig.tar.xz

명령어를 사용해 압축 해제한 후, inetutils-1.9.2 디렉터리로 이동하여

./configure

명령어를 사용해 빌드에 필요한 프로그램을 확인했다. 나의 경우엔 따로 필요한 프로그램이 없어서,

make

명령어를 이용하여 빌드를 한 후,

make install

명령어로 설치해주었다.


설치하고 나니 ftp와 telnet 클라이언트는 그냥 ftp, telnet 명령어로 실행이 되었는데

서버의 데몬을 켜는 법을 몰라서 정말 한참 헤매다가 겨우 찾아냈다.

설치를 하고 나면 inetutils-1.9.2 디렉터리에 있는 telnetd와 ftpd 디렉터리 안에

executable 파일이 생긴다는 것을 몰랐던 것이다..

ftpd의 standalone 데몬이기 때문에, ftpd 디렉터리로 이동하여

ftpd --daemon

명령어를 사용하면 데몬이 켜진다.

netstat -ano | grep 21

명령어를 사용하면 포트가 열렸는지 확인할 수 있고, 그 후

ftp localhost 명령어를 사용하거나, 파일질라를 사용하여 접속 테스트를 할 수 있다.


telnetd의 경우, 슈퍼데몬 xinetd를 사용해야 하기 때문에

/etc/xinetd.conf 파일에,

service telnet

{

disable = no

flag = REUSE

socket_type = stream

wait = no

user = root

server = [telnetd executable 파일의 절대 주소. 나의 경우엔 /home/testuser/inetutils-1.9.2/telnetd/telnetd]

log_on_failure += USERID

}

를 추가한 후, (apt-get으로 telnet을 설치했을 땐, server = /usr/sbin/in.telnetd 라고 썼었다.)

service xinetd restart

명령어로 xinetd를 재시작해서 23번 포트를 열어주었다.

netstat -ano | grep 23

명령어를 사용해 포트가 열렸는지 확인한 후,

telnet localhost 명령어를 사용하거나, PuTTY를 사용하여 접속 테스트를 할 수 있었다.


(inetutils 패키지의 telnet과 ftp를 사용한 경우, 별다른 설정 없이 root 로그인이 가능했다.)

Ubuntu에서 소스 패키지로 Samba를 빌드하여 설치했다.


1. # apt-get install acl attr autoconf bison build-essential \

  debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \

  libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \

  libcap-dev libcups2-dev libgnutls-dev libjson-perl \

  libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \

  libpopt-dev libreadline-dev perl perl-modules pkg-config \

  python-all-dev python-dev python-dnspython python-crypto \

  xsltproc zlib1g-dev

먼저 위 명령어를 통해, 의존성이 있는 패키지들을 설치해준다.

Ubuntu 14.04 이상의 버전에선 libgnutls-dev가 libgnutls28-dev으로 대체되었다고 하는데..

깜빡하고 그냥 돌렸는데 별다른 문제는 없었다.


2. samba.org에서 소스를 다운 받는다. (Releases에서, Current stable relase에 Samba x.y.z (gzipped)를 다운)


3. tar -xvzf [다운 받은 압축 파일명] 

위 명령어를 사용해 압축을 푼다.


4. ./configure -> make -> sudo make install

압축이 풀리고 생긴 디렉터리 안으로 이동해 위 명령어를 차례로 사용하면 설치가 완료된다.

./configure 명령을 치니, no와 not found가 떠서 걱정했는데 'configure' finished successfully라고 무사히 나왔다.

make와 make install에는 다소 시간이 걸린다. make를 할 시에도 warning이 조금 뜨나 error는 뜨지 않아 성공적으로 완료되었다.


5. vi /usr/local/samba/etc/smb.conf

[testuser]

comment = samba directory

path = /home/testuser/samba

valid user = testuser

public = yes

writable = yes

위 내용을 configuration 파일에 추가한다.


6. ./smbpassword -a testuser

Samba를 설치 했던 디렉터리 안의 bin 디렉터리로 이동하여

위 명령어로 valid user에 입력해둔 Samba 유저를 생성한다.


7. ./smbd

위 명령어로 데몬 실행 후 445, 139 포트가 열렸는지 확인한다.



윈도우에서 테스트할 때, 실행창에 \\[Samba Server IP] 를 입력 하면 된다.

(path에 입력한 디렉터리의 소유권, 허가권에 유의)


참고: https://wiki.samba.org/index.php/Build_Samba_from_Source

+ Recent posts