강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스 두대로 시작한 ISP

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle31.gif

배철수 : 리눅스 월드 발행인

 

시작하기전에

이 글은 김모씨의 일기 형식의 글입니다. 일부 내용은 편집하였지만 리눅스와 관련된 사항은 모두 실제 있었던 일입니다. 일부 이름은 가명입니다.

 

엊그제 나는 회사를 그만 두었다. 내게 남은건 PC 1대 그리고 퇴직금 천만원. 내가 잘 하는건 PC 조립하기, 인터넷 서핑 그리고 PC 통신에서 챗팅하는 것 정도다. 내가 가진 자산을 이용해 무얼 할까 찾느라 여기저기 인터넷 서핑을 하다 우연히 리눅스 웹 사이트에서 Linux ISP (Internet Service Provider) 에 관한 글을 접했다.

리눅스는 그저 어렵다는 막연한 인식을 갖고 있었지만 이 글 내용을 보니 나도 리눅스 ISP를 한번 해 보고 싶다는 욕망이 든다. 거기에 소개된 리눅스 ISP 관련 사이트들에 게시된 글들을 프린트해 읽고서 ISP 사업을 하기로 결정했다.

 

1. 11월 xx일 : 랜(LAN) 과 인터넷 연결

ISP를 하기위해 우선 사무실부터 물색을 했다. 사무실에는 전화선만 있으면 되므로 집과 가까운 골목에 있는 10평 짜리 지하 사무실을 월세로 15만원씩 주기로 하고 얻었다. 전화 단자함에는 사무실로 연결된 전화선이 하나 뿐이지만 사무실 옆에 전화용 전신주가 있어 그곳에서 창문을 통해 전화선을 끌어오기로 했다.

인터넷 연결은 기술력도 있고 해외망과의 연결 회선이 가장 많은 네트콤을 선택했다. 우선 56k로 신청하고 라우터와 DSU는 임대하기로 했다. 56k 인터넷 사용료는 월 35만원, 라우터 임대료 월 8만원, DSU 임대료 월 8천원이다. IP는 C 클래스 전체(256개)를 달라고 했으나 지금은 IP가 부족해 어림도 없고 64개를 얻는걸로 만족해야 했다. 대신 나중에 사용을 다하면 64개를 더 받기로 했다.

신청 후 일주일쯤 지나니 네트콤에서 라우터와 DSU를 가져와서 인터넷 연결을 해주었다. 그래서 집에서 가져온 펜티엄 PC를 라우터와 랜으로 연결하는 작업을 했다. 랜은 리눅스 월드 98년 10월호의 “실전 네트웍” 기사를 참조해서 동축케이블을 쓰는 10Base2와 UTP 케이블 및 허브를 사용하는 10BaseT를 비교 검토해 보았는데 비용은 조금 더 들지만 관리가 편리한 10BaseT를 사용하기로 했다.

10BaseT용 대만제 랜카드(ISA 방식)를 2만원에 구입하고 도스용 셋업 디스켓도 받았다. 허브는 나중 확장을 대비해 8포트를 6만원에 사고 RJ45 콘넥터가 꼽힌 UTP 케이블도 2개를 랜 가게에서 구했다.(2개 만원)

PC에 랜카드를 꼽고 도스로 부팅해서 셋업 프로그램을 돌리니 랜카드 IRQ가 3번이다. IRQ 3은 COM2에서 사용하므로 랜카드의 IRQ를 5번으로 바꾸고 진단 프로그램을 돌려 이상 없음을 확인했다.

라우터와 PC를 허브에 UTP 케이블로 연결하고서 PC에 리눅스 설치를 시작했다. 리눅스는 예전에  DEC에서 주최한 리눅스 강연회 때 받은 데비안을 사용했다.

설치에서 별 다른 문제가 없는데 네트워크 셋업에서 문제가 발생한다. 내가 받은 IP Address는 210.126.21.64부터 210.126.21.127 까지 64개 이다.
네트콤에서 210.126.21.126을 라우터에서 사용한다고 애기를 해주었으므로 디폴트게이트웨이는 이를  지정하면 되는데 subnetmask, network address, broadcast address에 무얼 넣어야 할지를 모르겠다.

sunsite.unc.edu/mdw에 있는 리눅스 Howto 중 IP Subnetworking howto를 보니 거기에 모든게 나와있다. Subnetmask는 255.255.255.192 network address는 210.126.21.64 broadcast address는 210.126.21.127이다. 리눅스의 이더넷 카드의 IP address는210.126.21.65로 정했다.
설치를 끝내고 부팅을 해서 ifconfig 명령을 했는데 리눅스 랜카드(eth0)가 안잡힌다. netstat -nr 명령으로 보아도 없다. Ethernet-howto를 보니 대만제 랜카드는 보통 ne2000 호환이므로 커널을 컴파일해 ne2000 드라이버를 집어 넣어야 한다고 돼 있다.

