iptime V 개발자 분께서 읽어주셨으면 합니다
작년에 iptime V를 구입하여 올해부터 쓰기 시작한 사용자 입니다.
이 글은 개발자 분께서 봐주셨으면 합니다.
다름이 아니라...
프로그램 구현시 궁금한 점이 있어서 문의 드립니다.
iptime V에 사용된 kernel은 linux 2.4.19에 SNAT,DNAT,IP Masq를 사용하였다고 했고,
또 테스트 프로그램을 통해서 iptime V에서 쓰이는 NAT 방식은 port restricted cone
방식이란 것을 확인하고 그것에 맞춰서 구현을 하였는데...
한가지 문제점이 발생하였습니다.
상황은 이렇습니다.
A,B 라는 컴퓨터가 iptime V(공유기)에 물려있습니다.
iptime V는 고정 IP로 세팅하였습니다.
A라는 컴퓨터가 UDP 소켓을 생성하여 27000 포트에 바인딩을 합니다.
그리고는 서버에 패킷을 보냅니다. 서버에 패킷을 보내게되면 서버에서는 실제 나갈때 포트번호를 알 수 있고 이 정보를 다시 A 및 다른 컴퓨터에게(TCP로) 보내줍니다.
NAT 테이블매핑을 위해 아무 의미없는 데이터를 생성된 UDP 소켓을 통해서 각각 X,Y,Z라는 컴퓨터에 패킷을 보냅니다.
이럴 경우에 공유기를 통해서 나간 패킷을 캡쳐해서 분석해보면 포트번호가 제대로 지정되어있습니다( 포트번호 27000 번 ).
A와 B가 같은 공유기에 물려있고 동시에 27000번 포트에 바인딩을 시도합니다.
물론 A와 B중 먼저 패킷을 보내는 컴퓨터에게 27000 포트번호를 할당하고 조금 늦게 보내는 컴퓨터에게는 port pool에서 남는 포트번호를 할당 할 것입니다( 실제로 해보면 먼저 패킷을 보내는 컴퓨터에 27000번 포트를, 그리고 조금 늦게 보내는 컴퓨터에게는 대략 1024 번 이후 포트를 할당합니다 )
이 상태에서 A,B는 서버에 패킷을 날려줍니다.
이제 여기서 문제입니다.
A( 27000 번 포트 )는 X,Y,Z에 패킷을 보냅니다( 연속적으로 ). B( 1109 번 포트 )도 X,Y,Z에 패킷을 보냅니다( 이것 역시 연속적으로 ).
이때 패킷을 캡쳐해보면 이해하기 어려운 상황이 벌어집니다.
A와 B의 나가는 포트번호가 바뀌어 버립니다.
물론 100% 그런 것은 아닙니다( 실제로 약 60번 정도 테스트를 해보았는데 그중 50번 이상은 바뀌어서 나갔습니다 )
이렇게 되어버리면 X,Y,Z에서는 A,B에게 서버로부터 받은 A,B의 외부 포트번호를 사용하여서 패킷을 보내도 NAT에서 버려버리기 때문에 통신이 불가능해지고 있습니다.
X,Y,Z에 패킷을 보내는 이유는 이 iptime V에서 작동하는 NAT가 port restricted cone 방식으로 작동하기 때문에 X,Y,Z에게서 패킷을 받기 위해서는 먼저 가상IP를 사용하는 쪽에서 SNAT 매핑 테이블에 정보를 입력하기 위해서입니다.
공유기 밑으로 컴퓨터를 한대만 물려서 사용할 경우는 정상적으로 작동하였는데 2대 이상을 놓고 테스트를 해보니 이런 결과가 나왔습니다.
3대 연결 하였을 경우 상황은 좀더 이상했습니다.
이 경우에 대한 정보나 자료가 있는지 알고 싶습니다.
저번에 전화드렸을 때는 그냥 linux kernel을 사용하였다고 하셔서 도움을 못받았습니다. 혹시 가능하시다면 전화연락을 부탁드리겠습니다.
이 글은 개발자 분께서 봐주셨으면 합니다.
다름이 아니라...
프로그램 구현시 궁금한 점이 있어서 문의 드립니다.
iptime V에 사용된 kernel은 linux 2.4.19에 SNAT,DNAT,IP Masq를 사용하였다고 했고,
또 테스트 프로그램을 통해서 iptime V에서 쓰이는 NAT 방식은 port restricted cone
방식이란 것을 확인하고 그것에 맞춰서 구현을 하였는데...
한가지 문제점이 발생하였습니다.
상황은 이렇습니다.
A,B 라는 컴퓨터가 iptime V(공유기)에 물려있습니다.
iptime V는 고정 IP로 세팅하였습니다.
A라는 컴퓨터가 UDP 소켓을 생성하여 27000 포트에 바인딩을 합니다.
그리고는 서버에 패킷을 보냅니다. 서버에 패킷을 보내게되면 서버에서는 실제 나갈때 포트번호를 알 수 있고 이 정보를 다시 A 및 다른 컴퓨터에게(TCP로) 보내줍니다.
NAT 테이블매핑을 위해 아무 의미없는 데이터를 생성된 UDP 소켓을 통해서 각각 X,Y,Z라는 컴퓨터에 패킷을 보냅니다.
이럴 경우에 공유기를 통해서 나간 패킷을 캡쳐해서 분석해보면 포트번호가 제대로 지정되어있습니다( 포트번호 27000 번 ).
A와 B가 같은 공유기에 물려있고 동시에 27000번 포트에 바인딩을 시도합니다.
물론 A와 B중 먼저 패킷을 보내는 컴퓨터에게 27000 포트번호를 할당하고 조금 늦게 보내는 컴퓨터에게는 port pool에서 남는 포트번호를 할당 할 것입니다( 실제로 해보면 먼저 패킷을 보내는 컴퓨터에 27000번 포트를, 그리고 조금 늦게 보내는 컴퓨터에게는 대략 1024 번 이후 포트를 할당합니다 )
이 상태에서 A,B는 서버에 패킷을 날려줍니다.
이제 여기서 문제입니다.
A( 27000 번 포트 )는 X,Y,Z에 패킷을 보냅니다( 연속적으로 ). B( 1109 번 포트 )도 X,Y,Z에 패킷을 보냅니다( 이것 역시 연속적으로 ).
이때 패킷을 캡쳐해보면 이해하기 어려운 상황이 벌어집니다.
A와 B의 나가는 포트번호가 바뀌어 버립니다.
물론 100% 그런 것은 아닙니다( 실제로 약 60번 정도 테스트를 해보았는데 그중 50번 이상은 바뀌어서 나갔습니다 )
이렇게 되어버리면 X,Y,Z에서는 A,B에게 서버로부터 받은 A,B의 외부 포트번호를 사용하여서 패킷을 보내도 NAT에서 버려버리기 때문에 통신이 불가능해지고 있습니다.
X,Y,Z에 패킷을 보내는 이유는 이 iptime V에서 작동하는 NAT가 port restricted cone 방식으로 작동하기 때문에 X,Y,Z에게서 패킷을 받기 위해서는 먼저 가상IP를 사용하는 쪽에서 SNAT 매핑 테이블에 정보를 입력하기 위해서입니다.
공유기 밑으로 컴퓨터를 한대만 물려서 사용할 경우는 정상적으로 작동하였는데 2대 이상을 놓고 테스트를 해보니 이런 결과가 나왔습니다.
3대 연결 하였을 경우 상황은 좀더 이상했습니다.
이 경우에 대한 정보나 자료가 있는지 알고 싶습니다.
저번에 전화드렸을 때는 그냥 linux kernel을 사용하였다고 하셔서 도움을 못받았습니다. 혹시 가능하시다면 전화연락을 부탁드리겠습니다.







































