제2강 : IP Routing Protocol (IP Routing 과정)
날 짜 : 2002년 04월 29일
발표자 : 정택진 과장(디오넷)
IP Routing 과정은 IP Routing Basic, IP Routing Protocol, RIP, OSPF, Layer 2 Topology Engineering 으로 구성이 됩니다.
본 강의는 IP 라우팅에 관한 첫 강의로 IP routing에 관련한 기본적인 사항들을 학습하는 것이 목표이다.
내용은 IP Addressing (CIDR), MAC 주소, ARP, IP forwarding table and Longest prefix matching, Proxy ARP, CIDR과 Route aggregation 등으로 이루어진다.
제가 알고 있기로 사설 IP를 사용하는 규칙이 각 클래스 별로 있다고 들었는데 즉
A class : 10.0.0.0 - 10.255.255.255
B class : 172.16.0.0 - 172.35.255.255
C class : 192.168.0.0 - 192.168.255.255 .....맞나?....*^^*
그럼 이 IP 대역 이외의 IP는 모두 공인 IP 로 사용하고 있는 것들인가요?...보니까 어떤 회사는 사설 IP를 사용한다고 하는데 IP 가 100.100.100.0/24 대역 이더라구요...도대체 공인된 IP 대역이 어디이고 또 사설로 사용할 수 있는 IP가 어떤 대역인지 알수 있을 까요?....강의 아주 잘 들었습니다. 많은 도움이 되었습니다.
이 주소들 이외의 주소는 원칙적으로 모두 지구상 어디엔가에 배정되어 있는 공인IP주소입니다.
외부에서 사용하고 있는 공인주소를 사설 주소처럼 사용하려면 bi-directional NAT라는 방식을 사용하면 됩니다.
즉, 100.100.100.0/24는 실제로 외국 어디에선가 사용하고 있을 공인주소이지만, 이를 망 내에서 사설주소처럼 사용하겠다고 하면 다음과 같은 두 가지 변환이 필요합니다.
1) source IP 주소의 변환
이것은 10.0.0.0/8 등의 사설주소를 사용할 때와 마찬가지로, 망 외부로 나가는 패킷의 source IP 주소를 공인주소로 변환하여 내보내는 것을 뜻합니다.
예를 들어 사설망 내에서 100.100.100.0/24를 사용하고 이것이 단 하나의 공인 IP 210.210.210.1 로 변환을 해서 나가는 식입니다.
어차피 NAT를 거쳐 사설망 외부로 나갈 때에 source IP주소를 공인주소로 변환을 하기 때문에, 사설망 내부에서 100.100.100.0/24 의 주소를 사용하더라도 외부에서 보이는 주소는 210.210.210.1 하나 뿐이므로 별 문제는 없습니다.
다만, '진짜' 100.100.100.0/24 주소를 사용하는 호스트들과의 통신은 불가능해집니다.
사설망 내에서 목적지 IP 주소가 100.100.100.0/24에 속하게 되면 이는 NAT를 거쳐 외부로 나가는 패킷이 아닌 사설망 내부의 호스트로 향하는 패킷으로 처리되기 때문입니다.
따라서 '진짜' 100.100.100.0/24 와 통신을 할 수 있는 방법이 추가로 필요하게 됩니다.
2) 목적지 IP주소의 변환
실제로 외부 인터넷에 존재하는 100.100.100.0/24와 통신을 하게 될 경우, 사설망 내부에서는 '진짜' 100.100.100.0/24 의 주소들을 다른 주소로 변환하여 사용하게 됩니다.
예를 들어, 사설망 내부의 100.100.100.1 이 망 외부의 '진짜' 1001.100.100.2 라는 호스트와 통신을 하기 위해서는, 사설망 내에서는 '진짜' 100.100.100.2 의 주소를 192.168.0.2 등의 사설주소로 변환하여 취급을 해야하고, 이것이 사설망 외부로 내보내질 때에는, source IP는 공인주소로, 목적지 IP 192.168.0.2는 진짜 주소인 100.100.100.2로 변환을 해서 나가게 되는 것입니다.
다시 말하면, 원래 공인 주소 영역인 100.100.100.0/24를 사설주소로 사용하기 위해서는, 진짜 100.100.100.0/24를 192.168.0.0/24 등의 주소로 변환을 해서 사설망 내부에서 사용을 하고요, 이것이 NAT를 거쳐서 나갈 때 source 주소는 210.210.210.1로, 목적지 주소는 100.100.100.2로 변환을 하는 겁니다.
이렇게 내부 사설망의 주소와 충돌되는 진짜 외부 공인 주소 100.100.100.0/24를 192.168.0.0/24로 변환해 주는 일은 NAT에 포함되어 있는 DNS-ALG의 역할입니다.
즉, 사설망 내부의 PC가 요청한 URL의 IP가 DNS 패킷으로 응답이 돌아올 때, 그 주소가 사설망 내부에서 사용하는 주소와 충돌된다면 이 DNS 패킷을 변환해서 사설망 내부에 알려주는 것입니다.
예를 들어, 사설망 내부의 PC가 웹브라우져 상에서 www.foo.com을 입력했는데, 이 도메인의 실제 주소가 우연히도 100.100.100.10 이라고 합시다. 그러면 DNS 서버가 이 주소를 알려주게 되겠지요. NAT는 사설망 외부에서 들어오는 DNS 응답 메시지를 주시하고 있다가 100.100.100.10 을 발견하고는 이 DNS 응답 메시지를 192.168.0.10 으로 고쳐쓴 후에 사설망 내부로 전달해줍니다.
PC의 웹브라우져는 이 DNS 응답을 보고 192.168.0.10을 목적지로 하는 TCP 연결을 요청하게 됩니다. 이 패킷이 NAT를 통과할 때에는 source, destination 주소가 모두 변환됩니다.
답변이 늦어서 죄송합니다.
저는 최근 메트로이더넷을 운용하고 있는 KT직원이랍니다. 설명하시는 방법이 저와 딱 맞아서 타 프로토콜에 대한 부탁을 드립니다.
그리고 시험용에서 각 프로토콜의 동작을 확인할 수 있는 방법은 무었일까요 ?
동 사이트를 뒤지고 있지만 다소 어렵네요 ....
많은 사람을 위한 이런 지원에 감동도 되고 감사스럽네요
세상의 모든 행운이 함께하길 ....
그런데, 궁금한게 있는데요,
사설망 내부의 PC에서 도메인 네임으로 실제 주소의 호스트와 통신을 하게 되는 경우에는, 도메인 네임의 IP를 얻기 위해서 DNS 서버가 관여를 하게되고(보통 DNS 서버는 사설망 내부에 있지 않고 외부에 있게 되잖아요?) 그러면 NAT가 사설망 외부에서 들어오는 DNS 서버 응답 메시지를 주시하고 있다가 IP 변환을 하게 된다고 하셨는데요, 여기까지는 이해가 잘 되었습니다.
그런데, 사설망 내부의 PC에서 도메인 네임으로 실제 주소와 통신하지 않고, 직접 IP를 가지고 통신을 하려고 하면 어떻게 해야 하는지요?
제가 알기로는, PC단에서 목적지 IP와 서브넷 마스크를 체크하여, 목적지 IP가 나와 동일 LAN 상에 존재하면 직접 이더넷 주소를 구해 해당 호스트로 패킷을 보낸다고 알고 있습니다. 즉, 사설망 외부로 나갈 일이 없다는 거지요. 그렇게 되면 IP 변환을 해주는 NAT도 거칠 수가 없게 되지요..
제가 알고있는데 맞다면...
그렇다면, 사설망 내부의 PC에서 진짜 IP 주소의 호스트와 IP로 통신할 수 있는 방법은...없는건지요?
답변 기다리겠습니다.
강의 너무너무 잘 들었습니다. 감사합니다.
그런데요, 두번째 강의, IP 라우팅 프로토콜 강의에서, 목차에 Link State Routing과 OSPF에 대한 항목도 있는데 이에 대한 내용은 없더라구요.
언제쯤...들어볼 수 있을까요?
사설망 내에서 100.100.100.0/24 를 쓰고, 진짜 100.100.100.0/24 네트워크 주소를 사설주소 192.168.0.0/24 에 대응시켰다면,
사설망 내의 100.100.100.1 이라는 단말이 진짜 '100.100.100.2'와 통신을 하려면 192.168.1.2 와 같이 그 대응주소를 직접 사용할 수 밖에 없겠죠.
근데, 이건 RFC문서에서 규정된 표준적인 절차일 뿐이고, 실제로 공인주소를 사설주소처럼 쓰는 국내의 몇몇 사이트에서는 진짜 그 공인주소를 사용하는 도메인과는 통신을 포기하더군요.
또하나, 네매니아즈의 '네트워크 Q&A' 게시판에 보시면, 이 질문에 대해 다른 분이 답변하신게 있는데요, 그분 말씀으로는 100.100.100.0/24 네트워크 주소가 reserved 되어 있는 것으로 검색된다고 하는군요. 분명 사설주소는 아닌데 말이죠. 그러니까 100.100.100.0/24 네트워크는 특정 사이트에 할당되지 않는 주소이니까 사설주소처럼 사용하는 편법이 별 문제를 안일으킬 수 있는 것이 아닌가 생각됩니다.
강좌를 하지않으면 혹시 라우팅 프로토콜을 쉽게 이해 할 수 있는 책이 있음 알려 주세요.
마지막으로 디오넷을 들어 가려면 가입을 해야 하던데 가입하면 좋은 자료가 많이 있나요..
넘 많은 질문을 드려 죄송합니다..답변 부탁 드려요..
관심가져 주셔서 감사하고요,
BGP나 IS-IS는, 직접 개발해보신 경험이 있거나 ISP의 IP edge 라우터 이상의 장비에서 직접 운영을 해보신 경험이 있는 분이 해주셨으면 하는게 저의 바램입니다.
앞으로의 강의계획은, 802.1 시리즈 즉 Layer2/3 switch의 ethernet으로서의 특성 및 표준에 관한 내용으로 진행할 생각입니다. 최근에 개발하는게 이런 쪽이라 제가 강의 준비하기가 편해서 그렇습니다.
라우터 프로토콜들은 이런 다양한 방법의 메트릭 계산을 하는걸로 알고있습니다만..그림들의 예제는 rip을 사용해서 계산되는거는 아닌거 같고 igrp또는 eigrp들의 프로토콜의 사용으로 메트릭을 계산하는것을 보여주는건지 궁금하네여..너무 초보적인 질문이 아닌지 걱정되네여..
계속해서 좋은 강의 기대됩니다..
3차강의를 고대하며 기다린지도 오래 되어가는 것 같습니다. 직장에서는 요즘 회선구성시 switch방식으로 기존 방식을 대체해 나가고 있는데 님의 강의가 큰 도움이 될 것 같습니다.
조만간 3차강의를 기대합니다. 감사합니다...^^
질문이 강의 내용과는 좀 상관이 없을지도 모르겠네요..ㅎㅎ;;
socket으로 메시지를 보낼때요..
가령 TCP의 경우, local address로 binding하고 보낼 때요..
그 주소를 local 주소가 아닌 다른 주소로 바꿔서 보낼 수있나요?
수신측에서 recv 했을 때 remote addr를 다른 값으로 보이게 하고 싶어서요..
혹시 그렇게 변경하면 IP layer에서 에러가 나는지요..?
가령, binding시 IP addr를 포함하여 checksum 등을 계산한다거나해서요..
혹시 가능하면 IP addr 변경하는 방법도 알려주심 감사하겠습니다.
수고하세요..