Kernel howto를 참고해서 커널을 만들고 lilo howto를 참고해 lilo를 다시 돌리니 랜카드가 제대로 인식이 된다. 리눅스에서 telnet 으로 하이텔을 연결하니 (telnet home.hitel.net) 하이텔이 연결된다.
(리눅스의 resolv.conf에 DNS에는 우선 네트콤의 DNS 서버 주소인 168.126.63.1을 넣었다.)

 

2. 11월 xx일 : PPP 서버 설치

사무실에 연결된 인터넷을 다른 업체로 배분해 주려면 우선 PPP 서버를 설치해야 하는데 일반 사용자가 윈95/98을 주로 사용하므로 Auto PPP를 구현하기로 했다. 그러면 사용자들은 윈95의 전화접속 네트워킹에서 연결만 누르면 바로 인터넷이 연결된다. 98의 경우는 PC를 켜면 바로 PPP 연결이 된다.

mgetty(ftp.leo.org)의 Makefile을 수정해  auto_ppp 기능을 넣어 컴파일 후에 mgetty.config, login.config 등을 수정 해주었다. Serial-howto를 참고해서 setserial 명령을 rc 파일에 넣고 options.ttyS1에서 PPP 속도를 115,200으로 맞추고 /etc/inittab에서 getty를 활성화해 PPP 서버 셋업을 끝냈다.

테스트를 위해 우선 집과 사무실을 TT선으로 연결했다.  TT선은 한국통신에 신청하니 2일 후 직원이 나와 선을 연결해 주었다. 양쪽에 전화기를 연결해 테스트해 보니 이상이 없다. 리눅스의 com2에 다이얼업모뎀과 TT선을 연결하고 집의 윈95 PC에도 다이얼업 모뎀을 연결했다. 윈95에서 전화접속 네트워킹을 설정 후 연결을 누르니 윈95 PC와 리눅스 PC간의 PPP 연결이 이루어진다. 윈95 PC에는 210.126.21.70 어드레스가 배정되므로 이제 집에서도 마음대로 스타크래프트 게임을 할 수 있다.

 

3. 11월 xx일 : 멀티포트카드 설치

그동안 PC 통신으로 알게된 친구 몇 명과 주변의 SOHO 개업자 들에게 TT선으로 인터넷을 연결하기로 했다. 처음에는 ISDN이나 ADSL 보다 비싸다며 망설이는 사람들도 있었으나  TT선으로 연결하면 인터넷 정식 어드레스를 받을 수 있으므로 사무실이나 집에 리눅스나 NT를 설치해서 웹서버 및 메일서버를 설치할 수 있다는 이점을 설명하자 연결하겠다는 승낙을 받았다.

PPP 서버에 3개 이상의 모뎀을 연결하려면 멀티포트 카드가 필요하다. 카드는 리눅스에서 가장 지원이 잘되는 미국의 모 업체 모델로 결정했다. 16포트 카드가 200만원으로 비쌌지만 커널 컴파일만으로 간단히 설치가 됐다. 멀티포트 카드는 시리얼 포트와 장치 이름만 다를 뿐 나머지 셋팅은 똑 같다.

 

4. 11월 xx일 : 웹서버, 메일서버, DNS 서버를 설치하다

몇사람에게 TT선으로 인터넷을 연결했으므로 나도 웹서버와 메일서버, DNS 서버를 설치하기로 했다. 이 세가지를 한대의 리눅스 호스트로 운영하기로 하고 펜티엄급 PC에 하드는 6기가를 달았다. 랜카드도 유명업체의 PCI 급으로 선택했다. ip address는 210.126.21.66으로 정했다.

네트콤과의 인터넷 연결시 이미 도메인네임으로 myisp.co.kr을 받았으므로 nic에 primary 네임서버를 210.126.21.66으로 이름은 ns.myisp.co.kr로 신청했다. 물론 이 서버의 이름은 www.myisp.co.kr 이기도 하다.

웹서버는 아파치를 사용했다. DNS 서버 실행 파일은 /usr/sbin/named이고 관련 파일은 보통 /var/named에 저장된다. Named가 가동시 처음 찾는 파일은 /etc/named.boot 이다. 여기에 관련 파일의 위치가 지정된다.

위 세가지 서버는 리부팅 시마다 자동으로 실행되어야하므로 rc 디렉토리에 연결해 주어야한다.
TT선 연결 업체 중 도메인네임은 있으나 메일 서버를 아직 설치하지 못한 고객들은  내 메일서버에 그 업체의 메일서버를 설치해 메일을 대신 받아주기로 했다. 또 서버는 설치했으나  도메인네임을 못받은 업체는 내쪽 DNS에서 호스트 이름을 할당해 주기로 했다. 즉 client.myisp.co.kr이 그 업체에 설치된 리눅스 서버의 호스트 명이다.

 

