Linux 시스템의 로컬 IP 트래픽이 LAN(WireShark를 통해 트래픽을 캡처하는 네트워크)을 통과하도록 강제하는 방법에 대한 몇 가지 스레드가 있다는 것을 알고 있지만 모든 솔루션에는 IP 주소 수정이 포함됩니다.
이제 내 설정은 다음과 같습니다.
- 하나의 인터페이스와 두 개의 IP(192.168.1.2(eth0:0) 및 192.168.1.3(eth0:1))가 있는 Linux PC
- 192.168.1.2를 수신하는 서버
- 192.168.1.2에 연결된 클라이언트(192.168.1.3에 바인딩됨)
내 질문은: Linux 커널이 IP 주소와 포트를 변경하지 않고 IP 패킷이 네트워크(스위치 + Wireshark가 있는 PC)를 통과하도록 강제하여 WireShark가 192.168.1.2 및 192.168.1.3을 소스 및 대상으로 인식하도록 할 수 있습니까? (그리고 그 반대도 마찬가지)?
앞서 말했듯이 여기에서 IP 변경에 대한 몇 가지 답변을 찾았습니다.네트워크 세그먼트에서 로컬 TCP 패킷 강제 캡처그리고 또 다른 것이 있습니다:로컬 IP 트래픽을 외부 인터페이스로 강제 적용
드라이버나 커널을 수정하지 않고서는 불가능할까요? 저는 C 프로그래머이므로 커널 수정을 추구해야 한다면 이것이 가능한 해결책일 수 있습니다.
-
몇 가지 조사를 마친 후:
sysctl 매개변수인 accept_local과 rp_filter를 결합하여 가능한 솔루션을 찾았습니다. "로컬 소스 주소가 있는 패킷을 허용합니다. 적절한 라우팅과 결합하면 두 로컬 인터페이스 패킷 간의 유선을 통해 데이터를 전달하고 올바르게 허용하는 데 사용할 수 있습니다." 시도해 보고 하나의 인터페이스와 가상 IP에서만 작동하는지 알려 드리겠습니다.
여러 경로 테이블 대안을 시도했지만 하나의 인터페이스에서는 이것이 가능하지 않다고 생각합니다.
답변1
Linux를 사용하는 경우 lo
(루프백) 인터페이스에서 패킷을 캡처할 수 있습니다. 트래픽을 회선에 강제로 연결할 필요가 없습니다.