· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/IP-Alias

리눅스 에서 IP Aliasing 세팅하기 mini HOWTO

리눅스 에서 IP Aliasing 세팅하기 mini HOWTO

Harish Pillay, < h.pillay@ieee.org>

0.?, 1997년 1월 13일
이글은 리눅스박스에서 IP aliasing을 어떻게 설정하고 실행할 것인지에 대한 것이다. 참고로, Alias 된 IP로 E-mail을 받을 수 있도록 설정을 어떻게 할 것인지에 대한 방법이 들어있다. Primary site: http://home.pacific.net.sg/~harish/linuxipalias.html

1. 나의 환경

  • 리눅스 커널 2.0.27 (from ftp.funet.fi:/pub/Linux/kernel/src/v2.0)
  • IP Alias는 로드할수 있는 모듈로 컴파일되었다. 당신이 IP Masq를 모듈로 컴파일 하고 싶다면, 커널 컴파일시 "make config"로 설정할 수 있다. Modules HOWTO를 읽어보거나, /usr/src/linux/Documentation/modules.txt에서 확인할 수 있다.
  • 나는 두개의 IP를 더 쓸 것이고 이 두개는 이미 나에게 부여된 것이다.
  • D-Link DE620 포캣 아답타(어떤 리눅스 아답타를 쓰던지 중요하지 않다.)

2. 명령 및 결과

첫째로 IP Alias 모듈을 띄워야 한다. (미리 모듈을 커널로 컴파일 했으면, 이 단계를 뛰어넘어도 된다.)

     /sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o

두번째, 루프백을 설정한후 eth0과 모든 다른 IP넘버들은 eth0 인터페이스를 위해서 주 IP넘버로 시작되어야 한다.

     /sbin/ifconfig lo 127.0.0.1
     /sbin/ifconfig eth0 up
     /sbin/ifconfig eth0 172.16.3.1
     /sbin/ifconfig eth0:0 172.16.3.10
     /sbin/ifconfig eth0:1 172.16.3.100

172.16.3.1 은 주IP넘버이고 .10과 .100은 Alias된 IP넘버이다. 다른 아이피 넘버에 대해서 eth0:x에 0,1,2...n을 대입하는 것이 방법이다. 주 IP 넘버는 알리아스될 필요가 없다.

셋째로 라우트 정보를 설정한다. 루프백을 첫째로 라우트시키고 net 을 그 다음으로 그리고 마지막으로 기본 아이피(원래 배당받았던)로 시작되는 아이피 넘버들을 셋업한다.

     /sbin/route add -net 127.0.0.0
     /sbin/route add -net 172.16.3.0 dev eth0
     /sbin/route add -host 172.16.3.1 dev eth0
     /sbin/route add -host 172.16.3.10 dev eth0:0
     /sbin/route add -host 172.16.3.100 dev eth0:1
     /sbin/route add default gw 172.16.3.200

이게 다이다.

위의 예에서 든 아이피넘버는 Private IP넘버(RFC 1918)를 실제적 예가 되는 목적으로 사용했다. 여러분의의 실제 아이피넘버를 이것이랑 대체해서 써라.

3개의 아이피 넘버에 대해서 예를 들었다. 최대치는 256으로 /usr/include/linux/net_alias.h에 정의되어있다. 사실 한카드에 256개의 IP넘버는 많은 것이다.

여기에 나의 /sbin/infconfig이 보여주는 결과가 있다.

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:5088 errors:0 dropped:0 overruns:0
          TX packets:5088 errors:0 dropped:0 overruns:0

eth0      Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.1  Bcast:172.16.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:334036 errors:0 dropped:0 overruns:0
          TX packets:11605 errors:0 dropped:0 overruns:0
          Interrut:7 Base address:0x378

eth0:0    Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.10  Bcast:172.16.3.255  Mask:255.255.255.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

eth0:1    Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.100  Bcast:172.16.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0
          TX packets:0 rrors:0 dropped:0 overruns:0

그리고 /proc/netaliase:

device           family address
eth0:0           2      172.16.3.10
eth0:1           2      172.16.3.100

/proc/net/alias_types에서 보여지는 것이다.

type    name            n_attach
2       ip              2

물론, /proc/net에 있는 이런것들은 ifconfig 명령에 의해서 만들어진 것이지

내 수작업이 아니다!!

3. 질문과 답변

3.1 부팅시에 어떻게 환경설정을 지킬 수 있는가?

당신이 BSD스타일이나 SysV스타일(예:레드햇)의 init을 쓰던 당신은 /etc/rc.d/rc.local에 그것을 포함할 수 있다. 아래에는 내가 쓰는 SysV init 이다.(레드햇 3.0.3 or 4.0)