5. 12월 xx일 : IP Masquerade 를 설정해 주다

어느 교회에서  연락이 왔다. 그 쪽에 지금 윈95 PC가 5대가 있는데 TT선 한 개를 받아서 5대가 동시에 인터넷 사용이 가능하냐고 묻는다. 랜이 구성돼 있고 리눅스나 윈NT 서버를 추가하면 가능하다고 대답하니 리눅스 서버로 설치해 달란다.

그쪽에서 제공한 PC에 리눅스를 설치하고 IP Masquerade를 설정해 주었다. 커널 2.2를 사용하는 경우 ip masquerade를 사용하려면 rc.local에 아래 두줄을 넣으면 된다. 물론 그전에 커널을 컴파일해서 ip masq를 추가해 주어야한다.

/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.1.0/24 -j MASQ

그 외에도 교회쪽 리눅스 서버에는 자동 접속 기능을 하는 스크립트를 설치했다. 즉 내 쪽 PPP 서버가 리부팅되거나 한국퉁신의 사정으로 회선이 끊겨도 10초안에 교회의 리눅스가 자동으로 재연결해 주므로 회선 중단 사실을 모른다.

교회의 리눅스 서버에는 정식 어드레스가 부여되므로 웹서버를 설치해 교회의 홈페이지를 운영하기로 했다. 교회의 도메인네임에대한 DNS 서버는 내쪽 서버에 설치하기로 했다. 교회의 리눅스 서버에 설치해도 되지만 내쪽에 설치하는게 조금 더 빠르기 때문이다.

교회의 리눅스의 eth0에는 내부어드레스인 192.168.1.1을 부여하고 윈95PC에는 192.168.1.10부터 14까지를 부여했다. 윈95의 디폴트 게이트웨이는 리눅스의 IP주소인 192.168.1.1이 된다.
리눅스는 레드햇을 사용했는데 커널을 컴파일해서 ip masq를 넣었고 /etc/sysconfig/network 파일에서 FORWARD_IPV4=true로 설정했다.

 

6. 1월 xx일 : 웹호스팅을 해주다

오늘 모 병원에서 연락이 왔다. 자기 병원의 홈페이지 및 메일서버를 내 쪽에서 대신 운영해 달라는 것이다. 병원에는 마땅히 네트워크나 리눅스에대해 아는 사람이 없어 서버를 운영하기 힘들다는것이다. 대신 병원에 연결된 TT선으로 여러 대의 윈95 PC에서 동시에 인터넷 사용이 가능하게 해달라는 요청을 받았다. 그래서 병원의 윈95 PC중 한 대에  sygate를 설치해서  인터넷 사용 문제는 해결해주기로 했다.

웹서버 및 메일서버를 대신 운영해 주기 위해 내 웹서버로 사용하는 리눅스에 IP Aliasing 을 셋팅했다. 즉  이더넷 카드에 210.126.21.67 어드레스를 하나 더 추가해서 이 주소를 그 업체의 웹서버 및 메일서버 주소로 사용하는 것이다. IP Aliasing 없이도 웹호스팅은 가능 하나 나중에 그쪽으로 웹서버나 메일 서버를 옮길 경우나 관리의 편의 등을 고려하면 IP Aliasing 이 보다 낫다.

병원에서 요청한 도메인네임을 전산원에 등록 후 내 서버의 커널을 컴파일해 ip aliasing을 기능을 추가했고 아파치의 httpd.conf에 버츄얼웹을 설정했다. 다음에 DNS 파일을 만들고  sendmail.cw에 병원의 FQDN(Fully Qualified Domain Name)을 추가했다. 이제 병원의 홈페이지가 내 서버에서 뜨고 병원의 메일도 내 서버로 도착한다. 병원에서는 pop으로 메일을 받으면 되므로 그쪽에서는 리눅스 서버에대해 걱정할 필요가 없다. 홈페이지를 수정 할때는 병원의 윈95 PC에서 zmodem으로 파일을 부으면 그만이다.

 

7. 2월 xx일 : 128k 라인을 연결하다

TT선으로 인터넷을 쓰고 있는 모 회사에서  전화가 왔다.  회사에 PC가  40여대인데 요즘 인터넷 사용이 너무 많아 속도가 느려 아우성이란다. 돈이 더 들더라도 속도를 높여 달라고 한다.
모뎀 2대와 TT선 2개로 EQL을 쓸까 생각했으나 이것도 최대가 66k 이므로 아에 128k 디지털 라인으로 연결하기로 했다.  우선 내 쪽의 네트콤 라인 연결을 256k로 올렸다. 그래야 다른 TT선 및 128k 라인을 연결해도 충분한 속도가 나오기 때문이다.

