허브가 없는 환경에서 서버를 가지고 브릿지 서버를 구축하여 허브를 대신하기 위해서 사용한다.
필자는 FreeBSD 서버를 가지고 브릿지 설정을 하였으며 정상 동작을 확인 하였다.

bridge 인터페이스를 생성한다.
[root@yongbok ~]# ifconfig bridge create
bridge0

생성된 인터페이스를 확인한다.
[root@yongbok ~]# ifconfig bridge0
bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 56:6a:8d:f8:54:a9
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
        root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0

브릿지 모드로 활성화 시킨다.
[root@yongbok ~]# ifconfig bridge0 addm rl0 addm rl1 addm rl2 up
[root@yongbok ~]# ifconfig rl0 up
[root@yongbok ~]# ifconfig rl1 up
[root@yongbok ~]# ifconfig rl2 up

/etc/rc.conf 파일에 아래 내용을 추가 시킨다.
[root@yongbok ~]# vi /etc/rc.conf
cloned_interfaces="bridge0"
ifconfig_bridge0="addm rl0 addm rl1 addm rl2 up"
ifconfig_rl0="up"
ifconfig_rl1="up"
ifconfig_rl2="up"

이후 재부팅 하거나 아래 처럼 netstart 로 갱신해주거나...
[root@yongbok ~]# /etc/netstart

참고
http://www.freebsd.org/doc/en/books/handbook/network-bridging.html
2009/08/13 20:29 2009/08/13 20:29

ShoutCast 서버 구축

from ShoutCast 2009/08/12 14:24
ShoutCast 서버를 구축하기 위해서는 공식 홈페이지에서 다운로드하여 설치한다.
http://shoutcast.com/download-files

- 리눅스
[root@yongbok ~]# mkdir /usr/local/src && mkdir /usr/local/src/ShoutCast
[root@yongbok ~]# cd /usr/local/src/ShoutCast
[root@yongbok ~]# wget http://yp.shoutcast.com/downloads/sc1-9-8/sc_serv_1.9.8_Linux.tar.gz
[root@yongbok ~]# tar xzvf sc_serv_1.9.8_Linux.tar.gz

- FreeBSD
2가지 라이브러리 설치
[root@yongbok ~]# cd /usr/ports/misc/compat5x && make install clean
[root@yongbok ~]# cd /usr/ports/misc/localedata && make install clean
[root@yongbok ~]# mkdir /usr/local/src && mkdir /usr/local/src/ShoutCast
[root@yongbok ~]# cd /usr/local/src/ShoutCast
[root@yongbok ~]# wget http://yp.shoutcast.com/downloads/sc1-9-8/sc_serv_1.9.8_FreeBSD5.tar.gz
[root@yongbok ~]# tar xzvf sc_serv_1.9.8_FreeBSD5.tar.gz
리눅스, FreeBSD 공통
[root@yongbok ~]# vi /usr/local/src/ShoutCast/sc_serv.conf
; 최대 허용 접속자수
MaxUser=5000
;
; 비밀번호 설정 빈칸이 들어가선 안되며 꼭 써줘야함.
Password=3065
;
; 포트 번호 설정
; 1024 이상의 포트번호를 적어줌 (기본값: 8000)
PortBase=8000
;
; 로그파일을 지정
LogFile=sc_serv.log
;
; 실제 1초마다 상황 업데이트
RealTime=1
;
; 콘솔에서 실행 또는 백그라운드로 실행시 로를 뿌려줄건지 여부 (기본값: 1)
; 0 (사용안함), 1(사용함)
ScreenLog=0
;
; ShowLastSongs / played.html 페이지에서 목록에 많은 노래를 얼마나 지정할건지 여부
; 사용 가능한 항목 20-1 이며 기본값은 10
ShowLastSongs=10
;
; W3C 리포팅, 분석등을 사용할건지 여부 (사실 잘모르겠음)
W3CEnable=Yes
;
; W3C 를 사용한다면 로그 기록
W3CLog=sc_w3c.log
;
; ShoutCast 서버에 사용할 인터페이스 아이피 설정
SrcIP=ANY
;
; 클라이언트 아이피 설정 부분
; 모든 클라이언트 호스트에 접속 요청 받아들이므로 건들지 않아도됨
DestIP=ANY
;
; 80번 포트로 yp.shoutcast.com 에 연결합니다.
; 만약 캐싱 프록시 사용하는 사람은 666 번 포트로 대체하여 접속합니다.
Yport=80

