2009-10-26 5 views
2

적어도 시니어 프로젝트에서 NAT를 구현하려고 할 때 매우 흥미가 있습니다. (네트워킹 API를 수행 중입니다.) 그건 내 프로젝트에 대한 요구조차 아니에요, 내 관심사에요. 어떻게 작동하는지에 대한 기본 정보를 알고 잘못된 경우 수정하십시오. 두 클라이언트가 NAT 뒤에 있지 않은 서버에 연결하고이 두 클라이언트의 IP를 알고이 서버는 클라이언트에 연결하도록 알립니다. 서로 동시에. 따라서 "획기적인".NAT 테스트 중 획기적인 코드

코드 작성이 쉽지 않거나 어렵지 않게 보입니다. 그러나 내가 갇혀있는 부분은이 테스트입니다. 하나의 라우터/NAT 및 3 대의 사용 가능한 컴퓨터로 할 수있는 합리적인 설정이 있습니까?

어떤 조언을 주셔서 감사합니다!

+0

난 당신이에 대한 자세한 내용 anyhting을 듣고 싶네요

(당신이 무슨 뜻인지에 따라 할 수없는 경우 나 인식은 조금 혼란 코멘트를 먹으 렴). – Nate

+0

내가 할 때 여기로 돌아 오는 것을 기억하려고 노력할 것입니다. :) – bobber205

답변

1

NAT 위반에 대한 코드/이론의 측면에서 조언을 제공 할 수는 없지만 테스트 환경 설정에 대한 제안을 할 수 있습니다.

m0n0wall 사본을 다운로드하여 Virtual PC 이미지 (모두 무료)로 실행할 수 있습니다. 이렇게하면 추가 하드웨어를 구입하는 두 번째 라우터가 제공됩니다. 이 추가 라우터를 사용하면 두 클라이언트에 대해 별도의 서브넷을 만들 수 있습니다.

다른 옵션을 이해하기 쉽기 때문에 단순히 두 번째 라우터를 선택하는 것만으로도 좋은 값을 얻을 수 있습니다.

그런 다음 기존 라우터와 서버를 192.168.1.x/24 서브넷으로 설정하십시오. 그런 다음 두 번째 라우터 (m0n0wall/하드웨어 라우터)를 192.168.2.x/24 서브넷으로 설정하고 두 번째 라우터의 "인터넷"포트를 첫 번째 라우터의 "PC"포트 중 하나에 연결하십시오. 그런 다음 두 클라이언트를 두 번째 라우터에 연결하십시오.

1

내가이 똑바로 있는지 보자. NAT 뒤에있는 두 개의 클라이언트와 그렇지 않은 두 개의 클라이언트가 있습니다. 두 클라이언트는 모두 서버에 연결하고 다른 클라이언트의 공용 IP 주소를 알립니다. 이제는 목적지마다 목적지가 있기 때문에 서버와의 연결을 끊고 각각의 NAT 상자를 통해 서로 직접 연결합니다. 너 생각이야? 그렇다면 나쁜 소식이있을 수 있습니다.

이 기능을 사용하려면 적어도 하나의 외부 포트를 미리 정의 된 내부 IP 주소/포트 번호로 전달하려면 각 NAT 구성에 전용 포트를 설정해야합니다. 일반 NAT 설정에서 나가는 연결 요청은 NAT에 의해 캡처되어 임시 외부 포트가 열립니다. 외부 포트 번호는 해당 발신 주소 및 포트에 대한 통신에만 사용됩니다. 연결이 닫히면 외부 포트는 사라지고 나중에 다른 연결을 위해 다시 할당됩니다. 따라서 두 클라이언트가 모두 서버와 통신하여 연결을 끊으면 서버가 보낸 정보가 유효하지 않습니다.

어떻게 든이 문제를 해결했다고 가정하면 두 클라이언트를 모두 NAT의 "내부"쪽에 연결하고 서버 PC를 "외부"쪽에 연결하면됩니다. 그런 다음 NAT 상자가 하나의 로컬 외부 포트에서 다른 로컬 포트로 패킷을 되돌릴만큼 충분히 똑똑하기를 바랍니다. netfiler를이 방법으로 구성 할 수는 있지만 가정용 인터넷 "라우터"(예 : Linksys, NetGear 등)가 선반에서 수행 할 수 있을지는 의문입니다.

+0

정보 주셔서 감사합니다. 나는 아마 같은 LAN에서 그것을하는 많은 장애물들이 있음을 알았다.나는 아직도 이것을하려고 노력할지도 모른다. 그러나 나의 자료와 더불어 나는 아마 나의 교수님에게 어떤 약속도하지 않아야 하느냐? – bobber205