2012-09-10

FreeBSD]FreeBSD 5.3의 기본 필터링 PF사용법 by 조성준


출처 :::  http://www.kr.freebsd.org/ 

관련 주소 1 :
관 련 주소 2 :
관련 주소 3 :
안녕 하세요? 조성준 입니다.

PF는 보안에 철저한 OPENBSD에서 ipfilter 의 라이센스문제가 발생할때 개발된 네트웍 필터링 입니다.

기존의 FreeBSD에서는 거의 기본이다 시피안 ipfw 를 쓰기위해서는 커널 재업도 해야하고 성능역시 별로여서 저역시 ip_f 를 따로 셋팅하거나하였는데 요즘 5.3 설치할장비 가 있어 기본 모듈로 로딩되어 있는 pf를 있는데 전혀 딜레이가 보이지 않고 셋팅역시 간단해서 뭐 아직 이렇타하고 애기할만 한 경험수치가 아니지만 문서내용이나 고수들의 애기들로 보면 상용 방화벽 ?지않는 성능을 내고 상용 방화벽에서 지원하 지 않는 기능도 지원되고 무엇보다 좋은건 FreeBSD 5.3R을 깔면 기본 탑재가 되어 바로 적용가능 하다는것입니다.

- 설정 -[b]

기본적으로 기동이 되지 않은 상태라 기동할수 있게 해주어야 합니다.

[b]vi /etc/rc.con[b]

인용 또는 결과 :

pf_enable="YES"  # PF를 기동시킨당
pf_rules="/etc /pf.conf"  # PF의 필터링 설정파일 위치
pflog_enable="YES" # 필터링 로그를 남기기 위해 기동설 정
pflog_logfile="/var/log/pflog" # 필터링 되는 로그 파일

[root@good /root]$ _


자 그리구요 셋팅을 해야 하는데 기본적으 로 /etc/pf.conf 라는 예제 파일이 들어 있습니다.
모두 주석처리 되어 있고 자신이 쓸것만 뽑아 서 사용하면 됩니다.

초기 셋팅을 위해 사용한 옵션을 다음과 같습니다.

[b]vi /etc/pf.conf
인용 또는 결과 :

ext_if = 'fxp0' # 네 트웍 디바이스 이름 기본이죵

# states는 상태 테이블 엔트리가 사용할 메모리 엔트리 최대수 디폴트는 10000
# frags는 패킷재구성을 위한 메모리 엔트리 최대수 디폴트 5000
set limit {states 10000, frags 2000}

# in/out 패킷에 대한 로그 정보 수집대상 네트웍 디바이스
set loginterface $ext_if

# 이부분은 좀 고려를 하셔야 하는데 전체적인 pf의 설능 최적화에 관한 부분인데 설정 옵션은 다음과 같습니다.
# normal  : 디 폴트로 무난한정도
# high-latency : 만그대로 하이~ 엄청난 규모의 트래픽이 왔다 갔다 할때
# aggressive : 약 간 위험성있는 옵션이지만 소통량이 많은 경우 메모리의 사용량을 최소로 할때는 이 옵션
# conservative : 메모 리 많이 사용하고 , CPU많이 잡아 먹오도 안정적이고 보수적으로다가. 비추?
set optimization aggressive

# 각 프로토콜관련해서 각 상태에 따라 timeout을 줄수 있습니다.
#set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
#set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
#set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
#set timeout { icmp.first 20, icmp.error 10 }
#set timeout { other.first 60, other.single 30, other.multiple 60 }
#set timeout { adaptive.start 0, adaptive.end 0 }

# 블럭된 패킷 에 대한 응대 방법인데 drop은 쌩~ 배째 니 누꼬고 , return은 온그대로 다시 반사~
set block-policy drop

# PF는 먼저 모든걸 막고 시작한다. 아래는 in/out을 일단 모두 막아 버리고 시작
block in  log all
block out log all

