· 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 을 보내달라.




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.0210 sec