리눅스 커널 2.0 을 컴파일 해보면 network aliasing 과 ip aliasing을 지정하는 부분이 나온다. 여기 그 용도를 적는다.
1. IP Aliasing의 개념
IP aliasing이란 한개의 인터페이스에 두개 이상의 어드레스를 지정하는걸 말한다. 예를들어 eth0란 랜카드에 두개의 IP 어드레스를 지정하므로서 둘중 어느 어드레스로도 접근을 허용하는걸 말한다. 이때 두개의 주소가 같은 네트워크에 속하면 IP Aliasing이고 다른 네트워크에 속하면 Network Aliasing이다.
2. IP aliasing의 응용범위
1) 버츄얼웹(웹호스팅)
웹서버를 운영하는데는 꿰 많은 비용이 든다. 피시로 구축하더라도 하드웨어 비용만 약 500만원에 인터넷 전용선 사용료가 월 50-60만원 든다. 거기에 운영인력도 필요하다. 따라서 단순히 홈페이지만 구축하고자하면 ISP들이 제공하는 웹호스팅을 이용하면된다. 웹호스팅을 이용하면 월 몇만원 정도의 비용만 지불하면 홈페이지를 운영할수 있다.(제작비는 별도) 즉 ISP들이 자신의 호스트에 업체의 웹서버를 운영해주고 월 사용료를 받는걸 웹호스팅이라한다.
웹 호스팅을 할때 필요한게 바로 버츄얼웹 기법으로서 www.abc.co.kr 과 www.def.co.kr 두개의 홈페이지가 한대의 컴퓨터에서 운영되는걸 말한다. 두 홈페이지는 서로 독립적으로 구성되며 도메인네임도 다르므로 외부에서는 두 홈페이지가 같은 컴퓨터에 있다는걸 알수가 없다. (두개만 가능한게 아니라 다수가 가능하다)
버츄얼웹을 만들때 필요한게 network aliasing 또는 ip aliasing이다. 물론 여기에 서로 다른 도메인 네임에서 서로 다른 홈페이지가 뜨도록 해주는 웹서버 프로그램의 지원도 필요하다. Apache 웹서버 프로그램의 httpd.conf에보면 virtual web을 설정하는 부분이 있다.
아래가 그 예이다.
<VirtualHost kil.nungkul.co.kr>
ServerAdmin nungkul7@nungkul.co.kr
DocumentRoot /home/kil/web
ServerName kil.nungkul.co.kr
ErrorLog logs-kil/error_log
TransferLog logs-kil/access_log
</VirtualHost>
2) 버츄얼 랜(Virtual LAN)
하나의 물리적 랜에 두개의 논리적 랜이 존재하는걸 버츄얼랜이라부른다. 즉 랜은 하나지만 네트웍 어드레스가 서로 다른 두 그룹의 컴퓨터들이 동시에 연결돼 있을 경우 두 컴퓨터 그룹은 별개의 랜을 이루고 있으므로 서로 독립한 네트웍으로 작동한다. 물론 라우터가 있거나 어느 한 컴퓨터에 랜카드가 두개 꼽혀 있어 두개의 랜을 연결해 주고 있다면 이는 두개의 물리적 랜이지 한개의 랜이 아니다.
예를들어 회사의 랜이 라우터를 통해 인터넷과 연결돼 있고 인터넷 어드레스가 203.234.216.XXX라고 하자. 이때 회사 랜에 연결된 리눅스 피시 어드레스를 192.168.1.1로 지정하면 회사 랜에 있는 다른 피시들은 네트웍어드레스(203.234.234.0)가 리눅스의 네트웍 어드레스(192.168.1.0)와 다르므로 리눅스로 login할수 없다. 만약 어느 피시가 리눅스로 login 하려면 그 피시의 주소를 192.168.1.X로 바꾸어야한다.
이 경우 회사의 물리적 랜 한개에 두개의 논리적 랜(203.234.216.0 과 192.168.1.0)이 존재한다. 이를 버츄얼 랜이라 부른다. 만약 이 랜에 연결된 리눅스에 두 그룹에 있는 피시가 모두 login할수 있도록 해주려면 이때 바로 IP aliasing을 리눅스의 랜카드에 적용하면 된다. 즉 리눅스 랜카드에 192.168.1.1 외에 203.234.216.1 어드레스를 IP aliasing을 이용해 부여하면 두 논리적 랜에 속한 모든 피시들은 리눅스에 login할수 있다.
이기법은 회사의 보안용으로도 응용이 가능하다. 즉 회사 내부랜 전용 호스트를 인터넷에서 접근이 불가능하게 만드는데 이 기법이 사용될수 있다.
*. 참고
192.168.1.0 네트웍 주소는 RFC(Request For Comment)에서 내부 랜 전용으로 할당한 주소이다. 따라서 라우터에는 이 주소를 외부로 라우팅하면 안된다.
3. IP aliasing 셋업
아래는 본인의 리눅스 피시에 IP aliasing을 구현한 예이다. 이 피시에는 랜카드를 두개 꼽았고 두번째 랜카드(eth1)에 IP aliasing을 구현하였다.
eth0의 IP 주소는 192.168.1.1
eth1은 150.1.254.1
eth1:0은 150.1.254.254 이다.
여기서 eth1:0이 바로 IP aliasing으로 부여한 주소이다. 이 경우는 eth1에 부여한 두개의 주소가 같은 네트웍에 속하므로 network aliasing이 아니고 IP aliasing이다. 아래에 IP aliasing을 구현하기위한 ifconfig와 route 명령 예이다.
(본인은 debian을 사용하므로 /etc/init.d/network 파일임)
*. ifconfig 명령 전에 커널을 컴파일해서 network aliasing과 ip aliasing을 넣어야한다.
#! /bin/sh
# localhost
ifconfig lo 127.0.0.1
route add -net 127.0.0.0
#
# ethernet 1
#
IPADDR=150.1.254.1
NETMASK=255.255.0.0
NETWORK=150.1.0.0
BROADCAST=255.255.255.255
GATEWAY=150.1.1.1
ifconfig eth1 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
route add -net ${NETWORK}
route add default gw ${GATEWAY} metric 1
#
# ethernet 0
#
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
route add -net 192.168.1.0
#
# ethernet-1 ip alias
#
ifconfig eth1:0 150.1.254.254 netmask 255.255.0.0 broadcast 150.1.255.255
route add -host 150.1.254.254 dev eth1:0
#
아래는 이 명령으로 ip aliasing을 구현했을때의 ifconfig와 netstat -nr 명령 출력 결과이다
churlsu:~> ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
eth0 Link encap:10Mbps Ethernet HWaddr 00:60:8C:EC:78:1B
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Interrupt:10 Base address:0x300
eth1 Link encap:10Mbps Ethernet HWaddr 00:A0:24:EA:95:B2
inet addr:150.1.254.1 Bcast:150.1.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:804 errors:0 dropped:0 overruns:0
TX packets:82 errors:0 dropped:0 overruns:0
Interrupt:5 Base address:0x210
eth1:0 Link encap:10Mbps Ethernet HWaddr 00:A0:24:EA:95:B2
inet addr:150.1.254.254 Bcast:150.1.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
churlsu:~> netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
150.1.254.254 0.0.0.0 255.255.255.255 UH 1500 0 0 eth1:0
192.168.1.0 0.0.0.0 255.255.255.0 U 1500 0 0 eth0
150.1.0.0 0.0.0.0 255.255.0.0 U 1500 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0 0 lo
0.0.0.0 150.1.1.1 0.0.0.0 UG 1500 0 0 eth1
churlsu:~>
배철수<bae@www.linuxlab.co.kr>