2017-03-05 29 views
0

localhost (127.0.0.1)에서 실행되는 TCP 서버가 있는데 루프백 인터페이스에 SYN 패킷을 주입하여 서버에 연결하려하지만 서버가 그렇지 않습니다. 그들에게 대답하십시오. 이 패킷에는 인터넷 어댑터의 이더넷 인터페이스 소스 IP (localhost IP가 아님)가 있습니다.루프백의 로컬 호스트 서버가 들어오는 SYN에 응답하지 않습니다.

Wireshark에서 루프백 서버로 이동하는 SYN 패킷을 보지만 서버가 SYN/ACK로 응답하지 않습니다. 나는 IP 소스가 127.0.0.1이 아니기 때문에 그것이라고 생각한다. 예를 들면 192.168.1.24이다.

브라우저에 가서 localhost 서버에 연결하면 제대로 작동하지만 사용중인 소스 IP는 127.0.0.1이고 대상 IP는 127.0.0.1입니다. 패킷 간의 유일한 차이는 소스 IP입니다.

127.0.0.1이 아닌 다른 IP 원본 주소를 사용하여 루프백 서버 (로컬 호스트)와 TCP 연결을 설정하려고합니다. 그게 가능하니?

예를 들어 192.168.1.24에서 127.0.0.1까지 나오는 루프백 TCP SYN 패킷에 루프백 서버가 응답해야합니까?

감사합니다.

답변

0

로컬 호스트에 Npcap Loopback Adapter을 통해 패킷을 보내고 응답자 (예 : 동일한 컴퓨터의 프로세스)로부터 응답을받을 수 있습니다. 예를 들어, Nmap은 Nmap이 Npcap Loopback Adapter을 사용하여 localhost의 포트를 검사합니다. 명령은 nmap -v -A 127.0.0.1입니다. Nmap은 공개 소스가 here이므로 구현에 대한 코드를 볼 수 있습니다. Nmap이 너무 복잡하다고 생각한다면 Nmap이 제공하는 핑 도구 인 Nping here의 소스 코드를 볼 수 있습니다. 또한 Nping은 로컬 호스트에 ping을 수행 할 때 Npcap Loopback Adapter을 사용합니다. 이는 Windows에서 제공 한 원래 핑과 다르게 작동합니다.

로컬 어댑터 중 하나의 IP를 사용하거나 127.0.0.1을 사용하는 것이 동일해야합니다. Nmap을 실행하여 테스트 할 수 있습니다. 뭐든간에 127.0.0.1을 사용하는 것이 가장 좋으며 localhost와 대화 할 때 Npcap이 권장합니다.

그래서이 문제는 여전히 사용자 구현과 관련이 있다고 생각합니다.

0

나는 문제를 해결했다, 당신의 대답에 대해 대단히 감사합니다.

문제는 약간 바보 같았습니다. 루프백, 루프백 게이트웨이의 범위가 아닌 IP 소스 주소를 사용하여 루프백 서버 (로컬 호스트)와 TCP 연결을 설정하려고했습니다. 127.0.0.1, 루프백 넷 마스크 : 255.255.0.0; 그것은 127.0.X.X의 범위에 있지 않은 IP 소스 주소로부터의 패킷을 받아들이지 않습니다. NAT를 수행하고 패킷을 예를 들어 192.168.1.154에서 127.0.1.154로 변환하면 패킷이 서버에 수신되고 서버 연결을 설정할 수 있습니다. 어떻게 이전에이를 인식하지 못했는지 알 수 없습니다.

시간 내 주셔서 감사합니다.https://github.com/Microsoft/Windows-driver-samples/tree/master/network/ndis/netvmini/6x

미니 포트 드라이버를 만들 괜찮을 것 서버 바인딩 :

나는 다른 가상 네트워크 어댑터가 아닌 루프백에 서버를 결합하는 것이 좋습니다 너무 어쩌면 생각 나는 이것을 공부하고 있어요 거기서 우리는 우리 자신의 게이트웨이와 넷 마스크를 가질 수있는 장점을 가질 것이고 그 레이어는 BSD 루프백이 아닌 이더넷이 될 것입니다. 귀하의 의견은 나를 위해 재미있을 것입니다.