# pass즉 넌 통과 즉 로칼에서 나가고 들어오는적 즉 내부에서 놀이하는 건 모두 허용
# 맨아래 는 외부랑 연결된 fxp0에 대해서는 서버에서 밖으로 나가는 연결세션에 대해서는 모두허용
# 차 후는 막는게 좋치만 저는 처음 셋팅을 위해 일단 개발.
pass in  quick on lo0 all keep state
pass out quick on lo0 all keep state
pass out quick on $ext_if keep state

# 역시 여는 옵션이데 눈으로보셔도 아시 다 싶피 UDP는 domain 포트만 즉 DNS서버를 돌린다 이거죠
pass in  quick on $ext_if proto udp from any to $ext_if port { domain }

# tcp프토토콜에어 대해서는 아래 포트는 오픈하겠다는거죠
pass in  quick on $ext_if proto tcp from any to $ext_if port { ssh, http , https , ftp ,smtp } flags S/SAFR keep state
[root@good /root]$ _


- 적용 -

처 음에는 적용은 일단 리부팅...... 그리고 음료수 한잔 ,
자 그 다음은 뭘해야 할깡?
자 이제 컨트롤을 위한 툴 로 pfctl 이라는 툴프로그램을 제공하면 간단하게 다음의 옵션을 이용해서 pf를 컨트롤 하시면 됩니다.

- 관리 하기-

# 변경된 설정파일 적용
pfctl -f /etc/pf.conf

# 문법 검사
pfctl -nf /etc/pf.conf

# 필터링 셋팅 룰 보기
pfctl -sr

# 상태 테이블 정보괴
pfctl -ss                

# 필터링 상태와 카 운팅 보기
pfctl -si                

# 추천 : ALL ^^ 보두 보기 한방에
pfctl -sa                

- 로그 관찰 -

이제 로그를 봐야 한다. 왜 관리자니깐 자 그럼 tail /var/log/pflog
역시 깨진 글자만 보일겁니다.일반적인 TEXT View프 로그램으로는 볼수 없습니다.

자 여기서 쌩뚱 맞게 ifconfig -a 명령을 해보세요

pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208

라는 네트웍 카드가 꼽힌거 마냥 나탈날텐데 가상의 log용 어뎁터입니다.
자 그럼 잡설은 그만하고 로그 보 는 방법은

# 로그보기
tcpdump -n -e -ttt -r /var/log/pflog

자 위 방 법은 실시간이 아니라 이벤트 발생에 의해 파일에 Write된걸 보는지라 실시간으로 볼수 없습니다
실시간으로 볼려 면 tcpdump로 위에본 가상 어뎁터를 감시해야 합니다.

# 실시간 보기
tcpdump -n -e -ttt -i pflog0

실행하고 나면 뭔가 열심히 나옵니다 ^^

필터링을 원할경우는 | grep 은 하지마시구요 다음과 같 이 해보세요

# 실시간 보기 80port만
tcpdump -n -e -ttt -i pflog0 port 80

# 실시간보기 특정 IP
tcpdump -n -e -ttt -i pflog0 host XXXX.XXX.XXX

서로 연결해서 다중으로 할때는 and 를 붙이면 됩니다.

tcpdump -n -e -ttt -i pflog0 port 80 and host 127.0.0.1

오늘은 여기까징. OPENBSD쪽 자료를 보시거나 man pf.conf를 통한 man page를 보시면
더 쉬 우실겁니다.

pf의 성능도 성능이거니와 기능역시 대단합니다.
앞으로 계속 보고 있으니 좀더 되면 study란 쪽에 작성해보겠습니다.

pf가 현재의 *BSD 계열에는 이제 모두 기본지원이 되는지라 pf만 잘 연마하고 있으니 다른 BSD로 넘어 가도 필터링 문제는 이제 큰게 상관없이고 고가의 상용 방화벽 못지 않은 구축이 가능할것 같습니다.



이렇게 간단하게나마 쓰는것이 pf의 대단함을 깔보는것 처럼 느껴져서 않올릴려고 했었는데. 얼마전에 위글을 만들어 둔거지만. 하두 썰렁하고 잠이 아직 않와서 올립니다.
다들 도움이나 되실런지 모르겠습니다.

