답변[re] iptime V 개발자 분께서 읽어주셨으면 합니다
안녕하세요. ipTIME 고객지원실 입니다.
공유기에서 특정 connection에 대한 정보를 지속적으로 유지해주기 위해서는 클라이언트와 서버간의 주기적으로 데이타를 주고 받아야 합니다. 전화상으로 통화드린 내용처럼 프로그램의 수정이 조금 필요하실 것 같습니다.
감사합니다.
>>> 박치훈 님이 쓰신 내용 <<<
>
>작년에 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을 사용하였다고 하셔서 도움을 못받았습니다. >혹시 가능하시다면 전화연락을 부탁드리겠습니다.
>
감사합니다.
공유기에서 특정 connection에 대한 정보를 지속적으로 유지해주기 위해서는 클라이언트와 서버간의 주기적으로 데이타를 주고 받아야 합니다. 전화상으로 통화드린 내용처럼 프로그램의 수정이 조금 필요하실 것 같습니다.
감사합니다.
>>> 박치훈 님이 쓰신 내용 <<<
>
>작년에 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을 사용하였다고 하셔서 도움을 못받았습니다. >혹시 가능하시다면 전화연락을 부탁드리겠습니다.
>
감사합니다.







































