D-Link DIR-825 공유기의 OpenWRT를 이용한 홈서버 만들기
컴퓨터보안/네트웍세상 / 2011. 12. 29. 18:06
1. OpenWRT Firmware 설치
사전 준비사항
1) OpenWRT Firmware 10.3.1 버전 (2011년 11월 29일 현재 최신 버전)을 다운받는다. 파일명은 openwrt-ar71xx-generic-dir-825-b1-jffs2-factory.bin 이며, http://downloads.openwrt.org/backfire/10.03.1/ar71xx/ 에서 다운받을 수 있다.
firmware recovery mode를 이용하여, 웹 인터페이스로 펌웨어를 설치
2) DIR-825 공유기의 전원이 꺼진 상태에서, 후면 패널 부분의 RESET 버튼을 누른 상태로 전원을 인가한다. RESET 버튼을 계속 누른 상태로 약 10초 ~ 30초 사이를 유지하면, 전면 패널의 전원 LED 가 주황색으로 느리게 깜빡거리는 상태가 바로 firmware recovery mode이다.
컴퓨터의 네트워크설정
3) 컴퓨터의 네트워크 설정을 IP 주소 : 192.168.0.100, 서브넷 마스크 : 255.255.255.0, 기본 게이트웨이 : 192.168.0.1 로 설정한다. 다른 항목은 설정하지 않아도 된다.
컴퓨터와 공유기의 연결
4) 컴퓨터 네트워크 카드와 공유기의 LAN 포트를 랜 케이블로 연결한다. 공유기의 LAN 포트는 후면 패널에서 파란색 영역으로 표시되어 있고, 1, 2, 3, 4 라고 번호가 붙여진 곳이다. 4개의 포트 중에 어떤 포트를 사용해도 상관없다.
펌웨어 업데이트
5) 컴퓨터에서 인터넷 익스플로러를 실행하고(반드시 Internet Explorer이어야 한다. 기타 사파리, 파이어폭스, 크롬 브라우저를 사용해서는 안된다.), 주소창에 http://192.168.0.1 를 입력한다.
6) 펌웨어 업데이트 화면이 나오면, "Browse" 버튼을 누른 다음, 미리 다운받은 openwrt-ar71xx-generic-dir-825-b1-jffs2-factory.bin 펌웨어 파일을 선택하고, "Update" 버튼을 클릭한다.
7) 화면에서 펌웨어 업데이트 진행과정이 %로 표시된다. 100%가 되고나서도 약 10 ~ 20초 정도를 더 기다리면, 자동으로 장비가 리부팅된다. (절대 어떤 일이 있더라도, 브라우저를 닫아버리거나, 공유기를 끄면 안된다. 컴퓨터도 건드리지 않는 것이 좋다.)
펌웨어 업데이트 확인
8) 공유기가 리부팅되는 과정중에 전면 패널의 전원 LED 가 주황색으로 깜빡거린 후에, 완전히 동작하면 주황색으로 켜진 상태가 유지된다. 컴퓨터의 네트워크 설정을 “자동으로 IP 주소 받기” 와 “자동으로 DNS 서버 주소 받기”로 설정한다. 그리고 명령어 창을 열고 ipconfig 명령을 내렸을 때, 컴퓨터의 IP 주소가 자동으로 192.168.1.144와 같은 192.168.1.x 대역을 가지고 있다면 정상적으로 펌웨어가 업데이트된 상황이다.
공유기의 관리자 암호 설정
9) OpenWRT는 처음 설치하면, 무조건 관리자 암호를 설정하도록 되어 있다.
OpenWRT 공유기의 IP 주소는 192.168.1.1이며, 먼저 telnet을 통하여 관리자 암호를 설정한다.
telnet 192.168.1.1
한 다음,
바로 로그인되면, passwd 명령어를 이용하여, 관리자 암호를 설정한다. 관리자 암호는 두 번 넣도록 되어 있다.
(XShell과 같은 자동 로그인되는 터미널 프로그램에서는 로그인 스크립트 인식을 꺼놓아야 한다. 왜냐하면, XShell과 같은 프로그램은 접속하는 순간, 로그인 스크립트를 실행하기 때문에, 정상적인 로그인이 되는 것이 아니라, 엉뚱하게도 패스워드가 틀렸으니, 패스워드를 바꾸라는 화면이 나온다.)
exit 명령어로 telnet 접속을 종료한다.
telnet 접속이 종료되면, telnet은 더 이상 사용할 수 없다. 오직 SSH로만 접속 가능하다.
D-Link DIR-825 공유기의 OpenWRT는 웹 인터페이스가 없으므로,(나중에 설치할 수는 있으나, 공유기 내부 디스크 공간 제약이 존재한다.) 모든 것을 SSH 접속으로 설정한다.
버팔로 WZR-HP-G300NH 제품은 펌웨어에 기본적으로 Luci 웹 인터페이스가 존재한다. 두 제품의 차이는 내부 램 영역의 사용 파티션 공간 때문에 생긴다.
DIR-825는 루트 파티션 영역이 5MB로 설정되고, WZR-HP-G300NH는 30MB로 설정되므로, 후자가 훨씬 많은 추가 패키지들을 설치할 수 있다. DIR-825는 Luci 웹 인터페이스를 설치하게 되면, 다른 기능들을 거의 설치할 수가 없다.
2. OpenWRT의 기본 설정 변경
SSH 클라이언트를 이용하여, IP 주소 : 192.168.1.1 , 포트번호 : 22 , 사용자 계정 : root 로 공유기로 SSH 로그인을 한다. 앞에서 설정한 패스워드를 사용한다.
1) 쉘 명령어 alias 추가
쉘에서 디렉토리의 파일들을 보여주는 ls -la 명령어를 ll 명령어를 줄여서 쓸 수 있도록 설정한다.
/root 디렉토리에 .profile을 생성하고, 그 안에 alias 구문으로 설정하면 된다.
또는
/etc 디렉토리에 있는 profile 파일을 수정하면 된다.
Connecting to 192.168.1.1:22...
Connection established.
Escape character is '^@]'.
sh: /usr/bin/X11/xauth: not found
BusyBox v1.19.3 (2011-12-19 15:01:26 MST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
ATTITUDE ADJUSTMENT (bleeding edge, r29570) ----------
* 1/4 oz Vodka Pour all ingredients into mixing
* 1/4 oz Gin tin with ice, strain into glass.
* 1/4 oz Amaretto
* 1/4 oz Triple sec
* 1/4 oz Peach schnapps
* 1/4 oz Sour mix
* 1 splash Cranberry juice
-----------------------------------------------------
root@OpenWrt:/# cd
root@OpenWrt:~# vi .profile
alias ll='ls -la'
~
root@OpenWrt:~# sync
root@OpenWrt:~# source ./.profile
다른 방법으로 /etc 디렉토리에 있는 profile 파일 수정하기
root@OpenWrt:~# cd /etc
root@OpenWrt:/etc# vi profile
#!/bin/sh
[ -f /etc/banner ] && cat /etc/banner
...
<중략>
...
[ -x /usr/bin/arp ] || arp() { cat /proc/net/arp; }
[ -z /bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }
# Shell Command Alias
alias ll='ls -la'
~
2) 내부 LAN 네트워크 대역 변경
내부 LAN 네트워크 대역 192.168.1.1을 나만의 네트워크 대역으로 바꾼다.
다른 공유기와 혼란이 되지 않도록, C-Class 대역이 생소한 192.168.43.1 네트워크 대역으로 변경한다.
내부 LAN 네트워크 설정을 수정한다.
root@OpenWrt:/# cd /etc
root@OpenWrt:/etc# ll
drwxr-xr-x 13 root root 0 Jan 1 1970 .
drwxr-xr-x 17 root root 0 Dec 27 01:47 ..
lrwxrwxrwx 1 root root 7 Dec 20 09:43 TZ -> /tmp/TZ
-rw-r--r-- 1 root root 589 Dec 19 21:57 banner
drwxr-xr-x 2 root root 0 Jan 1 1970 config
drwxr-xr-x 2 root root 0 Dec 19 21:57 crontabs
drwxr-xr-x 4 root root 0 Dec 19 21:57 defconfig
-rwxr-xr-x 1 root root 2671 Dec 19 21:02 diag.sh
-rw-r--r-- 1 root root 1368 Dec 19 22:04 dnsmasq.conf
drwx------ 2 root root 0 Jan 1 1970 dropbear
-rw-r--r-- 1 root root 0 Jan 1 1970 ethers
-rw-r--r-- 1 root root 139 Dec 19 22:06 firewall.user
lrwxrwxrwx 1 root root 10 Dec 20 09:43 fstab -> /tmp/fstab
lrwxrwxrwx 1 root root 19 Dec 20 09:43 functions.sh -> ../lib/functions.sh
-rw-r--r-- 1 root root 78 Jan 1 1970 fw_env.config
-rw-r--r-- 1 root root 123 Mar 21 2011 group
-rw-r--r-- 1 root root 20 Mar 21 2011 hosts
drwxr-xr-x 8 root root 0 Dec 20 09:43 hotplug.d
-rw-r--r-- 1 root root 1201 Nov 5 23:38 hotplug2-common.rules
-rw-r--r-- 1 root root 80 Mar 21 2011 hotplug2-init.rules
-rw-r--r-- 1 root root 242 Dec 20 09:26 hotplug2.rules
drwxr-xr-x 2 root root 0 Nov 9 21:52 init.d
-rw-r--r-- 1 root root 104 Jan 1 1970 inittab
drwxr-xr-x 2 root root 0 Dec 20 09:42 modules-boot.d
drwxr-xr-x 2 root root 0 Dec 20 09:29 modules.d
lrwxrwxrwx 1 root root 12 Dec 20 09:43 mtab -> /proc/mounts
-rw-r--r-- 1 root root 163 Dec 20 09:14 opkg.conf
-rw-r--r-- 1 root root 190 Jan 1 1970 passwd
-rw-r--r-- 1 root root 190 Nov 18 00:28 passwd-
drwxr-xr-x 4 root root 0 Dec 20 09:43 ppp
-rwxr-xr-x 1 root root 888 Jul 23 18:38 preinit
-rw-r--r-- 1 root root 476 Aug 19 18:08 profile
-rw-r--r-- 1 root root 2478 Mar 21 2011 protocols
-rwxr-xr-x 1 root root 1490 Nov 9 21:52 rc.common
drwxr-xr-x 2 root root 0 Dec 20 09:43 rc.d
-rw-r--r-- 1 root root 132 Mar 21 2011 rc.local
lrwxrwxrwx 1 root root 16 Dec 20 09:43 resolv.conf -> /tmp/resolv.conf
-rw-r--r-- 1 root root 3001 Mar 21 2011 services
-rw-r--r-- 1 root root 149 Jan 1 1970 shadow
-rw-r--r-- 1 root root 116 Dec 19 21:57 shadow-
-rw-r--r-- 1 root root 9 Mar 21 2011 shells
-rw-r--r-- 1 root root 976 Sep 19 05:24 sysctl.conf
-rw-r--r-- 1 root root 128 Mar 21 2011 sysupgrade.conf
drwxr-xr-x 2 root root 0 Jan 1 1970 uci-defaults
root@OpenWrt:/etc# cd config
root@OpenWrt:/etc/config# ls
dhcp dropbear firewall network system ubootenv wireless
root@OpenWrt:/etc/config# ll
drwxr-xr-x 2 root root 0 Jan 1 1970 .
drwxr-xr-x 13 root root 0 Jan 1 1970 ..
-rw-r--r-- 1 root root 885 Dec 19 22:04 dhcp
-rw-r--r-- 1 root root 134 Dec 19 22:05 dropbear
-rw-r--r-- 1 root root 3631 Dec 19 22:06 firewall
-rw-r--r-- 1 root root 564 Jan 1 1970 network
-rw-r--r-- 1 root root 411 Jan 1 1970 system
-rw-r--r-- 1 root root 0 Jan 1 1970 ubootenv
-rw-r--r-- 1 root root 874 Jan 1 1970 wireless
root@OpenWrt:/etc/config# vi network
config 'interface' 'loopback'
option 'ifname' 'lo'
option 'proto' 'static'
option 'ipaddr' '127.0.0.1'
option 'netmask' '255.0.0.0'
config 'interface' 'lan'
option 'ifname' 'eth0.1'
option 'type' 'bridge'
option 'proto' 'static'
option 'ipaddr' '192.168.43.1'
option 'netmask' '255.255.255.0'
config 'interface' 'wan'
option 'ifname' 'eth1'
option 'proto' 'dhcp'
config 'switch'
option 'name' 'rtl8366s'
option 'reset' '1'
option 'enable_vlan' '1'
config 'switch_vlan'
option 'device' 'rtl8366s'
option 'vlan' '1'
option 'ports' '0 1 2 3 5t'
~
root@OpenWrt:/etc/config# sync
root@OpenWrt:/etc/config# reboot
root@OpenWrt:/etc/config#
공유기를 리부팅한 다음,
SSH 클라이언트를 이용하여, IP 주소 : 192.168.43.1로 다시 로그인해서, 변경된 네트워크 대역을 확인한다.
Connecting to 192.168.43.1:22...
Connection established.
Escape character is '^@]'.
sh: /usr/bin/X11/xauth: not found
BusyBox v1.19.3 (2011-12-19 15:01:26 MST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
ATTITUDE ADJUSTMENT (bleeding edge, r29570) ----------
* 1/4 oz Vodka Pour all ingredients into mixing
* 1/4 oz Gin tin with ice, strain into glass.
* 1/4 oz Amaretto
* 1/4 oz Triple sec
* 1/4 oz Peach schnapps
* 1/4 oz Sour mix
* 1 splash Cranberry juice
-----------------------------------------------------
root@OpenWrt:~# ifconfig
br-lan Link encap:Ethernet HWaddr 00:18:E7:DB:68:1E
inet addr:192.168.43.1 Bcast:192.168.43.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:360 errors:0 dropped:67 overruns:0 frame:0
TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:27884 (27.2 KiB) TX bytes:13178 (12.8 KiB)
eth0 Link encap:Ethernet HWaddr 00:18:E7:DB:68:1E
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:432 errors:0 dropped:9 overruns:12 frame:0
TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:40342 (39.3 KiB) TX bytes:15765 (15.3 KiB)
Interrupt:4
eth0.1 Link encap:Ethernet HWaddr 00:18:E7:DB:68:1E
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:382 errors:0 dropped:0 overruns:0 frame:0
TX packets:94 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:31124 (30.3 KiB) TX bytes:13574 (13.2 KiB)
eth1 Link encap:Ethernet HWaddr 00:18:E7:DB:68:1F
inet addr:121.183.236.174 Bcast:121.183.236.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1222 errors:0 dropped:0 overruns:0 frame:0
TX packets:109 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:81262 (79.3 KiB) TX bytes:9851 (9.6 KiB)
Interrupt:5
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3038 (2.9 KiB) TX bytes:3038 (2.9 KiB)
3) 패키지 목록 업데이트
추가 패키지 설치를 위한 패키지 목록을 업데이트한다.
root@OpenWrt:~# opkg update
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz.
Inflating http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/snapshots.
4) USB 장치 마운트용 패키지 설치
USB 메모리스틱이나 USB 하드디스크 등을 공유기 뒷면 패널의 USB 포트에 연결하여 사용할 수 있도록 하는 패키지들을 설치한다. 홈서버로 사용되는 공유기는 내부 메모리 용량이 매우 작기 때문에, USB 메모리스틱과 같은 장치를 이용해서 저장공간을 확장할 수 있다.
root@OpenWrt:~# opkg install fdisk kmod-fs-ext4 kmod-usb2 kmod-usb-storage kmod-usb-storage-extras block-mount hotplug2
Installing fdisk (2.13.0.1-4) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/fdisk_2.13.0.1-4_ar71xx.ipk.
Installing kmod-fs-ext4 (2.6.39.4-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-fs-ext4_2.6.39.4-1_ar71xx.ipk.
Installing kmod-lib-crc16 (2.6.39.4-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-lib-crc16_2.6.39.4-1_ar71xx.ipk.
Package kmod-usb2 (2.6.39.4-1) installed in root is up to date.
Installing kmod-usb-storage (2.6.39.4-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-usb-storage_2.6.39.4-1_ar71xx.ipk.
Installing kmod-scsi-core (2.6.39.4-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-scsi-core_2.6.39.4-1_ar71xx.ipk.
Installing kmod-usb-storage-extras (2.6.39.4-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-usb-storage-extras_2.6.39.4-1_ar71xx.ipk.
Installing block-mount (0.2.0-7) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/block-mount_0.2.0-7_ar71xx.ipk.
Installing blkid (1.41.12-2) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/blkid_1.41.12-2_ar71xx.ipk.
Installing libuuid (1.41.12-2) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libuuid_1.41.12-2_ar71xx.ipk.
Installing libblkid (1.41.12-2) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libblkid_1.41.12-2_ar71xx.ipk.
Installing libext2fs (1.41.12-2) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libext2fs_1.41.12-2_ar71xx.ipk.
Installing libcom_err (1.41.12-2) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libcom_err_1.41.12-2_ar71xx.ipk.
Installing libpthread (0.9.32-98) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libpthread_0.9.32-98_ar71xx.ipk.
Installing swap-utils (2.13.0.1-4) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/swap-utils_2.13.0.1-4_ar71xx.ipk.
Package hotplug2 (1.0-beta-4) installed in root is up to date.
Configuring kmod-scsi-core.
Configuring kmod-usb-storage.
Configuring libpthread.
Configuring kmod-lib-crc16.
Configuring libcom_err.
Configuring libblkid.
Configuring libuuid.
Configuring libext2fs.
Configuring blkid.
Configuring swap-utils.
Configuring block-mount.
Configuring kmod-fs-ext4.
Configuring fdisk.
Configuring kmod-usb-storage-extras.
root@OpenWrt:~# sync
테스트로 1GB 용량의 USB 메모리스틱을 꽂고, 마운트가 정상적으로 되는지 확인한다.(USB 메모리스틱에는 Linux용의 파티션이 2개가 존재한다.)
root@OpenWrt:~# mount
rootfs on / type rootfs (rw)
/dev/root on / type jffs2 (rw,noatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=30964k)
tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,noatime,mode=600)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)
root@OpenWrt:~# fdisk -l
Disk /dev/mtdblock0: 0 MB, 262144 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x19010010
Disk /dev/mtdblock0 doesn't contain a valid partition table
...
<중략>
...
Disk /dev/mtdblock6: 6 MB, 6356992 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x2b36ce10
Disk /dev/mtdblock6 doesn't contain a valid partition table
Disk /dev/sda: 1012 MB, 1012924416 bytes
32 heads, 61 sectors/track, 1013 cylinders
Units = cylinders of 1952 * 512 = 999424 bytes
Disk identifier: 0xb0bcd68e
Device Boot Start End Blocks Id System
/dev/sda1 1 913 891057+ 83 Linux
/dev/sda2 914 1013 97600 82 Linux swap / Solaris
root@OpenWrt:~# mount /dev/sda1 /mnt
root@OpenWrt:~# mount
rootfs on / type rootfs (rw)
/dev/root on / type jffs2 (rw,noatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=30964k)
tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,noatime,mode=600)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)
/dev/sda1 on /mnt type ext2 (rw,relatime,user_xattr,barrier=1,data=ordered)
5) 홈서버의 동적 DNS 사용을 위한 설치 및 설정
동적 DNS 설정을 위해서 패키지를 설치하고, 설정한다.
root@OpenWrt:/mnt# opkg install ddns-scripts
Installing ddns-scripts (1.0.0-17) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/ddns-scripts_1.0.0-17_all.ipk.
Configuring ddns-scripts.
root@OpenWrt:/mnt# cd /etc/config
root@OpenWrt:/etc/config# mv ddns /root/
root@OpenWrt:/etc/config# vi ddns
config 'service' 'MyDDNS'
option 'force_unit' 'hours'
option 'enabled' '1'
option 'service_name' 'freedns.afraid.org'
option 'domain' '할당받은 도메인명'
option 'username' '사용자 ID'
option 'password' '도메인용 키 값'
option 'ip_source' 'network'
option 'ip_network' 'wan'
option 'check_interval' '1'
option 'check_unit' 'hours'
option 'force_interval' '72'
~
root@OpenWrt:/etc/config# sync
6) OpenVPN 설치 및 설정
OpenVPN 패키지를 설치하고, 설정한다.
root@OpenWrt:/etc/config# opkg install openvpn
Installing openvpn (2.2.1-4) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/openvpn_2.2.1-4_ar71xx.ipk.
Installing kmod-tun (2.6.39.4-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-tun_2.6.39.4-1_ar71xx.ipk.
Installing libopenssl (1.0.0e-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libopenssl_1.0.0e-1_ar71xx.ipk.
Installing zlib (1.2.5-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/zlib_1.2.5-1_ar71xx.ipk.
Installing liblzo (2.05-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/liblzo_2.05-1_ar71xx.ipk.
Configuring kmod-tun.
Configuring zlib.
Configuring libopenssl.
Configuring liblzo.
Configuring openvpn.
root@OpenWrt:/etc/config# mv openvpn /root/
root@OpenWrt:/etc/config# vi openvpn
config 'openvpn' 'MyOpenVPNServer'
option 'server' '10.100.200.0 255.255.255.0'
option 'dev' 'tun0'
option 'proto' 'tcp'
option 'port' '1194'
option 'keepalive' '10 120'
option 'ca' '/etc/openvpn/ca.crt'
option 'cert' '/etc/openvpn/server.crt'
option 'key' '/etc/openvpn/server.key'
option 'dh' '/etc/openvpn/dh1024.pem'
option 'status' '/tmp/openvpn-status.log'
option 'verb' '3'
option 'enable' '1'
~
root@OpenWrt:/etc/config# sync
인증서 파일을 /etc/openvpn 디렉토리에 복사한다.
root@OpenWrt:/etc/openvpn# ll
drwxr-xr-x 2 root root 0 Dec 27 02:13 .
drwxr-xr-x 14 root root 0 Dec 27 02:10 ..
-rw-r----- 1 root root 1346 Dec 27 02:13 ca.crt
-rw-r----- 1 root root 1456 Dec 27 02:13 cert.pem
-rw-r----- 1 root root 424 Dec 27 02:13 dh.pem
-rw-r----- 1 root root 887 Dec 27 02:13 key.pem
root@OpenWrt:/etc/openvpn# sync
인증서 파일과 디렉토리는 접근권한을 잘 설정해준다.
root@OpenWrt:/etc/openvpn# chmod 600 *
root@OpenWrt:/etc/openvpn# ll
drwxr-xr-x 2 root root 0 Dec 27 02:13 .
drwxr-xr-x 14 root root 0 Dec 27 02:10 ..
-rw------- 1 root root 1346 Dec 27 02:13 ca.crt
-rw------- 1 root root 1456 Dec 27 02:13 cert.pem
-rw------- 1 root root 424 Dec 27 02:13 dh.pem
-rw------- 1 root root 887 Dec 27 02:13 key.pem
root@OpenWrt:/etc/openvpn# cd ..
root@OpenWrt:/etc# chmod 700 openvpn
7) OpenVPN을 위한 방화벽 설정 및 기본 방화벽 추가 설정
OpenVPN 방화벽 룰, 외부 인터넷망에서 SSH 접근 방화벽 룰과 외부 FTP 접근, PPTP 방화벽룰까지 포함한다.
그리고, VPN 접속시에 공유기 웹 인터페이스 접근도 추가(DIR-825는 웹 인터페이스가 없으므로, 필요없다.)
root@OpenWrt:/etc# vi firewall.user
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.
# OpenVPN Remote Access & Routing Rule
iptables -I INPUT 1 -p udp --dport 1194 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 1194 -j ACCEPT
iptables -I FORWARD 1 --source 10.100.200.0/24 -j ACCEPT
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.100.200.0/24 -o eth0 -j MASQUERADE
# Allow SSH Remote Access
iptables -A input_rule -i eth1 -p tcp --dport 22 -j ACCEPT
# Allow FTP Remote Access
#iptables -A input_rule -i eth1 -p tcp --dport 21 -j ACCEPT
# Allow VPN client's Web Interface Access
iptables -I INPUT 1 -i tun0 -p tcp --dport 80 -j ACCEPT
# PPTP Server Setting
iptables -I INPUT 1 -p tcp --dport 1723 -j ACCEPT
iptables -I INPUT 1 -p gre -j ACCEPT
iptables -I INPUT 1 -i ppp+ -j ACCEPT
iptables -I FORWARD -i ppp+ -j ACCEPT
iptables -I FORWARD -o ppp+ -j ACCEPT
iptables -I OUTPUT 1 -o ppp+ -j ACCEPT
#iptables -A input_wan -p tcp --dport 1723 -j ACCEPT
#iptables -A input_wan -p gre -j ACCEPT
#iptables -A input_rule -i ppp+ -j ACCEPT
#iptables -A forwarding_rule -i ppp+ -j ACCEPT
#iptables -A forwarding_rule -o ppp+ -j ACCEPT
#iptables -A output_rule -o ppp+ -j ACCEPT
~
root@OpenWrt:/etc# sync
마지막으로 OpenVPN 서비스를 매 부팅때마다 자동실행되도록 설정하고, 바로 실행한다.
root@OpenWrt:/etc# sync
root@OpenWrt:/etc# /etc/init.d/openvpn enable
root@OpenWrt:/etc# /etc/init.d/openvpn start
OpenVPN 서비스의 실행여부는 ps 명령어로 확인가능하고, 동작에 따른 로그는 logread 명령어로 확인할 수 있다.
root@OpenWrt:/etc# ps elf
PID USER VSZ STAT COMMAND
1 root 1480 S init
2 root 0 SW [kthreadd]
3 root 0 SW [ksoftirqd/0]
4 root 0 SW [kworker/0:0]
5 root 0 SW [kworker/u:0]
6 root 0 SW [rcu_kthread]
7 root 0 SW< [khelper]
54 root 0 SW [sync_supers]
56 root 0 SW [bdi-default]
58 root 0 SW< [kblockd]
88 root 0 SW [kswapd0]
135 root 0 SW [fsnotify_mark]
149 root 0 SW< [ar71xx-spi]
162 root 0 SW [mtdblock0]
167 root 0 SW [mtdblock1]
172 root 0 SW [mtdblock2]
177 root 0 SW [mtdblock3]
182 root 0 SW [mtdblock4]
187 root 0 SW [mtdblock5]
192 root 0 SW [mtdblock6]
335 root 0 SW [kworker/0:1]
522 root 0 SW< [ipolldevd]
566 root 0 SWN [jffs2_gcd_mtd3]
573 root 1480 S init
607 root 0 SW< [cfg80211]
619 root 0 SW [khubd]
690 root 1484 S /sbin/syslogd -C16
692 root 1464 S /sbin/klogd
694 root 804 S /sbin/hotplug2 --override --persistent --set-worker
1303 root 1132 S /usr/sbin/dropbear -P /var/run/dropbear.1.pid -p 22
1433 root 1484 S /sbin/udhcpc -t 0 -i eth1 -b -p /var/run/dhcp-eth1.p
1499 nobody 928 S /usr/sbin/dnsmasq -K -D -y -Z -b -E -s lan -S /lan/
1510 root 1476 S /sbin/watchdog -t 5 /dev/watchdog
1514 root 1480 S /usr/sbin/ntpd -n -p 0.openwrt.pool.ntp.org -p 1.ope
1517 root 1196 R /usr/sbin/dropbear -P /var/run/dropbear.1.pid -p 22
1518 root 1484 S -ash
1752 root 0 SW [scsi_eh_0]
1754 root 0 SW [usb-storage]
1761 root 0 SW [kworker/u:2]
1891 root 0 SW [jbd2/sda1-8]
1892 root 0 SW< [ext4-dio-unwrit]
2075 root 0 SW [flush-mtd-unmap]
2076 root 0 SW [flush-8:0]
2091 root 3064 S /usr/sbin/openvpn --syslog openvpn(MyOpenVPNServer)
2092 root 804 S /sbin/hotplug2 --override --persistent --set-worker
2105 root 1472 R ps elf
root@OpenWrt:/etc# logread
...
Dec 27 02:26:22 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: OpenVPN 2.2.1 mips-openwrt-linux [SSL] [LZO2] [EPOLL] built on Dec 19 2011
Dec 27 02:26:22 OpenWrt daemon.warn openvpn(MyOpenVPNServer)[2091]: NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: Diffie-Hellman initialized with 2048 bit key
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: TLS-Auth MTU parms [ L:1543 D:140 EF:40 EB:0 ET:0 EL:0 ]
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: Socket Buffers: R=[87380->131072] S=[16384->131072]
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: TUN/TAP device tun0 opened
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: TUN/TAP TX queue length set to 100
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: /sbin/ifconfig tun0 10.100.200.1 pointopoint 10.100.200.2 mtu 1500
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: /sbin/route add -net 10.100.200.0 netmask 255.255.255.0 gw 10.100.200.2
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: Data Channel MTU parms [ L:1543 D:1450 EF:43 EB:4 ET:0 EL:0 ]
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: Listening for incoming TCP connection on [undef]:1194
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: TCPv4_SERVER link local (bound): [undef]:1194
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: TCPv4_SERVER link remote: [undef]
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: MULTI: multi_init called, r=256 v=256
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: IFCONFIG POOL: base=10.100.200.4 size=62
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: MULTI: TCP INIT maxclients=1024 maxevents=1028
Dec 27 02:26:23 OpenWrt daemon.notice openvpn(MyOpenVPNServer)[2091]: Initialization Sequence Completed
root@OpenWrt:/etc#
7) lsof 패키지 설치
공유기의 프로세스 감시나 기타 설정등에 대한 정보를 자세히 알기 위해서는,
lsof 패키지를 설치하는 것이 좋다.
lsof 패키지를 설치한 다음에, 인터넷 열린 포트들에 대한 정보를 확인한다.
root@OpenWrt:/etc# opkg install lsof
Installing lsof (4.81-2) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/lsof_4.81-2_ar71xx.ipk.
Installing librpc (0.9.32-rc2-0a2179bbc0844928f2a0ec01dba93d9b5d6d41a7) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/librpc_0.9.32-rc2-0a2179bbc0844928f2a0ec01dba93d9b5d6d41a7_ar71xx.ipk.
Configuring librpc.
Configuring lsof.
root@OpenWrt:/etc# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dropbear 1303 root 3u IPv4 1460 0t0 TCP *:ssh (LISTEN)
dnsmasq 1499 nobody 5u IPv4 1566 0t0 UDP *:bootps
dnsmasq 1499 nobody 6u IPv4 1570 0t0 UDP *:domain
dnsmasq 1499 nobody 7u IPv4 1571 0t0 TCP *:domain (LISTEN)
dropbear 1517 root 7u IPv4 1684 0t0 TCP localhost:6010 (LISTEN)
openvpn 2091 root 5u IPv4 2476 0t0 TCP *:openvpn (LISTEN)
8) PPTP 서비스 설치
아이폰과 같은 스마트폰에서 VPN 사용을 위한 PPTP 서비스를 설치한다.
pptpd 패키지 뿐만 아니라, MPPE 지원도 설치해야 한다.
root@OpenWrt:/etc/config# opkg install kmod-mppe
Installing kmod-mppe (2.6.32.27-1) to root...
Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/kmod-mppe_2.6.32.27-1_ar71xx.ipk.
Installing kmod-crypto-sha1 (2.6.32.27-1) to root...
Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/kmod-crypto-sha1_2.6.32.27-1_ar71xx.ipk.
Configuring kmod-crypto-sha1.
Configuring kmod-mppe.
root@OpenWrt:/etc/config# opkg install pptpd
Installing pptpd (1.3.4-2) to root...
Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/pptpd_1.3.4-2_ar71xx.ipk.
Installing kmod-gre (2.6.32.27-1) to root...
Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/kmod-gre_2.6.32.27-1_ar71xx.ipk.
Configuring kmod-gre.
Configuring pptpd.
PPTP와 관련된 설정파일은 사용자 ID와 패스워드 설정을 위해서 /etc/ppp/chap-secrets 파일과 서비스 dns 지정을 위한 /etc/ppp/options.pptpd 파일을 설정한다.
chap-secrets 파일에는 사용자명과 패스워드를 평문으로 입력한다.
PROVIDER는 아무 이름이나 지정하면 되고, IPADDRESS는 *를 지정한다.
root@OpenWrt:/etc/ppp# vi chap-secrets
#USERNAME PROVIDER PASSWORD IPADDRESS
pptp_user1 pptp-server user-pw1 *
pptp_user2 pptp-server user-pw2 *
~
options.pptpd 파일내에 있는 주석처리된 ms-dns 항목에 공유기의 IP 주소, 여기 예제에서는 192.168.43.1을 지정해서 추가한다.
root@OpenWrt:/etc/ppp# vi options.pptpd
#debug
#logfile /tmp/pptp-server.log
172.16.1.1:
auth
name "pptp-server"
lcp-echo-failure 3
lcp-echo-interval 60
default-asyncmap
mtu 1482
mru 1482
nobsdcomp
nodeflate
#noproxyarp
#nomppc
mppe required,no40,no56,stateless
require-mschap-v2
refuse-chap
refuse-mschap
refuse-eap
refuse-pap
ms-dns 192.168.43.1
#plugin radius.so
#radius-config-file /etc/radius.conf
~
root@OpenWrt:/etc/ppp# sync
PPTP 서비스를 매 부팅때마다 자동실행되도록 설정하고, 바로 실행한다.
root@OpenWrt:/etc/ppp# /etc/init.d/pptpd enable
root@OpenWrt:/etc/ppp# /etc/init.d/pptpd start
9) FTP 와 SFTP 서비스 설치
추가적으로 vsftpd 와 openssh-sftp-server 를 설치한다.
FTP 서버와 SFTP 접속을 가능하도록 한다.
root@OpenWrt:/etc# opkg install vsftpd
Installing vsftpd (2.3.4-3) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/vsftpd_2.3.4-3_ar71xx.ipk.
Configuring vsftpd.
root@OpenWrt:/etc# opkg install openssh-sftp-server
Installing openssh-sftp-server (5.9p1-4) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/openssh-sftp-server_5.9p1-4_ar71xx.ipk.
Configuring openssh-sftp-server.
root@OpenWrt:/etc# opkg files openssh-sftp-server
Package openssh-sftp-server (5.9p1-4) is installed on root and has the following files:
/usr/libexec/sftp-server
/usr/lib/sftp-server
FTP 설정은 /etc/vsftpd.conf 파일에서 한다.
root@MyRouter:~# cat /etc/vsftpd.conf
background=YES
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
check_shell=NO
#chroot settings
chroot_local_user=NO
#passwd_chroot_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#dirmessage_enable=YES
ftpd_banner=FTP Server
session_support=NO
#syslog_enable=YES
#userlist_enable=YES
#userlist_deny=NO
#userlist_file=/etc/vsftpd.users
#xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
root@MyRouter:~#
ftp 사용자들은 chroot로 접근제어를 걸어준다.
그 사용자들의 목록은 /etc/vsftpd/chroot_list 적는다.
ftp 사용자들이 ftp로 공유기에 있는 중요 설정파일들을 모두 볼 수 있으므로, 반드시 chroot가 필요하다.(패스워드 해킹도 가능)
root@MyRouter:~# cat /etc/vsftpd/chroot_list
ftp
root@MyRouter:~#
ftp 사용자들의 계정은 /etc/passwd 에 수록한다. (버팔로 제품은 /etc/passwd 파일만이 존재하지만, DIR-825는 passwd와 shadow 파일이 존재한다. DIR-825에서는 계정정보를 /etc/passwd와 /etc/shadow 파일 모두에 적어주어야 한다.)
root@MyRouter:~# cat /etc/passwd
...
ftp:$1$agmhQqLM$0CjSWAbJnK4gWIyIwC03i.:55:55:ftp:/home/ftp:/bin/false
root@MyRouter:~#
패스워드 필드를 비워둔 상태에서 생성하고, root가 passwd 명령어로 패스워드를 넣어주면 된다.
ftp 사용자들이 shell 접속(ssh와 sftp)이 불가하도록, /bin/false를 쉘로 지정해둔다.
root@OpenWrt:~# cd /etc/
root@OpenWrt:/etc# ll
drwxr-xr-x 17 root root 4096 Dec 29 00:35 .
drwxr-xr-x 17 root root 4096 Dec 29 00:34 ..
lrwxrwxrwx 1 root root 7 Dec 27 05:56 TZ -> /tmp/TZ
drwxr-xr-x 3 root root 4096 Dec 27 07:27 apache
-rw-r--r-- 1 root root 589 Dec 19 21:57 banner
-rw-r--r-- 1 root root 232 Dec 27 08:53 blkid.tab
-rw-r--r-- 1 root root 232 Dec 27 08:46 blkid.tab.old
drwxr-xr-x 2 root root 4096 Dec 27 05:56 config
drwxr-xr-x 2 root root 4096 Dec 19 21:57 crontabs
drwxr-xr-x 4 root root 4096 Dec 27 05:56 defconfig
-rwxr-xr-x 1 root root 2671 Dec 19 21:02 diag.sh
-rw-r--r-- 1 root root 1368 Dec 19 22:04 dnsmasq.conf
drwx------ 2 root root 4096 Dec 27 05:56 dropbear
-rw-r--r-- 1 root root 38 Dec 19 21:58 e2fsck.conf
-rw-r--r-- 1 root root 0 Jan 1 1970 ethers
-rw-r--r-- 1 root root 1460 Dec 27 07:34 firewall.user
lrwxrwxrwx 1 root root 10 Dec 27 05:56 fstab -> /tmp/fstab
lrwxrwxrwx 1 root root 19 Dec 27 05:56 functions.sh -> ../lib/functions.sh
-rw-r--r-- 1 root root 78 Jan 1 1970 fw_env.config
-rw-r--r-- 1 root root 123 Mar 21 2011 group
-rw-r--r-- 1 root root 20 Mar 21 2011 hosts
drwx------ 9 root root 4096 Dec 27 05:56 hotplug.d
-rw-r--r-- 1 root root 1201 Nov 5 23:38 hotplug2-common.rules
-rw-r--r-- 1 root root 80 Mar 21 2011 hotplug2-init.rules
-rw-r--r-- 1 root root 242 Dec 20 09:26 hotplug2.rules
drwxr-xr-x 2 root root 4096 Dec 28 08:11 init.d
-rw-r--r-- 1 root root 104 Jan 1 1970 inittab
drwxr-xr-x 2 root root 4096 Dec 27 07:29 lighttpd
drwxr-xr-x 2 root root 4096 Dec 27 05:56 modules-boot.d
drwxr-xr-x 2 root root 4096 Dec 27 05:56 modules.d
lrwxrwxrwx 1 root root 12 Dec 27 05:56 mtab -> /proc/mounts
drwx------ 2 root root 4096 Dec 27 05:56 openvpn
-rw-r--r-- 1 root root 163 Dec 20 09:14 opkg.conf
-rw-r--r-- 1 root root 190 Dec 29 00:35 passwd
-rw-r--r-- 1 root root 190 Jan 1 1970 passwd-
drwxr-xr-x 4 root root 4096 Dec 27 05:56 ppp
-rw-r--r-- 1 root root 128 Dec 20 07:12 pptpd.conf
-rwxr-xr-x 1 root root 888 Jul 23 18:38 preinit
-rw-r--r-- 1 root root 518 Dec 27 02:21 profile
-rw-r--r-- 1 root root 2478 Mar 21 2011 protocols
-rwxr-xr-x 1 root root 1490 Nov 9 21:52 rc.common
drwxr-xr-x 2 root root 4096 Dec 27 08:30 rc.d
-rw-r--r-- 1 root root 132 Mar 21 2011 rc.local
lrwxrwxrwx 1 root root 16 Dec 27 05:56 resolv.conf -> /tmp/resolv.conf
-rw-r--r-- 1 root root 3001 Mar 21 2011 services
-rw-r--r-- 1 root root 186 Dec 29 00:35 shadow
-rw-r--r-- 1 root root 149 Jan 1 1970 shadow-
-rw-r--r-- 1 root root 9 Mar 21 2011 shells
-rw-r--r-- 1 root root 976 Sep 19 05:24 sysctl.conf
-rw-r--r-- 1 root root 128 Mar 21 2011 sysupgrade.conf
drwxr-xr-x 2 root root 4096 Jan 1 1970 uci-defaults
drwxr-xr-x 2 root root 4096 Dec 29 00:33 vsftpd
-rw-r--r-- 1 root root 488 Dec 29 00:33 vsftpd.conf
root@OpenWrt:/etc# cat /etc/passwd
root:x:0:0:root:/root:/bin/ash
daemon:*:1:1:daemon:/var:/bin/false
ftp:x:55:55:ftp:/home/ftp:/bin/false
network:*:101:101:network:/var:/bin/false
nobody:*:65534:65534:nobody:/var:/bin/false
root@OpenWrt:/etc# cat /etc/shadow
root:$1$kzAg4U0J$F27Nb/oEdcgd7lU3xffGdi/:0:0:99999:7:::
daemon:*:0:0:99999:7:::
ftp:$1$Wp92U.qZ$j9zEwEQ0q6eEt/Sl45XJz1:15337:0:99999:7:::
network:*:0:0:99999:7:::
nobody:*:0:0:99999:7:::
root@OpenWrt:/etc#
10) ntp를 이용한 라우터의 시간 맞추기
/etc/TZ에 설정된 UTC 시간을 GMT-9 Seoul 시간으로 변경한다.
root@OpenWrt:~# cat /etc/TZ
UTC
root@OpenWrt:~# date
Thu Dec 29 05:25:50 UTC 2011
root@OpenWrt:~# echo GMT-09 > /etc/TZ
root@OpenWrt:~# cat /etc/TZ
GMT-09
root@OpenWrt:~# date
Thu Dec 29 14:26:15 GMT 2011
영구적인 변경을 위해서는, /etc/config/system 설정파일을 다음과 같이 변경한다.
time server들을 아래와 같이 설정하면 된다.
root@OpenWrt:~# cd /etc/
root@OpenWrt:/etc# cd config
root@OpenWrt:/etc/config# vi system
config 'system'
option 'hostname' 'OpenWrt'
option 'timezone' 'GMT-9'
config 'timeserver' 'ntp'
list 'server' 'time.kriss.re.kr'
list 'server' '3.kr.pool.ntp.org'
list 'server' '3.asia.pool.ntp.org'
list 'server' '0.asia.pool.ntp.org'
list 'server' '0.openwrt.pool.ntp.org'
list 'server' '1.openwrt.pool.ntp.org'
list 'server' '2.openwrt.pool.ntp.org'
list 'server' '3.openwrt.pool.ntp.org'
...
<중략>
...
------------------------------------------------------------
추가적으로 ssh 포트번호를 8080번으로 변경하고,
방화벽에서 8080번을 외부접속 가능하도록 풀어주면, 완벽할 것으로 예상.