3개 머신(A->B->C) 사이의 SSH 터널 중에 트래픽을 전달하기 위해 netcat을 사용할 때 C가 A의 IP 주소를 알 수 있는지 알고 싶기 때문에 이 질문이 있습니다.
답변1
netcat
응용 프로그램 계층 도구입니다. OSI 스택의 상위 계층(7계층)에서 작동합니다. 따라서 간단한 설정에서는 컴퓨터 C가 컴퓨터 A를 직접 볼 수 없으며 IP 트래픽의 소스는 B에서 온 것처럼 보입니다. IP 계층에서는 netcat
애플리케이션이 시작되고 연결을 설정하기 때문에 모든 트래픽이 B에서 발생하는 것으로 나타납니다.
그러나 OSI 스택의 적용은 제한적입니다. VPN 및 프로토콜 터널링을 고려할 때 IP(계층 3)는 애플리케이션 계층(계층 7)에서 라우팅될 수 있습니다.
따라서 대답은 설정에 따라 다릅니다.
이것은 단지 전송 계층입니다. 애플리케이션 계층 데이터는 소스 주소를 쉽게 드러낼 수 있습니다. 따라서 C할 수 있다A와 직접적인 통신이 없더라도 A의 주소를 알아내는 것은 가능하다.
답변2
제목에 답하자면 netcat
기본적으로 TCP를 사용하는데, -u 플래그를 붙인 UDP 모드를 제공한다. socat
TCP, UDP, SCTP 및 Linux의 netlink 소켓을 포함하여 다양한 프로토콜을 사용할 수 있습니다. 원시 IP 소켓도 제공합니다(그러나 이를 사용하려면 루트여야 합니다).
실제 질문에 답하기 위해 B는 실제로 A의 IP 주소가 무엇인지 알 수 없습니다. 그러나 기본 프로토콜이 실수로 IP 주소를 공개할 수 있습니다. 예를 들어, IRC 서버는 실제로 수신 대기 중인 IP를 게시할 수 있으며 어떤 경우에는 HTTP 서버에서 IP가 유출될 수 있습니다. 이는 로컬 호스트에서 수신 대기한 다음 포트를 로컬 호스트에서 머신 B로 전달한 다음 B에서 C로 전달함으로써 완화될 수 있습니다(서버 소프트웨어의 가능한 악용을 통한 경우 제외).