CentOS 에서는 racoon 을 사용한 IPsec 연결을 제공합니다. 일반적인 고정아이피 끼리의 host-to-host, net-to-net 연결방식은 다음 링크를 참고하시기 바랍니다.

http://www.centos.org/docs/5/html/5.2/Deployment_Guide/s2-networkscripts-interfaces-ipsec.html
http://www.centos.org/docs/5/html/5.2/Deployment_Guide/ch-vpn.html

http://www.linuxtopia.org/online_books/centos_linux_guides/centos_linux_security_guide/s1-ipsec-host2host.html


여기에 설명되어 있지 않은 IPsec 연결방식 중 road-warrior 는 유동 아이피와 IPsec 연결을 만들 때 사용됩니다. 유동 아이피를 가진 서버에게 실제 고정 아이피를 할당할 때 사용하는데요, CentOS 는 기본적으로 road-warrior 를 지원하지 않기 때문에 추가 설정이 필요합니다.

이 포스팅에서는 일반적인 IPsec 설정보다는 road-warrior 설정에 필요한 방법만을 설명합니다. IPsec에 대한 이해가 있고 CentOS 에서 일반적인 host-to-host, 또는 net-to-net 설정이 가능한 독자층을 대상으로 하고 있으니 자세한 설정 내용은 위 링크를 참고하기기 바랍니다.

일단 클라이언트쪽의 /etc/sysconfig/network-scripts/ifcfg-ipsec0 설정은 일반적인 설정과 크게 다르지 않습니다. DST 항목은 IPsec 을 연결할 서버가 되어야 합니다. SRC는 유동아이피이므로 지정하지 않습니다. SRCNET, DSTNET 을 지정하면 SRCNET -> DSTNET 의 연결에 대해 IPsec 을 통하도록 policy를 생성합니다.

서버쪽의 /etc/sysconfig/network-scripts/ifcfg-ipsec0 에서는 반대로 DST=anonymous 로 지정합니다. SRC는 지정하지 않아도 됩니다. 어차피 policy 는 클라이언트 -> 서버 방향으로 SA 생성 단계에서 자동으로 만들어지는 것이 목표입니다.

클라이언트, 서버 양쪽 모두 IKE_METHOD=X509 를 사용합니다. PSK 방식을 많이 사용하시겠지만, PSK는 CentOS ifup-ipsec 스크립트 구조상 identifier가 address로 고정되기 때문에 road-warrior 방식에서는 적합하지 않습니다. 다음 커맨드를 서버에서 사용하여 X509 인증을 설정합니다.

sudo openssl req -x509 -new -keyout /etc/racoon/certs/<서버키이름>.private -out /etc/racoon/certs/<서버키이름>.public -nodes -days 3650
chmod 600 /etc/racoon/certs/<서버키이름>.private
그리고 /etc/racoon/certs/<서버키이름>.public 파일을 클라이언트의 /etc/racoon/certs/ 로 복사해줍니다.
클라이언트에서도 똑같은 방법으로 <클라이언트키이름> 을 사용하여 키페어를 생성 후, <클라이언트키이름>.public 파일을 서버쪽으로 복사합니다.

이제 서버의 /etc/racoon/certs/ 에는 <서버키이름>.private <서버키이름>.public <클라이언트키이름>.public 파일이 있을겁니다.
클라이언트의 /etc/racoon/certs/ 에는 <클라이언트키이름>.private <클라이언트키이름>.public <서버키이름>.public 파일이 있어야 합니다.
그러면 서버의 ifcfg-ipsec0 에서 cert 파일 설정을 다음과 같이 해 줄 수 있습니다. .public, .private 는 붙이지 않습니다.

IKE_CERTFILE=<서버키이름>
IKE_PEER_CERTFILE=<클라이언트키이름>
클라이언트에서는 반대로 입력하면 됩니다.

그러면 ifcfg-ipsec0 준비는 끝났습니다. ifup ipsec0 으로 ipsec0 인터페이스를 올리면 /etc/racoon/racoon.conf 파일과 해당 DST 에 대한 conf 파일이 자동으로 생성됩니다. 라우팅, 폴리시 추가에서 에러가 주르륵 나지만 동작에는 큰 문제가 없습니다.