FreeBSD]FreeBSD + rdesktop + windows 2003 사용하기


rdesktop 을 사용해보겠사옵니다.

어쩔수없이 윈도를 사용해야할 경우 윈도서버에 접속해서 사용하는 방법이며 윈도서버 한대가 여유있는 분만 해당되겠사오나, wine 등의 에뮬보다는 훨빠른 것으로 알고 있기에 초강추이옵나이다.

1. Windows 2003 서버쪽 세팅

사운드를 듣기위해서 2003 서버쪽에서 해주어야 할일이 있나이다.

시작->관리도구->터미널서비스구성->연결에서 rdp-tcp 연결되있는 클라이언트를 우측마우스키로 누르시면 속성->클라이언트설정->오디오매핑의 체크를 해제해주면 되옵니다.

2. rdesktop 설치

/usr/ports/net/rdesktop 에서 make install clean 하시면 되오며,,

rdesktop -r sound -K -a 16 -g 1350x950 -u administrator -p xxxxx ip.ip.ip.ip

이렇게 사용하는 정도가 디폴트가 되겠사오며, rdesktop --help 하시면 더 많은 옵션을 참고할수 있사옵니다.

rdesktop 의 세계를 가르쳐주신 자우랑님과 2003 의 세계를 가르쳐주신 JEijuNN님께 감사드리옵나이다.

망극;

FreeBSD]apache2+php5 설치



(2005년 01월 13일 오후 03:00)

아파치2와 php5 포트에서 설치하기.

** make show-options

   |--> 위의 명령으로 해당 포트를 make하기전 사용가능한 옵션을 볼 수 있다고  하네요..



먼저 mysql server를 설치합니다.

# cd /usr/ports/www/apache2
# make install clean

***********************************************

/usr/local/etc/rc.d/apache2.sh 에 시동파일이 복사됩니다.


아파치를 데몬으로 기동하기 위해서는 /etc/rc.conf 에 apache2_enable="YES"를 추가한다.

***********************************************

# cd /usr/ports/www/mod_php5
====> # cd /usr/ports/lang/php5-extension


테 스트중 php5 가 불안한 경우가 있다.

그럴경우

    # cd /usr/ports/lang/php4-extension

에서 작업을 하면된다. 쉽게 말해 php4를 깔면 된다는 얘기 ^^

    # make install clean

(컴파일하고 인스톨하면서 /usr/ports/lang/php5-extension 에서 빌드를 하니깐 옵션선택 메뉴가 나오네요... ^^ (1주일간 헤매다가 찾았네요... ㅠ__ㅠ)

옵션설정 이 메뉴가 나오네요...
필요한 옵션을 설정합니다.

세션과 mbstring pcre_regex는 기본

** make install clean 시에 에러 발생하고 설치가 중단이 되면

make deinstall 을 하면 설치가 지워진다. 그후 다시 make install 을 해도 옵션 선택창이 보이지 않는데 이럴 경우 make config install 이라고 하면 옵션 선택 창이 나오고 설치 작업이 계속 이어지게 된다.

)



# vi /usr/local/etc/apache2/httpd.conf

*********************************************

확인사항

LoadModule php5_module        libexec/apache2/libphp5.so


추가사항

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndex index.php index.html index.html.var

AddDefaultCharset ISO-8859-1 =>  AddDefaultCharset ISO-2002-KR

*********************************************



# mv /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
# vi /usr/local/etc/php.ini

*********************************************

register_globals = Off => On
file_upload = On

session.auto_start = 0 => 1 로 변경

*********************************************

FreeBSD] x윈도우 설치



(2005년 01월 14일 오전 11:05)


이글은 현재 제가 사용하고 있는 FreeBSD 5.3R 버전을 기반으로 X를 띄우는 작업을 하면서 작성을 합니다.

작성시 참고서적은 FreeBSD핸드북의 Chapter5. The X Window System 원문을 참조하며, 작업중 이상하거나 본인의 시스템에 안맞는 경우는 코멘트를 달아가면서 하겠습니다.


