동일한 서브넷에 있는 두 개의 NIC-- 라우팅을 설정해야 함

동일한 서브넷에 있는 두 개의 NIC-- 라우팅을 설정해야 함

까다로운 경우가 있습니다.

+---+                      +----+
|D1 +->eth0---------<-eth0-+D2  |
|   |                      |    |
|   +->eth1---------<-eth1-+    |
+---+                      +----+

D2에 eth0있고 eth1동일한 서브넷의 IP 주소가 있습니다: eth0 10.1.1.1/24, eth1 10.1.1.2/24. D1의 인터페이스에는 할당된 주소가 없으며 스위치처럼 작동합니다.

10.1.1.2이제 D2가 via를 통해 트래픽을 보낼 수 있기를 원하므로 eth0패킷 경로는 D2(eth0)--D1(eth0)--D1(eth1)--D2(eth1)이어야 합니다.

D2에서 핑을 하는 순간 10.1.1.2로컬로 패킷이 전송됩니다. 즉, D1은 아무 것도 얻지 못합니다. 원하는 동작을 달성하려면 D2에서 무엇을 변경해야 합니까?

감사해요.

답변1

Linux에서는 원하는 것이 불가능합니다. 적어도 라우팅 계층에는 없습니다. 대상 주소가 로컬 인터페이스에 속하는 경우 패킷은 RfC에 의해 외부로 라우팅될 수 없는 루프백 인터페이스를 항상 통과합니다.

대상을 서브넷의 사용되지 않은 주소로 사용 iptables및 변경하고 MAC 주소를 다른 NIC 중 하나에 정적으로 설정하는 데 사용할 수 있지만 패킷과 로컬 주소에 대한 규칙도 일치 하지 않을 수 있다고 생각했습니다 .DNATip neighDNAT

커널 10.1.1.1eth0. 그러나 들어오는 패킷을 물리적 인터페이스에서 가상 인터페이스로 이동하려면 프록시 ARP 및 DNAT가 필요합니다.

그 노력만큼의 가치가 있다면?

답변2

네트워크 네임스페이스는 옵션일 수 있습니다. 이들은 본질적으로 네트워크 스택의 독립적인 인스턴스이므로 최소한 이론적으로는 두 인터페이스를 분리할 수 있어야 합니다.

지난번에 나는 그것들을 가지고 놀려고 시도했지만 제대로 작동하지 못했습니다.

관련 정보