# ASUS 라우터 RT-AC68P를 사용 한 나스 구축기

    _

    주말 내내 새로운 뻘짓을 했다*~~(시작을 왜 했을까...)~~*

    _

    필자는 학생 때 부터 상용 서비스나 기성제품을 사용하기 보다는 서버를 스스로 구축하는 방법을 애용했다.

    집에 상시 켜둘 수 있는 저전력 서버를 구축 하기 위하여 *~~(지금은 신제품도 잘 안나오는 듯 하는)~~* [하드커널](http://www.hardkernel.com/main/main.php)의 [ODROID-U2](http://www.hardkernel.com/main/products/prdt_info.php?g_code=G135341370451)를 2013년도부터 사용하기 시작 했는데 상당히 많은 뻘짓의 원인이 되는 녀석이다. 오늘의 글도 이 놈 때문에 작성한다*~~(이럴줄 알았다면 시놀로지 같은 기성 제품을 삿을테다.)~~*.

    _

    ODROID-U2는 *~~(구시대유물)~~*노트2에 들어가던 Exynos4412 Prime을 AP로 사용한다. 항상 켜두어도 티비 대기전력 수준으로 전성비는 매우 우수하다. 하지만 처음엔 몰랐지만... 이놈이 기가빗을 지원안한다(ARM이라 발생 하는 문제도 많다. apt-get upgrade 하기가 너무나도 두렵다). 집 네트웍은 기가빗인데, 서버가 기가빗이 안된다니... 고민을 시작했다. 새로운 서버를 들일까? 그냥 스토리지는 기가빗을 포기할까? 하다가 나는 알뜰한*~~(용돈살이)~~*유부니깐 현 상황에서 최대한 개선해보자는 마음을 먹었다. 만약 시작전으로 돌아갈 수 있다면 시작을 안했을테다.

    _

    집 네트웍을 기가빗으로 업그레이드 하면서 라우터를 새로 구입하였는데 ASUS사의 [RT-AC68P](https://www.asus.com/Networking/RTAC68P/)이다.

    ASUS의 RT-AC68U, RT-AC68P 등 몇가지 모델이 있다. [RT-AC68P 외의 모델에는 USB 3.0의 제 속도가 나오지 않는 하드웨어 결함이 있다](https://www.snbforums.com/threads/rt-ac68u-slow-usb-3-0-speeds.13124/). 사실 본 글을 쓰고 있는 시점에서 RT-AC68P는 신모델은 아니다. [RT-AC88P](https://www.asus.com/kr/Networking/RT-AC88U/)와 같이 더 멋지고 강력한 모델이 있지만 비싸다.

    <center>

    ![RT-AC68P](https://www.asus.com/media/global/products/XtuNy1dJ2q1y7UZ7/P_setting_fff_1_90_end_500.png)

    *~~(RT-AC68P도 상당히 강려크 하게 생겼다)~~*

    </center>

    _

    비록 서버로 쓰는 ODROID-U2는 기가빗을 지원하지 않지만 RT-AC68P은 기가빗에 USB 포트를 사용하여 **★간이 나스★** 기능도 제공한다!

    _

    **이 간이 나스기능으로 부족한 ODROID-U2의 네트워크 스토리지 역할을 분담하고자 한다.**

    _

    간이 나스기능을 사용하기 위하여 먼저 라우터에 [멀린펌](http://asuswrt.lostrealm.ca/)을 설치 한다*~~(설치 과정은 생략 한다.)~~*. 멀린펌은 정펌을 기반으로 만들어진 트윅펌으로 멀린펌을 올릴 경우 sshd등을 띄울 수 있다.

    _

    스토리지만 ODROID-U2에서 라우터로 옮기고, 기존과 같이 웹서버 등은 ODROID-U2를 사용할 예정이다. 변경 전 홈 네트워크?구조와 변경 후 네트워크 구조는 아래와 같다*~~(아주 유비쿼터스하게 뻘짓이다.)~~*.

    _

    <center>

    ![변경 전 홈 네트워크 구조](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/1.png)

    > 변경 전 홈 네트워크 구조

    </center>

    _

    <center>

    ![변경 전 홈 네트워크 구조](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/2.png)

    > 변경 후 홈 네트워크 구조

    </center>

    _

    주된 변경 사항은 스토리지 서버의 메인 역할인 FTP / SAMBA만 라우터로 옮겨가고 구축해둔 [PYDIO](https://pydio.com/), 지인 공유를 위한 웹 파일 서버 등의 웹서비스는 기존과 같이 ODROID-U2로 하기 위하여 NFS로 마운트 할 예정이였다.*(시간이 허락 하고 귀차니즘이 허락 한다면 RT-AC68P를 사용하여 NFS / SAMBA 셋팅 하고 구축 하는 글도 올리겠지만, 올리지 않을 것이 눈에 훤하다. 요약 하면 NFS로 할 경우 UID/GID 관련 셋팅이 아주 deep한 뻘짓이 되어, 간단하게 samba로 마운트 했다. 속도도 이상하게 samba가 조금 더 나왔다.)*

    _

    SAMBA 마운트는 /etc/fstab에 아래와 같이 등록해 주었다(비밀번호는 *로 생략)

    ```

    //RT-AC68P-F088/odroid_home_taesaza0 /home/taesaza0 cifs defaults,username=taesaza0,password=********,iocharset=utf8,uid=1000,gid=1000,file_mode=0600,dir_mode=0711 0 2

    //RT-AC68P-F088/odroid_home_odroid /home/odroid cifs defaults,username=taesaza0,password=******,iocharset=utf8,uid=1001,gid=1001,file_mode=0600,dir_mode=0711 0 2

    ```

    _

    라우터에서 SAMBA / FTP 설정을 마친 후(이 과정에서도 많은 수고가 있었지만) ODROID-U2에서 접속을 해보니 상당히 눈에 거슬리는 것이 등장하였다!

    _

    <center>

    ![저 초록 배경이 너무나도 거슬린다......](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/3.png)

    > **저 초록 배경이 너무나도 거슬린다......**

    </center>

    _

    간이 나스답게 구현도 간이로 했는지 라우터에서 생성 되는 파일, 디렉토리는 모두 퍼미션을 0777 rwxrwxrwx를 가지고 있었다. 그냥 지나쳤어야 하는데... 참새가 방앗간을 그냥 못지나치듯 퍼미션을 올바르게 설정 하고 싶은 묘한 욕구가 몰려 왔다*~~(그냥 지나쳤어야 했다. 그럼 이 글을 쓰는 시간도 줄일 수 있었을 텐데)~~*.

    _

    RT-AC68P에서 FTP는 vsftpd를 사용하여 서비스 되고 있었는데, 당연히 설정 파일은 /etc/vsftpd.conf에 위치하고 있었다. 당황하지 않고 vsftpd.conf에 umask값을 022로 변경 했다. 뿌듯해 할 찰나 서비스 재시작시 vsftpd.conf값이 설정 전으로 돌아갔다. 역시 간이 나스다. 설정은 간단하지 않다.

    _

    폭풍 구글링을 통하여 RT-AC68P에서 vsftpd.conf의 설정을 [custom하게 변경 할 수 있는 wiki](https://github.com/RMerl/asuswrt-merlin/wiki/Custom-config-files)를 발견 했다(이 wiki를 좀더 빨리 발견했다면 시간이 상당히 단축 되었을 것이다.) URL은 아래와 같다.

    https://github.com/RMerl/asuswrt-merlin/wiki/Custom-config-files

    _

    인생사 쉬운일이 없듯이 vsftpd.conf 파일을 /jffs/configs에 넣었지만 적용이 되지 않는다......(두둥)

    좀더 wiki글을 자세히 읽었어야 했디/ 친절하게도 상단에 378.50 버전 부터는 기본적으로 custom config가 disabled라 설정을 변경해 줘야 한다고 한다.

    변경 메뉴는 관리 -> 시스템에 위치한다.

    _

    <center>

    ![JFFS custom configs enable](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/4.png)

    > JFFS custom configs enable

    </center>

    _

    custom config를 통하여 FTP를 사용 할 때 umask 값 및 SAMBA에서 생성 될 파일의 퍼미션 값도 모두 설정해 주었다(당연하겠지만 SAMBA의 설정 파일은 /jffs/configs/smb.conf 이다).

    _

    FTP / SAMBA설정을 완료 한 후, ODROID-U2에서 마운트 할 디렉토리의 퍼미션도 아래와 같이 변경하였다.

    (ODROID-U2에서 사용자 별 홈디렉토리 권한을 위하여, 홈디렉토리 별로 각각 SAMBA 디렉토리를 마운트 할 예정이다. 이렇게 할 경우 마운트 옵션을 통해 UID/GID를 지정 함으로써 홈디렉토리 처럼 사용 할 수 있다).

    _

    <center>

    ![퍼미션 설정](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/5.png)

    > 홈디렉토리를 위한 퍼미션 0700 설정

    </center>

    _

    셋팅이 완료 된 것 처럼 보이나 언제나와 같이 문제의 시작은 지금부터다. 이 문제가 아니였다면 글 조차 쓰지 않았을테다.

    [FileZilla FTP 클라이언트]()로 접속 후 홈 디렉토리로 접근을 시도하자 에러를 뿜는다(퍼미션이 없단다....)

    처음에는 도무지 이해가 되지 않았다. 퍼미션이 없을리 없었기 때문에...

    _

    우연찮게*(글로는 표현이 잘 안된다. 뻘짓은 무려 오후내내 이어졌다)* RT-AC68P에서 vsftpd 프로세스의 UID가 이상하게 뜨는 것을 발견했다.(UID 1이라니 이뭐.....)

    _

    <center>

    ![image](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/6.png)

    > 슬프도다 UID가 1로 뜨다니.

    </center>

    _

    프로세스의 UID가 1인데 퍼미션 0700인 ODROID-U2의 홈디렉토리 접근 하려고 했으니 퍼미션이 부족하긴 하다.

    보통의 서버 환경에서는 vsftpd가 root로 떠서 문제가 되지 않았겠지만, **이 특별한 간이 나스 RT-AC68P에서는 UID가 1로 뜨기때문에 아주 큰 문제였다.**

    _

    <center>

    ![image](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/7.jpg)

    > 으아아아아아아아아아아아악

    </center>

    _

    vsftpd를 내 계정인 taesaza0으로 띄우고자 무척이나 노력했다(RT-AC68P에서는 특이하게도 root계정이 따로 없다. 내 계정이 root처럼 동작하는 신비한 환경이다. ~~처음 봄~~).

    몇 시간의 사투 후 나는 포기 했다. 그러나 이 글을 성공적으로 이유는 다른 방법으로 해결을 했기 때문이다.

    _

    <center>

    ![image](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/8.jpg)

    > 성공했어.

    </center>

    _

    UID 1인 계정을 만들어보자.

    adduser 명령어 조차 없는 RT-AC68P환경에서 이런 생각을 하다니 스스로 기특하다.

    _

    존재하지 않는 계정이지만 /jffs/configs를 통하여 /etc/passwd 파일을 조작했다.

    /jffs/configs/passwd.add 설정 파일을 통하여(passwd의 경우 custom 설정 모드를 add만 지원해준다. 자세한 내용은 [wiki](https://github.com/RMerl/asuswrt-merlin/wiki/Custom-config-files)를 참고 하라.)

    _

    passwd.add에 아래와 같은 계정을 추가했다.

    ```

    taesaza1:x:1:0:taesaza0:/./root:/bin/sh

    ```

    _

    존재 하지 않는 taesaza1 계정이다.

    하지만 해당 내용을 passwd에 추가한 후에 vsftpd 프로세스 정보를 찍어보면 아래와 같이 taesaza1로 아주 잘 나온다(당연하겠지만)

    _

    <center>

    ![image](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/9.png)

    </center>

    _

    그럼 이제 무엇을 해야 할까.

    홈 디렉토리들을 모두 taesaza1계정의 소유로 만들어주었다. 어차피 ODROID-U2에서는 samba 마운트 옵션으로 UID/GID를 따로 지정 할 것이므로 RT-AC68P에서는 어떤 계정소유해도 무방했다!

    _

    <center>

    ![image](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/10.png)

    > ODROID-U2에서 마운트할 디렉토리를 taesaza1의 소유로 변경 했다. 디렉토리의 소유자도 taesaza1이고 vsftpd도 taesaza1로 동작하므로 이제 퍼미션에는 문제가 없다!

    </center>

    _

    그 결과 드디어 깔끔한(퍼미션 0777을 보고 그냥 썼으면 여가시간이 배로 늘어났을 텐데...) 환경에서 FTP / SAMBA를 사용 할 수 있게 되었다.

    _

    RT-AC68P의 하드웨어 서버로 쓰기엔 부족한(간이) 나스이므로 속도가 많이는 나오진 않지만 아래와 같은 속도를 볼 수 있었다. ODROID-U2를 사용 할 때 7MB/s 정도를 보던 때보다는 25MB/s ~ 30MB/s로 무척이나 빠르다!

    다만 전송 시 CPU와 RAM은 엄청 힘들어 하는 듯 하다.

    _

    <center>

    ![image](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/11.png)

    > SAMBA를 사용하여 윈도우 탐색기를 통한 파일 전송

    </center>

    _

    <center>

    ![image](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/12.png)

    > FTP를 사용하여 FTP 클라이언트를 통한 파일 전송

    </center>

    _

    <center>

    ![image](http://taesaza0.ignorelist.com/taesaza0/blog_images/13/13.png)

    > 힘들어하는 라우터 STATUS. 아주 램이 부족하*~~(고자)~~*구나

    </center>

    _

    잘 만들어진 공유기라 그런지 FTP나 SAMBA 때문에 인터넷 속도가 느려지거나 하지는 않는 듯 하다!

    _

    오늘의 삽질기 끝.


    @마크다운

    Posted by 이거니거니료니