======================================
시스템사양 :

   CPU : intel P4 1.4G
   Ram : 768M
   HDD : 8.4G 6.4G
   VGA : nVidia GeForce 3 64M
   NIC : Realtek 8194
   모니터 : 상성 syncMaster CDP17s (HorizSync  30-70/ VertRefresh 50-160)
======================================


1. 설치

FreeBSD 5.3R 부터 X11의 기본이 Xorg로 바뀌어 시작한다고 한다.
물론 그 이전에는 X11의 기본은 XFree86이었습니다.
또 Xorg는 X.Org 조직에 의해 배포되는 X11R6.7의 X11서버랍니다.

X11R6.7은 XFree86 4.4RC2 와 X11R6.6 코드에 근거하고 있습니다.
X.Org 는 X11R6.7을 2004.4월에 릴리즈했습니다.

**포트에서 Xorg  빌드 및 설치

    # cd /usr/ports/x11/xorg
    # make install clean

  주의 : Xorg 전체를 빌드하기 위해서는 최소한 4G정도의 여유공간이 있어야        
         합니다.


**포트에서 XFree86  빌드 및 설치

    # cd /usr/ports/x11/XFree86-4
    # make install clean


다른 방법으로는, X11을 패키지로부터 직접 설치할 수도 있습니다.
pkg_add(1)툴로 바이너리패키지 X11을 설치 가능합니다.
원격에서 pkg_add(1)를 사용하면 최신의 프로그램을 가지고 오게 됩니다.

    # pkg_add -r xorg
or
    # pkg_add -r XFree86

   주의 : 위의 예는 X11배포본(서버, 클라이언트, 폰트등을 포함한)을 설치할 것이다.

나머지는 X11을 설정하고 desktop 환경을 어떻게 구축하는지에 대해 설명합니다.


XFree86 에서 Xorg로 옮겨가기 (생략)

**
현재 제가 빌드하고 있는데 좀 오래걸리네요...
빌드하라고 하구선 계속 쓰고 있을랍니다... ^^
이글은 윈도우OS에서 작업을 하는거랍니다. ;P
**

FreeBSD] x윈도우 설정 및 테스트



(2005년 01월 14일 오전 11:10)



2. X11 설정하기


2.1 시작하기 전에

현재 시스템에 대한 아래사항의 정보가 있어야만 합니다.
  -모니터 사양 // 비디오카드 칩셋 // 비디오카드 메모리


2.2 X11 설정

X11의 설정작업은 multi-step작업이다.


2.2.1 첫번째는 initial 설정파일을 생성합니다.

   # Xorg -configure

XFree86 타입은

   # XFree86 -configure



위의 명령은 X11설정 스켈레톤파일을 /root 디렉토리에 xorg.conf.new 라고 하는 파일을 생성합니다.

   # Xorg -config xorg.conf.new
or
   # X -xf86config /root/xorg.conf.new


위의 명령으로 테스트한 후 Ctrl Alt Backspace키를 눌러 빠져나옵니다.


2.2.2 다음은 존재하는 설정하일을 설치하고자 하는 시스템에서 그래픽하드웨어로 작업을 할수 있는지 테스트합니다.

    # Xorg -config xorg.conf.new
or
    # XFree86 -xf86config XFree86Config.new


만약 검정과 회색의 격자와 X 마우스 커서가 보인다면 설정은 성공적인것입니다.  테스트를 빠져나가기 위해 Ctrl Alt Backspace키를 누르면 됩니다.


  주의 : 만약 마우스가 보이지 않으면 첫번재 설정작업을 다시 하세요...

           Section 2.9.10 FreeBSD인스톨을 참조하세요...


2.2.3  xorg.conf.new (혹은 XFree86config.new )설정파일수정하기

emacs나 ee 혹은 vi 같은 텍스트에디터로다가 설정파일을 엽니다. 첫번째로 설치하고자 하는 시스템의 모니터의 주사율을 추가합니다.
이것은 xorg.conf.new 파일의 'Monitor' 섹션에 아래와 같은 형식으로 값을 추가하면 됩니다.

