Linux Gazette #26 번역:권순선, 오태호, 강준명(posLUG(포항공대 리눅스 사용자 모임)) 집안에서/사무실에서 네트워크 구축하기 글쓴이: Tom Kunz 순서: 이 글의 범위 시작하기 전에-네트워크를 일단은 작동하게 만들어야! 지역 네트워크 설정하기 diald 설치하기 pppd 설치하기 커널 설정 IP Forwarding 방화벽 설정하기 pppd 설정하기 diald 설정하기 타임아웃 등의 선택사항 설정하기 응용프로그램들 결론 이 글의 범위 이 글은 Linux Gazette나 Linux Journal에서 예전에 다루어졌던 주제들이 될 것 같군요. 만약 여러분이 두 대 이상의 컴퓨터를 가지고 있다고 합시 다. 아마 집에 컴퓨터가 두 대 이상 있을 수도 있겠고, 사무실에서 여러 대 의 컴퓨터를 가지고 있을 수도 있겠지요. 그리고 그중 한 대를 다른 것들 의 '게이트웨이'로 사용하고 싶다 이겁니다. 만약 ISP(인터넷 서비스 제공 자)측에서 요금을 5분이나 10분 또는 15분 단위로 부과한다고 가정하면, 여러분은 ISP에 과다한 요금을 지불하고 싶진 않을 겁니다. 또 여러분은 아무 것도 안 하면서 그저 인터넷에 연결되어 있다는 것을 잊어버리는 일 이 생기는 것을 바라지 않겠죠. 요금이 시간별로 부과되니까요. 그러니 여 러분이 원하는 것은 여러분의 지역 네트워크를 인터넷에 쉽게 접속하고, 접속을 해제할 수 있도록 하여 최소한의 비용만을 지불하도록 하는 것입니 다. 이렇게 하려면 demand-dialing, IP forwarding, IP Masquerading, PPP 설정과 네트워킹의 기초를 숙지하고 있어야 합니다. 필요한 게 좀 많은 것 처럼 들릴지도 모르겠는데......이 기능들의 확장성과 강력함을 한번 둘러보 는 것도 나쁘진 않겠죠. 주의하실 것은, 제가 이 글에서 인터넷 게이트웨이를 리눅스로 어떻게 설 정할 수 있는가를 얘기할 때, 여러분의 네트워크에 존재하는 모든 컴퓨터 가 리눅스로 돌아가야 한다는 것은 아니라는 겁니다. 게이트웨이 역할을 하는 한 대의 컴퓨터에만 리눅스를 설치하고, 나머지는 다른 플랫폼으로 사용해도 됩니다. TCP/IP를 지원하는 시스템이면 어떤 것도 괜찮습니다. 도스와 매킨토시, 윈도우즈95, 유닉스 워크스테이션 등 어떤 종류의 운영체 제가 섞여 있더라도 제가 말씀드리는 이 방법을 적용할 수 있습니다. 이 방법으로 네트워크를 구성하는 것은 꽤 쓸만합니다. 만약 웹브라우저가 많이 사용되는 환경의 네트워크라면 이런 종류의 네트워크는 이상적인 네 트워크라고 할 수 있습니다. 웹브라우저의 경우 TCP/IP 접속을 행하면서 몇 초 동안만을 접속에 이용합니다. 누군가가 웹페이지를 읽고 있을 때에 는 브라우저는 네트워크 트래픽을 발생시키지 않으며, 접속이 없는 상태가 되고, 다른 사람이 사용되지 않고 있는 대역폭을 딴 곳에 이용할 수 있는 여지가 생기게 됩니다. 여기서 말씀드리는 방식으로 네트워크를 구성하는 또다른 이유는 사용자들이, 꼭 필요한 전화 회선을 오랜 시간동안 인터넷 을 이용하는데 붙잡고 있지 않게 하기 위해서입니다. 최근에 저는 작은 사 무실에 네트워크를 구축해준 일이 있는데 그 사무실 사람들은 종종 자기 책상 위의 전화를 써서 인터넷에 접속하더군요. 그 전화중 절반은 그렇게 인터넷 접속에 사용되고 나머지 절반 정도가 다른 곳에서 걸려오는 전화를 받는데 사용되고 있었습니다. 그런데 제가 말씀드리는 이 방법을 적용한 뒤로는 단지 한 개의 전화회선만이 인터넷 접속에 이용되었고, 모든 사람 들이 자유롭게 자기 책상에서 전화를 받으며 인터넷을 이용할 수 있게 되 었습니다. 제가 어떻게 했는지 설명하기 위해서, 우선 레드햇 4.2를 모두 설치한 다음 단계부터 해보기로 하지요. 제 생각에는 레드햇 5.0도 그다지 크게 다른 것 같지는 않았고요, 이런 방법을 슬랙웨어 3.3에서 어떻게 적용하는 가에 대 해서도 글 사이사이에 다루겠습니다. 시작하기 전에-네트워크를 일단은 작동하게 만들어야! 무엇보다도 우선적이고 중요한 것은 지역 네트워크를 구축하기 전에 필요 한 문서들을 한번 읽어보시는 것이라고 여러분들께 추천하고 싶습니다. 다 음과 같은 문서가 있습니다. The Linux Network Administrator's Guide Linux System Administrator's Guide NET-3 HOWTO Ethernet HOWTO 다이얼업 게이트웨이를 이용해서 집안이나 사무실에서 네트워크를 구성하 기 위해서는 우선 지역 네트워크(LAN)가 제대로 작동해야 합니다. 저는 방금 제가 말씀드린 위의 문서들을 여러분이 실제로 네트워크 설정을 하기 전에 한번 차근차근 읽어보기를 권장합니다. 여러분이 사용하는 이더넷 카 드의 정확한 모델명은 여기서 중요한 것이 아닙니다.(역자 주:Ethernet HOWTO는 리눅스에서 이더넷 카드를 어떻게 사용할 것인가에 관한 주제 이다.) 그렇지만 만약 누군가가 제게 물으면 ISA 방식의 카드를 권장하겠 습니다. ISA 방식의 카드들은 오래 전부터 리눅스에서 잘 지원이 되어 왔 기 때문입니다. 제가 개인적으로 좋아하는 기종은 SMC/WD 80*3 모델입 니다. 그렇지만 모든 오래된 ISA 네트워크 카드들도 다 잘 돌아갑니다. 어 쨌든 여러분의 네트워크를 돌아가게 하기 위해서는 말씀드렸던 저 문서들 을 자세히 읽어보시기를 권장합니다. 지역 네트워크(LAN) 설정하기 앞으로 여러분의 네트워크에서 리눅스를 설치해두고, 모뎀을 장착하여 외 부 네트워크와 여러분의 지역 네트워크(LAN)를 연결해주는 머신을 '리눅 스 게이트웨이' 또는 '게이트웨이'라고 부르겠습니다. 조그만 사무실이나 집에서 구축하는 네트워크는 일반적으로 등록된 도메인 을 사용하지 않는 경우가 많죠. 만약 여러분이 IP 어드레스를 할당받아 등 록되어 있는 도메인(역자 주: 인터넷에서 직접 사용할 수 있는 도메인을 지칭한다. 같은 IP 어드레스라도 외부에서 인식하지 못하는 주소가 있다.) 을 이용해서 네트워크를 구성한다면 여러분은 InterNIC에서 할당받은 그 IP 어드레스 주소들을 가지고 네트워크를 설정해야 합니다. 제가 하는 말 이 무슨 얘긴지 잘 모르시는 분은 사적으로 사용하기 위해 예약되어 있는 주소들을 이용하면 됩니다. 이 글에서는 192.168.1.0의 주소를 가지는 네트 워크를 이용하겠습니다. 이 주소는 미리 예약되어 있기 때문에 이 주소대 의 네트워크에서 나오는 패킷들은 다른 인터넷의 어떤 패킷과도 충돌이 일 어나지 않습니다. 왜냐하면 이 주소대로 향하게 되어 있는 패킷들은 모두 라우터에 의해서 무시되기 때문이죠. 일단 여러분이 미리 예약되어 있는 IP 어드레스 블럭을 선택하고 나면 하 드웨어를 적절히 설정하고 각각의 소프트웨어도 적절히 설정해 주어야 합 니다. 저는 게이트웨이의 주소를 '.1'로 맞추라고 말씀드리고 싶군요. 물론 꼭 이렇게 해야 한다는 법은 없습니다만, 이렇게 하면 외우기도 쉽고 대부 분 게이트웨이의 주소는 이런 방식으로 붙이고 있습니다. 만약 192.168.1.0 대의 주소를 여러분의 네트워크로 이용한다면 192.168.1.1이 게이트웨이의 주소가 되겠죠. 그러면 네트워크의 다른 시스템들의 IP 어드레스는 192.168.1.2 부터 192.168.1.254 까지 쓸수 있죠. 어떤 시스템 관리자들은 네 임서버의 주소를 .254로 맞추기를 좋아합니다만 만약 여러분의 네트워크에 연결된 시스템이 그다지 많지 않다면 네임서버 설정까지 해줄 필요는 없을 것입니다. 도메인 네임 때문에 그렇게 오랫동안 고민할 필요는 없을 것입니다. 그저 기억하기 쉽게 정해주면 되는 것이죠. 물론 다른 '등록된' 도메인네임과 중 복되서는 안된다는것 정도는 잘 알고 계시겠죠. 다른 곳에서 이용되지 않 을 것 같은 도메인네임을 사용하시면 됩니다. 저같은 경우 'kunz.home' 라 는 도메인네임을 이용하고 있습니다. home 라는 도메인은 아시다시피 다 른 어떤 곳에서도 이용되지 않고 있으니까 문제가 없죠. 만약 ACME 주식 회사의 사무실에서 네트워크를 구축할땐 'acme.office' 로 하면 되겠죠. office 라는 도메인도 충돌이 일어날 염려가 없으니까요.(역자 주: 도메인네 임을 정할 때 어차피 정식으로 등록된 IP 어드레스를 이용하는 것이 아니 기 때문에 아무 이름이나 붙여주어도 문제가 없다.) 리눅스에서의 네트워크 설정은 설치 시에, 또는 설치가 끝난 후에도 해줄 수 있습니다. 만약 여러분이 리눅스 게이트웨이의 이름을 'linux-gw'라고 하고 싶고, 여러분의 도메인을 'smith.home'라고 해주면 외부의 네트워크와 전혀 문제를 일으키지 않습니다. 192.168.1.0을 네트워크 주소로 해주면 관 련 네트워크 설정은 다음과 같이 해주면 됩니다. Host Name: linux-gw Domain Name: smith.home IP address: 192.168.1.1 Netmask: 255.255.255.0 Broadcast: 192.168.1.255 Default Gateway: Primary Nameserver:(여러분의 ISP가 제공하는 네임서버의 주소를 적으면 됩니다.) Secondary Nameserver:(여러분의 ISP가 제공하는 네임서버가 문제가 생겼 을 경우 이용할 네임서버로서, 알고 있는 네임서버가 있다면 적어줍니다. 물론 대부분, Primary Nameserver 만 지정해 두어도 상관없습니다.) 주의할 것은 Default Gateway 항목을 비워 두어야 한다는 것입니다! 라우 팅 테이블이 diald에 의해서 수정될 것이기 때문이죠. 이 이야기는 조금 있 다 하겠습니다. 'linux-gw'에서는 /etc/hosts 파일을 만들거나 편집해야 합니다. 이 파일은 여러분의 네트워크에 물려 있는 모든 시스템의 IP어드레스와 이름을 포함 하고 있어야 하는데 만약 여러분의 네트워크에 4대의 시스템이 물려 있다 고 가정했을 때 /etc/hosts 파일은 다음과 같이 구성할 수 있을 것입니다. 127.0.0.1 localhost localhost.localdomain 192.168.1.1 linux-gw.smith.home linux-gw 192.168.1.2 winchester.smith.home winchester 192.168.1.3 ruger.smith.home ruger 192.168.1.4 browning.smith.home browning 192.168.1.5 mossberg.smith.home mossberg 이렇게 하면 리눅스 게이트웨이가 여러분의 네트워크에 물려있는 모든 시 스템의 이름을 알 수 있게 됩니다. 이 작업은 여러분의 네트워크에 물려있 는 다른 유닉스 워크스테이션이나 리눅스 시스템에서도 똑같이 행해져야 합니다. 슬랙웨어에서는 이 파일을 직접 편집하면 되고 레드햇의 경우는 netcfg 명령을 이용해서 Host 항목을 고쳐도 됩니다. 여러분의 네트워크에 물려 있는 다른 시스템들의 네트워크 항목은 다음과 같이 설정해 주어야 할 것입니다. 서로 다른 시스템이 같은 IP 어드레스를 가지지 않도록 주의하십시오! 다음 예는 'smoth.home' 네트워크의 'winchester' 라는 이름을 가지고 있는 시스템의 설정을 나타낸 것입니다. Host Name: winchester Domain Name: smith.home IP address: 192.168.1.2 Netmask: 255.255.255.0 Broadcast: 192.168.1.255 Default Gateway: 192.168.1.1 Primary Nameserver:(여러분의 ISP가 제공하는 네임서버의 주소를 적으면 됩니다.) Secondary Nameserver:(여러분의 ISP가 제공하는 네임서버가 문제가 생겼 을 경우 이용할 네임서버로서, 알고 있는 네임서버가 있다면 적어줍니다. 물론 대부분, Primary Nameserver 만 지정해 두어도 상관없습니다.) 보시다시피 게이트웨이(linux-gw)에서의 설정과 차이가 나는 것은 기본 게 이트웨이 항목입니다. 네트워크에 있는 시스템이 패킷을 바깥으로 내보낼 때 그 패킷은 리눅스 게이트웨이인 192.168.1.1 을 통해서 보내고 싶다는 얘기죠. 여러분의 네트워크의 다른 시스템들도 마찬가지로 설정해 주면 됩 니다. 다른 것은 Host Name 부분과 IP address 뿐이죠. TCP/IP 를 지원 하는 시스템이라면 모두 위의 항목을 나름대로의 방법으로 설정해줄 수 있 습니다.(역자 주: 윈도우즈의 경우 제어판에서 네트워크 항목을 설정하면 된다.) 만약 여러분이 게이트웨이에 슬랙웨어 리눅스를 설치한 후 게이트웨이를 설정해주고자 할 때는 netconfig 프로그램을 실행하면 네트워크 항목을 설 정해줄 수 있습니다. 차근차근 하나씩 설정해주면 됩니다. 레드햇 리눅스의 경우 엑스 윈도우를 띄운 상태에서 netcfg 프로그램을 실행하면 되겠습니 다. control-panel 을 실행해도 같은 프로그램을 호출할 수 있으니 편리합 니다. 여기까지 읽어 내려오신 분이라면 이제 네트워크를 동작 가능하게 해 두셨 을 것입니다. 각각의 시스템에서 리눅스 게이트웨이로 텔넷 접속이 될 수 있을 겁니다. diald 설치하기 자동으로 전화를 걸 수 있도록 하기 위해서 diald 라는 프로그램을 사용합 니다. 이 프로그램을 사용하기 위해서는 우선, 여러분의 모뎀이 잘 작동해 야 하고 리눅스에서 제대로 인식이 되어 있어야 합니다. 만약 그렇지 않다 면 설치 관련 문서를 참고하시거나 관련 홈페이지를 찾아보세요. 일단 모뎀이 잘 작동하고, 리눅스에서 제대로 인식된 후에는 diald 를 설정 하면 됩니다. 한가지 알려드릴 것은, 제 경우 외장형 모뎀이나 PNP 기능이 없는 모뎀을 사용하니까 문제가 거의 없더군요. 요즘은 PNP기능이 없는 모뎀을 사기가 쉽지 않은데 꼭 PNP모뎀을 사용해야 한다면 isapnptools 프로그램을 이용해서 PNP 설정을 해주시면 됩니다. 첫번째로, diald 를 구해서 설치하십시오. 이미 설치가 되어있지 않다면 ftp://sunsite.unc.edu 에서 소스코드를 구하실 수 있습니다. 레드햇 리눅스 를 가지고 있다면 정식 레드햇 4.2 시디롬의 /[시디롬이 마운트된 디렉토 리]/RHSCont/i386/diald-0.16-3.i386.rpm 파일을 설치하셔도 됩니다.(역자 주: ftp://ftp.kreonet.re.kr/pub/Linux/redhat/contrib/i386 에서도 구할 수 있 다.) 같은 디렉토리에 diald-config-0.1-1.i386.rpm 도 있는데 이것도 함께 설치해 주시면 좋습니다. 왜냐하면 이 패키지에는 유용한 설정 파일들이 들어 있기 때문이죠. 레드햇 5.0의 경우 레드햇 사에서 구입한 두장짜리 시 디롬에 패키지가 들어 있지 않았습니다만 ftp://sunsite.unc.edu에서 쉽게 최신 버전을 구할 수 있습니다. 슬랙웨어의 경우도 마찬가지입니다. http://sunsite.unc.edu/pub/Linux/system/network/serial 에서 쉽게 구할 수 있습니다. pppd 설치하기 diald 를 설치하셨다면 pppd 를 설치하여야 합니다. 이 패키지는 슬랙웨어/ 레드햇 모두 설치시에 기본적으로 제공됩니다. 만약 설치시에 '모두 설치' 를 선택하셨다면 설치가 되었을 것이고 리눅스 설치시에 이 패키지를 빼고 설치하셨다면 시디롬에서 찾아보시면 됩니다. 레드햇 4.2 시디롬의 경우 RPMS 디렉톹리에 ppp 로 시작하는 파일이 있고, 슬랙웨어의 경우 slakware 아래의 N3 디렉토리쯤에 ppp.tgz 가 있습니다. 이 패키지 역시 ftp://sunsite.unc.edu 에서 소스코드를 얻을 수 있습니다. 커널 설정 이제 diald 와 pppd 를 시스템에 설치하셨겠죠? 그렇지만 IP Masquerading 이 지원되지 않는 상태일 것입니다. 이런 방식으로 네트워 크를 구성할 때는 꼭 필요한 옵션이므로 꼭 지원해 주도록 하여야 합니다. 만약 여러분이 레드햇 리눅스 5.0 을 사용하신다면 괜찮습니다. 왜냐하면 모든 기능들이 모듈로 컴파일되어 있기 때문에 커널 모듈 프로그램이 필요 할 때 자동으로 해당 모듈을 커널에서 사용할 수 있도록 해주기 때문입니 다. /etc/sysconfig/network 파일을 제대로 고치셨다면 문제없이 이용하실 수 있습니다.(아래의 '방화벽 설정하기' 부분을 읽어보시면 됩니다.) 만약 슬랙웨어 리눅스를 설치하였고, 커널 소스까지 함께 설치하셨다면 커널을 다시 컴파일해 주어야 합니다. 커널 소스가 없으면 역시 ftp://sunsite.unc.edu에서 커널 소스를 받아오셔도 됩니다. 받아오신 커널 소스를 /usr/src 디렉토리 아래에서 압축을 풀고 다음과 같 이 해주시면 됩니다. 1. cd /usr/src/linux 2. 엑스 윈도우를 사용하시면 make xconfig 라고 하시고 그 외에는 그냥 make config 라고 하시면 됩니다. 3. Networking Options 항목에서 다음 항목에 Y를 해주셔야 합니다. Network firewalls TCP/IP networking IP: forwarding/gatewaying IP: firewalling IP: masquerading IP: ICMP masquerading 4. logging/accounting 항목에서는 Y를 해주실 필요가 없다는 것을 알아두 세요. 대부분의 사용자들은 이 기능은 별 필요가 없을 겁니다. 이게 무슨 기능인지 정확하게 알고 있는 사용자만 이 기능을 이용하세요. 이 글에서 이 기능에 대한 얘기까지는 다루지 않겠습니다. 5. 모든 설정이 끝난 후에는 make xconfig 를 했을 경우 Save & Exit 버 튼을 눌러 설정을 마치시면 됩니다. 커널 컴파일에 대해서 좀더 자세히 알 고싶은 분들은 홈페이지 등을 참고하십시오. 6. 커널 설정이 제대로 된 것 같으면 그 다음으로 make dep; make clean; make zlilo 명령을 내리시면 됩니다. 모듈 지원을 선택하셨다면 make modules; make modules_install 명령도 make zlilo 가 끝난 후에 내려 주 시면 됩니다. make zlilo 명령에서 커널이 너무 크다고 나오면 make bzlilo 하시면 됩니다. 7. 이전의 단계를 마무리하셨다면 시스템을 다시 부팅하여 새로운 커널을 이용하시면 됩니다. 커널 컴파일이 제대로 되었다면 여러분의 커널은 IP forwarding/masquerading 기능이 포함된 커널이 될 것입니다!(역자 주: 커 널 컴파일은 오랜 시간을 요하며 쉽게 끝나는 작업이 아니다. 커널 컴파일 을 해보지 않았다면 이 문서의 내용만으로는 너무 불충분하니 다른 참고 문헌을 좀더 읽어보기 바란다. 리눅스 커널 하우투를 읽어보는 것도 괜찮 을 것이다. http://kldp.linux-kr.org 또는 http://www.postech.ac.kr/~cessi/ 에서 한글로 번역된 리눅스 커널 하우투를 구할 수 있다.) IP Forwarding 방화벽 설정하기 그 다음 단계는 IP forwarding 을 설정하는 것입니다. IP forwarding 은 매우 복잡한 일이 될 수도 있는데, 그저 인터넷으로의 방화벽과 게이트웨 이 정도로만 사용하고자 한다면, 이더넷 네트워크의 패킷을 ppp 인터페이 스로 포워딩해줄 수 있도록 만 해주면 되므로 그다지 어렵지 않습니다. 이렇게 했을 때 보안 문제가 생길 수 있다는 것을 꼭 명심해 두십시오. 보 안에 관한 문서를 좀 읽어보시기를 권장합니다. SATAN 프로그램을 구하 시거나, 보안 전문가에게 문의를 해보시는 것도 좋을 겁니다. 여러분이 근 처에 있는 ISP 로부터 다이얼업 서비스를 받는 상황이라면 대학교로에서 다이얼업 서비스를 받는 것보다는 해킹당할 위험이 좀 더 낮을 것입니다. 대학생들이 모두 악의를 가진 해커인 것은 아니지만 보통의 윈도그95 사용 자들보다는 호기심들이 강하기 때문에 보안상 위험한 행동을 감행할 수도 있기 때문이죠. 제 글을 성경처럼 믿진 마시고 보안 문제에 관해서는 스스 로 알아보시는 것이 좋습니다. ipfwadm 패키지를 우선 설치하십시오. 이미 이 패키지를 설치하였고, 커널 역시 패킷 포워딩을 지원한다면 준비가 된 것입니다. 다음 단계로 넘어가 시면 되죠. 만약 레드햇을 사용하신다면 이 패키지는 RPMS 디렉토리에 있습니다. /etc/sysconfig/network 파일을 편집하는 것도 잊지 마십시오. FORWARD_IPV4 라고 적혀 있는 줄을 FORWARD_IPV4=true 로 바꾸어 주십시오. 슬랙웨어의 경우 기본 TCP/IP 패키지에 이 프로그램이 들어가 있습니다. 여러분이 TCP/IP 패키지를 설치하셨다면 ipfwadm 프로그램도 함께 설치하신 겁니다. 물론 필요하다면 소스 코드도 구할 수 있구요. 일단 이 패키지를 설치하신 후에는 사용법을 익혀야겠죠. 여러분의 네트워 크를 얼마나 안전하게 보호할 것인가에 따라서 여기 제가 말씀드리는 내용 을 조금씩 바꾸어서 적용하셔야 합니다. 할 일은 다음과 같습니다. 이전의 방화벽과 패킷 포워딩에 관련된 테이블을 우선 모두 초기화하고 패킷을 거 부위주로 설정할 것인지, 허가위주로 설정할 것인지에 대한 기본적인 방침 을 세운 후에 다른 네트워크 인터페이스 사이에 어떻게 패킷을 포워딩할 것인가에 대해서 설정해 주어야 합니다. 예를 들면 다음 스크립트는 모든 포워딩 룰을 날려 버리고 기본적으로 모든 패킷을 허가하도록 해 줍니다. #!/bin/sh ipfwadm -F -f ipfwadm -F -p accept ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 ipfwadm -F -l -n 명령을 주면 IP 포워딩 룰을 확인할 수 있습니다. 만약 실행한다면 다음과 같이 되겠죠. IP firewall forward rules, default policy: accept type prot source destination ports acc/m all 192.168.1.0/24 0.0.0.0/0 n/a 이것은 우리 쪽의 네트워크에서 나와서 우리 쪽의 네트워크가 아닌 다른 곳으로 나가고자 하는 모든 패킷을 포워딩해 준다는 뜻입니다. 만약 방금 실행했던 명령에 -e 옵션을 붙여서 실행하면 좀더 자세히 볼 수 있습니다. 예를 들면 다음과 같이 출력되죠. 단, 132글자를 한 화면에 나타낼 수가 없 기 때문에 출력이 좀 엉킬 수 있습니다. IP firewall forward rules, default policy: accept pkts bytes type prot opt tosa tosx ifname ifaddress source destination ports 113 9452 acc/m all ---- 0xFF 0x00 any any 192.168.1.0/24 anywhere n/a 따라서 우리는 IP 포워딩이 아무리 복잡하더라도 간단한 스크립트를 작성 하여 포워딩 방화벽을 만들어줄 수 있게 되었습니다. ipfwadm의 매뉴얼 페이지를 읽어보면 -W 옵션이 쓰여 있을 것입니다. 일 반적으로 그다지 복잡하지 않고, 내부 네트워크 사용자를 믿을 수 있는 환 경이라면 -W 옵션을 필요하지 않습니다. 왜냐하면 여러분들은 모든 인터 페이스에서 모든 패킷을 다 볼 수 있도록 하고 싶어할 것이기 때문이죠. 그렇지만 어떤 특정한 인터페이스에서는 패킷을 받지 못하게 하고 싶을 때 는 -W 옵션을 보안상 사용해야 할지도 모릅니다. pppd 설정하기 우리가 해야 되는 첫 번째 것은 pppd 를 설정하는 것입니다. 왜냐하면, 그 것은 diald 보다 더 시험해 보기가 쉽기 때문입니다. 이것을 하기 위해서 우리는 ISP와 연결을 설치해주는 chat 스크립트를 작성하기를 원한다. 여 러분은 처음에 "chat" 을 위한 맨 페이지(man page)를 읽어보는 것이 좋습 니다. 여기에 제가 사용하는 chat 스크립트의 한 예가 있습니다. REPORT CONNECT ABORT BUSY '' atdt5551212 CONNECT '' :tkunz : PaSsWoRd action ppp 맨 페이지로부터 : 이 결과는 아무런 것도 예상되어지지 않을 것이다. 그리고 그런 다음 문자 열 ATDT5551212를 전화를 걸기 위해 보낸다. 예상되는 문자열은 CONNECT이다. 그 문자열 CONNECT가 온다면, 나머지 스크립트가 실행 되어진다. 그리고 그 프로그램은 접속률과 같은 것을 문자열 "CONNECT" 와 같이 파일에 쓸 것이다. 처음에, 그 스크립트는 다이얼업에 무슨 잘못이 있는지를 진단하기 위해서 나중에 분석되어지기 위한 보고 파일에 CONNECT 이후에 모뎀이 되돌려 주는 것을 보고할 것입니다. ABORT 라는 문자열이나 모뎀이 되돌려준 "BUSY"라는 문자열은 이 스크립트를 취소하라는 뜻입니다. 그 이후 이 스 크립트는 전화번호 555-1212라는 곳에 전화를 겁니다. 원격지로부터 돌아 오는 CONNECT 라는 메시지를 기다립니다. 그런 다음 그것은 콜론(:)을 기다릴 것이고, "tkunz"로 답할 것입니다. 그 다음, 또 다른 콜론(:)을 기다 릴 것이고, "PsSsWoRd"로 답할 것입니다. 문자열 "action"이 원격지로부터 받아질 때, "ppp"라고 답하고, chat 스크립트는 종결됩니다. 그런 다음 chat 은 그것을 불렀던 프로그램으로 돌아갈 것입니다. 그러나 여러분이 "REPORT" 에러를 체크할 필요가 없다면, 여기에 또 다른 괜찮은 스크립 트가 있습니다. 여기서 우리는 busy 신호가 나오는 것은 생각하지 않습니 다. atz OK atdt5551212 CONNECT name: tkunz work: PaSsWoRd action: ppp 이것은 같은 일을 하지만, 처음에 "atz"를 보냄으로써 모뎀을 초기화합니 다. 그리고 단지 콜론을 기다리는 대신에, "tkunz"와 "PaSsWoRd"를 각각 원격지에 보내기 전에 올 "name:"와 "word:"를 기다릴 것입니다. 위의 예와 같은 이러한 한 줄 짜리 간단한 스크립트는 여러분의 ISP에로 의 로그인 과정을 자동화하는데 사용되어질 수 있습니다. pppd 는 연결하기 위해 chat 를 사용합니다. 그런 다음 chat 이 종료될 때, pppd 는 원격지와 통신을 계속하고, 그것의 지역과 원격 IP 주소를 결정합 니다. 그런 다음에 pppd 는 안정적인 연결을 확보하기 위해 다른 명령 옵 션을 따릅니다. 스크립트가 PPP 연결을 시작하는 것처럼 보이게 하는 생각을 여러분에게 주기 위해서 여기에 제가 저의 ISP에 PPP 연결을 성립시키기 위해 주로 사용하는 한가지 예가 있습니다. "startppp"라는 나의 디렉토리에 있는 한 파일의 내용은 #!/bin/sh /usr/sbin/pppd /dev/cua3 115200 connect 'chat -f /etc/ppp/chatscript' defaultroute crtscts proxyarp passive 입니다. 이것은 나의 33.6kbps 모뎀이 115200의 속도를 다룰 수 있고 /dev/cua3(도 스에서는 COM4)에 위치하고 있다고 pppd 에게 알려줍니다. "connect" 매 개변수는 원격 호스트에 pppd를 연결할 명령어로서 다음에 있는 문자열을 사용하도록 알려줍니다. 프로그래머들에게 알림 : pppd 는 "connect" 옵션에 의해 특수화되어진 명 령어의 stdin과 stdout에 그것의 stdin과 stdout을 연결한다. 이것은 chat 가 여러분의 모뎀에서 작동하지 않는다면 알아두면 좋다. PCMCIA 모뎀이 나 몇 개의 비표준 모뎀을 쓰는 경우 모뎀이 작동하지 않을 수 있다. 그래 서 여러분은 "expect" 나 다른 텍스트 유틸리티나 같은 일을 하는 펄 스크 립트를 쓰기를 결정해야만 한다. chat 을 대체하는 것은 단지 원격지와 대 화할 stdin과 stdout을 사용하는 것이 요구된다. 그런 다음 0을 리턴 함으 로써 끝을 낸다. 종결 코드에 관하여 더 상세히 알고 싶다면 "chat" 맨 페 이지를 보는 것을 추천한다. "defaultroute" 라는 옵션은 pppd 에게 그 세 개의 나머지 부분들이 초기 라우트로 더해지도록 하기 위해서 라우팅 테이블을 수정하도록 합니다. "crtscts"라는 옵션은 pppd 가 하드웨어 흐름 제어를 사용하도록 하며 반드 시 9600 baud보다는 빨라야 합니다. "proxyarp"는 ARP 표에 지역과 원격 시스템을 위해 ARP 엔트리를 더하도록 합니다. "passive"라는 옵션은 pppd 가 ISP로부터 LCP 패킷을 받을 때 잠시 기다리도록 합니다. 저는 개 인적으로 몇 개의 다른 ISP에 pppd를 작동하게 하기 위한 "magic ingredient"를 발견했습니다. "startppp"에서 "chat"에 사용된 /etc/ppp/chatscript 파일의 내용은 REPORT CONNECT ABORT BUSY '' atdt5551212 CONNECT '' : tkunz : PaSsWoRd action ppp 입니다. 로그인 네임, 패스워드, /etc/ppp/chatscript 에 있는 알맞은 값을 입력하고 ppp 연결을 시도해서 무슨 일이 일어나는지 살펴보십시오. 여러분은 PPP 연결을 하기 위해서 특별한 옵션들이 있는지 없는지 결정하려면, 여러분의 ISP 에 접촉할 필요가 있을지도 모릅니다. 여러분은 위 스크립트를 시도하 고, 그런 다음에 무슨 일이 일어났는지 살펴보려면 /var/log/messages 파 일을 보면 됩니다. 여러분이 레드햇을 사용한다면 원하는 곳으로 메시지를 출력하기 위해서 /etc/syslog.conf 파일을 수정할 필요가 있습니다. 저는 다 음과 같이 슬랙웨어의 /etc/syslog.conf 파일을 약간 수정했습니다. #/etc/syslog.conf #Very Important! All whitespace are TABs, not " " (space) characters! # *.=info;*.=notice /var/log/messages *.=debug /var/log/debug *.warn /var/log/syslog 이러한 syslog.conf 파일을 만든 후 /var/log/messages, /var/log/debug, /var/log/syslog에 "touch"를 합니다. 그런 다음 syslog를 다시 시작하고, 메시지를 주시하십시오. 가끔씩, 이전 설정을 포기하지 않아서 syslogd가 이상하게 작동할 때도 있습니다. 그래서 여러분은 syslogd를 재시작 하는 것보다 재부팅 하는 것이 더 좋습니다. 일단 여러분이 syslogd를 제대로 고쳤다면, 여러분은 여러분이 "startppp" 를 실행할 동안 다른 창이나, 가상 콘솔로 pppd 의 과정을 지켜볼 수 있습 니다. 루트로 명령 "tail -f/var/log/messages"을 주면 여러분은 /var/log/messages에 출력되는 메시지를 화면으로 볼 수 있을 것입니다. 여러분은 이 스크립트와 명령을 사용하는 것에 의해 시작된 PPP 연결을 얻을 수 있습니다. 저는 여러분이 어떤 특별한 LCP나 IPCP 옵션이 설정하 기에 필요하다면, 여러분의 ISP가 알도록 알려줘야 되다는 것을 알려주고 싶습니다. diald 설정 여러분은 startppp를 실행해서 여러분의 ISP에 PPP 연결을 규칙적으로 초 기화할 수 있었습니다. 여러분은 웹 브라우저나 IP 전송 규칙을 가지고 있 다면 네트워크에 있는 다른 머신으로부터 인터넷상에서 그와 비슷한 다른 것들을 사용할 수 있었습니다. diald 는 전화 수요자로서 만들어졌고, 이것 은 여러분이 지역 네트워크에서 인터넷으로의 연결을 원하는 것을 감지할 때 여러분의 ISP에게 전화를 걸어서, 연결해 줍니다. 우선 알아야 할 것은 우리가 잠시동안 pppd와 chat에 관하여 생각하는 방 법을 바꿔야만 한다는 점입니다. 전에 pppd 설정에 관한 단원의 이전 스크 립트에서 우리는 pppd 를 시작했어야만 했습니다. 그런 다음 "connect"명 령을 보내야 했습니다. 그후, pppd 는 우리가 명령어를 입력하는 옵션에 따라서 다르게 실행됩니다. diald 에서 우리는 pppd 가 이전에 다루었던 많 은 상세한 것들을 다루고 있다는 것을 인식해야 됩니다. 이러한 상세한 내 용은 정상적으로 pppd 에서 지나갔던 다이얼업 스크립트와 옵션들을 포함 하고 있습니다. pppd 가 아니라 diald 가 이런 것을 수행합니다. diald 가 하는 것은 가상 인터페이스 sl0을 만드는 것입니다. 그러나 이것 은 slip 인터페이스가 없습니다. 우리는 sl0에 192.168.0.1이라는 IP 주소를 할당하고, 위조의 slip 인터페이스의 원격 목적지에 192.168.0.2를 할당합니 다. 그런 다음, 그것은 지역 네트워크에서 예기치 않은 곳으로 트래픽이 있 을 때 sl0으로 들어갑니다. diald 가 sl0에 복사된 패킷들을 발견했을 때 그 패킷들이 인터넷으로 가야 되고 전화 걸기 과정을 시작해야 한다는 것을 알게 됩니다. 그러므로, 네트워크 상의 머신들 중의 하나에 의해 발생된 패 킷은 리눅스 게이트웨이로 들어갈 것입니다. IP 전송 구조 장치는 만약에 그것들이 지역 네트워크만을 위해 만들어지지 않았다면, sl0 인터페이스에 그것들을 복사할 것입니다. 그런 다음 diald 는 임무를 완수하고, 링크를 만들기 위해 전화 걸기 과정과 pppd를 시작할 것입니다. diald 의 예들의 맨 페이지는 여러분이 diald를 설치했을 때 여러분의 시스 템에 설치 됐을 것입니다. 만약에 여러분이 그것들을 읽는다면 아마 그 맨 페이지에서 여러분 자신만의 상황을 발견할 것입니다. 그러나 여러분의 대 부분이 그것이 아마도 "A Leaf Node with Dynamic Local Address using PPP"라 이름지어진 단락과 같다는 것을 알 수 있을 것입니다. 다음 예는 이 상황을 위한 diald 예제 5번에 있는 것을 적은 것입니다. mode ppp connect /etc/diald/connect device /dev/ttyS1 speed 115200 modem lock crtscts local 192.168.0.1 remote 192.168.0.2 dynamic defaultroute include /usr/lib/diald/standard.filter 시작하기 위해서는 위와 같은 /etc/diald.conf 파일이 있어야 됩니다. 우리 는 여기에 여러가지 옵션들을 추가시킬 것입니다. diald 는 route, ifconfig, pppd 의 외부프로그램 이 필요합니다. pppd, ifconfig, route 의 초기 경로 는 다음과 같습니다. /usr/sbin/pppd /sbin/ifconfig /sbin/route 만약에 어떤 이유로 프로그램이 위와 같은 경로에 설치되지 않았다면 링크 를 해 주거나 옮겨주기 바랍니다. 이제 /etc/diald.conf 파일을 고쳐 봅시다. 우리는 "pppd 설정하기"에서 chat 스크립트를 만들었습니다. 이것을 이용해 우리는 "connect ...", "device ...", "speed ..."를 여러분이 원하는 대로 수정할 것입니다. 만약에 여러분이 저 의 "pppd 설정하기"를 정확히 했고 저같이 33.6kbps 모뎀이 COM4에 있다 면 다음과 같은 dial.conf를 얻을 수 있을 것입니다. mode ppp connect "chat -f /etc/ppp/chatscript" device /dev/cua3 speed 115200 modem lock crtscts local 192.168.0.1 remote 192.168.0.2 dynamic defaultroute include /usr/lib/diald/standard.filter 만약에 여러분이 28.8kbps, 33.6kbps, 56kbps 모뎀을 사용한다면 "speed ..." 부분을 잘 보기 바랍니다. 만약에 여러분이 14.4kbps 모뎀을 사용한다면 여러분은 "speed 57600"과 같이 적어야 됩니다. 또한 COM 포트도 잘 설정 했는지 확인해야 됩니다. 도스에서의 COM 포트는 1부터 시작하고 유닉스 에서는 0부터 시작합니다. diald.conf 파일에 있는 여러 가지 옵션들은 보통 pppd 에도 있는 것들입니 다. diald 의 맨 페이지에 의하면 이런 옵션들을 pppd에 직접 사용하지 말 라고 되어 있습니다. "startppp" 스크립트에서 우리는 "... defaultroute crtscts proxyarp passive" 등의 옵션을 사용했었습니다. 하지만 이번에는 pppd 대신에 diald가 대신 그것을 해석합니다. 그러므로 우리는 아래와 같 은 diald.conf 를 얻을 수 있습니다. mode ppp connect "chat -f /etc/ppp/chatscript" device /dev/cua3 speed 115200 modem lock crtscts local 192.168.0.1 remote 192.168.0.2 dynamic defaultroute proxyarp include /usr/lib/diald/standard.filter 만약에 ISP에 정상적으로 연결하기 위해 "passive"옵션을 pppd 에서 사용 한다면 우리는 위에 다음과 같은 것을 넣을 수 있습니다. pppd-options passive 위와 같이 diald.conf 를 설정하면 정상적으로 ISP 에 연결할 수 있을 것입 니다. 만약에 잘 되지 않는다면 ISP 에 문의해 보기 바랍니다. 여기서 여러분은 /var/log/messages 파일을 확인해 봐야 됩니다. diald 가 시작된 다음 여러분은 인터넷을 통해 다른 곳으로 패킷을 보낼 수 있어야 됩니다. 만약에 잘 되지 않는다면 다시 해 보면서 잘못된 점을 찾아보기 바랍니다. 타임아웃 등의 선택사항 설정하기 diald 의 가장 쓸만한 기능은 현재 연결이 정상적으로 되어 있는지 검사할 수 있는 것과 사용자가 특정 시간만큼 사용한 뒤에 PPP 연결을 종료시키 는 것입니다. 만약에 여러분의 집에 전화선이 하나가 있고 전화작업을 잠 깐만 하는 경우에는 이 기능을 애용할 것입니다. 그리고 어떤 사용자가 연 결을 하고 한참동안 작업이 없으면 자동으로 접속을 끊어서 전화요금을 적 게 나오게 할 수도 있을 것입니다. ISP 에 연결하고 사용자 이름과 패스워드를 입력하는데 걸리는 시간이 60 초가 조금 넘는다면 여러분은 파일에 다음과 같은 것을 넣어 주는 것이 좋 습니다. connect-timeout 120 또는 여러분이 전화를 10번 다시 걸고 전화를 거는 간격을 15초로 설정하 고 싶다면 다음과 같은 것을 넣어 주는 것이 좋습니다. retry-count 10 redial-timeout 15 여러분은 또한 diald 에 있는 다른 유용한 옵션들을 가지고도 설정을 하고 싶어 할 것입니다. 예를 들어, "two-way"같은 것입니다. 이것은 diald 이 연결이 종료되었을 때 다시 연결하지 않도록 합니다. 그런데 이 기능은 어 떤 면에서 유용할까요? 만약에 위와같이 설정하지 않으면 만약에 여러분이 강제로 ISP 로의 PPP 연결을 강제로 종료하고 싶어서 접속을 종료하면 diald 는 ISP 로 전화를 다시 걸 것입니다. 하지만 여러분이 ISP 에 얼마 나 오래 연결되었느냐에 별 관심이 없다면 이 옵션은 별로 필요가 없을 것 입니다. 만약에 여러분이 전화로 접속되어 있는 시간이 어느 정도인지 알고 싶다면 "accounting-log ..."옵션을 이용해서 알 수 있습니다. "accounting-log"의 매개변수는 언제 접속되고 접속이 종료되었는지 기록하는 파일의 절대경로 입니다. daild 의 맨 페이지에는 여러 가지 옵션에 대한 설명이 있습니다. 저는 이 글을 맨 페이지와 같이 읽는 것을 적극 추천합니다. diald 는 여러 가지 설 정을 할 수 있으며 여려분이 원하는 복잡한 기능도 수행할 수 있을 것입니 다. 응용 프로그램들 이제 여러분의 네트워크의 어느 곳이든지 갈 수 있습니다. 네트스케이프, 인터넷 익스프로러, 아레나, 모자익, 혹은 그 외 다른 브라우저를 사용해서 인터넷의 다른 곳도 갈 수 있습니다. 그런데, 왜 가끔 여러분의 리눅스 게 이트웨이가 이유 없이 작동하는 것일까요? 무엇을 하고 있는 것일까요? 이제 여러분은 여러분의 네트워크에 있는 프로그램들과 여러분이 어떻게 설정을 해 놓았는지 살펴보아야 합니다. 조사해 봐야 될 가장 중요한 두 가지는 메일 클라이언트와 웹 브라우저입니다. 만약 여러분이 메일 클라이 언트가 새로 온 편지가 있는지 알아보도록 했다면 그 프로그램은 여러분의 게이트웨이를 통해서 패킷을 보낼 것입니다. 이것은 인터넷 접속이 되어있 지 않을 때 누군가 그 메일 클라이언트를 여러분의 지역 네트워크에서 실 행시켰을 경우에 예기치 않게 게이트웨이가 작동하게 됩니다. 이것은 가정 이나 사무실에서도 짜증나는 요소입니다. 저는 제 아내가 전화를 쓰고 있 을 때 이런 식으로 제 게이트웨이가 외부로 전화를 걸었던 경험이 몇 번 있습니다. (하지만 제 아내는 착하고, 참을성이 많아서 문제가 없었습니다.) 이 문제를 해결하기 위해서 여러분이 해야될 일은 사무실 사람들한테(혹은 가족한테) 메일 클라이언트의 작업을 다 끝냈으면 그 프로그램을 즉시 종 료시키라고 말하는 것입니다. 그리고 그들에게 메일 클라이언트에 있는 자 동으로 메일을 체크하는 옵션을 끄라고 알려야 됩니다. 특히 ISP에서 요금 을 종량제로 부과한다면 이것은 매우 중요합니다. 살펴봐야 되는 다른 한가지는 여러분의 지역 네트워크에 있는 유닉스 호스 트의 /etc/resolv.conf 파일입니다. 여러분은 네임서버를 외부 네트워크에 있는 호스트로 해 놓지는 않았는지 확인해야 됩니다. 그리고 호스트네임을 받는 모든 프로그램 중에서 게이트웨이가 외부로 전화를 걸게 하는 패킷을 발생하는지 조사해 봐야 됩니다. 이와 같은 이유 때문에 여러분의 지역 네트워크에 있는 모든 호스트의 호스트네임을 모든 유닉스 호스트의 /etc/hosts 파일에 넣어 주는 것이 필요합니다. 만약에 여러분의 지역 네트 워크가 상당히 크다면 여러분의 지역 네트워크에서 네임서버를 하나 운영 하는 것도 좋은 생각이 될 수 있습니다. 지역 네트워크에 있는 네임서버는 그 지역에 있는 도메인 네임은 물론이고 외부 네트워크의 도메인 네임도 일부 캐쉬를 해서 저장을 하고 있기 때문에 아주 효율적일 수 있습니다. 만약에 여러분이 sendmail 을 지역 네트워크에서 사용하고 있을 때 편지를 외부로 보내려고 할 때마다 게이트웨이가 ISP 로 전화를 거는 것을 원하 지 않을 것입니다. 여러분은 ISP로 연결이 되어서 통신이 가능할 때까지 기다렸다가 한번에 전송하는 것을 원할 것입니다. 이 문서는 여러분의 네트워크에 있는 여러 가지 프로그램의 환경설정에 대 해서 자세히 설명하고 있지는 않습니다. 하지만 이 문서는 여러분이 여러 가지 네트워크 프로그램을 여러분의 네트워크에 설치할 경우 프로그램이 원하는 대로 동작하지 않을 때 문제를 해결하는데 도움을 줄 것입니다. 만 약에 여러분의 네트워크의 규모가 점점 커져서 정상적으로 운영을 하기 힘 들어 지면 좀더 빠른 접속환경을 만들어야 됩니다(ISDN, T1, T3, OC3,etc.) diald같은 경우에는 ISDN 같은 것으로 작동하지만 네트워크의 규모가 커지면 항상 외부와 연결되어있는 환경으로 바꿔주는 것이 가장 좋 습니다. 결론 작은 네트워크를 diald 를 이용해서 환경 설정하는 것은 여러분의 네트워 크가 얼마나 복잡하냐에 달려 있습니다. 그러나 만약에 여러분이 원한다면 위의 과정을 따라해서 여러분의 네트워크를 여러분이 원하는 대로 작동하 도록 할 수 있을 것입니다. 많은 사람들이 과연 위와 같이 네트워크를 구 성하는 것과 실용성에 대해 의문을 가진 것입니다. 그에 대한 대답은 주 관적일 수 있지만 확실한 것은 네트워크에 2~8대 정도의 머신이 있고 각각 이 웹 브라우저, 메일 클라이언트, 그 외 여러 가지 프로그램이 설치되어 있으면 28.8kbps 모뎀으로도 별 무리 없이 사용이 가능하다는 것입니다. 저 같은 경우에는 33.6kbps의 모뎀을 사용하고 있지만 ISP 에 접속해 보면 28.8kbps정도의 속도가 나옵니다. 그것은 제가 있는 곳의 전화선 때문입니 다. 하지만 저는 2~3대의 머신을 가지고 동시에 인터넷으로 접속을 해도 빠른 속도를 느낄 수 있었습니다. 만약에 여러분이 속도에 대한 강한 욕망 을 가지고 있다면 56kbps모뎀을 설치하고 ISP에서 제공하는 56kbps회선으 로 연결을 해야 될 것입니다. 제 경험에 비추어 봤을 때 diald 는 56kbps모 뎀을 사용해도 큰 무리가 없었습니다. 번역: 권 순선(리눅스 한글문서 프로젝트 관리자) http://kldp.linux-kr.org, cessi@kldp.linux-kr.org 10센트짜리 팁 피코 에디터 사용자를 위한 vim Date: Mon, 5 Jan 1998 23:07:20 +0100 From: Sven Guckes guckes@math.fu-berlin.de 많은 사람들이 피코(pico)에디터를 좋아하는 데 비해 vim(역자 주: vi 에디 터의 확장)은 몇 가지 이유 때문에 그다지 편안하게 사용하고 있는 것 같 지 않은데 피코 에디터에서는 현재 문단을 ^J(control-j)키를 눌러서 간단 히 정렬할 수 있는데 반해 vim에서는 이렇게 하는 것이 매우 어렵다는 것 이 그 중 한가지 이유가 아닐까 생각합니다. vim에서는 다음과 같은 내용 을 자신의 홈 디렉토리 아래의 .vimrc 라는 파일에 삽입해 주어서 간단히 이 기능을 이용할 수 있답니다. nmap vipgq nmap gq vim에 대해서 더 알고 싶은 분은 다음 홈페이지를 참고하세요. http://www.vim.org vim 홈페이지 http://www.vim.org/faq vim에 대한 FAQ http://www.vim.org/answ.html vim 사용에 대한 질문과 대답 그리고 왜 vim과 같은 vi클론을 이용하는 것이 더 좋은지는 다음 홈페이지 를 들러 보시면 알 수 있습니다. http://www.vim.org/why.html (역자 주: 알짜 레드햇 5.0에는 한글화된 pico 에디터가 설치된다.) 새로운 메일이 왔을 때 Date: Wed, 07 Jan 1998 01:27:09 +0000 From: Michael Katz-Hyman mkatshym@erols.com 새로운 메일이 도착했을 때 키보드의 scroll lock 키가 반짝거릴 수 있게 해 줍니다. ------------------------------------------------------------ -- #!/bin/bash # # Keyboard blinky thingy when you have new mail, sleeps 5 minutes if you don't # # Michael Katz-Hyman (mkatshym@erols.com) running Linux 2.0.33 Red Hat 4.0 Mail_File = "/var/spool/mail/mkatshym" # The static file is used to make the script a daemon (I just test to see if /bin/bash is present :- ) Static_File="/bin/bash" LED_SET_COMMAND_ON = "/usr/bin/setleds +scroll" LED_SET_COMMAND_OFF = "/usr/bin/setleds -scroll" Sleep_Command = "/bin/sleep 2m" # O.k. lets get started while [ -e $Static_File ]; do while [ -s $Mail_File ]; do $LED_SET_COMMAND_ON $LED_SET_COMMAND_OFF done if [ ! -sMail_FIle ]; then /bin/sleep 5m fi done ------------------------------------------------------------ ------ 사운드 문제 Date: Wed, 7 Jan 1998 09:48:10 -0600 (CST) From: Mike Hammel mhammel@stassw10 >레드햇 5.0을 설치하고 나서 sndconfig 를 이용해서 사운드카드를 설정하 였습니다. 모든 게 잘 되어 Linus씨가 리눅스를 어떻게 발음하는지 들려주 는 데모 파일까지 잘 들을 수 있게 되었는데 그 때 이후로 다른 소리는 들 어본 적이 없군요. 사운드가 포함되어 있는 웹사이트에 가도 아무런 소리 가 나지 않는데 어떻게 하면 좋을까요? 우선, cat file > /dev/audio 명령을 내려보세요. file 은 오디오 파일의 파 일명을 나타냅니다. 만약 이렇게 해서 소리가 난다면 그건 제대로 설정된 것입니다. 문제는 당신이 브라우저 설정을 잘못했다는 것이지요. 넷스케이 프를 사용하신다면 Preferences->Netscape->Applications 로 들어가셔서 각 사운드 파일 포맷에 맞는 프로그램을 지정해 주셔야 합니다. cat 명령 은 au파일에 적용될 수 있으며 wav파일에도 적용할 수 있을 것입니다. Linux Applications and Utilities Page에 가시거나 Linux Midi and Sound Page 에 가셔서 적당한 리눅스용 사운드 관련 프로그램을 찾아보세요. 둘 다 리눅스 소프트웨어 리소스 페이지의 소프트웨어 소개란에 링크가 되어 있습니다. http://www.linuxresources.com/apps.html 바이너리 파일 화면에 출력하기 Date: Wed, 7 Jan 1998 14:56:05 -0500 From: Sylvain Falardeau sfalardeau@clic.net 바이너리 파일에 cat이나 grep 등의 명령어를 이용하다 보면 제어 문자들 때문에 터미널이 먹통이 되는 경우가 있습니다. cat -v를 이용하면 이런 문제를 간단히 해결할 수 있답니다. perl과 html Date: Thu, 08 Jan 1998 16:58:44 +0000 From: Carl Mark Windsor mbdtscw@cerberus.mcc.ac.uk Gabriele Giansante(gvsoft@madnet.it)씨의 전자우편 주소가 잘못되어 있는 것 같아 여기서 이야기합니다. #!/usr/local/bin/perl 은 그 파일이 펄 스크립트라는 것을 나타냅니다. 그런 데 넷스케이프는 이 사실을 알 정도로 똑똑한 편이 아니라서 설정을 해 주 어야 사용할 수 있습니다. Options/General Preferences/Helpers 로 가셔서 다음과 같이 설정을 수정 해 주시거나 없으면 만들어 주어야 합니다. Description: Perl Script Type: application/perl Suffix: pl Application 창을 열어서 다음 내용도 추가해 주어야 합니다. Application: /usr/bin/perl <--perl이 있는 디렉토리) update locate Date: Sat, 10 Jan 1998 19:16:31 +0000 From: Joaquim Baptista px@helios.si.fct.unl.pt 레드햇이나 슬랙웨어 둘 다 updatedb라는 패키지가 포함되어 있는데 이 패키지에는 다음 두 가지의 프로그램이 들어 있습니다. updatedb: 파일시스템을 검색하여 지금 존재하고 있는 파일들의 목록을 데 이터베이스화합니다. 이 프로그램은 매일 밤 root 의 권한을 가지고 실행됩 니다. locate: updatedb에 의해 생성된 데이터베이스를 이용하여 파일 시스템 내 의 파일 위치를 빨리 찾아낼 수 있게 합니다. 제가 겪는 문제는 저의 updatedb 프로그램이 매일 새벽 4시 40분에 실행 되도록 설정되어 있다는 것입니다. 그런데 제 리눅스 박스는 그 시간에는 거의 켜져 있지 않은 관계로 데이터베이스가 갱신되지 않고, 따라서 locate 로 최근의 파일을 찾아내지 못한다는 것입니다. 해결 방법은 그다지 간단하지가 않더군요. 데이터베이스를 갱신하는 것은 하드 디스크를 직접 억세스해야 하고 시간이 좀 걸리죠. 제가 생각해낸 방법은 매 시간마다 다음 스크립트를 작동하게 해서 데이터 베이스가 24시간 이상 갱신되지 않고 있을 때 데이터베이스를 갱신하도록 하는 것입니다. 저는 이 스크립트를 run-updatedb 라고 이름붙였습니다. #!/bin/sh /usr/bin/find /var/spool/locate/locatedb -mtime +1 -exec \ /usr/bin/updatedb \ --prunepaths='/tmp /usr/tmp /var/tmp /mnt /cdrom /floppy /var/spool' \; 그리고 crontab을 조금 고쳐야 했죠. 매일 새벽 4시 40분에 updatedb를 작 동하도록 한 부분은 지우고 다음과 같이 써 주었습니다. 0 * * * * /usr/local/sbin/run-updatedb 1> /dev/null 2> /dev/null 파일 이름에 공백 넣기 Date: Tue, 13 Jan 1998 18:16:48 -0800 (PST) From: Mark Lundeberg ae885@pgfn.bc.ca 윈도우즈95/NT의 파일 이름이 리눅스의 파일이름들보다 더 좋다고 생각하 신다면 다시한번 재고해 보아야할 문제입니다. bash에서(이것은 csh에서도 적용될 것입니다만 테스트해보진 않았습니다.) "를 사용하면 됩니다. 다음 예를 보시죠. cat "test" > "spaced name" 이제 ls명령으로 확인해 보시면 파일 이름에 공백이 들어가 있는 것을 보 시게 될겁니다! 이렇게 해서 사람들을 헷깔리게 할 수도 있죠. 다음과 같이 해보세요. echo "HI" > "test " 그후, 만약 어떤 사람이 ls에서 보이는 대로 "test"를 열려고 하면(vi test 등) 안의 내용은 보이지 않고 새로운 파일을 만들어 낼 것입니다. PS: ext2 파일 시스템에서는 파일명에 255자까지 사용할 수 있습니다. Linux and Routing ate: Sat, 17 Jan 1998 11:02:43 -0800 From: James C. Carr jccarr@nwlink.com 랜과 인터넷 사이를 라우팅해 주는 문제에 관한 어떤 대답을 이미 들었을 지도 모르겠는데, 당신이 답변을 얻었는지 확실치 않아서 제가 한번 이야 기해 보겠습니다. 따라서, 이 편지의 참조인 목록에 Linux Gazette를 첨가 하는 것은 다른 사람이 이 문제에 대해서 제대로 이야기를 하지 못했을 경 우에 대비하기 위해서입니다. :-) 또한 이 문제는 Linux Journal 43호에서 이미 논의되었던 사항이기도 합니다. 따라서 이 이야기는 "IP Masquerading Code Follow-Up" 기사가 그 근간이 되겠죠. 일단 제가 제 집에서 사용하고 있는 예를 우선 들어 보기로 하죠. (역자 주: IP Masquerading은 하나의 IP 어드레스를 이용하여 여러 대의 컴퓨터가 인터넷 접속을 이용할 수 있게 합니다. 예를 들어, CO-lan 사용 자의 경우 한 집에서 하나의 계정으로 두 대 이상의 컴퓨터가 인터넷을 이 용할 수 있게 하려면 이 IP Masquerading 을 이용하여 실제로 접속되어 있는 컴퓨터가 아닌 다른 컴퓨터도 실제로 인터넷에 접속되어 있는 컴퓨터 를 게이트웨이로 사용하여 인터넷에 접속할 수 있게 합니다. Masquerading이란 말 그대로 가면을 씌운다는 뜻으로서 IP패킷이 게이트 웨이를 통하여 원하는 곳(내부 네트웍)까지 잘 전달되도록 해줍니다.) LAN 과 인터넷 사이를 리눅스를 이용해서 라우팅하려면 IP Masquerading 을 지원하도록 커널을 다시 컴파일해 주어야 합니다. 물론 방화벽을 이용하여 라우팅을 차단할 수도 있겠습니다만, 이 방법에 대해서 는 제가 별로 경험이 없군요. 만약 당신의 커널이 버전 2.0.30이하라면 커 널 컴파일시에 Code Maturity Level 옵션도 선택해 주어야 합니다. 이제 새로운 커널을 설치하고 난 후에는 ipfwadm을 구해서 설치하셔야 합 니다. 이 프로그램은 데비안 1.3.1의 경우 설치시에 기본으로 딸려오고, 레 드햇의 경우에도 쉽게 구할 수 있을 것입니다. 우선 다음과 같이 실행해 줍니다. /sbin/ipfwadm -F -p deny -F 는 ipfwadm 프로그램에다가 현재 IP 포워딩 룰을 바꾸겠다고 알려주 는 것입니다. -p 는 ipfwadm 프로그램에다가 현재 들어오고 있는 패킷들에 대한 포워딩 을 거부하고 싶다고 알려주는 것입니다. 제 경험에 의하면 이 옵션을 설정해둔 후부터 열수 없는 웹페이지들이 좀 있었는데 아마도 마이크로소프트와 관련있는 웹페이지들이 아닌가 합니다. :-) /sbin/ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0/0 -F 는 위에서 말씀드린 것과 같습니다. -a 는 기존 설정에 내용을 추가한다는 의미로서 이 경우 m 은 Masquerading 을 의미합니다. -S 는 192.168.0.* 대의 IP 주소를 가진 컴퓨터들을 masquerading 하겠다 고 알려주는 것입니다. 이 주소는 로컬 호스트들을 나타내는 주소이므로 LAN안에 존재하는 모든 호스트들에 대해서 적용할 수 있죠. -D 는 패킷 포워딩을 0.0.0.0으로 하겠다는 의미로서 PPP의 디폴트 라우트 의 게이트웨이 주소를 나타냅니다. /sbin/ipfwadm -F -l -n 이제 지금까지 설정해 놓은 것들이 원하는 대로 작동되고 있는지 살펴봅니 다. -l 은 IP패킷들의 포워딩 정책들을 모두 나타내도록 합니다. -n 은 정보들을 숫자로 나타내도록 합니다. 물론 이렇게 하자면 우선 여러분의 컴퓨터들의 IP 어드레스들을 192.168.0.* 대의 주소로 맞춰 주어야 합니다. 제 경우는 게이트웨이 컴퓨터 의 주소를 192.168.0.1 로 설정해 두었고, 나머지는 순서대로 192.168.0.2, 192.168.0.3....등으로 설정하였습니다. masquerade 할 모든 컴퓨터들의 기본 게이트웨이를 제대로 설정해야 한다는 것은 말하지 않아도 잘 알겠죠. 설정에 관한 더 자세한 이야기는 Chris Kostick씨가 Linux Journal 1997년 11월호에 썼던 "IP Masquerading Code Follow-Up" 기사를 읽어 보시기 바랍니다. 이 기사는 기초적인 내용도 다루고 있을 뿐 아니라 ipfwadm 의 세밀한 부분까지도 다루고 있습니다. 이 기사가 없었다면 제 경우 ipfwadm 이 뭔지도 몰랐을 것입니다. :-) Linux and Routing 2 Date: Tue, 6 Jan 1998 13:25:57 -0500 (EST) From: Paul Lussier, plussier@LanCity.COM >저는 높은 대역폭을 이용하기 위해서 조만간 케이블 모뎀을 구입할 예정 입니다. 그래서 제가 제 집에 구축해 놓은 LAN(역자 주: LAN은 꼭 인터 넷에 물려 있지 않아도 구축할 수 있으며 이 편지를 보낸 사람은 이미 자 기 집에 구축해둔 LAN에 접속되어 있는 여러대의 컴퓨터들을 케이블 모 뎀을 통해 인터넷에 물려있는 한 대의 컴퓨터를 통하여 동시에 인터넷에 접속하게 하고 싶어하는 것이다.)을 인터넷에 접속할 수 있게 하고 싶습니 다. 어떻게 하면 이더넷을 통해서 서로 물려있는 저희집의 컴퓨터들이 케 이블 모뎀을 통해 실제 IP어드레스를 부여받은 한 대의 리눅스 컴퓨터를 이용하여 인터넷에 접속할 수 있게 할 수 있을까요? 이 질문은 제가 베이 네트워크 사의 광대역 기술부에 근무하던 시절부터 저의 관심을 끌었던 내용이군요. 우선 리눅스에 관해서 알아두어야 할 것은, 당신이 라우팅 데몬을 이용하 려 하는 것이 아니라 IP 포워딩/IP masquerading 을 이용하고 싶어한다는 것입니다. 우선은 이 주제에 관한 HOWTO문서(역자 주: IP masquerading HOWTO가 http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html 에 있다.)를 읽어보라고 말씀드리고 싶군요. 기본적으로는 리눅스 네트워크 관리자 가이드/리눅스 시스템 관리자 가이드도 읽어 두어야 하겠구요. 또 다른 좋은 참고문헌으로서는 다음과 같은 것들이 있습니다. The NET-2/3 HOWTO The Ethernet HOWTO The Multiple Ethernet Mini HOWTO Networking with Linux Firewall HOWTO와 Proxy Server HOWTO도 정말 좋은 참고가 될 것입 니다.(역자 주: NET-2/3 HOWTO와 Firewall HOWTO는 http://kldp.linux-kr.org 나 http://www.postech.ac.kr/~cessi 에서 한글 번 역된 문서를 구할 수 있다.) 왜냐하면 당신이 정말로 원하는 것은 외부에 서 내부 LAN으로 접속해 들어오는 것은 막고, 내부에서 외부로 접속하기 위해서 프록시 서버를 이용하도록 하는 것이기 때문입니다. 그런데 주의해야 할 것이 좀 있습니다. "절대로 케이블 모뎀을 설치하는 도중에는 당신이 집에서 설치해둔 LAN을 연결하지 마십시오!!!" MeaiaOne, Cablevision, Time Warner 등등 대부분의 케이블 모뎀 회사들 은 자기네들의 광대역 네트워크에 랜을 연결하는 것을 허용하지 않기 때문 입니다. 케이블 모뎀을 설치하러 사람들이 집에 오기 전에 허브와 동축 케 이블들을 보이지 않는 곳에다 잘 치워두고 그사람들이 하는 대로 가만 내 버려 두세요. 그 다음, 모든 작업이 끝난 후 그사람들이 되돌아간 후 랜을 연결하세요. :-) 당신은 두장의 이더넷 카드가 필요할 것입니다. 한 장은 케이블 모뎀을 위 해서, 또 한 장은 내부 랜을 위해서. 케이블 회사에서 한 장 정도는 그냥 설치해줄 것이니, 그건 그사람들에게 해 달라고 하고, 나머지 한 장은 직접 연결하세요. 케이블 모뎀은 실제로는 모뎀은 아닙니다. 그것은 이더넷 브리지죠. 작동 원리는 다음과 같습니다. 케이블 모뎀이 설치되어 있는 시스템이 켜지면 bootp 요청을 케이블 모뎀 회사의 중앙 서버에 요청하여 IP어드레스를 할 당받고 케이블 모뎀에 연결된 이더넷 카드도 IP어드레스를 할당받게 되죠. 따라서, 당신은 케이블 모뎀을 통한 외부로부터의 접속은 모두 거부하고, 외부로 나가는 접속만을 허용하도록 프록시 서버와 방화벽을 구축해야 할 겁니다. 그러려면 당신의 내부 랜에 연결되어 있는 컴퓨터들이 프록시 서 버를 이용할수 있게 IP 포워딩/masquerading을 설정해 두어야 한다는 얘 깁니다. 케이블 모뎀과 케이블 모뎀 회사들에 대한 몇가지 알아둘 사항이 있습니 다. 1. 케이블 모뎀을 통해서 랜을 구축/이용할 때 케이블 모뎀 회사들의 지원 을 바라지 마십시오. 그들은 그렇게 이용하는 것을 원치 않으며, 도와 주려 고 하지 않을 겁니다. 2. 웹 서버를 구축하지 마십시오. 소용 없습니다. 당신이 이용하고 있는 시 스템들은 클라이언트이지 서버가 아닙니다. 3. 스팸 메일을 보내는 사람들은 케이블/광대역 네트워크를 선호합니다. 광 대역 네트워크를 사용하는 시스템들이 스팸 메일을 보내는 데 이용된 예는 많으며 그리하여 회사 측에서 허가를 취소하는 사태가 많이 있습니다. 방 화벽을 잘못 설정하여 케이블 모뎀을 통해 외부로부터의 접속을 허용해둔 상태가 되면 스팸 메일을 보내는 사람들이 케이블/광대역 네트워크 중에서 외부로부터의 접속을 허용하는 프록시 서버와 방화벽을 찾아내어(주로 윈 도우즈95/NT) 그 시스템을 케이블/광대역 네트워크 전체에다가 스팸 메일 을 뿌리는 데 이용합니다. 물론 메일을 뿌린 사람은 당신잉 되는 거죠. 보 통은 회사측에서 경고를 한번 보내줍니다만 아무런 경고 없이 서비스를 끊 어 버린 경우도 많습니다. 4. 현재 시판되고 있는 베이 네트워크사의 LANcity 모뎀은 1개의 MAC 어드레스 접속만을 허용합니다. 이것은 허브 등에 연결해서 여러 대애서 동시에 사용할 수 없다는 이야기죠. 소프트웨어적인 방법으로 16개까지 MAC어드레스 접속을 가능하게 해줄 수 있으나 회사측에 돈을 지불해야 합니다만 이더넷을 스위치로 사용하면 그럴 필요가 없죠. :-) 5. 현재 판매되고 있는 모뎀들은 양방향 10MBPS의 전송 속도를 지원합니 다. 그러나 보통은 300KBPS 정도의 속도밖에 나지 않죠. 더 빠른 속도를 원한다면 회사측에서는 즐겁게 더 많은 금액을 청구할 겁니다. :-) Printing Problems Date: Sat, 31 Jan 1998 20:09:18 +0100 (MET) From: Roland Smith, rsmith06@ibm.net >누구든 좀 도와주세요. lpr을 작동시키려고 하는데 매번 로컬 머신의 이 름을 찾을 수가 없군요. 무엇이 문제인지, 어떻게 해야 하는지 좀 가르쳐 주세요. LPRng를 사용하시는 것 같군요. 이것은 네트웍 환경에 적합한 lpr 버전이 죠. bsdlpr을 찾아서 설치하시면 됩니다. Re: 386컴퓨터 사용하기 Date: Sat, 31 Jan 1998 20:13:09 +0100 (MET) From: Roland Smith, rsmith06@ibm.net >저는 386 25MHz짜리 컴퓨터를 사용해 왔는데 얼마전 펜티엄 200MHz 머신을 구입하였습니다. 그 이후론 386컴퓨터는 거의 사용하지 않았는데 386컴퓨터를 펜티엄 컴퓨터에 연결할 수 있는 좋은 방법이 있나요? 있다면 무엇을 할 수 있는지, 어떻게 해야 하는지 좀 가르쳐 주십시오. 병렬 케이블을 통해서 두 대의 머신을 연결하여 PLIP(역자 주: PLIP는 프 린터 케이블을 이용하여 두 대의 컴퓨터를 연결하는 방법이다.)을 설정하 면 당신은 작은 네트워크를 구축한 셈이 됩니다. 386머신에서 엑스 윈도우 는 띄우기 힘들겠지만, 꽤 괜찮은 터미널로 이용할수 있을 겁니다. The Answer Guy LILO 를 삭제하고 도스를 다시 설치하기 From: Stephen Britton, sbritton@westnet.com 질문: 부모님께서 레드햇 4.1이 돌아가고 있는 486컴퓨터를 제 동생에게 주 라고 하십니다. 그런데 제 동생은 윈도우즈밖에 모르거든요? 도스로 하드 디스크를 포맷했는데 LILO를 없애는 방법을 잘 모르겠습니다. c:\fdisk /mbr 로 하면 된다는 얘기를 어디서 들었는데 잘 안되는군요. 도와주세요. 제 동생은 다음주에 학교로 떠나거든요!! 그렇게 하면 잘 될겁니다. 그 옵션은 도스 5.0에서 소개된 것입니다. 발표 될 당시에 문서상에는 나와 있지 않았지만, 부트 바이러스로부터 시스템을 복구하기 위해서 널리 쓰였죠. 만약 그게 잘 안된다면 리눅스 플로피 디스켓을 이용해서 부팅하시고 마스 터 부트 레코더의 파티션 테이블을 0으로 만들어 버리면 됩니다.(IDE시스 템의 첫 번째 하드디스크의 경우 dd if=/dev/zero of=/dev/hda 하면 되고 SCSI시스템의 첫 번째 하드디스크인 경우 of부분의 hda를 sda로 바꿔주면 됩니다.) 그런 후 도스 설치 디스켓으로 부팅하면 하드 디스크를 완전히 새로운(아 무것도 써져 있지 않은) 것으로 인식하고 파티션을 할당하는 fdisk를 실행 하도록 할 것입니다. 물론 이렇게 하면 디스크의 모든 데이터가 날아가게 되죠. 이 정도는 미리 알고 계셨죠? 아니면 fdisk /mbr 이 안될 경우 일단, 왜 안되는지를 알아내야 한다. 만약 당신이 가지고 있는 도스 버전이 5.0보다 낮다면 더 5.0이상의 버전을 구해 야 한다.(칼데라의 오픈도스를 사용해도 된다.)(역자 주: 칼데라 오픈도스는 http://www.caldera.com에서 무상으로 구할 수 있다.) 윈도우즈95를 설치할 수도 있겠다. 혼자 쓰는 시스템을 root로 이용하기-그렇게 하지 마세요. From: griffin@ameritech.net 질문: 혼자서 사용하는 시스템을 root가 아닌 일반 사용자로 이용하는 것이 어떤 장점이 있나요? 만약 당신이 완벽한 사람이라서 타이핑 실수를 절대 하지 않거나, 잘못된 명령을 내리지 않거나, 잘못된 디렉토리에서 부적절한 명령을 절대 내리지 않는 그런 사람이라면, 그리고 당신이 사용하는 모든 소프트웨어들도 "완 벽"한 것들이라면, 그리고 당신은 완전히 다른 세계와는 동떨어져 있는(전 자우편 주소도 없고, 뉴스그룹도 사용하지 않고, irc도 사용하지 않는) 그런 사람이라면 시스템을 root로 이용할 수도 있겠죠. 만약 당신은 당신의 데이터들을 별로 소중하게 생각하지 않는다거나, 시스 템을 새로 설정하는 것이 귀찮지 않는 그런 사람이라면 그냥 하던 대로 내 버려두어도 괜찮습니다. 그러나 우리들 중 거의 대부분은, 그렇지 못하죠. root가 아닌 일반 사용자로 시스템을 이용하게 되면 몇 가지 장점이 있죠. ●일반 사용자 계정으로는 보통의 명령어를 가지고는 우연히라도 시스템의 중요한 파일들을 손상시킬 수 없습니다. 데이터 손실의 가장 일반적인 경 우는 조작 실수로 인한 것이죠. 제가 Nortom Computing(Dos와 매킨토시 의 데이터 복구 툴을 생산하는 가장 큰 회사)에 근무할 때 대부분은 우연 히 고의로 데이터를 지워버린 경우였습니다. 유닉스는 물론 다른 다중 사 용자 환경의 경우도 시스템 관리자가 시스템을 망쳐버리는 경우가 가장 많 습니다. 따라서 이러한 위험성을 최소화하는 것은 타당한 이유가 될 수 있 죠. ●당신이 사용하는 프로그램(버그투성이의, 때로는 트로이 목마나 바이러 스가 담긴)은 곧바로 시스템 파일들을 손상시키지는 않습니다. 소프트웨어 의 버그는 두 번째로 많은 데이터 손실의 원인이 됩니다. 트로이 목마나 바이러스는 유닉스 세계에선 그다지 많진 않습니다.(왜냐하면 소프트웨어 는 대부분 최소한의 권한으로 실행하도록 만들어지니까요.) 만약 소프트웨 어가 어떤 특별한 권한을 가지고 작동할 필요가 있다면(레드햇 rpm을 이 용해 새로운 소프트웨어를 설치하거나 업그레이드할 때) 대부분의 관리자 들은 이런 프로그램을 테스트용 머신에서 시험해 봅니다. ●상식적으로 잘못이 없는 프로그램이라 할지라도 특정한 해킹 공격에는 약할 수 있습니다. 만약 누군가가 write 명령을 ANSI를 써서 당신에게 내 린다면(악의적인 목적으로 키보드 설정을 바꿔놓게 됨), IRC의 특정한 코 드를 이용한다면, 당신은 이런 위험을 제한하고 싶어질 것입니다. 물론 일반 사용자로 시스템을 이용하게 되면 "편리함"을 잃게 된다는 단점 이 있습니다. 도스나 윈도우즈 또는 매킨토스 사용자의 경우 시스템 내의 어떤 파일이든지 직접 빠르고 간단하게 편집할 수 있잖습니까. 제 개인적으로는 이런 방법은 몇가지 장점이 있다고 생각합니다. 저는 각 각의 사용자가 어떤 특정한 역할을 가진 그룹에 속한 상태에서 작동하는 그런 시스템을 원합니다. 당신의 작업들을 특정한 범위별로 나누어 보는것도 괜찮을 겁니다. 예를 들면 게임은 player 계정을 이용하게 하는 것이죠. 넷스케이프 메일이 자꾸 죽는 현상에 대해서...... From: Chris, colohan@cs.cmu.edu 질문: Linux Gazette 24호에서는 넷스케이프 메일이 이유없이 자꾸 죽는 경우에 대해서 .netscape 디렉토리를 지워버리는 것을 해결책의 하나로 제 시하셨었는데 저도 그런 문제를 자주 겪었었죠. 제가 살펴본 바에 의하면 그 디렉토리에는 그런 현상과 관련된 것은 아무 것도 없는 것 같더군요. 문제는 메일 파일 자체입니다. 홈디렉토리의 nsmail 디렉토리 안의 메일 파일들이 손상되어 있으면 넷스케이프가 비정상적으로 종료하게 되는 것이 죠. trash가 너무 커져도 넷스케이프가 정상적으로 작동하지 않더군요. 그러니 한가지 해결책은 메일 디렉토리에 있는 파일들을 다른 곳에다가 백 업받아 두고 nsmail 디렉토리를 지우는 겁니다. 그러면 넷스케이프가 다시 디렉토리를 생성할 것이고 잠시 동안은 잘 작동할 것입니다.(메일 파일이 손상되기 전까지) 또하나의 방법으로는 메일 파일을 직접 편집해서 의심이 가는 부분은 지워버릴 수도 있죠. Hylafax by Dani Pardo 저희 회사의 네트워크는 스팍 머신 몇 대와 리눅스 서버, 그리고 윈도우즈 3.1/95 클라이언트로 구성되어 있습니다. 클라이언트에서는 서버에 코볼로 쓰여진 계산 프로그램을 이용하기 위해 텔넷으로 접속합니다. nfs를 사용 하다가 samba를 사용하면서(사용자들이 처음에 winpopup을 발견했을 때 얼마나 재미있어했는지 한번 상상해 보세요.) 우리는 팩스 프로그램을 사 용하기로 마음먹었죠. 몇 가지의 선택안이 있었습니다. 상용(정말로 비싼) 유닉스 소프트웨어, NT 소프트웨어, 그리고 프리 소프트웨어였죠. NT소프트웨어는 그다지 좋아 보이지 않았고, 신축성이 없었으며 매 사용 자마다 계약을 해야 했으며, 수천 달러를 들여서 유닉스 팩스 서버를 구입 하고 싶지도 않았습니다. samba 를 유용하게 사용하고 있던 터라, 우리는 hylafax를 한번 써 보기로 했습니다. Hylafax(원래는 flexfax였다.)는 실리콘 그래픽스사에서 만들어졌고, 소스코 드와 함께 배포되며 http://www.vix.com/hylafax 에서 구할 수 있습니다. 최신 버전은 4.0p11이죠. tiff 라이브러리도 구해야 합니다. 만약 소스코드 를 구하셨다면 당신은 프로그램을 tiff 라이브러리를 컴파일하고 설치해야 합니다.(tiff 파일을 g3 팩스 파일 포맷으로 바꾸기 위해) 또한 고스트스크 립트를 잘 설정하여 포스트스크립트를 g3로 바꿀 수 있게 해두어야 합니 다. 저희들의 경험에 의하면, 여러분의 고객이 고스트스크립트 에러를 팩스 로 받아보게 하고싶지 않다면, 일단은 구할 수 있는 최신 버전의 고스트스 크립트를 사용하십시오. tiff 라이브러리를 설치한 다음 hylafax를 컴파일하면 보통의 리눅스 배포 본의 경우 /usr/local/과 /var/spool/fax에 설치됩니다. 일단 설치한 후에는 /usr/local/sbin/faxsetup 을 실행하여 시스템 설정을 해주어야 합니다. 이 프로그램은 팩스를 사용할 사용자를 결정하며 /etc/services와 /etc/inetd.conf를 수정합니다.(hylafax는 4559번 포트와 444 번 포트를 이용합니다.) 몇가지 설정을 더 해준 다음 faxsetup은 사용할 모 뎀을 설정하기 위해 faxaddmodem을 실행할 것입니다. faxaddmodem 은 사용할 모뎀을 설정할 수 있게 하며 몇 가지 파라미터들을 넘기고, 받을 수 있는 설정을 해줍니다. Hylafax는 두 개의 데몬으로 이루어져 있습니다. hfaxd(서버 데몬)과 hfaxq(스케줄러)가 그것이죠. 여러분은 스케줄러가 어느 모뎀을 사용할 것 인지 알수 있게 하기 위해서 팩스모뎀을 작동시켜야 합니다. 만약 들어오 는 팩스도 받을 수 있게 해두고 싶다면 /var/spool/fax/incoming에 들어오 는 팩스를 받을 저장할수 있도록 하기 위해서 faxgetty도 설정해야 합니다. 이런 데몬들은 /etc/rc.d 에 넣어 주어서 시스템 부팅시에 작동되도록 해 주어야 하며 4559번 포트로 텔넷을 이용해 들어가 보면 제대로 설정되었는 지 알아볼 수 있습니다. 여러분이 사용할 프로그램들 중에는 sendfax가 있고, 팩스 큐를 확인할 수 있는 faxstat과 job을 지우는 faxrm이 있습니다. Sendfax는 faxq와 sendpage 등을 호출합니다. 또한 고스트스크립트를 작동시켜 이미지를 변 환합니다. 따라서 당신은 주로 포스트스크립트를 팩스로 보내거나, 일반 ascii파일을 팩스로 보내는 셈이 됩니다. 다른 형식의 문서를 보내고 싶을 때는 /usr/local/fax/typerules 를 확인해 보세요. 다른 재미있는 설정들은 /var/spool/fax 디렉토리에 존재합니다. 모뎀이 제대로 작동하지 않는다면 우선 모뎀부터 체크해 보십시오. 그리고 서버측 설정을 마무리하기 위해서 crontab에 이미 보내진 팩스들을 지우기 위한 faxqclean을 넣어 주는 것도 괜찮은 생각입니다. 클라이언트측 설정 일단 여러분이 hylafax를 설정하고 작동시키게 되었다면 이제는 클라이언 트를 설정할 차례입니다. 매킨토시 사용자를 위한 MacFlex가 있고 윈도우 즈 사용자를 위한 WinFlex가 있습니다. WinFlex는 Macflex와 마찬가지로 포스트스크립트 프린터 드라이버를 설치해 줍니다. 그래서 만약 뭔가가 그 프린터로 보내지면 윈도우가 떠서 전화번호를 물어보게 됩니다. 여러분은 또한 큐를 확인해볼 수도 있고 쌓여있는 job들을 지울수도 있습니다. 일단 팩스가 보내지면 사용자는 몇몇 유용한 정보와 함께 보내진 팩스가 처리되 었음을 알리는 전자우편을 하나 받게 됩니다. Hylafax 개발자들은 절대 팩 스를 잃어버리는 일은 없을 것이라고 장담합니다. 제가 보기에도 이 기능 은 정말 많은 노력을 기울여서 구현한 기능이라고 얘기할 수 있습니다. WinFlex는 괜찮은 솔루션이긴 하지만 완벽하진 못하고, (프린터 드라이버 와의 인터페이스가 좀 좋지 않은 편입니다.) hylafax의 모든 기능을 다 이 용하지는 않더군요. 또 더욱 개선되어야 할 점으로는 자동으로 표지를 생성해주는 방법에 대해 서 해결책이 있어야 하겠다는 겁니다. 제 경우는 표지를 생성하도록 해주 기 위해서 정말로 고생을 많이 했죠. 포스트스크립트에 대한 많은 지식을 요구하더군요. 저희 회사에서는 결국 표지를 일반적인 워드 프로세서로 만 들어낸 보통 문서로 이용할 수 있게 해서 그것을 samba 공용 디렉토리에 다 올려 두었습니다. Let's Have a Fun 진짜 재미있는 것은 제가 회계 부서의 특별한 요구사항을 접하고 난 후 알 게 되었습니다. 그 사람들은 팩스를 이용해서 작업 결과물을 팩스로 자동 으로 보내고 싶어했습니다. 그 결과물은 코볼 프로그램을 이용해서 생성된 acsii파일입니다. 그런데 모든 페이지에 회사 로고가 들어가야 하고 페이지 아랫부분에는 특정한 글자가 들어가야 한다는 제약 조건이 있었습니다. 이 것은 표지를 만들어내는 것보다 더 어려워 보였습니다. 그러나 hylafax의 신축성 덕분에 c 프로그램과 쉘 스크립트를 조금 짜서 다음과 같은 일을 하는 프린터 필터를 만들어낼 수 있었습니다. *ascii 파일로부터 전화번호를 받아옴 *ascii 파일을 페이지별로 나눔 *각각의 페이지를 pbm(portable bitmap)으로 pbmplus 패키지를 이용해 변 환 *pbm으로 되어있는 로고를 각각의 페이지에 삽입 *모든 페이지를 고스트스크립트를 이용해 포스트스크립트로 변환 *모든 포스트스크립트 페이지들을 하나로 모아서 sendfax로 보냄 결론 hylafax는 비록 몇 가지 기능들이 빠져있긴 하지만 다재다능하고도 강력하 며 매우 유연한 팩스 소프트웨어입니다. 매우 다양하게 설정할 수 있으며 보안 문제에 관한 꽤 많은 양의 디버깅 정보를 제공하며 공짜입니다. 패치 버전과 문제를 해결할 수 있는 hylafax메일링리스트도 물론 있습니 다. 제게 다시한번 프리 소프트웨어가 힘을 발휘해 주었죠.