이제 마지막으로 서버의 /etc/racoon/anonymous.conf 파일을 수정해 generate_policy on; 옵션을 다음과 같이 추가해줍니다.
remote anonymous
{
        generate_policy on;
        exchange_mode aggressive, main;
        my_identifier asn1dn;
        peers_identifier asn1dn;
...생략...

위 설정이 없으면 다음과 같은 에러가 발생합니다.
2009-11-29 09:13:07: INFO: respond new phase 2 negotiation: xxx.xxx.xxx.xxx[500]<=>yyy.yyy.yyy.yyy[500]
2009-11-29 09:13:07: ERROR: no policy found: aaa.aaa.aaa.0/n[0] bbb.bbb.bbb.bbb/m[0] proto=any dir=in
2009-11-29 09:13:07: ERROR: failed to get proposal for responder.
2009-11-29 09:13:07: ERROR: failed to pre-process packet.

다시 ifdown ipsec0; ifup ipsec0 을 통해 인터페이스를 재시작하고 클라이언트에서 서버로 IPsec 접속이 되나 확인합니다.

설정 후에는 다음과 같은 에러가 발생하나, 정상적인 동작입니다.
2009-11-29 09:14:58: INFO: respond new phase 2 negotiation: xxx.xxx.xxx.xxx[500]<=>yyy.yyy.yyy.yyy[500]
2009-11-29 09:14:58: INFO: no policy found, try to generate the policy : aaa.aaa.aaa.0/n[0] bbb.bbb.bbb.bbb/m[0] proto=any dir=in
2009-11-29 09:14:58: INFO: IPsec-SA established: ESP/Tunnel 211.215.9.154[500]->165.132.148.222[500] spi=216702467(0xcea9e03)
2009-11-29 09:14:58: INFO: IPsec-SA established: ESP/Tunnel yyy.yyy.yyy.yyy[500]<=>xxx.xxx.xxx.xxx[500] spi=~~(0x~~~)
2009-11-29 09:14:58: ERROR: such policy does not already exist: "aaa.aaa.aaa.0/n[0] bbb.bbb.bbb.bbb/m[0] proto=any dir=in"
2009-11-29 09:14:58: ERROR: such policy does not already exist: "aaa.aaa.aaa.0/n[0] bbb.bbb.bbb.bbb/m[0] proto=any dir=fwd"
2009-11-29 09:14:58: ERROR: such policy does not already exist: "bbb.bbb.bbb.bbb/m[0] aaa.aaa.aaa.0/n[0] proto=any dir=out"

만일 서버의 /etc/sysconfig/network-scripts/ifcfg-ipsec0 파일을 수정했다면, /etc/racoon/anonymous.conf 이 재생성되므로 generate_policy on; 를 다시 추가해줘야 합니다. 서버에 있는 /etc/sysconfig/network-scripts/ifup-ipsec 파일을 수정하여 자동적으로 추가하게 만드는 방법도 있지만, 배포판 업데이트시 충돌을 야기하기 때문에 추천하지는 않습니다.



CentOS provides IPsec with racoon IKE and scripts. It's well documented in following official and other links, if you are using host-to-host or net-to-net connection between two hosts which have fixed ip-address on both side.

http://www.centos.org/docs/5/html/5.2/Deployment_Guide/s2-networkscripts-interfaces-ipsec.html
http://www.centos.org/docs/5/html/5.2/Deployment_Guide/ch-vpn.html

http://www.linuxtopia.org/online_books/centos_linux_guides/centos_linux_security_guide/s1-ipsec-host2host.html


But, there are another way to use IPsec, which is called as "road-warrior" is used to make secure IPsec connection from client with dynamic ip-address to server. We need to configure a bit more to use this way, because CentOS do NOT support road-warrior officially.

In this post, the specific how-to about road-warrior will be explained, aiming who understand basics of IPsec and can setup generic host-to-host or net-to-net connection in CentOS. If you are not familiar with these topics, please refer above links.


First, the configuration in "/etc/sysconfig/network-scripts/ifcfg-ipsec0" is not significantly differ with generic IPsec setting. "DST" must be set with ip-address of server, and "SRC" should be omitted because the address is dynamic. Packets from "SRCNET" to "DSTNET" will be relayed via IPsec with the policy created by script.

On the contrary,  server should use "DST=anonymous" in "/etc/sysconfig/network-scripts/ifcfg-ipsec0", this is magic keyword for road-warrior. "SRC" should be excluded, policies will be generated with the generation of SA.

For authentication, "IKE_METHOD=X509" would be set in this case. PSK is popular, but CentOS use address as default identifier when PSK is used which is not suitable with road-warrior. Use following commands to produce X509 key-pair.

sudo openssl req -x509 -new -keyout /etc/racoon/certs/<server_key_name>.private -out /etc/racoon/certs/<server_key_name>.public -nodes -days 3650
chmod 600 /etc/racoon/certs/<server_key_name>.private
Next, copy /etc/racoon/certs/<server_key_name>.public file to client at the location of /etc/racoon/certs/.

Vice versa, make key-pair in the client with <client_key_name> and copy <client_key_name>.public file to server side.

In summary, server's /etc/racoon/certs/ should have following files: <server_key_name>.private <server_key_name>.public <client_key_name>.public
And client's /etc/racoon/certs/ does <client_key_name>.private <client_key_name>.public <server_key_name>.public

Then the certification setting in ifcfg-ipsec0 can be set like this:
IKE_CERTFILE=<server_key_name>
IKE_PEER_CERTFILE=<client_key_name>
 .public, .private are excluded in this files. The client use reversed order of there key.

Now ifcfg-ipsec0 is ready for ifup. Use "ifup ipsec0" command to activate ipsec0 interface, and "/etc/racoon/racoon.conf", "DST.conf " file will be generated. You will see several errors while getting routes and generating policies, but it is not problem on operation.

Finally, modify server's "/etc/racoon/anonymous.conf" to add "generate_policy on;" option.
remote anonymous
{
        generate_policy on;
        exchange_mode aggressive, main;
        my_identifier asn1dn;
        peers_identifier asn1dn;
...omitted...

Following errors will be occur if you don't add above configuration:
2009-11-29 09:13:07: INFO: respond new phase 2 negotiation: xxx.xxx.xxx.xxx[500]<=>yyy.yyy.yyy.yyy[500]
2009-11-29 09:13:07: ERROR: no policy found: aaa.aaa.aaa.0/n[0] bbb.bbb.bbb.bbb/m[0] proto=any dir=in
2009-11-29 09:13:07: ERROR: failed to get proposal for responder.
2009-11-29 09:13:07: ERROR: failed to pre-process packet.

Toggle the ipsec0 interface down and up with "ifdown ipsec0; ifup ipsec0" command. The IPsec will work functionally when client connect to server!

Some other error can be found in log, but it's just usual error message.
2009-11-29 09:14:58: INFO: respond new phase 2 negotiation: xxx.xxx.xxx.xxx[500]<=>yyy.yyy.yyy.yyy[500]
2009-11-29 09:14:58: INFO: no policy found, try to generate the policy : aaa.aaa.aaa.0/n[0] bbb.bbb.bbb.bbb/m[0] proto=any dir=in
2009-11-29 09:14:58: INFO: IPsec-SA established: ESP/Tunnel 211.215.9.154[500]->165.132.148.222[500] spi=216702467(0xcea9e03)
2009-11-29 09:14:58: INFO: IPsec-SA established: ESP/Tunnel yyy.yyy.yyy.yyy[500]<=>xxx.xxx.xxx.xxx[500] spi=~~(0x~~~)
2009-11-29 09:14:58: ERROR: such policy does not already exist: "aaa.aaa.aaa.0/n[0] bbb.bbb.bbb.bbb/m[0] proto=any dir=in"
2009-11-29 09:14:58: ERROR: such policy does not already exist: "aaa.aaa.aaa.0/n[0] bbb.bbb.bbb.bbb/m[0] proto=any dir=fwd"
2009-11-29 09:14:58: ERROR: such policy does not already exist: "bbb.bbb.bbb.bbb/m[0] aaa.aaa.aaa.0/n[0] proto=any dir=out"

If you change "/etc/sysconfig/network-scripts/ifcfg-ipsec0" file on the server, you have to insert "generate_policy on;" again because "/etc/racoon/anonymous.conf" is regenerated while interface up.

You can modify the server's "/etc/sysconfig/network-scripts/ifup-ipsec" to avoid the repetition on change of configuration, but this workaround make another possibility of conflicting while update or upgrading system. So I do not recommend this workaround.

Posted by Arcy

2009/11/30 01:54 2009/11/30 01:54
,
Response
No Trackback , No Comment
RSS :
http://arcy.org/tc/rss/response/86

Trackback URL : http://arcy.org/tc/trackback/86


cups + 윈도용 프린터 드라이버 자동 인스톨러 #1 - cups 잡기
cups + 윈도용 프린터 드라이버 자동 인스톨러 #2 - 프린터 설치 스크립트



조금 더 사용자 수고를 다이어트해보자. 전에 패키지할때 써보던 Inno Setup 이란 넘이 있었다.

오픈소스는 아니지만, 공개 프로그램이고 코드 집어넣는 인스톨러가 되어서 깔끔하다. 이번엔 코드 쓸 일은 없지만. (써도 된다 물론. -_-;)

다운 받아 설치한다.
 

한글 설치를 지원하려면..




그리고, 설치 스크립트를 짠다.

감이 전혀 오지 않는다면 참고하시라.

lj1150.iss
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=exe 파일 등록정보에 나올 이름
AppVerName=설치 메인 화면에 나올 이름
AppPublisher=배포자
AppPublisherURL=http://주소
AppSupportURL=http://적당히
AppUpdatesURL=http://대충
CreateAppDir=no
OutputBaseFilename=lj1150
Compression=lzma
SolidCompression=yes
Uninstallable=no

[Languages]
Name: "korean"; MessagesFile: "compiler:Languages\Korean.isl"

[Files]
Source: "hp1300m5.cat"; Destdir: {tmp}\lj1150;
Source: "hp1300m5.inf"; Destdir: {tmp}\lj1150;
Source: "hpbhealr.dl_"; Destdir: {tmp}\lj1150;
Source: "hpbmmon.dl_"; Destdir: {tmp}\lj1150;
Source: "hpbmmon.dll"; Destdir: {tmp}\lj1150;
Source: "hpc11505.gp_"; Destdir: {tmp}\lj1150;
Source: "hpc11505.xm_"; Destdir: {tmp}\lj1150;
Source: "hpc1150b.in_"; Destdir: {tmp}\lj1150;
Source: "hpc13005.gp_"; Destdir: {tmp}\lj1150;
Source: "hpc13005.xm_"; Destdir: {tmp}\lj1150;
Source: "hpc1300b.in_"; Destdir: {tmp}\lj1150;
Source: "hpc13155.gp_"; Destdir: {tmp}\lj1150;
Source: "hpcdmc32.dl_"; Destdir: {tmp}\lj1150;
Source: "hpcevt05.dl_"; Destdir: {tmp}\lj1150;
Source: "hpcljx05.hl_"; Destdir: {tmp}\lj1150;
Source: "hpcrd05.dl_"; Destdir: {tmp}\lj1150;
Source: "hpcsch05.dt_"; Destdir: {tmp}\lj1150;
Source: "hpcstr05.dl_"; Destdir: {tmp}\lj1150;
Source: "hpcui05.dl_"; Destdir: {tmp}\lj1150;
Source: "hpdomon.dl_"; Destdir: {tmp}\lj1150;
Source: "hplj3in03.ex_"; Destdir: {tmp}\lj1150;
Source: "hpprn05.dl_"; Destdir: {tmp}\lj1150;
Source: "hpprn05.dll"; Destdir: {tmp}\lj1150;
Source: "hpsmac05.gp_"; Destdir: {tmp}\lj1150;
Source: "setup.bat"; Destdir: {tmp}\lj1150;
Source: "stdnames.gp_"; Destdir: {tmp}\lj1150;
Source: "unidrv.dl_"; Destdir: {tmp}\lj1150;
Source: "unidrv.hl_"; Destdir: {tmp}\lj1150;
Source: "unidrvui.dl_"; Destdir: {tmp}\lj1150;
Source: "unires.dl_"; Destdir: {tmp}\lj1150;
; Source: "lj1150.iss"; Destdir: {tmp}\lj1150;

[Run]
Filename: "{tmp}\lj1150\setup.bat"; Flags: runminimized

; NOTE: Don't use "Flags: ignoreversion" on any shared system files

Inno Setup 에 넣고 컴파일하면 .exe 파일이 나온다.


이거이 그냥 실행하면 프린터가 알아서 잡힌다!





네번만 클릭하면 끝난다!

설치 파일 이름도 친절하게 바꿔주는 것을 잊지 말자.


이래도 못쓰시겠다면.. 그냥 대신 출력해 드리자.. -_-

Posted by Arcy

2006/09/06 23:38 2006/09/06 23:38
, ,
Response
No Trackback , a comment
RSS :
http://arcy.org/tc/rss/response/11

Trackback URL : http://arcy.org/tc/trackback/11


cups + 윈도용 프린터 드라이버 자동 인스톨러 #1 - cups 잡기



다즐이 블로그에서 프린터 자동설치에 대한 글을 본 적이 있었다. 트랙백이 안보여서 못 날린다;

이래저래 문서를 찾고 시행착오를 거쳐서 배치파일을 만들 수 있었다. 사실 내용은 한줄이다;;

setup.bat
@echo off
rundll32 printui.dll,PrintUIEntry /if /m "hp LaserJet 1150 PCL 5e" /b "프린터위치 - HP LaserJet 1150 PCL 5e" /n "hp LaserJet 1150 PCL 5e" /f hp1300m5.inf /r "http://프린터서버아이피나호스트:631/printers/MyPrinter1" /z

다 한줄이다. 프린터 드라이버가 있는 디렉토리에서 실행시키면 주르륵 드라이버를 복사하고 프린터를 추가한다.

/b 는 프린터가 추가되는 이름이다. 저기다 모델명을 그대로 적어봤자,

기획자 A가 개발실 프린터로 30분전에 이미 인쇄를 5부나 해놓고선, 회의실 프린터 앞에서 담배 물고 성질을 빡빡 내며 '이놈의 관리자 오기만 해봐라!' 하며 인쇄물과 관리자를 기다리

도록 행동하게 이미 유도한 것이다!

어느 장소에서나 모든 프린터로 인쇄할 수 있도록 설정한 '아름다운' '유비쿼터스' 환경에서, 사용자는 현재 출력하는 위치와물리적으로 가장 가까운 프린터에서 알아서 출력이 되리라고 기대한다. 아직 더욱 아름다운 세상을 구현하지 못한 관리자와 엔지니어의책임이다! 그러니 사용자가 쉽게 알 수 있도록 "개발실 화분 앞 HP 레이져 프린터" "디자이너 C 씨 옆 칼라 프린터 -출력비 비쌈" 등등 사용자 친화적인 이름을 적어두도록 하자.


/y 옵션을 넣어 한줄 더 추가하면 기본 프린터로 설정한다. 옵션 다 빼고 /? 하면 옵션 설명이 나오니 참고하시라. 자세한 설명은 지면상 생략한다.
참고로, 저 줄에 /y 를 추가하면 프린터 추가하면서 자동으로 기본 프린터로 설정될 것 같지만, 옵션 충돌로 실행되지 않는다.


자, 이 배치파일을 드라이버와 함께 압축하여 배포하면 zip 파일을 받아 압축을 풀고, setup.bat 을 실행시키기만 하면 프린터가 알아서 추가된다. 1편보다 클릭이 11번, 텍스트 입력 하나가 줄었다. (주소에 "http://프린터.서버,호스트:631/~~~" 라고 치고 "안됩니다. 고쳐주세요." 하는 분도 꼭 계시다;)


많이 아름다워졌지만, 아직도 "압축파일 어떻게 푸나요?" "어디다 풀어야 해요?" 등등의 질문이 날아올지도 모른다. 그래, 아직 부족한거다. 카스테라인 스퐁지에 생크림을 부드럽게 발라 케익의 모양은 갖췄지만 케익은 데코레이션을 해야 하는 것이다.


사실..




cups + 윈도용 프린터 드라이버 자동 인스톨러 #3 - Inno Setup 으로 자동화


Posted by Arcy

2006/09/06 23:21 2006/09/06 23:21
, ,
Response
No Trackback , No Comment
RSS :
http://arcy.org/tc/rss/response/10

Trackback URL : http://arcy.org/tc/trackback/10

Linux 도 프린터 서버로 쓰기 좋다. 사무실 안에 노는 Linux 머신이 있다면 프린터 서버로 돌려보자.


먼저 리눅스에서 프린터 잡기.

패러럴 포트라면 그냥 꽂으면 되고, USB 라도 일반 배포판 커널은 보통 잘 잡힌다.

혹시 없다면: 커널 옵션에서 USB, USB Printing 을 켜고 커널을 다시 컴파일해줘야 한다.

USB 경우 잘 잡히면 lsusb 에서 바로 보인다.

# lsusb
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 002: ID 03f0:0f17 Hewlett-Packard
Bus 001 Device 001: ID 0000:0000

이건 USB 가 잡힌거다. USB printer 는 usblp 로 잡힌다. 디바이스는 /dev/usb/lpX
dmesg 에서 커널 메시지를 확인한다.

drivers/usb/class/usblp.c: usblp0: USB Bidirectional printer dev 2 if 0 alt 1 proto 2 vid 0x03F0 pid 0x0F17
usbcore: registered new driver usblp
drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver


프린터 데몬을 준비한다. 요즘 어디나 쓰이는 cups. samba 가 없어도 기종별 호환에 문제가 없다.

깔려 있지 않다면 새로 깐다.

레드햇계열이면 (Fedora, RHEL, Centos, 등등. 아 친절하다. -_-)

# yum install cups


데비안계열이면 (Ubuntu 포함이다;;)

# apt-get install cups


젠투면 알아서.. (젠투 안좋아한다.)


설치 후 cupsd.conf 를 수정하여 지금 쓰는 컴퓨터에서 어드민이 가능하게 한다.

기본으로 127.0.0.1, 로컬 접속에서는 다 되게 되어 있지만, 다른 컴퓨터에서 원격으로 설정중이라면 이걸 켜줘야 한다. * 의 와일드카드도 먹힌다.

cupsd.conf

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 내.아.이.피
Allow From 내.아이.피.*
</Location>


설정이 준비되면 cupsd 를 기동한다.

그리고 http://프린터서버호스트혹은아이피:631/admin 으로 접속해서 화면이 나오면 일단 cupsd 는 뜬거다.


그럼 프린터를 추가하자. 아래의 Add Printer 를 누른다.


이름과 위치, 설명을 대충 넣고 (한글은 웬만함 쓰지 말자. -_- Linux 는 아직 i18n 과 안친하다.) Continue 를 누르면 포트를 고른다.


USB 는 친절하게 현재 연결된 모델명까지 떠준다. 포트 고르고 벤더와 기종을 대충 고른다.

Windows 에서 자체 드라이버를 사용하는 경우라면, Raw 에서 Raw Queue 를 선택해야 한다. 그렇지 않으면 프린터 종류에 따라 추가할 때 혹은 등록정보를 볼 때 spool (spoolsv.exe) 가 CPU 를 전부 다 먹고 freezing 되는 일이 발생한다!




프린터가 여러대라면 여러대의 프린터를 class 로 묶에 관리할 수도 있다. 하지만 프린터 한대만 쓴다면 이정도면 충분하다.

이 프린터의 위치는 http://프린터서버아이피혹은호스트:631/printers/MyPrinter1 이 된다.
그래, 저 위에서 Manage Printers 를 눌러 프린터를 눌렀을때 주소창에 뜨는 바로 그거다! 같은 주소로 웹 매니지먼트랑 프린팅이 다 되는거다.

스태터스가 Online, idle 이 맞는지 확인한다. 빨간색이고 뭔가 잘못됐다면 알아서 트러블슈팅!


자, 클라이언트 윈도 XP 에선 이렇게 잡는다. 프린터 추가..



이 다음은 윈도에서 일반 프린터 설정과 마찬가지다. 벤더 고르고 드라이버 고르고.. 최신 프린터라 목록에 없다면 받은 드라이버로 설치한다.

테스트페이지를 출력해봐서 인쇄가 잘 된다면 그럭저럭 잘 된거다. cupsd.conf 에서 해당 프린터를 사용할 수 있는 아이피 대역을 지정해준다.

<Location /printers/MyPrinter1>
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 프린터쓸.사람들.아이피들.*
</Location>

서비스를 재시작해서 conf 파일을 읽어야 하는 것을 잊지 말자.

자 만일,
  1. 뭐 나 혼자 쓸거라거나..
  2. 시간이 아주 많거나..
  3. 사람들 컴퓨터 하나하나 설정해주는거 좋아한다거나..
  4. 평소에 마음에 들어하던 총무과 아가씨 컴퓨터에서 거들먹거리며 프린터를 잡아주고, "커피 한잔 사세요. ^^" 라고 하고 싶다면
여기까지 충분하다.

하지만 위와 같이 아주 친절한 메뉴얼을 적는다고, "저 첫 화면은 어디서 불러와요?" "시작 버튼이 안보여요!" 라는 등의 질문이 들어오지 않기를 바란다면 사용자를 너무 무시해주신 결과 되겠다. 진정 게으른 관리자는 인간 우선적 설계는 사용자의 클릭 한번이라도 줄여서 -> 사용자의 실수를 미리 방지해 -> 내 시간을 확보해야 사용자의 편의를 고려해야 하는 것이다.



cups + 윈도용 프린터 드라이버 자동 인스톨러 #2 - 프린터 설치 스크립트

Posted by Arcy

2006/09/06 13:41 2006/09/06 13:41
, , ,
Response
No Trackback , No Comment
RSS :
http://arcy.org/tc/rss/response/9

Trackback URL : http://arcy.org/tc/trackback/9


블로그 이미지

- Arcy

Notices

Archives

Authors

  1. Arcy

Calendar

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

Site Stats

Total hits:
77640
Today:
14
Yesterday:
96