**********************

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
EndSection

************************

** 한솔모니터 17인치의 경우 HorizSync : 30-75 VertRefresh : 40-160 **

HorizSync 와 VertRefresh 는 설정파일에 없을수도 있으니 알아서 넣으면 됩니다.


다음으로 해상도는 기본으로 설정을 해도 된다. 다음은 그 예입니다.("Screen" 섹션입니다.)

**************************

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport  0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection

****************************


2.2.4 설정파일을 저장하고, 위에서 주어진 테스트모드로 테스트를 한다.

  주의 : 문제 발생시 /var/log/Xorg.0.log (/var/log/XFree86.0.log) 에            기록이 된다.  만약 Xorg.0.log가 있으면 Xorg.0.log~Xorg.8.log 까지의 사이의 파일에 기록이 됩니다.


2.2.5 위의 모든 작업이 정상적으로 수행이 되었다면 Xorg나 XFree86이 설치된곳에서 설치파일을 찾을것이다.  이것은 전형적으로 /etc/X11/xorg.conf 나 /usr/X11R6/etc/X11/Xorg.conf 이 된다.
(XFree86에서는 /etc/X11/XF86Config 나 /usr/X11R6/etc/X11/XF86Config)

    # cp xorg.conf.new /etc/X11/xorg.conf

혹은 XFree86 :

    # cp XF86Config.new /etc/X11/XF86Config


이렇게 해서 X11설정작업은 끝납니다.

이제 XFree86 4.x 에서의 startx로 X를 시작하기 위해서는 x11/wrapper 포트를 설치해야 합니다.
Xorg 는 이미 wrapper코드를 포함하고 있기 때문에 따로 설치하지 않아도 됩니다.
X11서버는 여전히 xdm을 사용하여 구동될 것이다.

  주의 : 그래픽적인 설정툴인 xorgcfg(XFree86의 경우 xf86cfg)가 X11배포본에           같이 포함되어 있다.   콘솔에서 작업시 명령은 xorgcfg -textmode 로 해서 작업을 하면 됩니다. 다른 것으로는  xorgconfig 가 있는데 이것은 사용자에 덜 친숙한 콘솔용 프로그램입니다.


2.3 향상된(??) 설정

2.3.1   intel i810 그래픽 칩셋 설정
 intel i810 통합칩셋의 설정은 X11을 위한 agpgart AGP 프로그래밍 인터페이스를 필요로 합니다.
apg(4)드라이버는 4.8R과 5.0R 로 릴리즈되는 동안 GENERIC 커널에 포함되어 있습니다.
이전 릴리즈버전은 , 아래의 문장을 삽입하세요.

     device agp

커널을 다시 빌드한 경우라면 , asp.ko 커널모듈을 부팅시 loader(8)에 의해 로드하기를 원할 것입니다.
그런경우  /boot/loader.conf 파일에 다음과 같이 간단한 문장을 삽입하면 OK

    agp_load = "YES"

다음으로 4.X 나 그 이전버전의 경우, 디바이스노드는 프로그래밍 인터페이스의 생성을 필요로 합니다.
AGP 디바이스 노드의 생성은 MAKEDEV(8) 을 /dev 디렉토리에서 실행합니다.

# cd /dev
# sh MAKEDEV agpgart

    주의 : FreeBSD 5.X 나 이후 버전은 devfs(5)을 사용하여 디바이스노드에 위시킬것이어서, MAKEDEV(8)작업은 필요하지 않습니다.

이러한 설정작업에 따라서 어떤 종류의 그래픽카드도 인식가능합니다.

NOTE :

언급한 시스템에 agp(4)드라이버가 컴파일된 커널에 없다면 kldload(8)과 함께 모듈을 로드해보기 바랍니다.
이 드라이버는 /boot/loader.conf. 에서 사용되거나 혹은 컴파일되어 커널 부팅시에 같이 로드될 것입니다.

