내 문제는 Fuchsia Green 및 Orange 컴퓨터가 실제로 하드코딩된 산업용 시스템이므로 해당 컴퓨터의 설정을 변경할 수 없다는 것입니다.
차단 PC를 추가하여 UDP 패킷을 차단하고 조작해야 합니다.
예 - Red PC 192.168.0.20은 UDP 패킷을 Purple PC로 보냅니다. 이는 실제로 패킷을 수신하고 응답하는 가로채기 컴퓨터(Ubuntu 16.04)에 도달합니다. 그런 다음 다른 메시지를 구성하여 보라색 PC로 보냅니다.
문제는 네트워크가 모두 동일한 서브넷에 있고, 전달할 IP가 이미 있기 때문에 커널이 나가는 패킷을 보낼 NIC를 모른다는 것입니다.
NICS를 갖기 위해 별도의 네임스페이스를 생성하려고 시도했고, 통신할 수 없다는 것을 깨닫기 전에 네임스페이스 간에 Dbus를 통해 통신하기 위해 여러 개의 별도 프로세스를 작성했습니다. 필요한 경우 하드웨어를 더 구입할 수 있지만 이 결과를 얻는 방법에 대한 조언을 찾고 있습니다.
답변1
예, 네트워크 네임스페이스를 사용하여 두 개의 "동일한" 네트워크를 격리할 수 있습니다.
예를 들어, 오른쪽에는 세 가지 인터페이스가 모두 위치한 네트워크 네임스페이스와 트래픽 차단 및 전달을 위한 브리지 및 탭이 있습니다. 브리지에 탭과 3개의 NIC를 추가하고 탭에 192.168.0.10만 할당합니다. 따라서 탭에만 NIC에 IP가 할당되지 않습니다. 브리지는 오른쪽의 192.168.0.10으로 모든 트래픽을 전달하고 해당 NIC를 통해 모든 트래픽을 192.168.0.{20,21,22}로 전달하는 역할을 담당합니다.
읽기/쓰기 탭(레벨 2)을 위한 인터셉터를 작성하고 stdin/stdout(버퍼링되지 않음)을 통해 패킷을 전달합니다. 또한 stdin/stdout 패킷을 Tap(다른 Tap)으로 전송하고 이를 왼쪽의 전역 네임스페이스에 배치하는 유사한 단순 전송 프로그램을 작성하십시오. 프로그램은 모든 패킷을 전달하고 그 중 일부에 차단을 적용해야 합니다.
왼쪽의 네임스페이스(전역 네임스페이스)는 네트워크 카드의 브리지와 탭에 맞게 배열되어 있으며, 그러면 탭에 IP 주소 192.168.0.{20,21,22}이 모두 추가됩니다.
dpipe
다음으로 패키지 에 있는 프로그램을 사용 vde2
하거나 직접 작성하여 두 개의 Tap 커넥터를 시작하여 stdin/stdout이 서로 연결되도록 하세요. 이를 수행 하는 명령은 dpipe
다음과 같습니다.
# dpipe program1 tap1 = ip netns exec RHS program2 tap2
그 효과는 program1의 stdout이 program2의 stdin으로 가고, program2의 stdin이 program1의 stdin으로 가는 것입니다. (설명의 편의를 위해 이론적으로 프로그램의 탭 이름 매개변수를 포함했습니다.)
전체적으로 이는 IP 변환을 방해하지 않고 두 네임스페이스 간의 패킷을 가로채서 전송하는 방법입니다.
이 설정은 양쪽에 NIC가 있고 오른쪽에 스위치가 있는 경우에도 잘 작동합니다. 따라서 2개의 트리플 NIC가 필요하지 않지만 2개만 필요합니다. 왼쪽에 하나, 오른쪽에 하나, 물론 4개의 물리적 호스트가 있는 오른쪽 네트워크용 스위치도 있습니다.
답변2
댓글을 달 수 없으므로 다른 답변을 추가합니다. 나는 내 경험을 바탕으로 작성하고 있습니다. 네트워크 네임스페이스의 경우 이는 확실히 작동하지만 보편적인 솔루션은 없습니다. 따라서 요구 사항 및 실제 네트워크 토폴로지에 더 가깝습니다. 대부분의 경우 이러한 네트워크 초기화 및 구성을 자동화하려면 일부 스크립팅도 필요합니다.
하지만 다시 말하지만 확실히 가능합니다