; 네임서버 조회를 할건지 여부
; 서버에 연결하는데 시간이 오래걸린 다면 이 옵션을 1로 변경하여 빠르게 연결할수 있도록 합니다.
; 요즘은 회선이 100Mbps 이상이므로 DNS 서버에 쿼리가 빠르기 때문에 걍 기본값으로 냅둠.
; 0은 해제, 1은 사용, 기본값은 0
NameLookups=0
;
; 관리자 비밀번호 설정
AdminPassword=3065
;
; 아래랑 비슷하겠....?
AutoDumpUsers=0

; 처음 방송들을때 30초 전으로 청취됨
; 흔히 피치 땡겨서 들으란 소리가 여기서 나옴
; 기본값은 30
AutoDumpSourceTime=30
;
; 공개 서버로 설정 (걍 냅두는게 편함..)
PublicServer=default
;
; 다른 서버에서 이 서버를 중계(relay) 할건지 여부
; 기본값 Yes
AllowRelay=Yes
;
; SHOUTcast 디렉토리에 있는 서버 목록에 중계서버가 중계를 사용할건지 여부 (냅두는게 편함)
; 기본값 Yes
AllowPublicRelay=Yes
;
; 메타 데이터를 보냄.. 기본값은 8192 (이것역시 냅두는게....)
MetaInterval=32768

ShoutCast 서버를 백그라운드로 실행
[root@yongbok ~]# cd /usr/local/src/ShoutCast
[root@yongbok ~]# sc_serv &
*******************************************************************************
** SHOUTcast Distributed Network Audio Server
** Copyright (C) 1998-2004 Nullsoft, Inc.  All Rights Reserved.
** Use "sc_serv filename.ini" to specify an ini file.
*******************************************************************************
Event log:
<08/12/09@14:00:42> [SHOUTcast] DNAS/FreeBSD v1.9.8 (Feb 28 2007) starting up...
<08/12/09@14:00:42> [main] pid: 39393
<08/12/09@14:00:42> [main] loaded config from sc_serv.conf
<08/12/09@14:00:42> [main] initializing (usermax:5000 portbase:8000)...
<08/12/09@14:00:42> [main] No ban file found (sc_serv.ban)
<08/12/09@14:00:42> [main] No rip file found (sc_serv.rip)

ShoutCast 서버를 윈엠프에서 DSP 플러그인으로 설정 및 청취
사용자 삽입 이미지

2009/08/12 14:24 2009/08/12 14:24

아파치 인증 (.htaccess)

from Linux 2009/08/09 22:52
아파치의 인증을 사용하기 위해서는 httpd.conf 를 수정 해줘야 하며 모듈라인에 mod_auth_basic 가 있어야 한다.
[root@yongbok ~]# vi /usr/local/apache2/conf/httpd.conf
LoadModule auth_basic_module modules/mod_auth_basic.so

기본적으로 Basic 인증은 브라우저가 서버로 암호를 암호화하지 않고 보내기 때문에 중요한 자료나 인증을 필요로하는곳에서는 잘 쓰지 않는다.
httpd.conf 또는 httpd-vhost.conf 에서 해당 디렉토리 옵션에 AllowOverride AuthConfig 옵션을 줘야한다.
아래는 필자가 실제로 사용하고 있는 가상호스트설정(httpd-vhsot.conf)이다.
<VirtualHost *:80>
    ServerName ruo91.yongbok.net
    ServerAdmin ruo91@yongbok.net
    ServerAlias ruo91.yongbok.com ruo91.yongbok.net
    DocumentRoot /home/ruo91/public_html
    ErrorLog /home/apache2-log/ruo91-error.log
    LogLevel warn
        SetEnvIf Remote_Addr 192.168.0.2$ do_not_log
        CustomLog /home/apache2-log/ruo91-access.log combined env=!do_not_log
    ServerSignature Off
   ErrorDocument 403 http://www.yongbok.net/error/permission
   ErrorDocument 404 http://www.yongbok.net/error
    <Directory "/home/ruo91/public_html">
       Options FollowSymLinks
       AllowOverride AuthConfig
       </Directory>
 </VirtualHost>

