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

공인 ip와 내부 ip가 함께하는 랜

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle52.gif

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

 

필자가 얼마 전에 레이넷의 의뢰로 ㈜상업국제운송(http://www.airmec.co.kr)이라는 항공화물대행업체의 네트워크 구성에 대한 자문과  리눅스 서버에 웹, 메일,  DNS 서버 등을 설치하는 작업을 하게 되었다.

그곳의 네트워크 환경은 아래와 같았다.

서버가 두 대인데 인터넷을 통해 물류 VAN에 연결되는 NT 서버(피시) 한 대와 웹서버 및 메일서버 DNS서버용 리눅스 서버 한 대 그리고 윈9X가 설치된 클라이언트 피시가 20 여대였다.

레이넷과의 연결은 리모트 브리지를 사용하기로 했다. 그런데 레이넷에서는 공인 IP 를 6 개만 사용하고 나머지는 내부 IP를 써서 구성해 달라고 한다. 단 모든 윈9x 피시는 인터넷 사용이 가능해야 한다는 조건이다.
NT 서버는 공인 IP를 필요로 한다. 인터넷을 통해 다른 물류 VAN 서버와 데이터 교환이 필요하기 때문이다. 리눅스 서버도 마찬가지다.

공인 IP 중 2 개를 서버에 사용하므로 피시 중 4 대만 공인 어드레스를 주어야 한다. 나머지는 윈9X 피시는 리눅스의 공인 IP 주소를 공유해서 인터넷을 사용해서 구성해야 한다. 이 정도면 서버 2 대와 공인 IP를 갖는 윈9X 피시를 한 개의 랜으로 구성하고 나머지 피시 16대는 리눅스에 랜카드를 두 개 꼽아 IP Masq를 셋팅 후 내부 어드레스를 부여하면 된다.

즉 아래처럼 구성하면 된다.
그런데 아래 방식으로 연결했더니 레이넷에서 이의를 제기했다. 내부 IP(192.168.1.x)를 갖는 피시에서 물류 VAN 서버(NT)로 연결이 안된다는 것이다. 물류 VAN은 클라이언트 서버 방식이라 리눅스의 IP Masq를 통해 연결할 경우는 실행이 안되는 문제가 발생하였다.

이 정도라면 IP Masq 옵션을 수정해 윈9x의 클라이언트 프로그램이 물류 VAN 서버로 연결되도록 해 보겠는데 다른 조건을 제시했다. 리눅스가 다운되더라도 윈9x 피시 들이 물류 VAN 서버에 연결되도록 구성해 달라는 것이다.

피시에서 물류 VAN 서버를 접근 못하면 당장 업무를 볼 수 없으므로 비록 리눅스가 다운되고, 인터넷은 사용 못하더라도 물류 VAN 서버는 모든 PC에서 사용이 가능해야 한다는 것이다.

이거 참 골치 아픈 주문이네..

여러 가지 네트워크 구성을 검토하다 결국 채택한 안은 아래 그림과 같다.
이 방식으로 위의 조건을 모두 충족시켰다.
그 이유는 이 그림으로 충분히 설명되리라고 본다.

좀 더 자세하게 설명을 하겠다.

1) 윈98 피시에 부여하는 내부 IP는 192.168.1.X 주소를 사용하지 않고 공인 IP 와 같은
    210.108.148.X 주소를 썼다. 그러나 위에서 210.108.148.100 과 210.108.148.1 주소는
    내부 IP이고 210.108.148.217부터 219까지는 공인 IP 이다.

그럼 같은 랜에 속한 두 대의 윈98 피시에서 네트워크 어드레스가 같은데(210.108.148.x) 어떻게 한 대는 공인 IP(210.108.148.219)이고 다른 한 대는 내부 IP(210.108.148.100)가 될 수 있는가?

비밀은 디폴트게이트웨이 지정에 있다. 공인 IP를 갖는 윈98 피시는 게이트웨이를 210.108.148.222로 지정해야 하고, 내부 IP를 갖는 피시는 게이트웨이를 리눅스의 두 번째 랜카드(eth1)에 부여된 내부 IP (210.108.148.1)로 지정해야 한다.

물론 리눅스에서는 내부 IP 별로 IP Masq를 설정해야 한다.
즉 리눅스의 rc.local에서 IP Masq는 아래처럼 지정한다.
 

 /sbin/ipchains -P forward DENY
 /sbin/ipchains -A forward -s 210.108.148.1/32 -j MASQ
 /sbin/ipchains -A forward -s 210.108.148.100/32 -j MASQ
 /sbin/ipchains -A forward -s 210.108.148.101/32 -j MASQ

 