만약 XFree86 4.1.0(혹은 이후버전)을 사용고 fbPictureInit 과 같은 메시지를 보게되면, 다음의 'i180'드라이버를 X11설정파일에 추가하시기 바랍니다. :

         Option "NoDDC"

FreeBSD] X에서의 한글 사용



이글은  http://www.godisgreen.com/wikix/ 의 "FreeBSD/한글 로케일설정하기" 와 "한글 문제" 를 참고하였습니다.




한글 로케일 설정 ]
===========================================

한글로케일을 설정하기 위해선 다음과 같이 쉘상에서 환경변수를 설정해주시거나.. 쉘 설정파일인 .cshrc , .tcshrc .bashrc 등의 파일에 다음과 같이 입력해주시면 됩니다



tcsh에서 설정할때
**********************************

setenv LANG ko_KR.EUC    ==> 5.3R에서는 ko_KR.eucKR
setenv LC_CTYPE ko_KR.EUC
setenv MM_CHARSET euc-kr ==> 위에서 LANG 만 .cshrc 에 추가를 하고 nabi를 띄우면 이상이 없네요..



bash에서 설정할때
**********************************

export LANG=ko_KR.EUC
export LC_CTYPE=ko_KR.EUC
export MM_CHARSET=euc-kr

==> 위와 같이 설정시 나중에  포트를 빌드하거나 커널컴파일시에 에러가 나는수가 있는데 이런 경우 LANG=ko_KR.EUC를 LANG=C로 바꾸어주고 다시 컴파일을 하면 무리없이 됩니다.




한글 문제 ]================================

.xinitrc또는 .cshrc에 다음을 추가해주세영~

xmodmap -e "keycode 121 = Hangul_Hanja" &
xmodmap -e "keycode 122 = Hangul" &

2012-09-09

FreeBSD] x11에서 폰트사용



3.1 Type1폰트

X11에 기본으로 포함된 폰트들은 전형적인 출판프로그램의 것보다 덜하다.  큰폰트는 덜 전문적으로 제작된것처럼 보이고, 적은폰트들은 넷스케이프에서는 거의 알아볼 수 없는 것들도 있다.

어쨋든 몇몇은 공짜이고, 고품질은 Type1(PostScript)폰트를 사용할 수 있다.

일예로 URW폰트컬렉션(x11-fonts/urwfonts)은 고품질의 표준 Type1폰트(Time Roman, Helvetica, Palatino등)를 포함하고 있다.

Freefont컬렉션(x11-fonts/freefonts) 는 많은 폰트를 포함하고 있지만 대부분은 Gimp와 같은 그래픽용 소프트웨어에서 사용될 것이며, 화면용 폰트로는 완전하지가 않다.

게다가 X11에서는 최소한은 노력으로 트루타입폰트를 사용할 수 있다.

자세한것은 X(7) 메뉴얼페이지를 보거나 핸드북의 트루타입폰트 섹션을 참고하세요.

포트컬렉션에서 Type1폰트 컬랙션을 설치하려면 다음의 명령을 입력하세요...


# cd /usr/ports/x11-fonts/urwfonts
# make install clean


freefont나 다른 컬렉션도 마찬가지이다. X서버는 이러한 폰트들을 검출해내고, X서버 /etc/X11/(Xorg:xorg.conf, XFree86:XF86Config) 설정파일에 아래 정보를 추가한다.


 FontPath "/usr/X11R6/lib/X11/fonts/URW/"


또는  , X 세션 실행시에 다음의 명령라인을 입력한다.


% xset fp /usr/X11R6/lib/X11/fonts/URW
% xset fp rehash


이 방법은 X세션이 닫히면 잃어버리며, 그래서 시작파일(~/.xinitrc : 일반 startx세션, ~/.xsession : xdm같은 그래픽로긴관리자를 통해 로긴할경우)에 추가를 해놓는다.

3번째는 새로운 /usr/X11R6/etc/fonts/local.conf 파일에 다음섹션의 anti-aliasing을 사용하는 법이다.


3.2 트루타입폰트

XFree86 4.X 와 Xorg는 트루타입폰트를 지워하도록 되어있다.