설정이 완료 되었다면 아파치를 재시작한다.
[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart

웹 인증을 사용하기 위해 .htaccess 를 인증할 디렉토리안에 아래 처럼 생성한다.
[root@yongbok ~]# vi /home/ruo91/public_html/auth/.htaccess
# 인증에 사용할 영역
AuthName "Admin Auth"
# 사용자를 인증할 방법 (기본 Basic)
AuthType Basic
# 사용자
AuthUserFile "/home/ruo91/public_html/auth/.htpasswd"
<Limit GET POST>

# 암호파일에 있는 누구라도 올바른 암호를 입력하기만 하면 접근을 허용
require valid-user
</Limit>

사용자 암호를 설정하기 위해 아파치의 htpasswd 를 사용하여 생성한다.
[root@yongbok ~]# /usr/local/apache2/bin/htpasswd -c /home/ruo91/public_html/auth/.htpasswd ruo91
New password:
Re-type new password:
Adding password for user ruo91

지정한 디렉토리에 .htpasswd 파일이 생겼으며 내용은 아래와 같다.
[root@yongbok ~]# cat /home/ruo91/public_html/auth/.htpasswd
ruo91:SN3YvECTFnFQE
필자는 사용자 아이디를 ruo91 으로 비밀번호를 1234 로 만들었으며 웹페이지에서 확인시 정상적으로 로그인 되었다.
2009/08/09 22:52 2009/08/09 22:52

df 명령어와 du 명령어

from Linux 2009/08/09 11:15
df 명령어
파일 시스템에 대한 디스크 사용량을 MB 단위(-h 옵션)로 체크
[root@yongbok ~]# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    447G     30G    381G     7%    /
devfs          1.0K    1.0K      0B   100%    /dev
devfs          1.0K    1.0K      0B   100%    /var/named/dev
devfs          1.0K    1.0K      0B   100%    /var/lib/cvsd/dev

du 명령어
특정 디렉토리나 파일 단위로 사용량 전체(-s) 를 MB 단위(-h) 로 체크
[root@yongbok ~]# du -sh /home/www
 22G    /home/www
[root@yongbok ~]# du -sh /home/ruo91
 27M    /home/ruo91
2009/08/09 11:15 2009/08/09 11:15

Squid 프록시 서버 설치

from Linux 2009/08/04 11:30
이 글은 소스 설치 기준으로 작성되었으며 Squid 3.0-Stable 기준으로 설치를 진행하였습니다.

1. Squid 다운로드 및 설치 (./configure --help 해서 보시면 더 많은 옵션을 설정할수 있습니다.)
[root@yongbok ~]# cd /usr/local/src
[root@yongbok ~]# wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE17.tar.gz
[root@yongbok ~]# tar xzvf squid-3.0.STABLE17.tar.gz
[root@yongbok ~]# cd squid-3.0.STABLE17
[root@yongbok ~]# ./configure \
--prefix=/usr/local/squid \
--enable-default-err-language=Korean \
--enable-err-language=Korean
[root@yongbok ~]# make; make install

2. Squid 셋팅 및 실행
Squid.conf 파일을 사용자 환경에 맞게 설정을 합니다.
[root@yongbok ~]# ls -al /usr/local/squid
total 16
drwxr-xr-x   8 root  wheel  512  8  4 09:53 .
drwxr-xr-x  31 root  wheel  512  8  4 09:52 ..
drwxr-xr-x   2 root  wheel  512  8  4 09:53 bin
drwxr-xr-x   2 root  wheel  512  8  4 09:53 etc
drwxr-xr-x   2 root  wheel  512  8  4 09:53 libexec
drwxr-xr-x   2 root  wheel  512  8  4 09:53 sbin
drwxr-xr-x   5 root  wheel  512  8  4 09:53 share
drwxr-xr-x   3 root  wheel  512  8  4 09:53 var
[root@yongbok ~]# cd /usr/local/squid/etc
[root@yongbok ~]# vi squid.conf
# 프록시 포트 ( 기본 포트는 3128 )
http_port 3128

# 프록시 호스트명
visible_hostname ruo91

# 캐시에 사용될 메모리 지정
# 512 MB = 160 MB,  1024 MB = 320 MB
cache_mem 320 MB

# squid 관리자
cache_mgr ruo91@yongbok.net

# cache가 squid란 uid/gid로 작동,보안을 위해
cache_effective_user squid
cache_effective_group squid

# 캐쉬로 사용할 디렉토리와 용량설정
# 1000 => 최대 캐쉬디렉토리 크기, 20 =>1차 하위 디렉토리 개수, 512 => 2차 하위 디렉토리 개수
cache_dir ufs /var/cache/squid 1000 20 512

# 캐시 프로토콜을 지정하는듯..?
acl manager proto cache_object

# localhost 라는 호스트명에 IP대역을 부여
acl localhost src 127.0.0.1

# ruo91 라는 호스트명에 IP대역을 부여
# 192.168.0.0/24 대역에서만 사용가능
acl ruo91 src 192.168.0.0/255.255.255.0

# localhost 호스트에 부여된 대역에 HTTP 액세스 허용
http_access allow localhost

# localhost 호스트에 부여된 대역에 ICP 액세스 허용
icp_access allow localhost

# ruo91 호스트에 부여된 대역에 HTTP 액세스 허용
http_access allow ruo91

#  ruo91 호스트에 부여된 대역에 ICP 액세스 허용
icp_access allow ruo91

캐시로 사용할 디렉토리를 생성하고 squid 사용자를 추가후 /var/cache/squid 디렉토리에 squid의 권한을 위임합니다.

Linux 사용자
[root@yongbok ~]# mkdir -p /var/cache/squid
[root@yongbok ~]# useradd -r -d /var/cache/squid/ -s /bin/false -c "Squid Proxy Server" -u 23 squid
[root@yongbok ~]# chown -R squid:squid /var/cache/squid

FreeBSD 사용자
[root@yongbok ~]# mkdir -p /var/cache/squid
[root@yongbok ~]# pw useradd squid -d /usr/local/squid -s /usr/sbin/nologin
[root@yongbok ~]# chown -R squid:squid /var/cache/squid

로그가 기록 되도록 권한을 변경합니다.
[root@yongbok ~]# chmod 777 /usr/local/squid/var/logs

squid -z 로  캐시 디렉토리를 생성합니다.
[root@yongbok ~]# /usr/local/squid/sbin/squid -z
2009/08/04 11:20:21| Creating Swap Directories
2009/08/04 11:20:21| /var/cache/squid exists
2009/08/04 11:20:21| Making directories in /var/cache/squid/00
2009/08/04 11:20:21| Making directories in /var/cache/squid/01
2009/08/04 11:20:21| Making directories in /var/cache/squid/02
2009/08/04 11:20:21| Making directories in /var/cache/squid/03
2009/08/04 11:20:22| Making directories in /var/cache/squid/04
2009/08/04 11:20:22| Making directories in /var/cache/squid/05
2009/08/04 11:20:22| Making directories in /var/cache/squid/06
2009/08/04 11:20:23| Making directories in /var/cache/squid/07
2009/08/04 11:20:23| Making directories in /var/cache/squid/08
2009/08/04 11:20:23| Making directories in /var/cache/squid/09
2009/08/04 11:20:24| Making directories in /var/cache/squid/0A
2009/08/04 11:20:24| Making directories in /var/cache/squid/0B
2009/08/04 11:20:24| Making directories in /var/cache/squid/0C
2009/08/04 11:20:24| Making directories in /var/cache/squid/0D
2009/08/04 11:20:25| Making directories in /var/cache/squid/0E
2009/08/04 11:20:25| Making directories in /var/cache/squid/0F
2009/08/04 11:20:25| Making directories in /var/cache/squid/10
2009/08/04 11:20:26| Making directories in /var/cache/squid/11
2009/08/04 11:20:26| Making directories in /var/cache/squid/12
2009/08/04 11:20:26| Making directories in /var/cache/squid/13

squid 를 실행합니다.
[root@yongbok ~]# /usr/local/squid2/sbin/squid -N &
[1] 51712
[root@yongbok ~]# ps -aux | grep squid
squid  51712  6.9  1.0 16624 10600  p2  R    11:26AM   0:00.77 /usr/local/squid/sbin/squid -N
squid  51713  0.3  0.1  2488  1208  ??  Ss   11:26AM   0:00.02 (unlinkd) (unlinkd)
※ -N 옵션은 Squid를 백그라운드로 실행합니다.
※ -NCd1 옵션은 Squid를 백그라운드로 실행하고 에러메세지를 같이 볼수 있습니다.
2009/08/04 11:30 2009/08/04 11:30

FreeBSD - Bash 사용하기

from FreeBSD 2009/08/01 12:30
Bash 를 바이너리로 받아와 설치 합니다.
yongbok# pkg_add -r bash

Bash 설치를 반영 해줍니다.
yongbok# rehash

Bash 가 설치 되있는지 확인 해봅니다.
yongbok# which bash
/usr/local/bin/bash
yongbok# pkg_info
bash-4.0.33         The GNU Project's Bourne Again SHell
gettext-0.17_1      GNU gettext package
libiconv-1.13.1     A character set conversion library

/etc/passwd 파일에 root 와 toor 관리자 계정이 사용하고 있는 쉘을 확인 합니다.
yongbok# cat /etc/passwd | egrep 'root|toor'
root:*:0:0:Charlie &:/root:/bin/csh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin

root 와 toor 관리자 계정의 쉘을 Bash 로 변경 합니다.
yongbok# chsh -s bash root
chsh: user information updated
yongbok# chsh -s bash toor
chsh: user information updated

Bash 로 반영이 되었는지 확인 하기 위해서 SSH 원격을 다시 재로그인 해보면 됩니다.
yongbok# su toor
[root@yongbok ~]# echo $SHELL
/usr/local/bin/bash
2009/08/01 12:30 2009/08/01 12:30