netfilter hook tcp packet의 data부분 수정관련 질문드립니다.
안녕하십니까. netfilter tcp packet 조작할때 문제점이 있어 이렇게 질문드립니다.
네트워크 구성은 아래와 같이 하였습니다.
내부 컴퓨터 (1.1.1.2)--(1.1.1.1) linux box (333.333.333.333)--외부 컴퓨터(333.333.333.444)
즉 중간에 linux box를 두고 내부 컴퓨터가 보내는 특정 tcp packet의 data ( tcp header 다음의 실제 데이타 )
를 linux box 안에서 수정하여 보내는것이 목적이였습니다.
일단 tcp data를 수정하고 외부 컴퓨터에서 수정된 tcp packet data가 들어오는것은 확인했습니다.
그런데 이때 문제가 발생하게 됩니다.
이유는 내부/외부 컴퓨터에서 모두 whireshark로 packet capture를 해본 결과 next sequence number
때문인듯 싶었습니다.
예를 들어 원본 tcp packet의 seq, ack, len이 각각 296, 57, 46 이라면 next sequence number는
342가 됩니다.
수정된 tcp packet을 받은 외부 컴퓨터는 seq, ack, len값이 각각 296, 57, 51이 됩니다.
이때 len 길이는 tcp data가 변경된 후의 data 길이 입니다.
외부 컴퓨터가 받은 다음에 보내는 seq, ack, len은 각각 57, 347, 6 이렇게 되는데 내부컴퓨터에서는 이 패킷을
받을때 next sequence number가 342로 되있습니다.
이것때문에 tcp data수정 한 후 data 통신이 이루어지지 않는듯 합니다.
wireshark에서 tcp header를 보면 SEQ/ACK analysis와 관계가 있는지도 궁금합니다.
제가 한 방법이 틀렸다면 어떻게 해야 하는지, 어떤 방법을 사용해야 하는지 막막합니다.
검색을 해도 나오지 않고... ㅡㅡ;
여러분들의 귀한 도움 부탁드립니다.
감사합니다.
댓글 달기