본문 바로가기

Linux

멀티 IP 쓰기, ip alias

맥 (Free BSD)
ifconfig en0 alias 172.16.3.100/24 (x는 기존에 할당받아서 사용하던 IP)
해지: ifconfig en0 -alias 172.16.3.100/24

리눅스

리눅스 에서 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. 명령 및 결과
  3. 질문과 답변
     3.1 부팅시에 어떻게 환경설정을 지킬 수 있는가?
     3.2 IP aliased된 서버의 e-mail 셋업

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

  ______________________________________________________________________

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



'Linux' 카테고리의 다른 글

CONFIG_MODVERSIONS  (0) 2012.08.29
[EXT4] noauto_da_alloc 에 관해  (2) 2012.08.28
Macbook에서 Linux 커널패닉 날때 (IO APIC)  (2) 2012.08.09
Byobu 도움말  (0) 2012.07.24
[Linux/Unix]디스크 쿼타(Disk Quota)  (0) 2012.07.20