
세 개의 네트워크 카드가 있는 컴퓨터가 있습니다. 한 카드는 WAN에 연결되고 다른 두 카드는 동일한 서브넷(192.168.1.0/24)을 사용하는 동일한 스위치에 연결됩니다. 내가 원하는 것은 두 카드 사이에 데이터를 보내는 것이지만, 데이터가 Linux 네트워크 스택 내부에 머물지 않고 실제로 스위치를 통과하는지 확인하는 것입니다.
두 카드를 정상적으로 설정하고 다른 카드에서 ping을 시도하면 작동하지만 Wireshark에 트래픽이 표시되지 않아 네트워크로 이동하지 않습니다.
모든 트래픽이 스위치를 통과하도록 강제하기 위해 스위치에 대한 고정 경로를 설정해 보았습니다. 이렇게 하면 핑이 네트 응답되고 다른 주소를 찾으려는 응답 없는 ARP 요청이 쇄도합니다. 그러나 두 주소 모두 서브넷의 다른 시스템에 대해 ping을 수행할 수 있으며 해당 시스템은 두 주소 중 하나에 대해 ping을 수행할 수 있습니다.
Linux 커널에서 arp 필터 설정을 변경하려고 시도했지만 운이 없습니다.
어떤 제안이 있으십니까? 감사해요!
또한 동일한 작업을 수행하기 위해 IP 앨리어싱을 사용하여 하나의 NIC를 설정하는 데 대한 보너스 포인트도 있습니다.
답변1
저는 여기에 처음 왔지만 이 질문에 대한 답을 가지고 있을 수도 있습니다.
운영 체제는 다른 네트워크 카드가 로컬 장치인지 인식하려고 시도합니다. '를 사용해도 될 것 같아요.개발자'에 대한 옵션IP 경로' 다른 네트워크 카드를 강제로 빼냅니다.
예를 들어, IP 주소가 있습니다:
45.32.160.129
이 서브넷의 경로에는 device dev ens3이 표시됩니다.
45.32.160.0/24 dev ens3 proto kernel scope link src 45.32.160.129
하지만 45.32.161.4/24에 또 다른 네트워크 카드인 ens4가 있다고 가정해 보겠습니다.
45.32.161.0/24 dev ens4 proto kernel scope link src 45.32.161.4
그런 다음 '개발자'에 대한 옵션IP 경로' 사용되는 장치를 지정합니다. 이렇게 하면 로컬 시스템에서 액세스하려고 할 때 ens3(자체)을 사용하는 대신 다른 네트워크 카드가 ens3 IP에 자체를 사용하도록 지정할 수 있습니다. 이에 대한 비결은 정책 라우팅도 사용해야 한다는 것입니다. 왜냐하면 네트워크 카드가 스스로 액세스하도록 할 수 없고 다른 카드 인터페이스도 나가도록 할 수 없기 때문입니다. 왜냐하면 결코 스스로를 찾지 못하기 때문입니다. 따라서 해당 카드가 액세스를 시도할 때만 다른 카드를 통해 건너뛰도록 정책/소스 라우팅을 지정해야 합니다. 여기서 일치하는 소스를 지정해야 합니다. 더 나아가 사용하거나 테스트하려는 네트워크 소프트웨어의 올바른 IP 소스 주소에 바인딩되어 있는지 확인해야 합니다. 이렇게 하면 스위치를 통해 다른 네트워크 카드에 액세스하게 됩니다. 물론 다른 카드에 대해서도 동일한 작업을 수행하지만 그 반대의 경우도 마찬가지입니다.
이렇게 하면 문제가 해결될 수 있습니다. 를보세요 'IP 경로' 경로 우선순위에 대한 매뉴얼 페이지 및 '개발자' 매개변수. 그런 다음 정책 부분을 수행하기 위해 규칙 일치를 살펴보십시오. 다음과 같아야 합니다.
ip rule add from 45.32.161.4 lookup from1
ip rule add from 45.32.160.129 lookup from2
그런 다음 반대 경로를 추가합니다.
ip route add 45.32.160.129 via 45.32.161.4 dev ens4 table from1
ip route add 45.32.161.4 via 45.32.160.129 dev ens3 table from2
그리고 /etc/iproute2에 해당 테이블을 생성해야 합니다.