256k 올리는건 신청만 하면 된다. 장비도 DSU만 교체하면 된다. 다음에 한국통신에 128k 디지털 라인을 신청했다. 월 회선비가 13만원이다. FDSU는 월 8,000원에 임대하기로 하고 싱크/어싱크 변환 어뎁터를 2개를 20만원에 샀다.

128k 디지털 라인은 한국통신에서 나와 설치해 주는데 FDSU에서 루프백으로 회선 테스트를 해서 에러가 안나올 때에 리눅스를 연결하고서 minicom으로 연결 테스트를 했다. 연결에 이상 없음을 확인 후 ppp 자동 접속 스크립트를 넣어 리눅스 가동과 동시에 ppp 연결이 이루어지게 설정했다.

FDSU에서 특히 DCD 설정과 DTR 설정이 중요하다. 예를들어 서버의 리부팅시 DCD가 off가 되도록 설정해야만 자동 연결이 된다.

 

8. 3월 xx일 : 2개의 ip address를 넘겨 주다

TT선으로 인터넷을 연결한 학원이 있는데 리눅스를 서버로 사용하고 여기에 TT선을 물린 후 윈95 PC 20 여대를 물려 인터넷을 사용하고 있다. 그리고 내부 랜에는 학원생을 위한 BBS 서버도 한대 있다.(192.168.1.11) 그런데 그 학원생 들이 집에서도 BBS 서버를 인터넷으로 연결하고자 하는데 방법이 있느냐고 묻는다.

방법이야 학원의 리눅스에 login후 다시 BBS 서버로 재 연결 하는 것이지만 이것은 불편하므로 직접 연결해주려면 BBS 서버에도 정식 어드레스를 한 개 부여하면 된다.

TT선에서 IP Address를 여러 개 상대 네트워크에 넘기려면 일반적인 방법은 서브네팅을 하고 gated를 양쪽 리눅스에 올리는것이나 이는 IP address 소모가 심하다. 즉 서브넷 하나마다 2개씩(network 및 broadcast) 의 어드레스가 소모되고 할당도 2의 배수로만 가능하다.  Gated 설정도 무척 까다롭다.
방법은 호스트라우팅을 쓰는건데 이건 원하는 개수만큼 상대 네트워크에 IP Address를 넘겨 줄 수 있다(단 양쪽 다 리눅스 서버가 있어야 한다). 그래서 이 방법을 사용하기로 했다. 학원의 BBS 호스트에는 IP Aliasing으로 두 개의 어드레스를 부여했다. 정식 어드레스인 210.126.21.68과 내부 어드레스인 192.168.1.11이다. 그래야 인터넷에서는 210.126.21.68로 연결하고 학원내의 PC에서는 192.168.1.11로 접근 할수 있는것이다.

다음에 게이트웨이인 학원의 리눅스 서버의 masquerade 코드에서 선택적으로 masq를 셋팅했다.  일반적으로 ip Masq에서는 192.168.1.x 주소만 masq로 통과시키고 나머지 주소는 전부 deny하나 (/sbin/ipfwadm -F -p deny) 리얼 어드레스를 부여할 때는 이를 제거한다. 이제 학원에는 두 대의 리눅스 호스트에 두 개의 인터넷 정식 어드레스가 주어졌다. 이 방법은 게임방에도 가능하다. 게임방의 모든 PC에 인터넷 정식 어드레스를 줄 수 있다.

단점은 리눅스에서 멀티포트를 사용하는 경우는 128k 가 한계라는것이다. 그 보다 높은 속도를 내려면 싱크보드나 라우터를 써야한다.

 

9. 4월 xx일 : UPS를 설치하다

서버를 운영하면서 가끔 예고없는 정전 때문에 사용자로부터 항의를 받는다. 정전 시간은 기껏 몇분이지만 정전 시 파일 전송을 하고 있었다면 처음부터 다시 전송해야 하기 때문이다. 그래서 자동 셧다운 기능이 있는 UPS를 설치하기로 했다. 이 UPS는 축전 기능은 20여분 정도지만 리눅스 서버의 시리얼 포트와 연결하여 정전 시간이 설정된 시간을 넘으면 자동으로 리눅스에 shutdown 명령을 주므로 정전시의 리눅스 파일 손상을 염려하지 않아도 된다. 그리고서 전원이 들어오면 다시 리눅스를 부팅해주므로 무인 운전이 가능하다. 이제는 예고없는 정전을 걱정하지 않아도 된다.

 

10. 끝내며

이제 나도 어엿한 ISP가 되었다. 리눅스 2대로 운영하지만 대형 ISP에서 제공하는 서비스보다 나으면 나았지 부족한 점이 없다. 이 모든게 리눅스 덕이다.


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,074 명
  • 현재 강좌수 :  35,995 개
  • 현재 접속자 :  463 명