나의 /etc/rc.d/rc.local (edited to show the relevant portions)

#setting up IP alias interfaces
echo "Setting 172.16.3.1, 172.16.3.10, 172.16.3.100 IP Aliases ..."
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 172.16.3.1
/sbin/fconfig eth0:0 172.16.3.10
/sbin/ifconigfeth0:1 172.16.3.100
#setting up the routes
echo "Setting IP routes ..."
/sbin/route add -net 127.0.0.0
/sbin/route add -net 172.16.3.0 dev eth0
/sbin/route add -host 172.16.3.1 eth0
/sbin/route add -host 172.16.3.10 eth0:0
/sbin/route add -host 172.16.3.100 eth0:1
/sbin/route add default gw 172.16.3.200

3.2 IP aliased된 서버의 e-mail 셋업

질문: 어떻게 각양각색으로 alias된 아이피 넘버에서 IP aliased된 서버를 e-mail을 받게 셋업할수 있습니까?(sendmail을 쓰는 서버에서)

/etc/mynames.cw의 예에서 보여지는것과 같은 파일을 만들라(그것이 존재하지 않는다면) 그것은 이것과 같은 이름이 아니거나 /etc디렉토리에 없을수도 있다. (역자주: 레드헷에서는 sendmail.cf 에서 cw 를 사용한다고 정의되 있다./etc/sendmail.cw 를 사용한다.) 이 파일에서 alias된 아이피넘버의 도메인 네임을 적는다. 만약 알리아스된 아이피가 도메인네임을 안가지고 있을경우에는 아이피넘버 자체만을 써줄수도 있다.


/etc/mynames.cw:
----------------
# /etc/mynames.cw - 당신의 서버에대한 모든 알리아스 이름을 여기다 적는다.
# 은 주석이다.

domain.one.net
domain.two.com
domain.three.org
4.5.6.7

당신의 sendmial.cf 화일에서 파일 클래스 매크로 Fw를 정의하는 부분에서 다음을 추가한다.


##################
#   local info   #
##################
.
.
# 우리가 이-메일을 받기위한  호스트 이름을 가지고있는 파일 
Fw/etc/mynames.cw
.
.
.

이것은 꼭 해봐야 한다. 새로운 설정을 테스트하기 위해서 테스트모드로 센드메일을 실행을 한다. (역자주: 말 그데로 꼭 해보기 바란다. sendmail 은 메일을 받고 보내기 위한 아주 중요한 데몬이다. 약간의 실수로 메일을 못 받게 된다면?)

ganymede$ /usr/lib/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter < ruleset> < address>
> 0 me@4.5.6.7
rewrite: ruleset  0   input: me @ 4 . 5 . 6 . 7
rewrite: ruleset 98   input: me @ 4 . 5 . 6 . 7
rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 7
rewrite: ruleset 97   input: me @ 4 . 5 . 6 . 7
rewrite: ruleset  3   input: me @ 4 . 5 . 6 . 7
rewrite: ruleset 96   input: me < @ 4 . 5 . 6 . 7 >
rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset  3 returns: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset  0   input: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset 98   input: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset  0 returns: $# local $: me
rewrite: ruleset 97 returns: $# local $: me
rewrite: ruleset  0 returns: $# local $: me
> 0 me@4.5.6.8
rewrite: ruleset  0   input: me @ 4 . 5 . 6 . 8
rewrite: ruleset 98   input: me @ 4 . 5 . 6 . 8
rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 8
rewrite: ruleset 97   input: me @ 4 . 5 . 6 . 8
rewrite: ruleset  3   input: me @ 4 . 5 . 6 . 8
rewrite: ruleset 96   input: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset  3 returns: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset  0   input: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 98   input: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 95   input: < > me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 95 returns: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset  0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 97 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset  0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >
>

내가 me@4.5.6.7을 테스트했을때를 주의해서보자. 그것은 me@4.5.6.8이 smtp mailer에 의해서 통제가 끝나는 동안 로칼 머쉰에 메일을 보냈다.

4. 당신은 모든걸 끝냈다.

앞서 말했던 것이 유용했으면 좋겠다. 이 리눅스와 아이피 알리아싱에 대한 일들에 관여했던 모든 이들에게 감사드린다.

만약 당신이 이 문서가 유용하거나 질문, 제안을 할것이 있거나 개선을 해야할 점을 발견하면 < h.pillay@ieee.org>로 E-mail 을 보내달라.


ID
Password
Join
Money will say more in one moment than the most eloquent lover can in years.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:30
Processing time 0.0041 sec