이는 두개의 다른 모듈이 하나의 기능으로 가능하도록 할 수 있게 되어있다. freetype모듈은 이 예제에서 사용되어진다. 왜냐면 이것이 백-엔드에서 다른 폰트렌더링에 더 알맞기 때문이다.

freetype폰트 모듈은 "/etc/X11/xorg.conf " 나 "/etc/X11/XF86Config" 파일의 'Module' 섹션에 다음의 라인을 추가하면 된다.

    Load       "freetype"


XFree86 3.3.x 에서는 트루타입폰트서버는 필요에 의해서 분리했다. Xfstt는 일반적으로 앞의 목적을 위해서 사용되었다. Xfstt를 설치하기 위해서는 x11-servers/Xfstt 포트를 설치하면 간단하게 된다.

트루타입폰트를 위한 디렉토리, 예를 들면 /usr/X11R6/lib/X11/fonts/TrueType 을 만들고, 현재 디렉토리에 있는 모든 트루타입폰트를 복사한다. 트루타입폰트는 매킨토시에서 직접가지고 올 수는 없고,  UNIX/MS-DOS/Windows 포맷만이 X11에서 사용될 수 있다. 한번 복사한 후, "ttmkfdir"을 사용해서 fonts.dir 파일을 생성하면,  X 폰트 생성기(렌더러)가 이 새로운 파일들을 알아서 설치할 것이다.

ttmkfdir은 FreeBSD x11-fonts/ttmkfdir 같은 포트컬렉션으로부터 얻을 수 있다.


# cd /usr/X11R6/lib/X11/fonts/TrueType
# ttmkdir > fonts.dir


다음으로 TrueType 디렉토리에 폰트경로를 추가한다.
이것은 아래의 방법과 같이 하면 되고, 이 방법은 위에 기술된 Type1 과 같은 방법이다.


% xset fp /usr/X11R6/lib/X11/fonts/TrueType
% xset fp rehash


또는 xorg.conf 나 XF86Config 파일에  FontPath 줄을 추가한다.


이렇게 설치된 트루타입폰트들은 넷스케이프, Gimp, StarOffice 또는 다른 모든 X프로그램에서 인식이 될것이다.  
극히 작은 폰트나 극히 큰 폰트들도 이전보다 나아보일것이다.



3.3 Anti-Aliased Fonts (안티알리아스드 폰트)

Joe Marcus Clarke 가 갱신함

안티알리아싱은 XFree86 4.0.2 때부터 X11에서 사용할 수 있게 되었다.
하여간 폰트 설정은 XFree86 4.3.0 이 소개되기 전까지는 귀찮은 작업이었다.
XFree86 4.3.0 이 나오면서부터 X11의 모든 폰트가  /usr/X11R6/lib/X11/fonts/ 와 ~/.fonts 디렉토리에 있게되고 Xft-aware 프로그램들이 안티알리아싱을 자동적으로 사용가능하게 되었다.

모든 프로그램이 Xft-aware적인 것은 아니지만, 많은 것들이 Xft의 지원을 받게 되었다.   Xft-aware적인 것의 예를 들면 Qt 2.3 과 그이상버전(KDE 데스크탑을 위한 툴킷), GTK 2.0가 그이상버전(GNOME 데스크탑을 위한 툴킷)과 Mozilla 1.2 이상버전들이다.

폰트를 조절하거나 또는 안티알리아싱 속성을 설정하기에 따라서 안티알리아스드되기도 하고,  /usr/X11R6/etc/fonts/local.conf파일을 생성(존재하는것을 수정) 해서 만들기도 한다.

Xft폰트시스템의 더 나은 방법은 이 파일을 튜닝할 수 있다는 것이다.
이 섹션은 단지 약간의 가능성만  보여준다. 더 자세한 사항은 fonts-conf(5)를 보기 바랍니다.

이 파일은 아래와 같은 XML포맷으로 되어 있고  DOCTYPE로 정의된 XML헤더를 따르고 있으며,  <fontconfig>라는 태그를 사용한다.


      <?xml version="1.0"?>

      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">

      <fontconfig>



