NAT 원리가 도대체 감이 안잡히네요.
글쓴이: sisbn / 작성시간: 월, 2005/02/07 - 11:39오후
예를들어, 제 방에 두대의 컴퓨터를 ip공유기를 통해서,
내보내는것은 문제가 안되겠죠.
그런데 외부 컴퓨터에서 이 사설 네트웍안의 특정 호스트에 어떻
게 정확히 데이터를 보낼 수 있는건지 모르겠네요.
분명히 외부 컴퓨터에선, 그 공유기의 주소를 향해서 보내게 될텐
데 말이죠. 그 공유기가 담당하는 작은 네트웍안의 특정 호스트에
대한 정보는 그 패킷구조상 어디에들어가는건가요..?
알려주시면 감사하겠습니다.
Forums:
같은 컴퓨터에도 여러 프로그램이 떠 있습니다.동시에 IE와 Fir
같은 컴퓨터에도 여러 프로그램이 떠 있습니다.
동시에 IE와 Firefox를 돌리면서 웹페이지를 browsing할수도 있고요. MSN을 통해서 동시에 여러 친구와 채팅을 할 수도 있죠.
그래도 데이터는 알아서 해당 프로그램을 잘 찾아가죠? NAT도 별다를 게 없습니다. 단지 해당 프로그램을 찾아가는 대신에 새로이 다른 컴퓨터로 다시 패킷이 가는 것 뿐. (물론 좀 더 복잡하긴 하지만...)
NAT의 원리는 간단히 말하면...
공유기 같은에서 사용되는 NAT는 정확히 말하면 PAT (Port Address Translation (맞나?)) 라고 할 수 있습니다. 다시 말해서 Port 번호를 가지고 IP 공유 서비스를 하는거죠.
원리는 간단히 말하면.
먼저, 사설망안에 있는 호스트가 외부로 접속을 시도 합니다. 물론 외부 접속을 할려면 공유기(라우터 역할을 하겠죠)를 통과해야 합니다. 이때 공유기는 사설망에서 접속이 들어오는 TCP, UDP 접속을 외부로 넘겨주기위해서 포트 하나를 생성합니다. 그리고 그 포트번호랑 사설망안에 있는 호스트의 IP주소 정보를 테이블에 기록합니다. 그런후 생성된 포트를 통해서 외부에 접속을 하게 됩니다.
그후, 외부에서 데이터가 들어오면 아까 생성된 포트로 들어오겠죠. 이때 공유기는 그 포트 번호에 물려있는 호스트 IP 를 알기 때문에 그쪽으로 패킷을 보내주게 됩니다.
한참후, 아까 생성된 포트로 패킷이 흐르지 않을 경우 적절한 시간후에 그 포트를 다시 미사용으로 돌려놓습니다.
음... 설명이 잘 됐는지 모르겠습니다.
위의 PAT 서비스를 하는데 몇가지 해결사항이 있는데,
1. 오고가는 패킷의 헤더정보 및 필요에 따라 Payload 데이터 정보를 적절하게 변경해줘야 합니다. 사설망안에 있는 호스트는 외부로 패킷을 보낼때 IP헤더의 Source address를 자신의 것으로 (192.168.1.xxx)로 보내기때문에 공유기를 통과하면서 공유기의 아이피로 바꿔줘야 외부의 호스트가 패킷을 보낼수가 있습니다. 포트번호도 그렇고 기타등등... 이것때문에 Checksum도 바뀌게 되고... 때로는 헤더가 아닌 Payload의 데이터도 바꿔줘야 하는경우가 있습니다. 특히 Payload안에 호스트의 IP 주소가 들어가 있는 경우가 그렇습니다. 예를 들면 FTP 전송할때 입니다. 하여간에 패킷을 까서(?) 정보들을 적절히 바꿔줘야 합니다.
2. 사설망에서 외부로 접속을 시도하는 것이 아닌, 외부에서 사설망쪽으로 접속을 시도할 경우에 공유기는 어느 호스트로 패킷을 보내야 할지 결정해야 합니다. 공유기에 별다른 셋팅이 없을 경우는 이 패킷을 그냥 버려지게 됩니다. 하지만, 공유기에 셋팅 (예를들어 FTP접속은 192.168.1.2라는 IP로 Forwarding)을 해놓으면 특정호스트로 접속이 들어오게 할 수 있죠....
도움이 될런가 모르겠습니다... :wink:
오~!
정말 감사합니다. 제가 궁금했던것을 정확히 말씀해주셨네요.
^----^
여기서 또 다른 질문을 드려두 될까요...?
보통 IP 공유기를 사게 되면, 가상 ip를 몇개 갖도록 해놓았는데,
외부네트웍에서 제 공유기에 연결되어있는 제 컴퓨터의 ftp 서버
에 접속을 하려고 할때, (제 호스트의 ip가 192.168.10.100이라
고 했을때)
저 ip는 누구나 갖을 수 있는것인데, 어떻게 다른 네트웍의 임의
의 호스트에서 제 호스트로 접근이 가능한가요? 님이 말씀하신 포
워딩을 했다고 해도말이죠.
부탁드려요.~
외부 network에서 [b]sibn[/b]님 network을 바라볼때는
외부 network에서 sibn님 network을 바라볼때는 공유기 밖에 볼 수 없습니다. 보통 공유기 설정에 보면 현재 공유기가 받은 ip 주소를 알 수 있는데요, 외부에서 그 ip로 접속하면 됩니다. 물론 공유기에서는 ulsiguya 님이 말씀하신 것처럼 forwarding 설정을 해둬야 겠지요. :)
Re: 오~!
192.168.0.x ~ 192.168.255.x 의 내부 네트워크에서만 의미가 있는 private address입니다. 따라서 sisbn님의 컴퓨터의 IP가 192.168.10.100라도 이 주소값은 자신의 내부 네트워크에서만 유효합니다.
아~!
답변감사합니다. 근데 지금 제 공유기가 바로 공인 IP로 물려 있는게 아니라
제 자취방으로 들어오는 IP도 192.x.x.x로 들어오거든요.
그건 제 방으로 들어오는것도 결국, 공유기에서 할당받은 선이 들어온다는것 아
닌가요?
최소 두번이상의 공유기를 거쳐서 들어온다는건데 이 경우도 외부 네트웍에서
제 컴퓨터에 접근하려면, 어떻게 해야하는지 감이 안잡히네요.ㅡ.ㅡ;
외부 호스트
|
V
공인IP -> 공유기1 -> network{host +공유기2} -> network{ 호스트들 }
이러한 상황에서도 DDNS 서비스가 가능한가요?
답변 부탁드려요..
Re: 오~!
공유기 DHCP설정중에 고정 주소 할당이 있습니다.
해당 컴 랜카드에 MAC어드레스를 비교해서 고정적인 사설주소 할당이 가능합니다.
그걸 해주시고 사용하셔야 할겁니다.
--
마잇
외부에서 내부 호스트로
사설 내부 IP 주소로 외부에 서비스하려면 DNAT(Destination NAT) 를 해 주셔야 합니다.
윗분 말씀대로 고정 IP를 일단 받으신 후 DNAT로 검색해 보심이...
댓글 달기