이 부분을 아래처럼 지정해도 문제는 없으나 확실히 하기 위해서 이다.
 

/sbin/ipchains -A forward -s 210.108.148.0/24 -j MASQ

 

왜냐하면 공인 IP를 갖는 윈9X 피시에서 보내는 패킷은 어차피 리눅스를 거치지 않고 직접 브리지를 통해 인터넷으로 나가기 때문이다.

2) 리눅스에 2 개의 랜카드를 꼽은 이유는 첫번째 랜카드(eth0)는 공인 IP를 갖고
    (210.108.148.217) 두 번째 랜 카드(eth1)는 내부 IP를 갖기 때문이다. 내부 IP를 갖는
    모든 윈9X 피시는 게이트웨이를 210.108.148.1로 지정해야 한다. 그러면 이 피시들은
    인터넷과 연결시는 리눅스의 공인 IP인 210.108.148.217을 공유한다.

아래에 리눅스 서버의 네트워크 설정을 보기 바란다.
 

[root@ns1 /root]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:BF:0C:EB:4E
          inet addr:210.108.148.217  Bcast:210.108.148.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:30254 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27803 errors:0 dropped:0 overruns:0 carrier:0
          collisions:11 txqueuelen:100
          Interrupt:10 Base address:0x6000

eth1      Link encap:Ethernet  HWaddr 00:50:BF:0C:EF:2E
          inet addr:210.108.148.1  Bcast:210.108.148.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4709 errors:0 dropped:0 overruns:0 frame:0
          TX packets:191 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          Interrupt:11 Base address:0x6100

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:3924  Metric:1
          RX packets:186 errors:0 dropped:0 overruns:0 frame:0
          TX packets:186 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0

[root@ns1 /root]# netstat -nr
Kernel IP routing table
Destination           Gateway          Genmask          Flags   MSS Window  irtt  Iface
210.108.148.1       0.0.0.0            255.255.255.255     UH       0       0          0    eth1
210.108.148.217    0.0.0.0            255.255.255.255     UH       0       0          0    eth0
210.108.148.0       0.0.0.0            255.255.255.0         U         0       0          0    eth0
210.108.148.0       0.0.0.0            255.255.255.0         U         0       0          0    eth1
127.0.0.0              0.0.0.0            255.0.0.0                U         0       0          0    lo
0.0.0.0         2  10.108.148.222     0.0.0.0                   UG       0       0          0    eth0

 

3) 이와 같이 설정하였으면 공인 IP 210.108.148.1과 100 를 레이넷 쪽 랜에서 사용해도
    아무런 문제가 없다. 상업국제운송 쪽 랜의  내부 IP를 사용하는 피시에서 보내는 패킷은
    인터넷에서는 리눅스의 공인 IP 주소에서 오는 것으로 나타나기 때문이다.

4) 이제 리눅스가 다운되도 모든 윈98 피시는 NT 서버로 연결이 된다. 단지 리눅스가 다운되면
    내부 IP를 갖는 피시는 인터넷만 사용할 수 없다. 또 이 랜에는 254대 까지 내부 IP를 갖는
    윈98 피시를 추가할 수 있다. 레이넷은 갖고 있는 공인 IP 중 오직 3개만 사용하였을
    뿐이다.(위의 그림에서)

5) 마지막으로 위에서 리눅스에는 꼭 랜카드가 2 개 필요할까? 필자의 견해로는 리눅스에
    IP aliasing을 구현해서 2 개의 주소를 부여해도 문제가 없을 것 같다. 단지 랜카드를 2개
    꼽는 경우가 한 개보다 내부 IP를 갖는 피시의 인터넷 연결 속도가 빠를 것 같아 2개를
    사용했을 뿐이다.

혹시 위의 네트워크 구성에 대해 다른 견해가 있다면 필자에게 알려주기 바란다.
참고로 위의 리눅스 서버의 네트워크 관련 설정 파일을 아래에 올렸다.(영문 레드햇 6.0)

 

[root@ns1 sysconfig]# cat network
NETWORKING=yes
FORWARD_IPV4=true
HOSTNAME=ns1.airmec.co.kr
DOMAINNAME=airmec.co.kr
GATEWAY=210.108.148.222
GATEWAYDEV=eth0

[root@ns1 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
IPADDR=210.108.148.217
NETMASK=255.255.255.0
NETWORK=210.108.148.0
BROADCAST=210.108.148.255
ONBOOT=yes

[root@ns1 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
IPADDR=210.108.148.1
NETMASK=255.255.255.0
NETWORK=210.108.148.0
BROADCAST=210.108.148.255
ONBOOT=yes

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,045 명
  • 현재 강좌수 :  35,861 개
  • 현재 접속자 :  74 명