이전 상태에 따라,/usr/X11R6/lib/X11/fonts/과 처럼 ~/.fonts/ 에 있는 모든 폰트는 Xft-aware 프로그램에서 사용가능하게 만들어졌다.
만약 이런 두개의 디렉토리 트리외에 다른 디렉토리를 더하고자 하면, 다음과 같은 라인을 /usr/X11R6/etc/fonts/local.conf 파일에 추가하면 된다.



     <dir>/path/to/my/fonts</dir>



새 폰트를 추가하거나 새폰트 디렉토리를 추가한 후,  아래의 명령으로 폰트 캐시를 리빌드해야한다.


# fc-cache -f


안티 알리아싱은 경계를 약간 흐리게 만들어,  아주 작은 텍스트와 큰 텍스트의 계단현상을 제거해줌으로 해서 가독성을 높여주지만, 일반 텍스트에 적용하면 눈의 피로의 원인이 될 수 있습니다.

안티알리아싱을 14포인보다 작은 폰트사이즈는 제외하고자하면 애래의 문장을 추가하세요.



        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>



어떤 모노스페이스된 폰트의 간격은 안티알리아싱에 부합하지 않을수도 있다.

특히 KDE에서...  이런 문제를 해결하는 것들 중 하나는 폰트의 간격을 100으로 고정하는것이다.

그 예는 아래에 있다.



       <match target="pattern" name="family">
           <test qual="any" name="family">
               <string>fixed</string>
           </test>
           <edit name="family" mode="assign">
               <string>mono</string>
           </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>




 아래의것도 첨부.



          <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>





Helvetica같은 폰트는 안티알리아싱을 할때 문제가 발생할 수 있다. 이런 문제는  폰트가 수직으로 반절이 잘려진것처럼 보인다는 것이다. 더욱 안좋은 것은 Mozilla와 같은 프로그램과 충돌이 발행하는 원인이 될 수 있다는 점이랍니다.  이현상을 피하기 위해, local.conf 파일에 아래의 사항을 추가하는것을 고려해봄직합니다.




         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>  




local.conf 파일의 수정을 마친후 파일의 끝에 </fontconfig> 태그를 추가해야만 합니다.  이것이 없다면 수정 사항이 무시되니까요....


X11에 설정되어 있는 기본폰트는 안티알리아싱 적용시 적절해 보이지 않는다.  
x11-fonts/bitstream-vera 포트에 있는것이 기본 폰트보다 더 많이 찾을 수 있다.

이 포트는 만약 없다면 /usr/X11R6/etc/fonts/local.conf 파일을 설치할 것이다.
위 파일이 존재한다면, 포트는 /usr/X11R6/etc/fonts/local.conf-vera 파일을 생성한다.

 /usr/X11R6/etc/fonts/local.conf 파일에  /usr/X11R6/etc/fonts/local.conf-vera 의 내용을 합하면, 비트스트림폰트는 X11의 Serif, Sans Serif, Monospaced 폰트를 자동으로 대체하게 될것이다.

마지막으로, 사용자들은 자신의 고유의 설정을 자신들의 .fonts.conf 파일을 통해 추가할 수 있다.

이때 할 일은 각 유저는 ~/.fonts.conf 파일을 생성하기만 하면 된다. 이 파일도 XML형식을 가진다.


마지막 사항: LCD인 경우 sub-pixel 샘플링을 요구할 지도 모른다.

이는 기본적으로 (수평으로분리된) Red, Green, Blue 색상요소들의 향상된 분리(?)로 , 수평주사율을 의미한다.

그 결과물은 드라마틱하다.  이를 가능하게 하려면, local.conf 파일에 다음의 문장을 넣어준다.



          <match target="font">
             <test qual="all" name="rgba">
                 <const>unknown</const>
             </test>
             <edit name="rgba" mode="assign">
                 <const>rgb</const>
             </edit>
         </match>




이렇게 하면 안티알이아싱을 X 서버가 시작되면서 사용할 수 있게 된다.